
Automation is one of the Principles of Architecting in the Cloud and for most IT operations engineers is the end goal. But can we really get to the point that all the operation’s tasks became automated?
The answer is yes!
When you properly design your applications and infrastructure and make them stateless and reusable resources by the techniques we’ve discussed here and here, you’ve already started your automation journey:
- Making your applications and components stateless you can easily scale them with minimal/no manual process involved which you can take it as automation.
- When you make your servers stateless and reusable you’ve already utilised some automation to bootstrap your computing resources.
- Having your Infrastructure available as a code is also a step towards automation on your infrastructure resources.
Now that you did your homework to design an automation-ready application, servers and infrastructure, you can sit back and let AWS do most of the manual jobs for you.
Autoscaling, AWS Elastic Beanstalk, CloudWatch, OpsWork and Lambda are some of the amazing Amazon’s tools that can help you increase the efficiency and reliability of you IT service as well as increasing the productivity of your IT operations.
These services can help you automate responding to multiple events that you would manually react in traditional IT environments.
Auto-Scaling
Scalability has always been an important factor in designing at any layer of your IT infrastructure. If your applications and infrastructure have been designed for scalability you can move to the next step and automate your scalability tasks.
Using Auto Scaling feature in AWS you can dynamically add more server instances when there is a demand for it -triggered by CPU, Memory and Load – so you maintain the availability of your service. You can remove your resources on quiet times automatically and save some money.
I believe this is one the coolest AWS features which gives you the peace of mind on your application availability and reliability and also remove the cost of underutilised servers.
AWS Elastic Beanstalk
Let’s imagine you have an application and you want to deploy and provision required resources for it. Yes, you need to provision the servers. load balancers, database, application servers (PHP, Java, Python,…), configure all of the components and connections, patch your server and start uploading you application code to your environment. This will take hours if not days assuming you have all the resource available.
With AWS Elastic Beanstalk all you need is to do is upload your application code and Elastic Beanstalk does the hard job for you. It handles all the resource deployments, capacity provisioning, load balancing, auto-scaling and health monitoring for you so your application will be up and running in minutes.
You may ask what application platform is supported? the answer is almost all of the well-known platform are supported by AWS Elastic Beanstalk:
Java, Net, PHP, Node.js, Python, Ruby, Go and Docker
And it’s free!! There is no extra charge for Elastic Beanstalk and you just pay for the AWS resources needed to store and run you application.
Amazon CloudWatch
CloudWatch is a monitoring service for AWS Cloud services. You can collect and track metrics/logs from AWS resources and set alarms based on the status of your service. And most importantly you can automatically respond to any change in your AWS resource.
For example, you can Automatically Recover your EC2 Instance in case of failure. EC2 instances are similar you your (virtual) server is AWS world. you can create a CloudWatch alarm to monitor the health of your EC2 instance and automatically recover it in case of any hardware/software failure. The new instance is completely identical to the original one with same ID, private/public IP ,… Note that this feature is not supported by all the instance types.
You can also call/run functions (through Amazon SNS and Lambda) when a specific CloudWatch Alarm triggers as a result of a metric change.
AWS OpsWorks
One of the features of AWS OpsWork is that you can automatically update your configuration based on the life cycle events of instances. For example when a new database instance is created in your server farm – a life cycle event -, OpsWork can call for a Chef recipe that is responsible for updating your application servers so that they can use this new database server. This is a very common example of Continuous Configuration of instances.

