##Improving quality through automation in AWS

There are many opportunities for adding value and improving quality by using automation within the AWS ecosystem.  This continues the quality software path from Manual Testing to Automated Scripts to Infrastructure As Code.  Automation in AWS provides rich new areas of learning and practice for an automation engineer in 2020 and will require the rapid acquisition of new skills and approaches plus the de-emphasis of older skills no longer as relevant.  

An increasing part of the role is essentially becoming a devops engineer.

The primary areas of automation within AWS that I will examine here are:

**Cloudfront**  
Infrastructure as Code is the Holy Grail of modern development.  Aws have a detailed offering with Cloudfront to create controlled, replicable infrastructure.  You create templates in YAML/JSON and use them as the method to provision the resources for a given implementation (stack).  You can eliminate instance drift with immutable deployments.

**OpsWorks**
Lets you use chef and puppet to automate setting up servers and installing software.

**Device Farm**  
The aws Mobile device farm allow you to test both native and mobile web applications on a wide number of Android and Apple devices. But not desktop webbrowsers was also my finding.

**Version Control**  
Code Commit provides versioning, Pull Requests and git integration.  So far I still like github for PR's more.

**API Gateway Environments**  
Built in support for your different development, test and production environments to reduce manual management of them.

**CI - Continuous Integration**  
CodeBuild can be used to automatically build your code and run your tests in the cloud. My favorite tools is CircleCI and I don't think the aws offering matches it in ease of use yet but that will likely change as there is churn in this area. 

**CD - Continuous Deployment**  
CodeDeploy deploys code to environments and gives options for how to roll out changes automatically

**Code Pipeline (CI/CD)**
CodePipeline offers the ability to visually manage and automate the overall Integration / Deployment processes

**Autoscaling**  
Automatically provision servers based on machine utilization

**Elastic Load Balancing**  
Automatically provision services based on user need

**RDS Failover**  
Automatic failover to a Multi-AZ synchronous read replica

**CloudWatch**  
Automatic Notification of when things are a bit out of whack. Costs, machines, usage, many metrics

Pretty much any services which describes 'automatically doing x' is an opportunity for an automation engineer, because, at some point, a person needs to write that automation or the parameters to use.  At least for a little longer.