To strive towards continuous delivery, your organization will need to compile multiple tools to drive workflow automation.
In fact, according to the CALMS approach (Culture, Automation, Lean, Measurement, Sharing) used in the integration of DevOps teams, tools have a big impact on automation, lean, and measurement.
Automation is used to manage the process of developing a feature all the way through operational deployment of that feature. It removes key human interactions that can be fraught with mistakes and slow down the process.
Mature workflow automation efforts can enable a team to spin up an environment, develop, and release code within hours, if not minutes.
To achieve maturity, you need to apply the full DevOps lifecycle, which can be broadly broken down into these key elements and processes:
- Development (coding and testing)
- Source management
- Build and deploy
- Environment provisioning
Each of these has their own tools to manage a portion of the process.
Well-performing tools offer ways to integrate both antecedent and precedent activities and tools.
For example, Git is often used to manage source control. Jenkins is often used to manage the build process. Git and Jenkins work together to automate pulling of source code and building the application.
Source and Version Control
These tools existed prior to the advent of DevOps. But in the DevOps world, they’ve taken on more importance. They now house infrastructure management code as well as test code. Version control allows development and operations teams to roll back undesirable code, as well as separate releasable vs non-releasable code.
Common source and version control tools:
Build and Deploy
Build and deploy tools are a fundamental part of any DevOps team’s toolchain. They pull source code, assemble, compile, deploy, and often execute tests. They are also key to any continuous integration effort.
Common build and deploy tools:
Maven and Gradle are also popular build automation tools, but require other tools for deployment.
Environment management tools are necessary to effectively manage server environments, ensuring consistency and scalability. They pull infrastructure source code and configure target environments. In many cases, they also test the configuration settings. These tools are are fundamental to any continuous deployment effort.
Common environment management tools:
To ensure the ongoing success of delivered features, it’s critical to have a tool that monitors applications for health performance.
Common operations tools include:
- New Relic
Continuous integration and deployment are built on the philosophy of modularization, largely based on the idea that a thousand small changes are better than one large one.
This means that developers and operators alike need to ensure their changes can be isolated, deployed and rolled back independently. It also means that instead of building monolithic applications, developers should build applications based on micro-services – small, independent applications and services. This allows for easier continuous deployments.
Ancillary to microservices is the idea of containerization. Containers allow developers to encapsulate their application or service, along with dependencies to run them, in an isolated fashion. Containers isolate the code they contain from the underlying host machines. As a result, common dependencies of multiple applications can avoid conflict through this isolation.
Common container tools:
Common container management tools:
Mesos / Mesophere
No DevOps conversation would be complete without a discussion of the role of virtualization. Containers seek to isolate application code from each other, while virtualization seeks to isolate the computing environment from the underlying hardware.
Containers require an underlying operating system to provide all the basic services to the containerized application: memory, networking, and storage. Meanwhile, virtual machines are self-contained, fully functional operating systems that share hardware resources via a hypervisor. It is possible – and frequently done – to run containers inside a virtual machine.
Common virtualization tools include:
Cloud and Infrastructure as a Platform (IaaS)
Infrastructure as a service (IaaS) and cloud platforms are another important part of the DevOps ecosystem.
These cloud platforms allow you to buy memory, data storage, server time and computing power as you need it, so your team can focus on building the product or service instead of building infrastructure from scratch.
Common cloud providers:
Amazon Web Services
Google Cloud Platform
It is important to note the cloud services extend beyond just IaaS. Many offer raw computing power via virtualized servers, container services (CaaS), and most recently Serverless Container Architectures (SCA), which offer a pay-by-function model.
The primary difference between CaaS and SCA is that CaaS requires active management of the underlying operating system, and SCAs don’t. SCA is offered via AWS Lambda, Google Cloud Functions, and Microsoft Azure Functions services.
No DevOps effort would be complete without testing tools. These tools integrate into various aspects of the process and help ensure that what is deployed is what is expected – and functions properly.
Since testing occurs at multiple levels, there are multiple tools that assist in testing.
Common testing tools for a business scenario:
Cucumber / Selenium (Java / Ruby)
SpecFlow / CodedUI / Selenium (.NET)
Common testing tools for a unit or integration scenario:
Where to Start?
Now that you know more about DevOps, how do you get started? Here’s how:
- Understand what it is
- Identify your objectives
- Build your business case for implementing DevOps
- Redesign your IT processes
- Design and adjust team structures
- Learn what common tools can support your team
- Foster collaboration, cooperation, and active sharing among your teams
The Phoenix Project Business Simulation Workshop
With your business and technology teams at odds, you’ll need a cultural shift for DevOps to work. Read a related blog
The Phoenix Project Business Simulation Workshop can help. It’s a learn-by-doing workshop in which teams work on challenging issues within a simulated environment. The goal: To learn how to apply DevOps principles and values.
Each participant will play a role with specific tasks, responsibilities and authority. The facilitator will provide support and instructions and help the team reflect on their experiences and what they have learned. More on the workshop