Automation
Automation is one of the reasons many technical engineers love cloud technologies. With AWS, there is a huge emphasis on using API calls to configure the architecture. This permits automation of everything associated with AWS.
Automation incorporates elements and benefits such as the following:
Configuration templates
Code deployment automation
Self-healing infrastructures
Reduction in the need for manual interventions
Reduction in the potential for errors
Lowered operating costs for managed service providers (MSPs)
For many organizations relying on AWS today, approaching any challenge for their IT organization begins with the question “How can we automate the solution?” Let’s look at a specific case. Perhaps your organization’s corporate policy says you cannot use any of the default resources created for you in AWS. For example, you must create a completely unique VPC with your own unique security constraints. Sure, you could go into the Management Console and do lots of potentially error-prone mouse clicking, but things are much easier (and more accurate) when you can automate such actions with a script.
Automation tends to play a huge role in a number of areas is AWS. Here are just a few:
Backup generation and retention
Security compliance
Code deployment
AWS infrastructure changes
Because AWS takes an API-centric approach, there is really nothing you cannot automate. The short list given here just highlights areas where automation is frequently in use by AWS customers.
Orchestration
A huge point of confusion for many engineers who are new to AWS and cloud technology is understanding the differences between cloud automation and cloud orchestration. One of the reasons is related to the fact that the two terms are often used interchangeably, which is often incorrect. The differences between these concepts highlight a key challenge for teams looking to improve IT processes.
Recall that automation involves accomplishing a task or function without human intervention. Orchestration, on the other hand, is the process of arranging and coordination of automated tasks, ultimately resulting in a consolidated process or workflow. Automation and orchestration go hand in hand, but note that they are technically different concepts.
With AWS, you are encouraged to create standard processes to spin up full environments to host new and exciting applications. You accomplish this by orchestrating many automated tasks, such as the following:
Automating new instances with Auto Scaling
Load balancing with automated ELB configurations
Deploying automation by using a tool like CodeDeploy in AWS (Figure 11-1 shows the Getting Started page of CodeDeploy in the AWS Management Console.)
Figure 11-1 CodeDeploy in AWS
Using Puppet scripts to automate the configuration of the operating system
While individually the tasks in the preceding list might be fairly simple to automate with the robust tools and capabilities of AWS, taken together, these tasks can be very tricky to orchestrate. After all, these activities must occur in a particular order, under certain security groups/tools, and must be given roles and granted permissions. In other words, engineers must complete hundreds of manual tasks to deliver the new environment, even when the building blocks of that environment are automated. This is where orchestration is key.
Cloud orchestration tools, whether native to the IaaS (infrastructure as a service) platform or third-party software tools, enumerate the resources, instance types, IAM roles, and other resources required. Orchestration can also enumerate the configuration of these resources and the interconnections between them.
AWS engineers can use tools like CloudFormation to create declarative templates that orchestrate these processes into a single workflow so that the “new environment” workflow previously described becomes a single API call.
Well-orchestrated IT processes enable and empower continuous integration and continuous delivery, uniting teams in the creation of a set of templates that meet developer requirements. Such templates are in many ways living documents that embody the celebrated and popular DevOps philosophy.
The benefits of orchestration tools far outweigh any potential drawbacks. For organizations today, they celebrate advantages such as the following:
Reduced overall IT costs
Gained time for new or experimental projects
Improved delivery times to customers
Reduced friction between system and development teams