DevOps Overview

This post will provide basic knowledge on what is DevOps, its principles and its key tools across the process.

What is Devops?


Devops is a process or culture that combines both operations and development teams to deliver the best suited product to the client quickly, efficiently and continuously. The diagram shows how DevOps amalgamates the processes for continuous integration and continuous feedback.

Principles of DevOps

Below are some of the key principles of Devops.

  • Collaborative work environment

  • Continuous Improvement

  • Early & Continuous Feedback

  • End-to-End Responsibility

  • Automate Everything possible

  • Focus on Customer's needs

DevOps tools


There is no one size suite of tools that fits various clients needs. Therefore, one needs to carefully evaluate the right tool suited for any specific environment.

There are number of tools that are widely used in the market. The below list covers some of the trending tools at each stage of the process.

Click on the icons to view more about the product.

Source Code Management tools

Github is an open source and light weight source code management / code review tool. On GitHub, lightweight code review tools are built into every pull request. Your team can create review processes that improve the quality of your code and fit neatly into your workflow.

AWS CodeCommit is a fully-managed source control service that hosts secure Git-based repositories. It makes it easy for teams to collaborate on code in a secure and highly scalable ecosystem. CodeCommit eliminates the need to operate your own source control system or worry about scaling its infrastructure.

Azure Repos is a set of version control tools that you can use to manage your code. It provides two types of version control such as GIT: Distributed version control and Team foundation version control.

SVN also known as Sub version is an open source version control system or source code management tool widely used across the globe. Subversion is developed as a project of the Apache Software Foundation, and as such is part of a rich community of developers and users.

Mercurial is a free, distributed source control management tool. It efficiently handles projects of any size and offers an easy and intuitive interface. Mercurial efficiently handles projects of any type and size.

Bazaar is a version control management tool. Bazaar runs on Windows, Ubuntu, Debian, SUSE, Fedora, OS X, FreeBSD, Solaris, Gentoo, and more. Part of the GNU Project, Bazaar is free software sponsored by Canonical.

Visual Studio Code is a lightweight but powerful source code editor which runs on your desktop and is available for Windows, macOS and Linux. It comes with built-in support for JavaScript, TypeScript and Node.js and has a rich ecosystem of extensions for other languages (such as C++, C#, Java, Python, PHP, Go) and runtimes (such as .NET and Unity).

Plastic SCM is a full version control stack designed for branching, merging, speed, visualization and ease of use. Plastic is designed to handle thousands of branches, automate merges, provide the best diff and merge tools, work centralized or distributed (Git like, or SVN/P4 like), to deal with huge repos (4TB is not an issue) and be as simple as possible.

Build tools

Maven is a build automation tool used primarily for Java projects. It is also a is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.

Gradle is an open-source build automation tool focused on flexibility and performance. Gradle build scripts are written using a Groovy or Kotlin DSL. Gradle is modeled in a way that is customizable, fast powerful and extensible in the most fundamental ways.

The Microsoft Build Engine is a platform for building applications. This engine, which is also known as MSBuild, provides an XML schema for a project file that controls how the build platform processes and builds software.

PyBuilder is a software build automation tool written in pure Python mainly targeting Python ecosystem. It is a multi-purpose software build tool. Most commonly it targets the building and management of software with a strong focus on Python.

Continuous Integration & Continuous Delivery tools

Jenkins is a self-contained, open source automation server which can be used to automate all sorts of tasks related to building, testing, and delivering or deploying software. Jenkins can be installed through native system packages, Docker, or even run standalone by any machine with a Java Runtime Environment (JRE) installed.

Bamboo is a continuous integration and continuous deployment server developed by Atlassian. It can be used for build automation, test and release management of software applications, creating a continuous delivery pipeline. It also helps to use elastic resources like AWS etc.

Travis CI is a hosted continuous integration service used to build and test software projects hosted at GitHub and Bitbucket. Travis CI provides various paid plan for private projects, and a free plan for open source. Travis CI can be configured to run the tests on a range of different machines, with different software installed and supports building software in numerous languages.

TeamCity is a build management and continuous integration server from JetBrains. It is used for automated build and deployment process with increased quality. It can also act as an artifact and NuGet repository. It can also provide reporting and statistics. This tool can support variety of platforms and technologies.

Circle CI is a cloud based continuous integration and deployment tool. CircleCI integrates with GitHub, GitHub Enterprise, and Bitbucket. Every time you commit code, CircleCI creates a pipeline. CircleCI automatically runs your pipeline in a clean container or virtual machine, allowing you to test every commit.

Configuration Management tools

Ansible is an open-source software provisioning, configuration management, and application-deployment tool. It is an IT automation tool that can configure systems, deploy software, and orchestrate more advanced IT tasks such as continuous deployments or zero downtime rolling updates.

Chef Infra is a powerful automation platform that transforms infrastructure into code. Whether you’re operating in the cloud, on-premises, or in a hybrid environment, Chef Infra automates how infrastructure is configured, deployed, and managed across your network, no matter its size.

Puppet provides tools to automate managing your infrastructure. Puppet is configured in an agent-master architecture, in which a master node controls configuration information for a fleet of managed agent nodes. Puppet includes a built-in certificate authority for managing certificates.

Salt is Python-based, open-source software for event-driven IT automation, remote task execution, and configuration management. Salt can be used for data-driven orchestration, remote execution for any infrastructure, configuration management for any app stack, and much more.

VM / Container Management tools

Docker is a container management platform where we can create or build our own images or applications. It is an open platform for developing, shipping, and running applications. Docker enables you to separate your applications from your infrastructure so you can deliver software quickly.

Packer is an open source tool for creating identical machine images for multiple platforms from a single source configuration. Packer is lightweight, runs on every major operating system, and is highly performant, creating machine images for multiple platforms in parallel.

Mesos is a distributed systems kernel built using the same principles as the Linux kernel, only at a different level of abstraction. The Mesos kernel runs on every machine and provides applications (e.g., Hadoop, Spark, Kafka, Elasticsearch) with API’s for resource management and scheduling across entire data center and cloud environments.

Clustering & Orchestration tools

Docker Swarm is a group of physical or virtual machines that runs Docker engine and joins into a cluster. It uses the Docker Engine CLI to create a swarm of Docker Engines where you can deploy application services. You don’t need additional orchestration software to create or manage a swarm.

Kubernetes aka K8s is an open source container orchestration tool developed by Google for managing micro-services or containerized applications across a distributed cluster of nodes. It also used for automating deployment, scaling, and management of containerized applications.

Mesos is a distributed systems kernel built using the same principles as the Linux kernel, only at a different level of abstraction. The Mesos kernel runs on every machine and provides applications (e.g., Hadoop, Spark, Kafka, Elasticsearch) with API’s for resource management and scheduling across entire data center and cloud environments.

Please provide your valuable feedback on the above content.

316 views

Recent Posts

See All
  • Pinterest
  • Facebook
  • LinkedIn

© 2020 by techyfella.

Subscribe for techyfella updates!