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