What opportunities exist for automation within AWS?
What tools and services can and should I be using and familiar / expert in for being an automation engineer in 2020?
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:
CloudFormation
Infrastructure as Code is the Holy Grail of modern development. Aws have a detailed offering with CloudFormation 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.
Some resources that have helped me: