A development and operations -- or DevOps -- model enables IT teams to release applications at a much faster pace...
than with a traditional deployment approach. Many businesses already rely on AWS as a cloud platform to increase agility, lower capital expenses and reduce the time it takes to get an application into production. And after implementing DevOps, many of these businesses deploy new features multiple times per day.
But achieving this type of efficiency is no small task.
Implementing DevOps often requires changing employees' mindsets. IT teams need to remove the silos between the development and operations teams so they can work in unison to achieve the common goal of quickly releasing application changes. With the right approach, automation can replace manual tasks, making the entire process quicker and more reliable.
To effectively follow these practices on AWS, developers need a solid understanding of the available tools and services.
CI and CD in AWS
Continuous integration (CI) is a popular software development practice that allows developers to get immediate feedback about code changes to an application. Developers commit their code to a central repository, which triggers an automated build and automated tests. CI allows IT teams to address bugs quickly, making the application more reliable.
Building on top of CI is the practice of continuous delivery (CD). Under this model, committed and approved code is deployed to a production-like environment; integration testing guarantees the application behaves correctly. If everything goes as planned, the team knows it has a production-ready version of the application that can be released at any time.
AWS built services that allow teams to implement these common development practices natively in the cloud. These services can create a CI/CD pipeline that automates everything from triggering tests and builds to spinning up new infrastructure and deploying and testing new versions of an application.
Here are the AWS tools that teams can use when implementing DevOps pipelines:
- AWS CodePipeline is a managed CD service that can model and orchestrate the software release process. In CodePipeline, developers create stages for each step in the release process. The source stage polls a version-control repository where developers are committing code. When new changes are detected, CodePipeline sends the code through automated build and test stages. If those tasks succeed, developers run and test the application in an existing development environment, or a stage in the pipeline builds a new environment.
- AWS CodeCommit is a fully managed and scalable source control service. Developers commit code to secure and private Git repositories hosted on AWS; this eliminates the need for teams to maintain and scale their own source control. CodeCommit integrates with existing Git-based tools and is secured using AWS Identity and Access Management. CodeCommit integrates seamlessly with CodePipeline; IT teams can also use public or private GitHub repositories. In either case, CodePipeline polls these repositories to pick up changes and send them automatically through the release pipeline.
- AWS CodeDeploy is an automated software deployment service that works both on premises and in the cloud. IT teams can use CodeDeploy in a CI/CD pipeline to install application code on servers. To do this, an agent runs on Elastic Compute Cloud (EC2) instances or on-premises servers. As new code makes its way through a release pipeline, CodePipeline takes the output artifacts from the build stage and hands them off to CodeDeploy, which installs the application code on servers.
Infrastructure as code
A core principle of the DevOps model is to automate everything. Instead of building server environments manually, teams use infrastructure as code (IaC) to apply software development practices to infrastructure. The goal is to define the infrastructure in a declarative template that can be checked into source control and serve as a blueprint for the entire environment. This allows teams to easily see what infrastructure changes took place from one release to the next.
In addition, a stage within the CI/CD pipeline automates the deployment of the development environment to prove that the application is ready for production.
For AWS users, AWS CloudFormation is the IaC product to consider. Infrastructure is declaratively defined in a JSON-based template, which the CloudFormation service can use to deploy a complete environment.
Popular configuration management tools, such as Chef and Puppet, easily integrate with CloudFormation to further automate OS-specific configurations. They allow teams to commit the entire infrastructure to source control and even test it within a stage of the CI/CD pipeline -- just like application code.
Monitoring and logging
An essential practice of the DevOps mindset is monitoring, logging and measuring everything. Amazon CloudWatch can monitor common performance metrics, such as CPU and memory use, to keep an eye on application performance. AWS provides a slew of metrics for every service, and developers can even customize their own metrics.
CloudWatch also supports centralized logging and events. System logs from servers can be automatically sent into CloudWatch Logs for a centralized view of activity on every server in the environment. The CloudWatch Events feature supports the triggering of actions when things take place on the AWS platform. For example, developers can set a Simple Notification Service alert or invoke a Lambda function in response to an EC2 instance entering a running state; developers can even schedule snapshots of Elastic Block Store volumes.
DevOps quiz: What IT admins need to know
As DevOps tools gain a place in the IT landscape, IT admins can brush up on what they need to know about DevOps. Prove your knowledge with this quiz.
CloudWatch users can take action on any API decision made within AWS. The service also supports alarms and actions that can notify teams when performance degrades, when services go offline or when errors are found within application and system logs.
The key to implementing DevOps is to learn the tools and get hands-on experience. With AWS, it's easier than ever to implement a proof of concept. Developers can start in a nonproduction environment, create new pipelines and tear down resources as their teams gets comfortable with AWS tools.
CloudFormation templates fasten IT operations
Use CloudWatch to monitor performance metrics
Combine VMware and AWS for DevOps harmony