Every now and then, it is time to take an inventory of the tools that developers use in software development. DevOps as a culture has come to stay. This article looks at the top ten tools being used for DevOps today, as viewed by its author.
DevOps is a culture, and succeeds in an environment that is tools-agnostic. DevOps is about people, processes and tools but not in isolation from either of these. All tools provide pretty similar kinds of features and functionalities. It is all up to the organisation and its culture to ensure the tool fits into its requirements. The ten best tools being used for DevOps today (in my view) are briefly described in this article.
Git
Git is a free and open source distributed version control system created by Linus Torvalds in 2005. It facilitates the management of all sizes of projects efficiently and with speed. Though the learning curve is very easy in Git, it can be difficult to put in best practices considering the existing culture of an organisation and the mindset of its employees.
Git characteristics | |
Open source | Yes |
Licence | GNU General Public License Version 2 |
Type | Distributed version control system |
Written in language(s) | C, Shell, Perl, Tcl, Python |
Operating system supported | POSIT (Linux, macOS, Solaris, AIX), Windows |
Stable release | 2.30.0 |
Website | https://git-scm.com/ |
Companies and projects that use Git | Google, Facebook, Microsoft, Twitter, LinkedIn, Netflix, PostgreSQL, Eclipse |
A few important Git commands | |
Description | Command |
Set a user name | git config –global user.name “Mitesh Soni” |
Set email address | git config –global user.email “xxxxxxxxx@xxxxx.com” |
Initialise a Git repository | git init |
Clone a repository | git clone https://github.com/xxxxxxxx/Angular9786-DevOps |
To verify the status of files in a repository | git status |
Add files in the current directory for commit operation | git add |
Commit files | git commit -m “First commit in the repository” |
List branches | git branch |
Switch a branch | git checkout |
Create a new branch | git branch new-branchname |
Merge current branch with target branch | git merge target-branch |
Show all commits | git log |
Save modified and staged changes | git stash |
Fetch and merge any commits from the remote branch | git pull |
It is still challenging to write commit messages in Git. This creates chaos if best practices are not followed and can become complicated over time.
Jenkins
Jenkins provides a simple way to create a pipeline that includes continuous integration and continuous delivery. It offers integration with the tools used in application life cycle management to automate all activities, starting from build to testing and deployment.
Jenkins characteristics | |
Open source | Yes |
Licence | MIT License |
Type | DevOps practices implementation, automation server, orchestration tool |
Written in language(s) | Java |
Operating system supported | All |
Stable release | 2.269 |
Website | https://www.jenkins.io |
Companies and projects that use Jenkins | CloudBees, Cloudera, Dell, GitHub, NASA, Netflix, Sony, SpaceX |
Jenkins arguably supports all languages, as it provides plugin based architecture. In case plugins are not available, CLI or command execution helps to set up continuous practices. Organisations can write their plugins to integrate internal tools with Jenkins.
Jenkins 2.0 and later versions have built-in support for delivery pipelines.
A few important Jenkins commands | |
Description | Command |
Restart Jenkins | http://localhost:8080/jenkins/restart |
Shut down | Jenkins http://localhost:8080/jenkins/exit |
Start Jenkins | java -jar jenkins.war |
Change the port | java -jar jenkins.war –httpPort=9999 |
Blue Ocean is becoming very popular in creating declarative pipelines; however, YAML pipelines are being incubated and the community is looking forward to these.
Docker
A container can package application code, libraries and configurations. The container engine is installed on the host OS.
Docker characteristics | |
Open source | Yes |
Licence | Apache License 2.0 |
Type | OS-level virtualisation, containers |
Written in language(s) | Go |
Operating system supported | Linux, Windows, macOS |
Stable release | 19.03.14 |
Website | https://hub.docker.com/ |
Companies and projects that use Docker | Trivago, Pinterest, Twitter, Spotify, Microsoft, Medium.com, Coursera |
Docker comes in two flavours — Docker Community Edition and Docker Enterprise Edition.
A few important Docker commands | |
Description | Command |
Log in to the registry | docker login |
To build an image from the Docker file | docker build -t sampleapp :1.0 |
List all the images | docker images |
Delete an image | docker rmi imagename |
Create a container | docker run –name containerName dockerImage |
Pull an image from the registry | docker pull imageName |
Push an image | docker push imagename:tag |
Clean an unused image | docker image prune |
Docker creates, deploys and manages containers on a different host operating system using such resource isolation features as cgroups and Linux kernels.
Kubernetes
Kubernetes or k8s is an open source, extensible and portable container orchestration platform. It offers declarative configurations and automation for deployment.
Kubernetes characteristics | |
Open source | Yes |
Licence | Apache License 2.0 |
Type | Container orchestration and management |
Written in language(s) | Go |
Operating system supported | Linux |
Stable release | 1.20 |
Website | https://kubernetes.io/ |
Companies and projects that use Kubernetes | Adidas, Booking.com, Box, Bose, IBM, Nokia, Pearson, Wink, WikiMedia, AppDirect, Spotify |
It has become one of the most popular tools in DevOps practices due to its features with respect to deployment, management and scaling applications in Kubernetes clusters.
A few important Kubernetes commands | |
Description | Command |
Get Kubectl version | kubectl version |
Get details on Kubernetes cluster | kubectl cluster-info |
Get details about a node | kubectl describe nodeName |
Get details about a pod | kubectl describe podName |
List of all pods | kubectl get pods |
List of all services | kubectl get services |
List of all deployments | kubectl get deployments |
We can create Kubernetes clusters in an on-premise environment and in different cloud deployment models such as private and public cloud. Public cloud provides managed services for Kubernetes. AWS has Amazon Elastic Kubernetes Service (EKS) while Azure has Azure Kubernetes Service (AKS) for managing Kubernetes clusters in a cloud environment.
Terraform
Terraform is an open source ‘Infrastructure as Code’ tool, created by HashiCorp. It helps us to create immutable infrastructure to avoid the problem of configuration drift.
Terraform characteristics | |
Open source | Yes |
Licence | Mozilla Public License v2.0 |
Type | Infrastructure as code |
Written in language(s) | Go |
Operating system supported | Linux, FreeBSD, macOS, OpenBSD, Solaris, and Microsoft Windows |
Stable release | 0.14.2 |
Website | https://www.terraform.io/ |
Companies and projects that use Terraform | Slack, Uber, Twitch, Intuit, CircleCI, Lime |
A few important Terraform commands | |
Description | Command |
Verify Terraform version | terraform –version |
Install Terraform modules | terraform init terraform init -input=false |
Check configuration and create plan | terraform plan |
Execute the plan | terraform apply terraform apply -auto-approve |
Delete all resources | terraform destroy terraform plan –destroy |
Validate/check the syntax of the Terraform files | terraform validate |
Terraform is a platform-agnostic declarative coding tool, and helps developers to use a high level configuration language to manage infrastructure. It supports different cloud providers and their services such as AWS, Azure, and so on.
Ansible
Ansible is an open source IT automation/configuration management tool that provides cross-platform support. It is easy to use and offers security and reliability when adopted in an organisation. Ansible is also popular for rolling updates in release management activities.
Ansible characteristics | |
Open source | Yes |
Licence | Proprietary / GNU General Public License |
Type | Configuration management |
Written in language(s) | Python, PowerShell, Shell, Ruby |
Operating system supported | Linux, UNIX-like, MacOS, Windows |
Stable release | 2.10.2 |
Website | https://www.ansible.com/ |
Companies and projects that use Ansible | Atlassian, AWS, Azure, VMware, Google Cloud Platform, Cisco |
Ansible is different from other popular configuration management tools because it is agentless. It can be integrated with Kerberos, LDAP, and other authentication management systems.
Selenium
Continuous testing helps to verify the functional aspects of an application in an automated manner and keeps it production-ready after all verifications. Selenium is the most popular automated functional testing tool that many organisations utilise effectively for Web automation.
Selenium characteristics | |
Open source | Yes |
Licence Apache License | 2.0 |
Type | Automation testing |
Written in language(s) | Selenium Server: Java; Selenium WebDriver (works without Selenium Server), official support: JavaScript (Node.js), Python, Ruby, Java or C# |
Operating system supported | Cross-platform |
Stable release | 3.141.59 |
Website | https://www.selenium.dev/ |
Companies and projects that use Selenium | Trivago, Cred, HubSpot, OLX Group |
A few important Selenium commands | |
Description | Command |
Browser initialisation | WebDriver driver = new FirefoxDriver(); WebDriver driver = new ChromeDriver(); WebDriver driver = new InternetExplorerDriver(); |
Desired capabilities | DesiredCapabilities caps = new DesiredCapabilities(); caps.setCapability(“browserName”, “browser”); caps.setCapability(“browserVersion”, “version””); caps.setCapability(“platformName”, “platform”);
WebDriver driver = new ChromeDriver(caps); |
Selenium is extremely popular for application functional testing in an automated manner.
ELK Stack
ELK is the popular acronym for three open source projects:
- Elasticsearch: Search and analytics engine built with RESTful APIs
- Logstash: Server-side data processing pipeline that collects data inputs and provides these to Elasticsearch
- Kibana: Visualisation of data with charts and graphs
ELK Stack characteristics | |
Open source | Yes |
Licence Apache License | 2.0 |
Type Logging, search and index Written in language(s) |
Java |
Operating system supported | Cross-platform |
Website | https://www.elastic.co/ |
Companies and projects that use ELK Stack | k Netflix Overflow, LinkedIn |
ELK Stack is more popular in Kubernetes environments, where you can utilise it for effective logging mechanisms in Kubernetes clusters installed and configured in cloud environments such as AWS and Azure.
Nagios
Nagios is an open source monitoring tool with a client-server architecture. It is relatively scalable, manageable and secure, and comes with an informative dashboard, log and database system.
Nagios characteristics | |
Open source | Yes |
Licence | GPLv2 |
Type | Monitoring |
Written in language(s) | C |
Operating system supported | Cross-platform |
Stable release | 4.4.6 |
Website | https://www.nagios.org/ |
Companies and projects that use Nagios |
Airbnb, Cisco, PayPal |
It helps to monitor services such as HTTP, SMTP, HTTP, SNMP, FTP, SSH, POP, and so on.
Prometheus
Prometheus is an open source tool used for monitoring and alerting systems. The Prometheus ecosystem has components such as Prometheus server, client libraries, a push gateway, exporters for services, an alert manager, and support tools. Features include a multi-dimensional data model, a flexible query language, and multiple modes of graph and dashboard support.
Prometheus characteristics | |
Open source | Yes |
Licence Apache License | 2.0 |
Type | Monitoring |
Written in language(s) | Go |
Operating system supported | Cross-platform |
Stable release | v2.22.0 |
Website | https://prometheus.io/ |
Companies and projects that use Prometheus | DigitalOcean, JustWatch, GrafanaLabs |
Grafana supports the querying of Prometheus. The Grafana data source for Prometheus has been included since the release of Grafana 2.5.0.