WavebreakMediaMicro - Fotolia
DevOps has as many definitions as it has practitioners. But what started as a cultural and philosophical movement has evolved into an approach to software development and delivery.
Organizations can get components of the DevOps toolchain from a cloud service provider and pay only for use, rather than a la carte for capabilities, user accounts or system licenses, which makes as-a-service DevOps tools a compelling option -- particularly in light of the variety of services and full-spectrum toolchain options available.
Cloud vendors bridge the worlds of development and IT operations through streamlined, automated and controlled IT management. While these services overlap with some stand-alone DevOps automation tools, they also include infrastructure services, such as workload balancing, autoscaling, deployment templates and configuration management.
DevOps automation is still relatively immature, but it is also dynamic enough that tool selection is a significant hurdle. Organizations also face the decision to build or buy a toolchain. The DevOps tools market is governed by few de facto standards -- an organization's best set of tools depends upon both its software development processes and the tools and languages with which developers and ops professionals are already familiar.
Examine the respective offerings for DevOps automation from AWS, Microsoft Azure and Google Cloud, briefly enumerated below, to find the right fit with a cloud-native application or one that's migrating to public cloud to take advantage of scale and specialized services.
AWS DevOps services
AWS offers a suite of DevOps automation services that span the application lifecycle from development and test to deployment and operations.
Version control. CodeCommit is a managed Git source code repository that works with existing Git tools and integration tools, such as AWS CodeBuild -- described below -- and the Jenkins continuous integration (CI) server.
Code build and test. CodeBuild automates code compilation, module integration and test script execution and is compatible with the Java, Ruby and Python programming languages and Node.js, as well as .NET and Docker container environments.
Software release automation and delivery. CodePipeline automates the various stages of an application release process from beta testing environments to production. Use it for advanced deployment techniques, such as phased and blue/green deployment, to support continuous delivery (CD).
Fully packaged CI/CD pipeline. CodeStar provides an entire CI/CD pipeline and software development environment that automates the setup, configuration and instantiation of other services, such as CodeCommit, CodeBuild, CodePipeline and CodeDeploy, along with infrastructure deployment using the cloud provider's EC2 IaaS templates, Elastic Beanstalk web app deployment orchestration or serverless Lambda.
Infrastructure deployment automation and infrastructure as code. AWS offers a variety of services for these operations-side tasks, including CodeDeploy, CloudFormation, OpsWorks and Elastic Beanstalk. CodeDeploy automates application deployment and configuration on EC2 instances, while CloudFormation provides a configuration language to describe and automate the creation of EC2 instances and other AWS resources, such as Relational Database Service. OpsWorks is a configuration management service that supports Chef or Puppet to automate EC2 configuration and deployment. Elastic Beanstalk is a PaaS for web applications that handles deployment, instance scaling and load balancing.
Configuration management. Systems Manager provides automation scripts for basic management across a fleet of EC2 instances. Use it for tasks such as command execution, system inventory, software patching and version control of system configurations. Config is a resource monitoring and policy auditing service that both monitors and records continuation changes to a fleet of EC2 instances and audits their state against a set of predefined rules.
Microsoft Azure tools
Azure segments its offering into DevOps automation services focused on the development and integration portion of the pipeline and tools for operational management and governance. Together, these provide similar capabilities to the suite available on AWS.
Development project planning and reporting. Azure Boards tracks ideas throughout the planning stages and includes built-in Scrum boards to enable sprints and standups. It also offers data analytics.
Source code management and version control. Azure Repos offers support for any Git client and enables custom and prebuilt webhooks and APIs.
CI/CD pipeline. Azure Pipelines automates application builds and deployments with support for Node.js, Python, Java, PHP, C/C++ and .NET, among others. Azure Pipelines also supports containerization and deployment to other cloud services.
Code test automation. Azure Test Plans executes a variety of performance tests for local and cloud applications and provides a breadth of data analytics for quality assurance.
Configuration management. Azure Automation is a way to control, integrate and maintain systems and applications across pure Azure cloud and hybrid environments.
Infrastructure deployment automation and infrastructure as code. Azure Quickstart Templates, Automation and PowerShell Desired State Configuration (DSC) combine to automate infrastructure deployment and manage code configuration in ways that ensure consistency and reduce human error. Azure Quickstart Templates are declarative documents that deploy resources through Azure Resource Manager. Automation turns manual updates with Windows and Linux systems into automated processes. And PowerShell DSC runs configurations as code through PowerShell.
Resource policy monitoring and auditing. Azure Policy enables the user to create, assign and manage various policies. It enforces rules for resource management and tracks compliance for various legal or corporate standards, as well as service-level agreements.
Design of complex system environments. Azure Blueprints -- in preview at time of publication -- automates the creation and maintenance of IT environments with limits on access that enable production governance.
Managed PaaS. Azure App Service offers scalability, security and flexibility to applications on web, mobile or cloud platforms, as well as APIs.
Microsoft bundles many of these services together into a suite of DevOps automation tools in the form of Visual Studio Team Services, which is available as Azure DevOps Services.
Google Cloud tools
Google Cloud tools fall into most categories identified above but also rely upon integrations to third-party offerings for several functions.
Version control. Google Cloud Source Repositories is a private Git repository that enables users to collaborate and scale their code in as many repositories as necessary without add-on charges.
Code build and test. Cloud Build enables application development without language or host-destination restrictions. Cloud Build also automates deployments with built-in integration to the vendor's services, such as Kubernetes Engine, App Engine, Cloud Functions for serverless and Firebase managed app builds.
Release automation and CI/CD. Google Cloud offers integrations for many third-party CI/CD tools, including CircleCI, Jenkins and Spinnaker.
Infrastructure automation. Deployment Manager load balances and auto scales deployments with a declarative approach.
Configuration management. Google doesn't have a configuration management service specifically for its cloud platform but rather integrates with popular third-party tools, such as Chef, Puppet and Salt.
Policy monitoring and management. Stackdriver Logging, which includes features such as Audit Logging, stores and monitors log data from both Google Cloud and AWS, as well as other sources.
PaaS. Like AWS and Azure, Google Cloud offers a PaaS option for DevOps teams. App Engine is designed to support many development languages and platforms to build scalable apps without direct infrastructure management.
AWS offers the most comprehensive set of cloud-native DevOps automation services that combine to support diverse work styles and workflows. Azure matches AWS in most categories and offers tight integration with existing Microsoft Visual Studio tools, which makes it better for organizations that standardized on Microsoft's development tools. Google lags behind its major competitors in DevOps depth but does integrate well with popular third-party DevOps automation tools, enabling organizations with existing CI/CD and configuration management pipelines to extend these to Google Cloud environments easily.