What is DevOps?
I started working as a DevOps engineer couple of years back and my initial impression was that "its optimising release management activities" which was not completely true. When I deep dive into it I found that it is just a tip of an iceberg. The role of an DevOps engineer is not just limited to CI/CD or automating releases but it's much more than that, but long story short - AUTOMATE EVERYTHING.
Below diagram depicts that DevOps is the collaboration of Dev, QA and Operations team:
So, What is this DevOps exactly?
DevOps is a term emerged from two words DEVeloper & OPerationS. The role of Devops engineer is to automate all the Operational work in a way Developer would do. The idea is to encourage frequent releases to increases quality and get early feedback.
Hence, according to me, the main 2 objective of DevOps is increasing Speed & Quality of the deliveries.
Where did DevOps come from?
"DevOps is the offspring of Agile Software Development.” - Dennis Ehle in his blog.
Now a days, agile is THE OVERLOADED BUZZWORD. Everybody's gone or going agile. So to keep up with the speed, not only development but other peoples like BA's, QA's, Build & Release engineers etc should also pace up. DevOps Engineer helps these all stakeholders to adopt agile gracefully. They automate everything right from the planning to release phase. It helps to move faster with maintaining high quality.
What problem DevOps trying to solve?
“Ideas are cheap. Ideas are easy. Ideas are common. Everybody has ideas. Ideas are highly, highly overvalued. Execution is all that matters” - Casey Neistat
Agile Software Development is one of the revolutionary change happened to software development practices in recent decades. It advocates adaptive planning, evolutionary development, early delivery, and continuous improvement, and it encourages rapid and flexible response to change. To make this happen, the entire development life cycle should be optimised. And for Optimisation, wherever it's possible AUTOMATION is the key (No-Brainer!!).
What phases of software development should be automated?
Answer is Each and Every Phase!!!
Some people may argue that Automating everything is very ambitious(or impossible per se). But I think we should consider that stage as our final stage and work towards it. After all we are implementing agile. Its a continuous improvement process.. ;)
The main idea behind agile is rapid and frequent delivery. So whatever is repetitive automate it(or try to reduce time) and this should be applicable everywhere in the project.
DevOps ToolChain
I have defined some categories for each phase of SDLC for DevOps Tools. We should try to adopt atleast one tool for each category to address solution.
Planning & Analysis
- Capture & Tracking (e.g JIRA, ServiceNow)
- Documentation or Wiki Page (e.g Confluence)
- Collaboration (e.g Slack, HipChat)
Design & Implementation
- SCM (e.g Subversion, Git, Mercurial)
- IDE (e.g Eclipse, IntelliJ, Visual Studio)
Build and Release (CI/CD)
- Repository Management (e.g Artifactory, Nexus)
- Build Tools (e.g Jenkins, Bamboo)
- Configuration Management (e.g Chef, Puppet, Ansible)
- Cloud (e.g AWS, Azure, OpenStack)
- Containers (e.g Docker)
Integration & Testing
- Source Code Verification (e.g SonarQube)
- Security Testing (e.g HP Fortify)
- Functional Testing (e.g JUnit, Cucumber, Selenium)
- Performance Testing (e.g SOASTA)
Operations
Final Thoughts
Although the terminology is new but the core concept was always there. But still it brings a lot to the table. Hence, everybody has started to adopt DevOps. The implementation may differ from organisation to organisation, as it is highly dependent on management's priority. It surely help to move things fast & maintain high quality.
Great post Nilesh Kanawade, it's important more people understand this. Can DevOps teams ever rest with new tech coming in so often?
Neha Sareen good for a Quick read on DevOps
Thanks for sharing the article, implementation of DevOps ToolChain in my projects has been a good experience journey for me, it marries up well to the agile aspiration of probably every organisation. IMO one of the key thing that we need in the toolchain is automation of governance procedures (have to be careful though) as well, for e.g. in highly regulated environments the release to controlled environments has to go through lengthy process of getting the artifacts, results, Schedule of events and other predictive outcomes reviewed by environment boards. All of this is needed for the right reasons, however it is time consuming and it slow down the chain. It will need an innovative approach to solve it for each case, in my view automating such processes will be of great value, manual management will be then by exception only.
crystal clear and brief.
good one