DevOps Architecture – A brief Introduction

How does the DevOps Architecture look in your organization ?

By this time, everyone in the IT , would have heard the word DevOps at-least once. Most of you have read more about it and some of you have implemented DevOps process in your project/organisation. I am also one of many who have implemented DevOps process across multiple companies in last decade.

The question which kept coming back to me was

Can we create a DevOps architecture which transcends all tools , platforms, cloud providers, a architecture which anyone can customize based on customer need / budget while helping newbies understand the concepts.

DevOps Architecture

The diagram above depicts one such architecture.The diagram provides all the information to business to understand various processes which is tools agnostic.

In next series of articles, i will attempt to explain the CI/CD processes, tools and other details with focus on practical aspects (and ZERO theory) .

Before that, lets see in brief, what are the key building blocks of a DevOps system should have and their key purpose

Agents

A agent is a server , VM or desktop or even your laptop , which executes various pipelines, deployment steps , test automations other processes related to your DevOps processes.

The agents may vary based on technology of your application technology stack and deployment servers ( cloud providers).

Additionally, you can have dedicated agents for CI, CD and CT with required softwares, frameworks pre installed.The process to configure agents depends on your DevOps platform.

Continuous Integration

Continuous integration helps team to ensure basic coding standards and followed. New developer commits will automatically trigger CI process which executed various validations. The artifacts required to deploy to environments will be generated as part of CI process.

Understand CI Process in detail in my post Introduction to CI Process

Continuous Deployment

Continuous Delivery (CD) is the process where in ‘Package’ generated from the CI process, is deployed to the target server(s). CD process can be integrated to your Source control Branching structure to ensure more freedom for developers to test their changes almost everyday and control over deployments to Customer or production environment.

Understand CD Process in detail in my post Introduction to CD process

Continuous Testing

Continuous Testing involves achieving automation testing post deployment using your CD processes. CT is not mandatory in your DevOps Processes, but having them provides early feedback on your developed features and bug fixes. This also will help your QA team focus on key functional testing while leaving Smoke testing, regression testing to automation.

Source Control

Source control is where your developers move their local changes to a central server. Typically the CI process begins with the latest code from the central server.

There are multiple source control software and platforms available, most of them fall under two categories centralised and distributed. We will see more on this in upcoming articles.

Learn basics of git.

Artifacts Repo

A ‘Artifact’ is generally any output of your CI , CD and CT process. The artifact can be the package with all files to be deployed, Test results report, a container image etc.

The Artifacts of all projects in a organization is maintained in a Artifacts server with features such as versioning, promoting the artifacts to higher environment etc.

There are multiple tools/softwares for artifact repo management , we will cover few of them in future articles.

Environments

An application, API, DB will never get deployed to a production server directly. There will be multiple servers where the changes are tested and confirmed before deploying to production. These server(s) are generally grouped into ‘Environments’ . Depending your application demand, users and other business aspects, you will have all or some of the environments listed below

  • Development
  • QA
  • Staging
  • Performance & Security
  • Production

Last and very important, the developers. Developers working in DevOps environment ,need to understand below

  1. DevOps is automation of manual tasks related to build and deploy
  2. Developer should commit frequently -at-least once a day , more the better

With the understanding of basic processes, you can now look into individual processes and setting up the configurations.