What is DevOps?
This approach to building software is the norm now with most companies recognizing the need to iterate quickly and release new code frequently. DevOps is a combination of philosophies, practices and tools that replaces long product development cycles with a much faster cadence. The idea is that this way of working makes it easier to respond to customer demands and changes in the market.
Software engineers and operation teams work together to support this process with developers taking on some tasks previously assigned to other teams. Quality assurance and security teams also work more closely with developers within this model.
What are the principles of a DevOps culture?
These are the practices that shape a DevOps team:
- Continuous deployment
- Continuous improvement
- Customer-centric action
Teams deploy updates and new features on a regular basis and monitor the environment to make sure things are operating as they should. Infrastructure-as-code is another key element of DevOps. IaC replaces the manual process of provisioning infrastructure and makes it easier to make universal changes to large deployments. IaC is also an important part of the CI/CD process.
SEE: How to recruit and hire a DevOps engineer (TechRepublic Premium)
What are the business benefits of DevOps?
Companies that use a DevOps approach have seen improved communication, increased efficiencies, better reliability and scaling as well as cost savings. Smaller deployments create rapid feedback cycles and improve the overall process. Smaller batch sizes also reduce the overall risk of deploying new software as well.
What tools do DevOps teams use?
Shifting software development to this model requires a cultural shift and a particular set of tools to support the work. There are several categories of DevOps tools:
- Application performance monitoring
- Artifact management
- CI/Deployment automation
- Configuration management
- Container management
- Deployment and server monitoring
- Test automation
- Version control
This roundup includes some that are specialized to one or two functions while others in the list are more comprehensive.
The best DevOps software
Ansible is an IT automation engine that can handle cloud provisioning, configuration management, application deployment and intra-service orchestration, among other tasks. Ansible is designed for multi-tier deployments and can model the entire IT architecture.
The platform uses YAML, a human readable data serialization language. YAML is mostly used for configuration files and in applications where data is being stored or transmitted. It has a minimal syntax.
Ansible also uses playbooks to orchestrate multiple levels of an infrastructure’s topology. According to the company, the playbooks can be used to:
- Take machines in and out of load balancers
- Have one server know the IP address of all the others and use those to build out configuration files dynamically
- Set some variables, prompt for others and set defaults when they are not set
- Use the results of one command to decide whether to run another
For security, Ansible supports passwords, but is designed for SSH keys with ssh-agent or Kerberos.
Ansible modules can be written in any language that can return JSON. There are several Python APIs for extending Ansible’s connection types and there are hundreds of integrations, including Atlassin, AWS, Cisco, Google Cloud Platform, Splunk, VMware and Windows.
Ansible is an open source community project sponsored by Red Hat.
Contact Red Hat for pricing information.
SEE: Terraform vs Ansible (TechRepublic)
This Microsoft product covers the entire application lifecycle and provides version control, reporting, requirements management, project management, automated builds, testing and release management capabilities. According to the company, the platform supports a collaborative culture and set of processes that bring together developers, project managers and contributors.
The software is available in the cloud or on-prem. Also, customers can use integrated features available through a web browser or an integrated development environment client, or select one or more of these standalone services:
- Repos: For Git repositories or Team Foundation Version Control for source control
- Pipelines: Build and release services for continuous integration and delivery of applications
- Boards: A suite of agile tools for planning and tracking work, code defects and issues via Kanban and Scrum methods
- Test plans: Several tools for testing including manual/exploratory testing and continuous testing
- Artifacts: A service for sharing packages such as Maven, npm, NuGet and others from public and private sources and for integrating package sharing into development pipelines
Azure DevOps also includes collaboration tools such as customizable dashboards, built-in wikis and configurable notifications. The platform also supports extensions and integrations with other services including Campfire, Slack and Trello in addition to developing custom extensions.
Microsoft offers a free trial for some DevOps services while per user costs start at $6 per user per month.
AWS has a flexible set of services to make it easier to provide and manage infrastructure, deploy code, automate software release and monitor application and infrastructure performance. Each service is ready to use for existing AWS customers and designed to scale from a few instances or thousands. Customers can use each service via the AWS command line interface or through APIs and SDKs. DevOps solutions and tools cover CI/CD, microservices, infrastructure as code, monitoring and logging, platform as a service and version control.
AWS offers a free tier that includes more than 100 products and three types of free offers:
- Short-term free trials
- 12 months free for new customers
- Always free for new and existing customers
A customer with access to the AWS Free Tier can use up to 750 instance hours each of t2.micro instances running Linux and Windows. Usage of the Linux and Windows t2.micro instances are counted independently. The AWS free tier applies to participating services across the company’s global regions, including 26 launched regions, 84 availability zones, 17 local zones and 310+ points of presence.
AWS also offers guides and tutorials about the DevOps services that cover setting up a CD pipeline and migrating a Git repository to AWS as well as training and certification programs such as the developer learning path.
AWS has a free tier for its services as well as pay-as-you-go, subscription options and volume-based discounts.
Docker is one of the top choices for container management and has both free and premium tiers. Docker Engine hosts the containers. A container is a standard unit of software that packages up code and all its dependencies so an application can run in any environment. A Docker container image holds everything an app needs: code, runtime, system tools, system libraries and settings. Containers can be used with virtual machines to create flexibility in deploying and managing applications.
Three types of containers run on the platform:
For developers, Docker has a set of command line interface plugins to build, test and share containerized applications and microservices. Compose simplifies the code to cloud process and toolchain for developers and allows engineers to define a complex stack in a single file and run it with a single command.
Other developer services include Build to create images for multiple CPU and OS architectures and share them in a private registry or on Docker Hub and Context which makes it easy to switch between multiple Docker and Kubernetes environments. Docker Hub makes it easy to view images stored in multiple repositories and to configure a complete CI/CD container workflow with automated builds and actions triggered after each successful push to the Docker Hub registry.
Docker offers personal accounts for free, pro accounts for $60 per year, team accounts for $300 per year and business accounts that start at $21 per user per month.
This open-core company provides DevOps software to develop, secure and operate software in a single application. Software companies can use GitLab to do portfolio planning and management through epics, groups and milestones to track progress. The flexible platform can increase visibility from the start to the finish of a project and make it easier to track issues throughout the delivery lifecycle. The platform also has these components:
- Create: For managing code and project data from a single distributed version control system
- Verify: For automated testing, status analysis security testing, dynamic analysis security testing and code quality analysis
- Package: For managing containers and package registries to work with GitLab source code management and CI/CD pipelines
- Secure: For integrating security into app development and delivering license compliance
- Release: For automating the release and delivery of applications with zero-touch CD builtin into the pipeline
- Configure: For managing application environments with a strong integration for Kubernetes
- Monitor: For reducing the severity and frequency of incidents
- Protect: For native cloud protections, unified policy management, container scanning and container network and host security
GitLab has a free option for individual users, a premium account for $19 per user per month and an ultimate option for $99 per user per month.
Jenkins is an open source CI/CD automation tool written in Java. This platform is especially helpful for managing microservices and surpassed 200,000 known installations in 2019, according to the company. Jenkins runs on Windows, MacOS and Linux and in a Docker container. The software is self-contained and can be extended via its plugin architecture which includes more than 1,800 entries.
Jenkins also supports a broad user community to make it easy for people who are new to the platform. There are sub groups within the community that cover coding, meeting other users, improving documentation and contributing to automated tests. There are area meetups as well as an online meetup for people interested in socializing with other CI/CD users and contributors.
Jenkins also offers a public, community-driven roadmap that collects and tracks initiatives in all areas, including features, infrastructure, documentation and community. Future projects include pipeline development in IDE, user interface rework and better remote monitoring.
Jenkins is free to use.
Jira was originally built as a bug tracker but the platform has expanded to manage projects of all types from requirements and test cases to agile software development. Jira is the backbone of Open DevOps, Atlassian’s open integrated toolchain. Jira integrates with first- and third-party tools including Bitbucket, GitHub, GitLab, Confluence and Opsgenie.
Jira’s DevOps solution can create automated workflows on multiple tools and provide real-time status updates. The software also supports roadmap requirements.
Jira integrates with Hipchat and Slack, as well as many other types of third-party software. It is highly customizable and good for both tech and business users.
Teams of up to 10 people can use Jira for free. A standard account is $7.50 per user per month, the premium account is $14.50 per user per month and the enterprise version is a custom quote.
Kubernetes is an open source container orchestration system used for automating computer application deployment, scaling and management. Kubernetes also helps developers build distributed applications and makes it easier to manage scalable infrastructure for applications. Google open sourced the Kubernetes project in 2014.
Kubernetes allows DevOps professionals to:
- Deploy containerized applications quickly and predictably
- Scale containerized applications on the fly
- Roll out new features to containerized applications
- Optimize hardware specifically for containerized applications
A Kubernetes cluster includes a set of worker machines called nodes that run containerized applications. The worker node hosts pods that represent the components of the application workload. The control plane manages the workers nodes and the pods in the cluster. Other Kubernetes components include:
- Labels and selectors: Key-value pairs used to identify and group resources within Kubernetes.
- Controllers: A reconciliation loop that drives actual cluster state toward the desired cluster state.
- Services: A way to identify elements used by applications (name-resolution, caching, etc.).
- API server: Serves the Kubernetes API using JSON over HTTP.
- Scheduler: Pluggable component that selects which node a pod should run on based on resource availability.
- Controller manager: The process that runs the Kubernetes controllers such as DaemonSet and Replication.
- Kublet: Responsible for the running state of each node (starting, stopping, and maintaining application containers).
- Kube-proxy: The implementation of a network proxy and load balancer that supports the service abstraction.
- cAdvisor: An agent that monitors and gathers resource usage.
Pure Kubernetes is free and can be downloaded from GitHub. Deploying Kubernetes to a system or cluster in the public cloud incurs hosting fees.
Maven is a build automation tool. Maven’s objectives are to help developers understand the entire software development process and to:
- Make the build process easy
- Provide a uniform build system
- Provide quality project information
- Encourage better development practices
Developers can use Maven to manage these processes:
- Software configuration management
Maven is written in Java to build projects written in C#, Ruby, Scala and other languages. Maven builds a project with its project object model and a set of plugins.
As an open source project, Maven relies on an active user community to suggest improvements, report defects, communicate use cases and write documentation. There are several mailing lists and a Slack workspace.
Maven is open source and free to use.
Developers use this tool to manage and automate the configuration of servers.
Puppet’s main benefits are consistency of infrastructure and automation of deployments and changes. As with DevOps practices in general, Puppet requires the adoption of a certain set of concepts and practices, including:
- Infrastructure-as-code: The foundation of DevOps which combines software development and operations
- Idempotency: The ability to repeatedly apply code to guarantee a desired state on a system and get the same results every time
- Agile methodology: The practice of working in incremental units of work and reusing code
Puppet is configured in an agent-server architecture, in which a primary node controls configuration information for one or more managed agent nodes. Servers and agents communicate by HTTPS using SSL certificates. Puppet includes a built-in certificate authority for managing certificates.
A Puppet user defines the desired state of infrastructure systems by writing code in Puppet’s Domain-Specific Language. Puppet code is declarative.
Once the infrastructure code is written, Puppet automates the process of getting systems into the desired state and keeping them there. The platform uses a Puppet primary server for storing the code and a Puppet agent to translate the code into commands and execute it on the target systems.
Contact Puppet for pricing information.
This open source automated testing suite enables rapid, repeatable web-app testing across different browsers and platforms. The software suite has three main components:
- WebDriver: A collection of language-specific bindings to drive a browser to to test, scale and distribute scripts across many environments
- IDE: A Chrome, Firefox and Edge add-on that will record and playback interactions with a browser to aid in automation-aided exploratory testing
- Grid: A system for distributing and running tests on several machines and managing multiple environments from a central point to test on a large combination of browsers and OSes.
WebDriver is a W3C recommendation which means that major browser vendors support it and work to improve the browsers and controlling code. This leads to more uniform behavior across the various browsers which can make automation scripts more stable.
Selenium is open source and free to use.
Splunk helps to improve the speed, quality and business impact of app delivery and to provide real-time insights across all states of the delivery lifecycle. The company’s DevOps offerings include:
- Observability cloud: A full-stack analytics-driven monitoring service
- On-call: Automated incident management routing, collaboration and reviews
- Infrastructure monitoring: Tracking the performances of servers, containers and apps in real-time at scale
- APM: A troubleshooter for microservices and application issues with full fidelity distributed tracing
- RUM: A tool for measuring end-to-end users experience with frontend user monitoring
Splunk offers free trials for each service.
Splunk’s 2021 survey of 525 IT leaders and developers found several benefits of observability:
- An improved view of containers and orchestration
- Faster root cause identification
- An increase in the number of new products released over the last 12 months
In addition to these metrics, high observability maturity was also correlated with better visibility across the complex landscape of modern applications, faster digital transformation, and still faster root cause identification and problem remediation, according to the company’s survey.
Contact Splunk for pricing information.