Elasticity
The ability to acquire resources as you need them and release resources when you no longer need them. In the cloud, you want to do this automatically.
Elasticity
Most people, when thinking of cloud computing, think of the ease with which they can procure resources when needed. This is only one aspect to elasticity. The other aspect is to contract when they no longer need resources. Scale out and scale in. Scale up and scale down. Some services do this as part of their service: Amazon S3, Amazon SQS, Amazon SNS, Amazon SES, Amazon Aurora, etc. Some require vertical scaling, like Amazon RDS. Others integrate with AWS Auto Scaling, like Amazon EC2, Amazon ECS, AWS Fargate, Amazon EKS, and Amazon DynamoDB. Amazon Aurora Serverless and Amazon Athena also qualify as elastic.
Implement elasticity
- Identify the workloads that have variable load.
- Identify the workload load range. That is, is there enough variability to warrant adding or removing resources?
- Identify the application limitations (sessions, long initialization, licensing, etc.) that may limit elasticity.
- Identify if the increase in demand can be met by automatic scaling, or if it needs to be in place before (for events, launches, etc.).
- Identify applications that can use Amazon Athena or Amazon Aurora Serverless
- Implement elasticity using AWS Auto Scaling or Application Auto Scaling for the aspects of your service that are not elastic by design.
- Test elasticity both up and down, ensuring it will meet requirements for load variance.
- Iterate on implementation and testing until you can meet requirements. You may want to investigate golden Amazon Machine Images, docker containers, etc. to speed launch.