WHAT IT IS AND WHY IT MATTERS
Today thanks to the availability of reliable Open Source software and ubiquitous Cloud infrastructures, improved new services become available faster and at a fraction of the cost of the traditional ones. The innovation happens from years/decades to weeks/months.
There are no recipes that any enterprise can adopt to be on the safe side but they are forced to change. The traditional approach in most IT department is to have a software development team, a quality assurance team and an operations team. This model breaks down very quickly when it comes to frequently shipping new software as it creates silos, friction and accountability problems.
Even if it is still the predominant model, the movement of DevOps, started around 2009, is gaining momentum. DevOps (a clipped compound of "development" and "operations") is a culture, movement or practice that emphasises the collaboration and communication of both software developers and other information-technology (IT) professionals while automating the process of software delivery and infrastructure changes. It aims at establishing a culture and environment where building, testing, and releasing software, can happen rapidly, frequently, and more reliably.
DevOps is about different key practices and values:
- continuous deployment: it is a common practices about automated continuous building and functional testing your commits and your product, and the continuous automated deployment of your product with appropriate automated acceptance testing into your production system for Cloud or on-premise enterprise products. Ideally each phase takes minutes or at least not more then a few hours;
- infrastructure as code: it is about being able to build up and maintain your infrastructure as code. It's fairly easy for Operations, Development or QA but it becomes increasingly complex when it comes to bring instances in production for large scale systems. The rise of tools like Docker, Vagrant, Chef, Puppet and many more enable this approach;
- lean principles: DevOps also brings lean, agile principles into operations. How to overcome slow IT processes with faster agile approaches which in turn enables Operations, Development and QA to experiment and have short, fast iterations. It is also about breaking down the silos between developing, testing, deploying and operating software;
- experience operating it: teams who are building cloud services are also operating them together with the IT Operations group. This exposes engineers to the pain of deploying and operating it and gives the incentive to address these pains. It allows engineers to enable the cloud service to gather lots of operational data and metrics which in turn enables great decision making and to make the service more resilient and more usable for the end-user;
- a DevOps team: it is a multi-disciplinary team who owns building up and maintaining a flexible infrastructure that a modern software development team needs, like your version control system (e.g. GitHub), the build system (e.g. Jenkins) and master pipeline, the performance labs and master performance scripts, the code which enables provisioning cloud systems (e.g. Amazon) and deployment of your full systems from scratch, and more. It also should have a performance / network engineer who knows how to really run performance tests and troubleshoot performance issues down to the network layer. This will allow your development teams to leverage this infrastructure and services from the DevOps team, adjust it to their needs and ship software rapidly.