Architecting for the Cloud Flashcards
Traditional vs Cloud Computing Environments (6)
- IT Assets as Provisioned Resources
- Provision as needed and scale on-demand - Global, Available, and Scalable Capacity
- deploy globally, easily, cost-effectively, and quickly - Higher-Level Managed Services
- lower operational cost by leveraging managed storage, database, analytics, application and deployment services - Built-in Security
- Leverage AWS’ significant investment in security, simplify security testing, and use native security and encryption features - Architecting for Cost
- fine grained billing, transparent costs, budgets and alerting tools - Operating on AWS
- tooling, processes and best practices to support operational transitions
Scaling Vertically
change to a bigger instance
Examples:
Amazon EC2 instances
Amazon RDS Database instances (they run on EC2)
Limitations:
often requires manual intervention (though can be scripted/automated)
typically requires downtime (may need to shut down and re-start up)
can reach a limit of scalability
Scaling Horizontally
Add replica’s of the original, instead of making the original bigger
The preferred method of scaling
Examples:
Amazon EC2 Auto Scaling
Amazon DynamoDB - DynamoDB Table
Benefits:
Seamless scaling, w/o downtime
can scale almost limitlessly (in some cases)
AWS Best Practices - 9
white paper
- Disposable Resources instead of Fixed Servers
- Automation
- Loose Coupling
- Services, Not Servers
- Databases
- Removing Single Points of Failure
- Optimize for Cost
- Caching
- Security
AWS Best Practices:
1. Disposable Resources instead of Fixed Resources
with traditional infrastructure you work w/ fixed resources due to upfront cost and lead time
with the cloud you can take advantage of the dynamically provisioned resources
when designing for AWS, you can take advantage of the dynamically provisioned nature of cloud computing
you can think of servers and other components as temporary resources
you can launch as many as you need, and use them only for as long as you need them
AWS Best Practices:
2. Automation
use automation tools on AWS to improve system stability and organizational efficiency
Examples:
Serverless Management and Deployment
Infrastructure Management and Deployment
AWS Best Practices:
3. Loose Coupling
design IT systems to reduce interdependencies; a change/failure in one component should not cascade to other components
Examples:
Service Discovery - componenets should be able to “find” each other
Asynchronous Integration - introduce a layer b/w application compoenents to store messages
AWS Best Practices:
4. Services, Not Servers
this best practices advises customers to leverage more than just Amazon EC2
Try to use the breadth of services available on AWS
Examples: Amazon CloudFront for content delivery ELB for load balancing Amazon DynamoDB for NoSQL databases Amazon CloudSearch for search workloads Amazon Elastic Transcoder for video encoding
AWS Best Practices:
5. Databases
use the right database technology for each workload
consider performance requirements, scalability, durability, functionality, etc.
Choose between Relational, NoSQL, Data Warehouse, Search, and Graph
AWS Best Practices:
6. Removing Single Points of Failure
design for failure! you should have failure in mind as you design
Introduce redundancy - ensure if a component / resource failed, another can take over
Detect failure - use health checks and alarms and try to automate detection and reaction
Durable Data Storage - ensure your data aligns w/ you Recovery Point Objective (RPO) and Recovery TIme Objective (RTO)
Automated Multi-Data Center Resilience - be resilient in the face of a major disaster
AWS Best Practices:
7. Optimize for Cost
right sizing - use the best instances sizes and number of instances for cost efficiency
Elasticity - horizontally scale as needed w/ changing demand
Take Advantage of the Variety of Purchasing Options - use Reserved Instances and Spot Instances
AWS Best Practices
8. Caching
can be used to improve performance and cost efficiency
Methods:
Application Data Caching - examples are Amazon ElastiCache and DynamoDB DAX
Edge Caching - key example if Amazon CloudFront
AWS Best Practices:
9. Security
use AWS features for defense in depth
share security responsibility w/ AWS
reduce privileges access
Security as Code - ie, use CloudFormation to repeatedly build secure environments
Real-Time Auditing - tools such as Trusted Advisor, AWS Config, and Amazon Inspector
5 Pillars of Operational Excellence
- Operational Excellence
- Security
- Reliability
- Performance Efficiency
- Cost Optimization
Infrastructure as Code
AWS assets are programmable, so you can apply techniques, practices, and tools from software development to make your whole infrastructure reusable, maintainable, extensible, and testable.