What is DevOps?

What is DevOps?

The use of cloud services introduces another revolution for the people who use cloud services. This revolution is DevOps.

Normally in an organization, there is software development team who develop software and main focus is coding and there is operation team who is responsible for deploying and maintaining software in production. Many conflicts have seen between development and operation teams. Development team focus on fixing issues and provide new release. Operation team has to deploy new release throughout the production network which is tedious task. Obviously operation team won’t be interested to rollout very frequent new software version in the production.

Now things are changed with the revolution of cloud computing, distributed systems is complex, system recovery from failure, and smooth upgrade of a new software version are not so easy to separate from design, architecture and implementation of the systems.

Now the “system” is not alone software. It consists of in-house software, cloud service, network resources, load balancer, CDN, DNS and monitoring etc.   All these things are interlinked and depend on each other. Software developer has to understand the functionality of these nodes on the other and operation team has to understand the software behaviour.

DevOps process is like to combine these two teams so that they can share understanding to each other, make software reliable and improve scalability.

Now the question is what does DEvOps engineer do?

Do we really need DevOps?

Many people think that DevOps is nothing but a new methodology or a good collaboration between development and operation team.

DevOps work: 

With DevOps, much of the traditional IT operations work happens before code reach production. Every release includes monitoring, logging, and A/B testing. CI/CD pipelines automatically run unit tests, security scanners, and policy checks on every commit. Deployments are automatic. Controls, tasks, and non-functional requirements are now implemented before release instead of during the frenzy and aftermath of a critical outage.

—Jordan Bach (AppDynamics)

Key goals of DevOps:

Improve the quality of your software by speeding up release cycles with cloud automation and practices, with the added benefit of software that actually stays up in production.

Speed, agility, collaboration, automation, and software quality are key goals of DevOps.

Infrastructure as a code:

Earlier, a developer deal with software and operation team is responsible for managing hardware and operating systems.

Now with the introduction of cloud service there is no physical hardware. Managing hardware is become cloud providers responsibility.

The DevOps movement brings software development skills to operations: tools and workflows for rapid, agile, collaborative building of complex systems. Inextricably entwined with DevOps is the notion of infrastructure as code.

In short, an operation engineer is now writing a code that automates the cloud for deployment or upgrade.

The massive scale of the cloud and the collaborative, code-centric nature of the DevOps movement have turned operations into a software problem. At the same time, they have also turned software into an operations problem, all of which raises these questions:

• How do you deploy and upgrade software across large, diverse networks of different server architectures and operating systems?

• How do you deploy to distributed environments, in a reliable and reproducible way, using largely standardized components?

 Enter the third revolution: the container…..