Pages

Monday, December 28, 2015

Basics of DevOps

Agile , a process which require a disciplined approach to ensure that customer feedback, continuous testing, and iterative development actually lead to frequent deliveries of working, valuable software.

Similarly DevOps is a software development method that stresses communications, collaboration, integration, automation and measurement of cooperation between software developers and other IT professionals

In Simple words, a Way for developers and IT Operations people to co-operate with each other in releasing of the Software while automating the process of software delivery and infrastructure changes.

The Problem – So what made the DevOps?

Software development can be considered as a community of developers and testers writing code, testing, re-writing etc. Operations teams are all about looking after the systems that run that code. These are the People who work out how much processing power the software need to run, how to make that secure, running that efficiently and how to keep that running.

The main problem in this is that the developers are not aware of the infra-structure process, not knowing what is the runtime being used for their application code to run. Operations Teams on the other hand are not aware of the run time area where the code was developed.

There are cases where the code is developed on Windows 2000 workstations, and tested with Tomcat on Windows, and then deployed on *nix machines, with software load balancers, different Java versions and different Tomcat versions. This is not to mention the entirely different properties files on developer workstations compared to live machines.

The issues start to arise because those two groups of people look after the same systems but otherwise exist in two relatively separate worlds. The way developers tend to look at it, they are the ones who create the software which the operations staff then goes on to break. And then they shout at each other.

Here comes the DevOps. Seeing both developers and IT Operations as two different entities, the DevOps movement tells us about the communication, collaboration and integration between developers and IT Operations.

DevOps movement makes developers and Operations people to work together in understanding the infrastructure being used, High level languages being used in developing the code, understanding the delivery process , deployment model, Runtime being used thus making both parties  to stay in similar production like environment during development.

The Other Problem - Traditional deployment process requires weeks and months in moving a new release to production. DevOps comes to help the organization to produce Software and IT Services Rapidly with frequent iterations. This is done by integrating developers and Operations teams to improve collaboration and productivity by automating infrastructure, automating work flows and continuously measuring application performance.

Developers  would write software in small chunks that are integrated, tested and monitored and deployed usually in hours versus the traditional way of writing large chunks of software over weeks and do weeks of testing. This allows them to increase the frequency of deployment and improve time to deploy new code.

Infrastructure as Code
Every System admin has the experience of getting waked up early in the morning saying that a machine is not reachable. Admin's generally follow the usual Quick fixes only to find out the machine is actually crashed.

We then go back to our memories to find what we did during the last crash. What scripts were ran , what packages and components were installed and in what sequence then It strikes you that you cannot even recall the order in which everything was installed.

Every developer or support person dreads a moment like this when they have to reconfigure the servers, because of the different aspects involved in the tedious process. Though there are documentation available that outline every steps in dealing with situations like these but consider the time you need to invest in order to accomplish your tasks manually.

Infrastructure as Code talks about writing code to manage configuration and automate provisioning of infrastructure in addition to deployments. This does not talk simply about writing scripts but involves using tested and proven software development process are used in this like using version control, testing, small deployments, use of design patterns etc. In short, this means you write code to provision and manage your server, in addition to automating processes.

How does the developers work in this, the knowledge of server provisioning, configuration management and deployment is no longer only with the systems Admin's. Even developers can easily engage in the activities, because they can easily write infrastructure code in the languages that they are familiar with

The Devops movement is characterized by people with a multidisciplinary skill set - people who are comfortable with infrastructure and configuration, but also happy to roll up their sleeves, write tests, debug, and ship features.

More to Come :-)

1 comment :

  1. Great article, just what I was looking for.

    ReplyDelete