DevOps Services Provider

How To Choose DevOps Tools

 

How to Choose DevOps Tools

When anyone thinks of implementation of DevOps, an ecosystem of tools opens up. It’s very difficult to understand and categories all the different tools. This article will help you to get familiarize with tools which anyone can use to automate the development, testing and deployment of application using Continuous Integration/Continuous Deployment pipeline using below tools.

Public Cloud – AWS, Google Cloud Platform

First of all, we need computing resources such as Server/VM, Network and Storage to deploy applications on it. Public cloud services are generally being offered as pay-per-usage model. There are several Public Cloud competitors present in market and everyone has its own pro and cons. Some of the big names are Amazon Web Services, Google Cloud Platform, and Microsoft Azure.

Amazon Web Services

  • Gartner Says AWS has 51.8 % of the total market share of Worldwide IaaS Public Cloud Services Market.
  • All the services in AWS have APIs, which allow the DevOps engineers follow the Infrastructure as Code principles.
  • AWS has huge variety of in-house advanced DevOps tools which includes AWS CodeCommit, AWS CodeBuild, AWS CodeDeploy, AWS CodePipeline, AWS OpsWork.

Google Cloud Platform

  • Google’s Cloud is the better choice when it comes to compute and storage costs and also google cloud provides $300 of free credit to use.
  • Google Kubernetes Engine provides production-ready Kubernetes environment for deploying containerized applications.

ConclusionThere is no clear winner here. Cloud platform should be selected depending upon the requirement and use case.

There is a nice article which compares between AWS and Google Cloud Platform from DevOps perspective.

CI/CD Pipeline Tools

Continuous Integration tools are required for the implementation of the CI/CD pipeline. These tools are used to define multiple stages like Static Analysis, Deployment, Testing, and Cleanup. On every code check-in, CI tool will execute pipeline using the checked-in code. Most of the tools are available as open-source.

Jenkins

Jenkins is one of the earliest open-source continuous integration servers and remains the most common option in use today. The CI process can be defined either declaratively or imperatively using the Groovy language in files within the repository itself or through text boxes in the Jenkins web UI. Jenkins has a huge amount of plugins for almost everything and also has great integration with IDEs like Eclipse and Intellij Idea.

GitLab CI

The CI/CD process in GitLab CI is defined within a file in the code repository itself using a YAML configuration syntax. The work is then dispatched to machines called runners, which are easy to set up and can be provisioned on many different operating systems. When configuring runners, we can choose between different executors like Docker, shell, VirtualBox, or Kubernetes to determine how the tasks are carried out. The tight coupling of GitLab CI with the GitLab repository platform has definite implications on how the software can be used.

ConclusionJenkins is a better choice for production ready system due to variety of plugins available.

Orchestration Tools-  Terraform

Cloud orchestration is typically used to provision, deploy or start servers; acquire and assign storage capacity; manage networking; create VMs; and gain access to specific software on cloud services.

Orchestration tools are being used to write your Infrastructure as Code.

Terraform is compatible with almost all the cloud platform.

Provider list is attached: https://www.terraform.io/docs/providers/

Conclusion: Terraform is a clear winner here due to its compatibility with multiple clouds.

Configuration Management Tools

Chef, Puppet and Ansible are all “configuration management” tools, which means they are designed to install and manage software on existing servers but which one should we use

Chef

Chef has master-agent architecture. Chef server runs on the master machine and Chef client runs as an agent on each client machine.  Also, there is an extra component called workstation, which contains all the configurations which are tested and then pushed to central chef server. Therefore, it is not that easy.

Puppet

Puppet also has master-agent architecture. Puppet server runs on the master machine and Puppet clients runs as an agent on each client machine. After that, there is also a certificate signing between the agent and the master. Therefore, it is also not that easy.

Ansible

It has only master running on the server machine, but no agents running on the client machine. It uses ssh connection to login to client systems or the nodes you want to configure. Client machine VM requires no special setup; hence it is faster to setup! Easy to learn to manage the configurations as it uses YAML i.e. Yet another Markup Language which closely resembles English. Server pushes configurations to all the nodes. Good for real-time application and there is immediate remote execution.

Conclusion: Ansible is a clear winner here as it is easy to setup and scale.

Container Deployment Tools

LXC (Linux Containers) were first introduced in 2008 but container management was always a pain. Latest container management software not only simplify the deployment but also help in updates and rollouts of container deployment.

Docker Swarm

In Docker swarm, applications can be deployed as services (or micro-services) in a Swarm cluster. YAML files can be used to specify multi-container. Moreover, Docker Compose can deploy the app. It is easy to setup but it is not powerful tool.

Kubernetes

Kubernetes is an open-source container-orchestration system for automating deployment, scaling and management of containerized applications. It was originally designed by Google and is now maintained by the Cloud Native Computing Foundation. It is difficult to install but very powerful tool. It provides scheduler, rolling upgrades, health checks and auto scaling. It also has Helm which is useful for deployment of microservice.

Conclusion: Better choice here is Kubernetes as it is powerful but to ease automation, it can be deployed using Google Kubernetes Engine, Kops on AWS.

- Amit Dahiya (Devops Engineer)