DevOps is a methodology that refers to anything that settles the interaction between development and operations. Development needs as much changes as possible to grow and to meet the needs of the changing time while for Operations change is the enemy. Operations require stability and strongly resist change that is a need for Development.
Part 1: DevOps Frame
DevOps is a strategy intended to bring perfection in software delivery lifecycle by aligning development and Operations teams around the business goals. As per Microsoft’s standard level definitions DevOps Level 100 is introductory and overview material. It covers topic concepts, functions, features, and benefits. DevOps Level 200 is intermediate material. Assumes 100-level knowledge and provides specific details about the topic. DevOps Level 300 is advanced material. Assumes 200-level knowledge, in-depth understanding of features in a real-world environment, and strong coding skills. Provides a detailed technical overview of a subset of product/technology features, covering architecture, performance, migration, deployment, and development.
Part 2: DevOps Practices
There are many fundamental DevOps practices. Few of them are listed below:
Infrastructure as Code (IaC) is the practice in which the techniques, processes, and tool sets used in software development are leveraged to manage the deployment and configuration of systems, applications, and middleware. Most of the testing and deployment defects occur when developer’s environments differ from testing and production environments. Putting these environments under version control yields immediate benefits in consistency, time savings, error rates, and auditability.
Under Continuous Integration (CI) practice, the working copies of all the developers code are combined with a shared mainline.
Automated Testing – is the practice where various tests such as load, functional, integration, and unit tests happen automatically either after you check in code (i.e. attached to CI) or some other means to fire off one or more tests automatically against a specific build or app.
Release management is a practice intended to oversee the development, testing, deployment and support of software releases.
Configuration Management is the practice for establishing and maintaining consistency of a product’s performance with its requirements, design and operational information throughout its life.
DevOps is all about better delivery practices, automation, removing bottlenecks and is Agile at Organization level. DevOps is not a tool. It cannot be built or achieved in a day or a month. It is a path – a roadmap that needs to be followed.