What is DevOps
We have lot of definitions in Internet for DevOps , but none of those definitions can say this is the DevOps. So here also I am not going to tell this particular thing is DevOps, because it is not a thing, not a framework and not at all about tools.
First I want to say that DevOps is not a new born baby from last 3 to 4 years ?,No the word “DevOps” is the only new thing to us. So let us take a look at the past process to deliverables in terms of Software Delivery models, so that we can understand how DevOps is framed.
Suppose if an organization is providing some services to the users then it will maintain below teams to maintain and develop their services.
- Development Team -> Responsible for development of their services.
- Middleware Team -> responsible for deploying/ management of executables.
- Admin Teams (Operations) -> Responsible for setting up the environments and maintenance.
- NOCs (Monitoring Teams) -> Responsible for monitoring of those service resources (servers, applications etc).
So we have pretty much modular teams for their responsibilities so that each team will focus on their work only to deliver the deliverables, but organizations and teams are facing lot of issues like
- Very popular problem is that in developer machine code works fine but not in QA.
- Admin will say I have to login through all machines and have to deploy my services.
- If I want to scale my resources I need to configure each machine and also updating to next version in all of the servers will be a hectic task to all of us.
- In 24/7 monitoring there should be a need for more human resources for effective monitoring.
These are very basic problems faced previously due to gap between teams. Each team don’t know about other teams work and hurdles. So what is the solution for these kind of problems?
Now everyone realizes that we are missing a piece in between teams to effectively collaborate themselves to solve their problems by helping each other by sharing and taking advantages of automation and tools. The solution is in within themselves only but not able to identify those. That is the place experts come up with some best practices and processes to follow within the teams for their collaboration and effective delivery, and these set of practices and processes are now days coined as DevOps.
Those practices and processes are different from each organization, so each organization have their own DevOps culture. That is where I can say using some popular tools and technologies may not be a DevOps from another organization point of view.
But as we have common principles of software development, we do have some common principles across the organizations to better productivity.
- Source Code management
- Continuous Integration
- Infrastructure as Code
- Configuration Management
- Continuous Testing (Test Automation)
- Continuous Deployment
- Continuous Monitoring
So in my view DevOps is not everything and not the only thing for better solutions, but it can hold everything in a manner that delivery can be promoted more frequently. There is no separate job role and position as DevOps, it is about the persons who take care of all these things and he can be a developer or IT Operational guy doesn't matter. It is all about people within a team has to develop the DevOps culture.
Finally Ernestm has defined like below and it is most suitable.
DevOps is the practice of operations and development engineers participating together in the entire service lifecycle, from design through the development process to production support.
In my next/upcoming posts we can discuss the all details related to each principle with real time case studies and also some working Demos of DevOps tools to achieve those.