Guides

An Overview of DevOps on AWS

A quick stop tour of DevOps on AWS.

January 30, 2023

AWS and DevOps

AWS has a complete kit of services helping users manage and scale infrastructure, check-in code, and operate pipelines and deployments all in one place, enabling a potential one-stop shop for DevOps. 

The reality is that as organizations grow and scale, so do the number of customers and requests. Companies that run and build software are turning to a DevOps way of working to keep up with the ever-growing consumer demand. DevOps teams worldwide rely on AWS as a critical pillar of their DevOps strategy, from startups to mega organizations like Netflix. Also, AWS itself does DevOps…really well!. According to a talk in 2008 by Jon Jenkins former Engineering Director, even then AWS was deploying code every 11.6 seconds. So, I think they know something about building tools that support a DevOps way of working.

According to AWS.com, DevOps combines cultural philosophies, practices, and tools that increase an organization's ability to deliver applications and services at high velocity: evolving and improving products faster than organizations using traditional software development and infrastructure management processes. This speed enables organizations to serve their customers better and compete more effectively in the market.

Benefits include speed, rapid delivery, scale, improved collaboration, security, and reliability. All are contributing to the progress of the organization. However, implementing DevOps is no mean feat; depending on the size of the organization takes years to implement. Culture is cited as one of the most significant components to get right, where teams shift mindsets from traditionally siloed teams to embrace a collaborative approach throughout the software development lifecycle. Communication is vital to this change, coupled with service ownership models, where individuals and groups take full accountability for building and running the services they work on, which means teams can make changes to their services that benefit the customer - in other words, more agile. 

So, how does AWS support teams on their DevOps journey? Let's dive in.

DevOps Tooling by AWS

To help categorize some of AWS's critical DevOps services, I will look at them from the angle of best practices.

AWS outlines six DevOps best practices which I will briefly step through, and link AWS tooling that supports each practice. 

  • Continuous Delivery 
  • Microservices 
  • Infrastructure as Code 
  • Monitoring and Logging
  • Communication and Collaboration 

All these best practices and associated tooling are to make the DevOps engineer's life easier and help engineering teams achieve frequent feature updates. 

Continuous Delivery:

A process where code changes are automatically built, tested, and prepared for release into production environments. 

CodeBuild and CodePipeline are two AWS tools that help teams implement continuous delivery.

CodePipeline lets users build workflows in CodeBuild

CodeBuild runs automated tests and deploys code. 

Microservices 

In recent years organizations have been opting for microservice-orientated architecture instead of traditional monolithic architectures. MSOA breaks primary services into more manageable micro services, where dedicated teams can be assigned to build and run these services. It also helps operational teams load balance support and infrastructure for any given application while ensuring that one failure does create a domino effect across multiple services and applications.

Over recent years, containerization has become the most popular way to run and manage your microservices. AWS has pioneered some great technology to help organizations do this, like Amazon Elastic Container Service (ECS) and AWS Lambda.

AWS Lambda is a serverless, event-driven compute service that automatically resizes, scales, and runs application requests without crashing your service or with the overhead of manually managing the backend—resulting in performance and reliability while you scale. 

ECS is a managed container orchestration service that makes it easier for the DevOps engineer to deploy, manage and scale containerized applications. 

Infrastructure as Code (IaaC)

Teams worldwide are increasingly accustomed to IaaC - wondering what life was like before IaaC; check out the life of a system administrator! Deadtroll.com

IaaC has given teams a new lease of life regarding spinning up, managing, and updating their applications' infrastructure while making the process more predictable. 

AWS CloudFormation is a service that provisions and manages stacks based on templates you create that model your architecture infrastructure. CloudFormation can be used to provide a simple VPC subnet to provisioning services like AWS Elastic beanstock. 

Monitoring and Logging

Your monitoring and logging stack is a critical part of your DevOps approach, helping teams track the performance of your infrastructure and applications while assisting operations to pinpoint any issues that arise post-deployment.  

One of the most commonly used monitoring tools is Amazon Cloudwatch. This service enables teams to collect metrics and monitor applications running on your AWS cloud. It also allows teams to stay up to date through alerts when anomalies arise.

Amazon DevOps Guru

DevOps Guru leverages twenty years of operational data to build a machine learning model that can automatically detect anomalies and create workflows for users to respond to current issues and prevent a recurrence. 

How it works:

  1. Specify coverage by outlining which resource you want to analyze 
  2. DevOps Guru starts analyzing your CloudWatch metrics, Cloud trail, and other operational data to identify problems you can fix to improve operations. 
  3. Provides insights and essential information by sending notifications for each vital event via SNS or System Manager 

For existing AWS customers, you can use Quick Setup in the AWS System Manager to set up DevOps Guru and configure options. Otherwise, check out the documentation page here.

DevOps Guru was introduced in 2020, and it's a clear indication from AWS that the AIOPs market is full of opportunities.

DevOps with AWS

Firstly, what does a DevOps engineer do? My colleague Vlad does a good job at describing this in his article here. In summary, A DevOps engineer ensures that code can be quickly and efficiently deployed to production systems with minimal errors. To do this, they must have a strong understanding of development and operations. Furthermore, they must be able to work with various teams to automate tasks, build tools, and create

The tools and processes you implement depend on the company and how quickly teams are to embrace change; basically, some things are simply out of your control. 

However, learning to utilize AWS to become a better DevOps engineer is well within your control. 

AWS has several different training courses and certifications for existing practitioners in DevOps or someone looking to switch careers. 

Currently, there are three DevOps online training courses available:

  • Getting Started with DevOps on AWS (1 hour)
  • AWS Cloud Development Kit Primer (2 hours)
  • Exam Readiness: AWS Certified DevOps Engineer - Professional (7 hours)

There is one certification available:

  • DevOps Engineer Professional. 

On AWS.com, two years of prior AWS Cloud experience is recommended. 

You can learn more here

Conclusion

As to be expected by the worlds leading technology company, AWS has a whole host of tools and services that can propel DevOps teams forward and contribute to shifting the engineering team's culture to a DevOps way of working. 

The interoperability between different AWS services is a clear advantage but not a silver bullet, and I am sure DevOps engineers would agree. 

Finally, as well as offering courses and certification, AWS also has a whole host of free publicly available DevOps content; check out the list below:

Most popular