Classic Solutions Architecture
Section Introduction
• These solutions architectures are the best part of this course
• Let’s understand how all the technologies we’ve seen work together
• This is a section you need to be 100% comfortable with
• We’ll see the progression of a Solution’s architect mindset through many sample case studies:
• WhatIsTheTime.Com
• MyClothes.Com
• MyWordPress.Com
• Instantiating applications quickly
• Beanstalk
Stateless Web App: WhatIsTheTime.com
• WhatIsTheTime.com allows people to know what time it is
• We don’t need a database
• We want to start small and can accept downtime
• We want to fully scale vertically and horizontally, no downtime
• Let’s go through the Solutions Architect journey for this app
• Let’s see how we can proceed!









in this lecture we’ve discussed…
• Public vs Private IP and EC2 instances
• Elastic IP vs Route 53 vs Load Balancers
• Route 53 TTL, A records and Alias Records
• Maintaining EC2 instances manually vs Auto Scaling Groups
• Multi AZ to survive disasters
• ELB Health Checks
• Security Group Rules
• Reservation of capacity for costing savings when possible
• We’re considering 5 pillars for a well architected application: costs, performance, reliability, security, operational excellence
Stateful Web App: MyClothes.com
• MyClothes.com allows people to buy clothes online.
• There’s a shopping cart
• Our website is having hundreds of users at the same time
• We need to scale, maintain horizontal scalability and keep our web application as stateless as possible
• Users should not lose their shopping cart
• Users should have their details (address, etc) in a database
• Let’s see how we can proceed!






In this lecture we’ve discussed… 3-tier architectures for web applications
• ELB sticky sessions
• Web clients for storing cookies and making our web app stateless
• ElastiCache
• For storing sessions (alternative: DynamoDB)
• For caching data from RDS
• Multi AZ
• RDS
• For storing user data
• Read replicas for scaling reads
• Multi AZ for disaster recovery
• Tight Security with security groups referencing each other
Stateful Web App: MyWordPress.com
• We are trying to create a fully scalable WordPress website
• We want that website to access and correctly display picture uploads
• Our user data, and the blog content should be stored in a MySQL database.
• Let’s see how we can achieve this!




In this lecture we’ve discussed…
• Aurora Database to have easy Multi-AZ and Read -Replicas
• Storing data in EBS (single instance application)
• Vs Storing data in EFS (distributed application)
Instantiating Applications quickly
• When launching a full stack (EC2, EBS, RDS), it can take time to:
• Install applications
• Insert initial (or recovery) data
• Configure everything
• Launch the application
• We can take advantage of the cloud to speed that up
Instantiating Applications quickly
• EC2 Instances:
• Use a Golden AMI: Install your applications, OS dependencies etc.. beforehand and launch your EC2 instance from the Golden AMI
• Bootstrap using User Data: For dynamic configuration, use User Data scripts
• Hybrid: mix Golden AMI and User Data (Elastic Beanstalk)
• RDS Databases:
• Restore from a snapshot: the database will have schemas and data ready!
• EBS Volumes:
• Restore from a snapshot: the disk will already be formatted and have data!

Developer problems on AWS
• Managing infrastructure
• Deploying Code
• Configuring all the databases, load balancers, etc
• Scaling concerns
• Most web apps have the same architecture (ALB + ASG)
• All the developers want is for their code to run!
• Possibly, consistently across different applications and environments
Elastic Beanstalk – Overview
• Elastic Beanstalk is a developer centric view of deploying an application on AWS
• It uses all the component’s we’ve seen before: EC2, ASG, ELB, RDS, …
• Managed service
• Automatically handles capacity provisioning, load balancing, scaling, application health monitoring, instance configuration, …
• Just the application code is the responsibility of the developer
• We still have full control over the configuration
• Beanstalk is free but you pay for the underlying instances
Elastic Beanstalk – Components
• Application: collection of Elastic Beanstalk components (environments, versions, configurations, …)
• Application Version: an iteration of your application code
• Environment
• Collection of AWS resources running an application version (only one application version at a time)
• Tiers: Web Server Environment Tier & Worker Environment Tier
• You can create multiple environments (dev, test, prod, …

Elastic Beanstalk – Supported Platforms
• Go
• Java SE
• Java with Tomcat
• .NET Core on Linux
• .NET on Windows Server
• Node.js
• PHP
• Python
• Ruby
• Packer Builder
• Single Container Docker
• Multi-container Docker
• Preconfigured Docker
• If not supported, you can write your custom platform (advanced)

Last updated