AWS Solutions architect 1 - AWS and SA Fundamentals
Architecture 101
Access Management
- Principal: a person of application that can make an authentication or anonymous request to perform an action on a system
 - Authentication: process of authenticating a principal against identity. This could be via username and password or API keys
 - Identity: objects that require authentication and are authroized to access resources
 - Authorization: the process of checking and allowing or denying access to a resource for an identity
 
Shared responsibility
Security model
- Customer
- Customer data
 - Platform, appliciation, identity, access
 - Operating system, Network and Firewall configuration
 - Encryption and network protection
 
 - AWS
- Software
- Compute
 - Storage
 - Database
 - Network
 
 - Hardware / AWS Global Infrastructure  
- Regions
 - Availability zones
 - Edeg locations
 
 
 - Software
 
Service models
- Iaas: Infrastructure as a Service
 - Paas: Platform as a Service
 - SaaS: Software as a Service
 - FaaS: Function as a Service (just a single one -> AWS Lambda)
 
| System stack\model | Iaas | Paas | SaaS | 
|---|---|---|---|
| Data | You | You | Yes | 
| Applications | You | You | AWS | 
| Runtime | You | AWS | AWS | 
| Operating System | You | AWS | AWS | 
| Virtualization | AWS | AWS | AWS | 
| Host/Server | AWS | AWS | AWS | 
| Network storage | AWS | AWS | AWS | 
| Data center | AWS | AWS | AWS | 
Availability
- High availability: hardware, software and configuration allowing a system to recover quickly in the moment of a failure -> Downtime
 
graph LR A[Users] B[Instance - ok] C[Instance - ko] D[Recovery - ok] A --> B; B --> C; C --> D; A --> D;
- Fault tolerance: system designed to operate through a failure with no user impact -> Expensive, no downtime
 
graph LR A[Users] B[load balancer] C[Instance - ok] D[Instance - ko] E[Instance - ok] A --> B B --> C B --> D B --> E
RPO vs. RTO
- Recovery Point Time (RPT): how much a business can tolerate to lose, expressed in time. The maximum time between a failure and the last successful backup
 - Recovery Time Objective (RTO): the maximum ammount of time a system can be down. How long a slution takes to recover
 
graph LR A[Backup] B[Disaster event] C[Recovery] A -- RPO --> B; B -- RTO --> C;
Scaling
- Vertical scaling: (a bigger machine) achivable by adding additional resources in the form of CP or memory to extend a machine so it can serve additional customers or be faster
- eventually, maximum machine sizes will contraint your abuility to scale (technically or by cost -> exponencial cost increase)
 
 - Horizontal scaling: (paralel systems) adding additional machines into a pool of resources
- does not suffer the limitations of vertical scaling, but needs applications support to scale effectively
 
 
Tiered application design
Architectural application tiers (if all code is mixed -> monolithic)
- Presentation tier: interatcs with the consumer
 - Logic tier: delivers functionality
 - Data tier: controls interactions with DB
 
Tier
- Isolated component
 - Independent performance -> may be provioned on separate machines
 
Encryption
- types
- symmetrical: same key for encrypt and decrypt
 - asymmetricl: different keys for encrypt and decrypt (public and private)
 
 
1  | echo "Cats are Amazing" > hiddenmessage.txt  | 
Architecture odds and ends
- Cost efficient / cost effective:implementing a solution within AWS using products or features that provide the reqired service for as little initial and ongoing cost as possible. Using your fund effectively and knowing if product X is better or worse than product Y for a given solution.
 - Secure: in systems architecture context, implementing a given solution that secures data and operations as much as possible from an internal or external attack.
 - Application session state: data that represents what a customer is doing, what they have chosen, or what they have configured.
 - Undifferentiated heavy lifting: a part of an application, system or platform that is not specific to your business. Allowing a vendor (AWS) to handle part frees your staff to work on adding direct value to your customer.
 
AWS Architecture 101
AWS accounts
- Authentication domain
- AWS accounts are oslated
 - Create account = root user for that account -> the only identity that can use (autheticate to) the account
 - Account credentials leaked -> impact is limited to that account
 
 - Authorization
- Controled by account basis
 - Root = full control
 - Additional identities can be created, and externall identities may be grnted access
 - Unless defined otherwise, only root can access to a service/resource
 
 - Billing
- Accounts can be linked to allow consolidated billing, where a master account is charged for all member accounts usage
 - Every AWS account has its own isolated billing information -> default: attached credit card, can be changed to term invoice
 
 
AWS physical and networking layer
Terms
- Region: has at least 2 Availability Zones (isolated networks)
- AZs are connected with redundat, high-speed, low-latency network connections
 - Edge locations: small pockets of AWS compute, storage and networking close to major populations and generally used for edge computing and content delivery
 - Points of Presence:dge Locations that, by being closer to remote users, provide better performance for them
 
 
Well-architected framework
- Security: ability to protect information, systems and assets
- implement strong identity foundation
 - enable traceability
 - apply security at all layers
 - automate security best practices
 - protect data in transit
 - and at rest
 - prepare for security events
 
 - Reliability: ability to recover from infrastructure disruptions, dynamically acquire computing resources to meet demand and mitigate those discruptions
- test recovery procedures
 - automatically recover from failure
 - scale horizontally to increase aggregate systems availability
 - stop guessing capacity
 - manage change in automation
 
 - Performance efficency: ability to use computing resources efficient to meet system requirements and to maintain that efficiently as demand changes and technology evolves
- democratize advanced technologies
 - go global in minutes
 - experiment more often
 - mechanical sympathy
 
 - Operational excellence: ability to run andn monitor systems to deliver business value and to continually improve supporting processes and procedures
- perform operations as code
 - annotate documentation
 - make frequent, small, reversible changes
 - refine operations procedures frequently
 - anticipate failure
 - learn from all operational failures
 
 - Cost optimization: ability to avoid or eliminate unneeded cost or suboptimal resources
- adpot a consumption model
 - measure efficiently
 - stop spending money on data center operations
 - analyse and attribute expenditure
 - use managed services to reduce cost of ownership
 
 
More info at AWS well-architected framework
Elasticity
- Vertical scaling: increase size of servers
 - Horizontal scaling: increase number of server
 - Elastic: automation and horizonatal scaling are used in conjunction to match capacity with demand
- demand is rarely linear: it can increase and decrease -> an efficient platform should scale OUT and IN
 
 
AWS product fundamentals
Introduction to S3
- S3 (Simple Storage Service): global object storage
 - Region -> Bucket -> Object
 - Object
- similar to a file
 - Has a key (name) and a value (data)
 - Can contain 0 bits
 - has an unique name in the bucket
- 3-63 characters
 - start with lowercase letter or number, can’t be like an IP address
 
 - default: 100 buckets per account, hard limit=1000
 - unlimited objects in bucket
 - unlimited total capacity for bucket
 - object size: 0 to 5TB
 
 
Introduction to CloudFormation
CloudFormation (CFN): IaC product, to create, manage and remove infrastructure via json or YAML
Template -> Stack -> Physical objects
- Template: contains logical resources and configuration
 - Stack: created and modified based on templates, which can be changed and used to update a stack
 - Physical object: stacks take logical resources from sa template and create, update o delete the physical resources in AWS
 
CFN is effective if you frequently deploy the same infrastructure or require guaranteed consitent configuration
Template format
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27---
AWSTemplateFormatVersion: "2020-03-27"
Description:
this template does XXXX
Metadata:
template metadata
Parameters:
set of parameters
Mappings:
set of mappings
Conditions:
set of conditions
Transform:
set of transforms
Resources:
set of resources
Outputs:
set of outputs
Resource format
1
2
3
4
5
6
7{
"Resources": {
"demoBucket": {
"Type": "AWS:S3:Bucket"
}
}
}Facts
- Template: max=200 resources
 - Stack deleted -> resources deleted
 - Stack update -> upload a new template
 - New logical resources -> new physical resources
 - Removed logical resource -> deleted physical resource
 - Changed local resources update with some disruption or replace physical resources