1.devops Introduction
1.devops Introduction
DevOps Introduction
1. What is DevOps?
I know that's the first answer everybody would be looking for and I will not try to define it.
Because so many people have done it already before me and guess what there are many different
definitions for it. Everybody in the IT industry is talking about it. Organization are running post to
pillars to hire DevOps Engineers and there is a great demand for it.
Some say its automation but some say it’s all about culture, both this belief contradicts with each
other.
Well if its automation then system admins are doing automation from ages and there they used
Scripting languages and some tool to achieve it but we did not call it DevOps back then, we just
said automation. So, then you would say it’s the culture but if it’s just the culture then why so many
automation tools? You would be feeling now that I am confusing you but trust me I am going to
prove some points later, just keep reading.
If you are reading this you would somehow related to software industry. Yes, software industry, its
only goal is to make software's and deliver it to the user. We can say from the very beginning
software industry is divided into two parts and those two parts are Development and Operations.
Development focuses on creating and testing software's.
Operations is focussed on delivering those software's to user in form of a website or as an
installable software. Once delivered we maintain the software, we deliver new features to our users
and make sure the software's stay up and running and healthy.
In Development, we have distinct roles like Developers, Software testers(QA), DB Developers &
Architects. Their aim is to develop all the latest and greatest features in the software's, Rapidly or
quickly.
In Operations, we have roles like System Admins, Cloud Engineers, DB admins & Security
professionals. Here the aim is to keep the systems up and running all the time. Systems on which
the software is hosted, like your websites and databases hosted on some servers.
You would have understood by now that both the parties have different aims and goals. One
focusses on Quick Change and other focusses on Stability. These are poles apart, if we make quick
changes (adding new features continuously) then stability becomes an issue. A system that’s
changes continuously will have issues with stability. It’s also true the other way around.
DevOps whole and sole objective is to Deliver latest and greatest features to the user with stability.
It’s no more about just creating new features it’s also about delivering those features to the user
otherwise what’s the point of creating if we cannot deliver it on time.
So how does DevOps solve that problem? To understand it first we need to understand the
development procedure and then we will focus on the operations.
Development team uses some Software development model to create the software. In layman terms,
these software development models are set of rules that everybody in the team follows to get the
things done.
Waterfall Model
There is Waterfall model which is a traditional model and does not fit well in today’s fast-moving
world.
The general approach that Developers take is that once they are done creating a new feature they
will send a procedural document to the operations team explaining how to deploy it.
Developers test it on their machine and feels that it should work same in production also. But
production systems are different in design as there would be multiple servers for webservice,
database service and backend services secured by firewalls and NACL. There would be all stable
OS and software with a different version that of Developers systems. Development servers are
simple one machine and all the services are generally deployed in one server.
So, Ops feel that frequent changes like that may break the system and Dev feels that there is too
much restriction on delivering latest changes. We also need to think about security here. Security
testing is done before it goes to production. This entire Delivery procedure is slow and manual most
of the time.
Think about quick changes now through agile model, it’s not helping the operations team to deliver
the code faster. So, no matter how agile development is Operations is still Waterfall.
6. DevOps LifeCycle
DevOps Lifecycle includes Development and Operations teams working together. As Developers
work on their agile iterations, Ops must work in setting up systems and automating the procedure of
deployment. Automation is the key factor here, because agile model gives code repeatedly to deploy
it on systems, that’s going to be continuous release of code and that must be continuously deployed
to many servers in Dev, QA, Staging & Production environments.
If the code deployment process is not automated then ops team must manually do the deployment.
Deployment may include below mentioned procedures.
• Build the software from raw source code (If not done by Developers).
• Setup Monitoring.
• Validate code.
• Release it.
Next phase is to deploy this released software to servers, which we discussed already before this.
Combining this Build & Release with Deployment process gives us the DevOps Lifecycle which is
fully automated.
DevOps Engineers must automate all the above process it should be so seamless that when
developers push their code to a central repository it should be fetched and run through all the above
process and sends it to production systems.
As I say, “From Code to Prod”.
Version Control Systems: Is used to store the source code, a central place to keep all the code and
tracks its version.
For Example:
• Git
• SVN
• Mercurial
• TFS
Build tools: Build process is where we take the raw source code, test it and build it into a software.
This process is automated by build tools.
For Example
• Maven
• ANT
• MSBuild
• Gradle
• NANT
• Jenkins
• Circle CI
• Hudson
• Bamboo
• Teamcity
Configuration Management tools: Also known as automation tools, can be used to automate
system related tasks like software installation, service setup, file push/pull etc. Also used to
automate cloud and virtual infrastructure.
For example:
• Ansible
• Chef
• Puppet
• Saltstack
Cloud computing: Well this is not any tool but a service accessed by users through internet. A
service that provides us with compute resource to create virtual servers, virtual storage, networks
etc. There are few providers in the market who gives us public cloud computing services.
For example:
• AWS
• Azure
• Google Cloud
• Rackspace
Monitoring tools: Is used to monitor our infrastructure and application health. It sends us
notifications and reports through email or other means.
For example:
• Nagios
• Sensu
• Icinga
• Zenoss
• Monit
• Docker
• RKT
• Kubernetes
Learning automation at every level in the lifecycle is highly important if you want to make a carrier
in DevOps domain. You should understand Infrastructure, Development & Automation.
Later in the book we will dig more in detail into tools and learn them. We will also understand CI &
CD from tools point of view.