DevOps is a mindset, which fosters the collaboration between the Development Team "Dev" , who is responsible from the production, and the Operation Team "Ops" , who is responsible from the execution.
DevOps approach fosters automation along application lifecycle, which vanishes the adhoc operations between Dev and Ops teams, and boosts the quality by favoring software engineering practices and frequent live deployments with less incidents
DevOps enables the companies to adapt faster to the changes in the market by automating the manual approach which is open to failure. Beside, DevOps helps the infrastructure to be used more efficiently, decreasing the OPEX. In other words, one that does not apply DevOps practices, will not be in the market in the future.
DevOps is cultural shift rather than just a tool change. This shift must be supported with the right tools, which at the end enables "self-service IT" approach. Beside, the right engineering practices help the defect feedback loop in hours, rather than days, sometimes weeks, which is cognitively effective as developers make fixes rightaway.
What is DevOps, what is not DevOps?
- DevOps is not a target, it is a journey.
- DevOps is not a tool or an on-the-shelf software.
- Each organisation has their own DevOps journey.
- DevOps is not a title, not a responsibility given only to one, rather it is mindset embraced by all.
- Higher quality, faster, more frequent live deploys.
- Continuous Improvement cycle to be faster.
- Transparency and collaboration between "Dev" and "Ops" teams.
- Cost-cutting by effectively usage of the resources.
Agile Development Teams can only provide end-to-end agility by embracing the DevOps mindset. The following are the common symtoms otherwise:
- "Push" approach is common rather than "Pull"
- Change Lead Time is long.
- Developers lately get the defect feedbacks.
- New environment provisioning takes days/weeks.
- Live environment has defects which does not show up during testing.
- Infrastructure investment was done for the worst case scenario, which means waste.
Development team, owning all the responsibility of the cycle end-to-end is also a good practice which can be possible with the latest Cloud/PaaS/SaaS. Particularly, micro-services architectures enables end-to-end responsibility.
Software Development Cycle, a.k.a. Deployment Pipeline, is defined as a flow which turns an idea into a working software. Continuous Integration, Continuous Delivery and Continuous Deployment should be considered while defining the flow.