I recently took the Architecting with Amazon Web Services training class. The class is taught by AWS Solutions Architects, rather than by dedicated training staff, so the instructors have real, practical experience with helping customers use AWS; the SAs use that experience, and feedback from each class, to continually improve the class.
The class covered most of the services available via AWS, although it was pretty light on Elastic Beanstalk, Amazon's new Java and PHP Platform as a Service (PaaS) offering. Each day was made up of a mix of presentations covering the various services, group paper / whiteboard architecture exercises and discussions, and hands on exercises with various AWS components and tools.
One thing that I was aware of before taking the class, but that became much more apparent during the class: AWS is much more than just virtual servers and storage in the cloud. The real benefit of AWS is the other services that Amazon built on top of that infrastructure:
- the various ways to run databases, from simple in memory caches, to NoSQL (DynamoDB and SimpleDB) and Relational Database Service (RDS - Oracle or MySQL), all the way through to running databases on EC2 instances
- Simple Workflow (SWF) and Simple Queueing Service (SQS) for co-ordinating work
- Simple Notification Service (SNS) and Simple Email Service (SES) for notification to users and services
- Elastic Load Balancer (ELB), CloudFront and AutoScale for dealing with unpredictable load and failures
- CloudFormation for creating custom stacks of services, and CloudFormer for creating CloudFormations from running services
- Virtual Private Cloud (VPC) for building closed or semi-closed networks within AWS, and for linking back to local networks via VPN
While some of these services are only available within AWS (like ELB, VPC and CloudFormation), others can be used from outside (like RDS, SWF and SNS). During the class, someone mentioned that Transcend Computing has a product called TopStack that re-creates some of the AWS services on top of OpenStack or Eucalyptus. Currently it has replicas of Beanstalk, ElastiCache, RDS and ELB.
The presentations included an overview of the services, drill downs into specific services (like the database services, autoscaling, and VPC), case studies, guidelines for architecting for the cloud, including scalability and availability, and Amazon's 7 Cloud Architecture Best Practices:
- Design for failure and nothing fails
- Loose coupling sets you free
- Implement elasticity
- Build security into every layer
- Don't fear constraints
- Think parallel
- Leverage different storage options
I thought the class was a good overview of AWS - while one could possibly collect the same information from the AWS service documentation and forums in, it was good to have 3 days dedicated to this. However, the discussions with the instructor and other participants were very interesting and would not have been possible without taking the class.