What’s DevOps ?

vijay chandamala
4 min readMar 5, 2021

Here’s what wikipedia calls it :

DevOps is a set of practices that combines software development and IT operations. It aims to shorten the systems development life cycle and provide continuous delivery with high software quality. DevOps is complementary with Agile software development; several DevOps aspects came from the Agile methodology

TLDR;

Development + Operations = DevOps

Now that explanation is a no-brainer as you can see, but you’re too lazy to read all that was mentioned above, and whose mistake is that ?

Alright, here’s a list of “practices”, since DevOps is more of a culture :

  • CI/CD
  • Cloud computing
  • Build-release automation
  • Monitoring and alerting
  • Disaster Recovery

CI/CD ( Continuous integration & continuous delivery ):

Continuous integration :

So we’re past the era where the changes done by DEVs take forever to reach production servers, DevOps keeps DEVs busy all the time whether they like it or not ;)

DEVs can keep committing their changes which will get integrated to the shared repo and these commits go through automated checks like code quality checks , unit test etc.

This helps them identify issues in their code at the earliest stage of development ( because it always works in their local !)

Continuous Delivery :

Now that we have code coming in for each commit due to CI, tested and clean, it can be instantly moved to different environments as per the requirement, may it be QA, Staging and Production. The CI/CD tools makes it easier to move builds across in a jiffy and even revert them back if there’s an unexpected bug or so.

Cloud Computing :

Cloud engineering has become a very important part of DevOps because most of the deployments happen on cloud given their HA, Auto-scale, and other exciting features although on-premise deployments aren’t extinct yet.

Build-Release automation:

What we do in here is already covered in CI/CD above.

How we do it depends on your choice of tools. We used Ansible-scripts to automate the set of tasks involved in deployment process which directly goes into GoCD to be executed under the hood with use of colourful UI and cute little buttons. There are several CI/CD tools out there which does pretty much the same job.

Monitoring & Alerting :

Monitoring :

Ideally, there are three kinds of monitoring :

  • Infrastructure monitoring
  • Micro-service monitoring
  • APM ( application performance monitoring ) which is a combination of the above two.

Infra monitoring is pretty much monitoring the system stats like CPU, Memory, Disk usage, IO etc

Micro-service monitoring depends on what micro-services do you use. I’m not sure if databases, message brokers, memory-stores, web-servers, other open source tools used within software development can be called micro-services, if yes then we’re talking about the same. There are so many tools to monitor your micro-services, we use prometheus.

APM, like mentioned above, is monitoring your application performance considering metrics like how fast is your app serving requests, how’s the resource usage, error rate and many other things depending your app framework.

Alerting :

Alerting is very essential as we can’t keep looking at our screens(which we already do) for graphs and charts constantly to check if something’s going wrong. Instead you can a get slack message or an email (even though we don’t check it often) so that you can get notified if something goes wrong.

Most monitoring tools provide alerting through mail and other chat apps, if not you can always use webhooks.

Here’s a tip for being on call :

Disaster Recovery :

This isn’t usually mentioned in a talk about DevOps often, but is very important because nobody wants to end up saying “I thought we had a backup!” . It’s not just about recovering data from backups but also bringing the application back up if the entire region hosting your app goes down.

This helps avoiding unwanted plumbing work at the last minute.

PRO-tip : Always maintain backups in multiple regions if possible.

There are many other things we haven’t covered here. But this should do for a beginner like me and you. I’ll try to write up another one about the tools that can be used to implement all the above concepts.

--

--