This document provides an overview of architecting applications for the Amazon Web Services (AWS) cloud platform. It discusses key cloud computing attributes like abstract resources, on-demand provisioning, scalability, and lack of upfront costs. It then describes various AWS services for compute, storage, messaging, payments, distribution, analytics and more. It provides examples of how to design applications to be scalable and fault-tolerant on AWS. Finally, it discusses best practices for migrating existing web applications to take advantage of AWS capabilities.
1 of 38
More Related Content
Architecting Cloud Apps
1. Jinesh Varia Technology Evangelist jvaria@amazon.comArchitectingfor the AWS CloudTwitter: @jinman
2. Cloud Computing AttributesWhat makes the Cloud so attractiveAbstract ResourcesFocus on your needs, not on hardware specs. As your needs change, so should your resources.On-Demand ProvisioningAsk for what you need, exactly when you need it. Get rid of it when you don’t needScalabilityScale out or in depending on usage needs.No Up-Front CostsNo contracts or long-term commitments.Pay only for what you use.Efficiency of ExpertsUtilize the skills, knowledge and resources of experts.
4. Amazon S3CustomerrunInstance() Amazon EC2Amazon Elastic Compute CloudResizable compute capacity in the cloudObtain and boot new server instances in minutesQuickly scale capacity, up or down, using Web Services InterfaceHosted VirtualizationFull root-level access to the virtualized server instance
6. EC2 API OverviewCreateVolume –Create an EBS volume of any size (1 GB to 1 TB).Images:RegisterImageDescribeImagesDeregisterImageModifyImageAttributeDescribeImageAttributeResetImageAttributeInstances:RunInstancesDescribeInstancesTerminateInstancesGetConsoleOutputRebootInstancesIP Addresses:AllocateAddressReleaseAddressAssociateAddressDisassociateAddressDescribeAddressesKeypairs:CreateKeyPairDescribeKeyPairsDeleteKeyPairSecurity Groups:CreateSecurityGroupDescribeSecurityGroupsDeleteSecurityGroupAuthorizeSecurityGroupIngressRevokeSecurityGroupIngressBlock Storage Volumes:CreateVolumeDeleteVolumeDescribeVolumesAttachVolumeDetachVolumeCreateSnapshotDescribeSnapshotsDeleteSnapshotAttachVolume –Attach an EBS volume to a running EC2 instance.AssociateAddress –Associate public IP address with a running EC2 instance.DescribeImages –Fetch a list of all available Amazon Machine Images (AMIs).RunInstances –Launch any number of AMIs on available hardware.
7. ElasticFoxEnter AWS Credentials.Select active set of AWS Credentials.Enter desired number of running instances.Additional importantfunctions on tabs.Choose keypair.Filter AMI List.See list of available AMIs.Go!See list of running instances.
8. ScalabilityBuild Scalable Architecture on AWSA scalable architecture is critical to take advantage of a scalable infrastructureCharacteristics of Truly Scalable ServiceIncreasing resources results in a proportional increase in performanceA scalable service is capable of handling heterogeneityA scalable service is operationally efficientA scalable service is resilientA scalable service becomes more cost effective when it grows
9. Cloud Architecture Lessonsusing Amazon Web Services1. Design for failure and nothing fails2. Loose coupling sets you free3. Implement “Elasticity”4. Build Security in every layer5. Don't fear constraints6. Leverage AWS storage options
10. 1. Design for Failureand nothing will really fail"Everything fails, all the time"Werner Vogels, CTO Amazon.comAvoid single points of failureAssume everything fails, and design backwards
11. Design for Failure with AWSTools to make your life easierUse Elastic IP addresses for consistent and re-mappable routesUse multiple Amazon EC2 Availability Zones (AZs)Create multiple database slaves across AZsUse real-time monitoring (Amazon CloudWatch)Use Amazon Elastic Block Store (EBS) for persistent file systems
14. 2. Build Loosely Coupled SystemsThe looser they're coupled, the bigger they scaleIndependent componentsDesign everything as a Black BoxDe-couplingfor Hybrid modelsLoad-balance clustersUse Amazon SQS as BuffersTight CouplingController AController BController CQQQLoose Coupling using QueuesController AController BController C
15. 3. Implement ElasticityElasticity is fundamental property of the CloudDon’t assume healthor fixed location of componentsUse designs that are resilient to reboot and re-launchBootstrapyour instancesEnable dynamic configurationUse Auto-scaling (Free)Use Elastic Load Balancing on multiple layersUse configurations in SimpleDB to bootstrap instance
16. 4. Build Security in every layerSecurity is everywherePhysical is freeNetwork is easyThe rest can be addedCreate distinct Security Groups for each Amazon EC2 clusterUse group-based rules for controlling access between layersRestrict external access to specific IP rangesEncrypt data “at-rest” in Amazon S3Encrypt data “in-transit” (SSL)Consider encrypted file systems in EC2 for sensitive dataRotate your AWS Credentials, Pass in as arguments encrypted Use MultiFactor Authentication
18. 5. Don't fear constraintsRe-think architectural constraintsMore RAM? Distribute load across machinesShared distributed cacheBetter IOPS on my database? Multiple read-only / sharding / DB clusteringYour server has better config? Implement elasticityStatic IP?Boot script for software reconfiguration from SimpleDB
19. 6. Leverage many storage optionsWhich storage option to use when?Amazon S3: large static objectsAmazon Cloudfront: content distributionAmazon SimpleDB: simple data indexing/queryingAmazon EC2 local disc drive : transient dataAmazon EBS: RDBMS persistent storage + Snapshots on S3
20. Cloud Architecture LessonsBest Practices1. Design for failure and nothing fails2. Loose coupling sets you free3. Design for dynamism4. Build Security in every layer5. Don't fear constraints6. Leverage many storage options
21. AWS community and EcosystemFind help, guidance, assistance when you need itAWS EcosystemAWS Community
23. Migrating your Web ApplicationStep by Step towards AWSA typical Web App needs:Compute PowerStorage capacityContent DistributionDatabase storageMessagingLoad balancingMonitoring
24. Migrating your Web Application - 1/8Typical Web App ArchitectureDatabaseApplication Server /Business LogicWeb Server /Presentation LayerClient Browser
25. Migrating your Web Application - 2/8Amazon S3 for StorageStore persistent files in Amazon S3 for lower costs, higher reliabilityClient Browser
26. Migrating your Web Application - 3/8Use Amazon CloudFrontAmazon CloudFront for distributionAmazon CloudFrontis a content delivery network that caches data stored in Amazon S3 across a network of 14 edge locations around the worldClient Browser
27. Migrating your Web Application - 4/8Amazon EC2 for your choice of web serversConfigure Amazon EC2 running your choice of web server to handle all incoming web requests.Client Browser
28. Migrating your Web Application - 4/8Scale out App servers on Amazon EC2Configure multiple Amazon EC2 instances running your choice of application server to process requests.Use Availability Zones and Elastic IPs for greater reliability and resiliency.Utilize Auto-scaling and Elastic LB serviceClient Browser
29. Migrating your Web Application - 5/8Use Amazon EBS for DatabaseEBS for Persistent Storage and S3 for SnapshotsConfigure an Amazon EBS device to host your existing relational database. Snapshots can be automatically backed up to Amazon S3.Client Browser
30. Migrating your Web Application - 6/8Use Amazon SQSAmazon SQS for queuing requestsSQSAmazon SQS makes it easy to coordinate between the web server and application servers.Client Browser
31. Migrating your Web Application - 7/8Use Amazon SimpleDBAmazon SimpleDB for log files, metadataSimpleDBSQSAmazon SimpleDBcan be used to store metadata, logfiles, and other information for your site.Client Browser
32. Migrating your Web Application - 8/8Use Amazon SimpleDBMonitor your Amazon EC2 instances using CloudWatchSimpleDBSQSAmazon CloudWatch to monitoring your Amazon EC2 instancesClient Browser
33. Migrating your Web ApplicationStep by Step towards AWSA typical Web App needs:With AWS:Compute PowerStorage capacityContent DistributionDatabase storageMessagingLoad balancingMonitoringAmazon EC2Amazon S3Amazon CloudFrontAmazon EBSAmazon SQSAmazon EC2Amazon CloudWatch
34. Other ServicesWait, there’s more…Amazon Flexible Payments ServicePCI-compliant Payment infrastructure built from the ground up for DevelopersAmazon Mechanical TurkA Flexible, Scalable Workforce with a programmatic interface (400K People in 100 Countries)Amazon Elastic MapReduceHosted Hadoop Framework on Amazon EC2 and Amazon S3 to crunch large amounts of data AWS Import/ExportFor uploading large datasets to Amazon S3, Ship us your hard drives - “sneaker net” to Amazon S3
35. Amazon Web Services toolsThings you needWeb : AWS Management ConsoleIDE : AWS Toolkit for EclipseTools : iPhoneAppsCloudBerryExplorerAWSZoneFirefox Plugins : ElasticFox, S3Fox, SDB ToolSeveral libraries
36. ConclusionsMost Important Lesson From Our Customers:Start small with a well-defined proof of concept that will highlight the power of AWSBuild support in your organizationOnce one application is launched others will follow…Photo: Grand Canyon Hopi Point SunSet
This is your classic three tier architecture. Incoming requests are fielded by a web server. The web server probably also draws files (such as images, PDFs, music, and so forth) from a file server. The web server farms processing out to a number of servers running an application server. This is where the bulk of your application’s business logic probably resides. You probably maintain a relational database on the back-end as well.
Let’s start our migration project by moving many of our static and large files over to Amazon S3. Things like images, music, PDFs, and the like are best suited for Amazon S3. Amazon S3 provides a low-cost, highly reliable and scalable storage environment for your web applications.
Many times you’ll have a number of users hitting your web application from all over the world. It can be time consuming and slow to serve all of those users’ requests from Amazon S3. That’s why we built Amazon CloudFront. Amazon CloudFront is a content delivery network that takes the data you’ve stored in Amazon S3 and caches it across a worldwide network of edge locations. In this way, the large static files used by your web application are stored as close as possible to the users who are requesting them.
Amazon EC2 enables you to choose the operating system and application platform of your choice to host your web application. Whether it’s Microsoft .NET, IBM WebSphere, JBoss, Oracle Fusion Middleware, PHP, Ruby on Rails, or whatever, you can configure your own virtual environment to run the platform you need for your business. This is where you’ll move your web application, altering it to point to the persistent files you’ve moved to Amazon S3.
A typical web application has a front-end web server to field incoming requests, which then farms out work to a bunch of application servers. You can move these applications ervers to Amazon EC2 as well.
You’ll also want to move your database into the cloud. Amazon Elastic Block Store is a feature of Amazon EC2 that provides a block storage device in the cloud. You’d house your database in Amazon EBS. Amazon EBS can also be setup to periodically snapshot backup images into Amazon S3, so you can always roll back to a version of Amazon EBS if you need to, and you can rest assured that your database will exhibit the same resilient and reliable characteristics as the rest of AWS.
Amazon SQS is a queueing service that provides the glue between your web server and your application server. The most common setup will involve configuring two queues. The first queue will accept messages from the web server hosted on Amazon EC2. Application servers, also hosted on Amazon EC2, will pluck those messages off the queue, process data based on the contents of the message, and then place the equivalent of an “I’m done! Here are the results.” message on the second queue. The web server would then pluck the message off the second queue and return results back to the client that made the initial request. In this way, your Amazon EC2 instances can grow or shrink, startup and fail with impunity, while you can rest assured that all of your data processing happens reliably.
Amazon SimpleDB can be added to the equation to store your access logs, application logfiles, and even indices to data you’re storing in Amazon S3.
Amazon SimpleDB can be added to the equation to store your access logs, application logfiles, and even indices to data you’re storing in Amazon S3.