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 :-)
Great article, just what I was looking for.
ReplyDelete