Many "born in the cloud" IT organizations recognize the need to build DevOps integration and delivery methods as...
a foundation of their daily processes. And several companies consider AWS as a primary enabler for DevOps.
AWS' base components, including AMIs, Amazon Simple Storage Service (S3) objects and Elastic Block Store volume snapshots, are fundamental building blocks for spinning up new resources and creating automated cloud operations. But often these basic components aren't enough to support DevOps in AWS; several open-source or commercial tools are available to support key aspects of the DevOps methodology: continuous integration, continuous delivery and continuous deployment.
There is a plethora of third-party tools available to help enterprises move toward the various factors of DevOps in AWS -- provisioning, automation and testing, configuration management, integration and monitoring. While some of these tools were developed specifically to work with AWS, many now support multiple cloud services as well as on-premises integration and delivery.
DevOps in AWS tools, such as CloudFormation, or third-party tools, such as Terraform, enable developers to describe resources using a friendly domain-specific language to build a new stack from the ground up.
Troposphere is another third-party tool that could help developers provision a stack. Essentially, it's a Python library that development teams can use to write CloudFormation templates; developers can also combine it with boto to look up various IDs and fields, then plug them into the Troposphere CloudFormation template. Teams can launch the CloudFormation template with boto as part of creating an environment for DevOps in AWS.
One of the main components of continuous integration is the testing phase. AWS provides a good sandbox for developers looking to quickly replicate a production environment for testing purposes, run whatever tests are necessary, and then shut down the environment when done.
AWS APIs and test-automation frameworks allow engineers to continuously run multiple automated tests in parallel. These tools help execute, manage and measure multiple types of tests including unit tests, integration tests and system tests.
BlazeMeter is a test automation framework based on the open source JMeter tool. BlazeMeter simulates loads on applications and uses AWS compute power, allowing engineering teams to experience seamless load test operations with minimal management efforts.
Sauce Labs is another testing tool. This Selenium-based commercial offering does the same for functional testing as BlazeMeter does for load testing. Other open source testing tools include JUnit, TestNG and Appium for mobile testing.
Configuration management (CM) tools bring a company's configuration files to a desired state, including underlying Elastic Compute Cloud (EC2) instance OSes and software configuration files -- different versions, network addresses and any other operational information. CM tools help describe instances using scripts, such as receipts and manifests. So, when a developer starts a new instance from a ready-made AMI, he can use CM tools such as Chef, Puppet, SaltStack or Ansible, which was recently acquired by Red Hat, to maintain newly created EC2 instance attributes.
Integration and delivery
There are multiple tools that development teams can use with DevOps in AWS for continuous integration and continuous delivery. Git or GitHub, AWS CodeCommit and even popular proprietary tools such as JFrog, can be used to store a source code repository. Other tools, such as Jenkins, Travis CI, TeamCity or Codeship, can act as integration servers. Various project management systems, Jira or Slack, for example, can facilitate collaboration.
From an architectural point of view, development teams should store all build and artifacts in S3 and have dedicated EC2 instances for integration and delivery. Using AWS capabilities, such as Auto Scaling, can help ensure that the delivery infrastructure is robust.
Monitoring is a significant element of operations, especially in the world of modern IT. And AWS' dynamic and complex environments require different monitoring systems. One of the key features of a modern IT monitoring tool is that it allows you to correlate between events in different systems and understand how different systems are affected.
Multiple third-party tools can integrate with Amazon CloudWatch to report on cloud infrastructure performance; the tools also correlate that data with performance metrics from layers "up the stack." Popular commercial APM tools in the systems monitoring area include New Relic and AppDynamics. Other tools that are considered "monitoring aggregators" include Datadog, PagerDuty and BigPanda.
DevOps process all starts with a conversation
Think ahead with a secure software development plan
DevOps has a bright future