DevOps

DevOps is one of the important transformation stage that the software development has been into in the present information age. We all know the early days of software development was largely focused on siloed groups that performed each activities of a water fall software development process. For example, the software analyst team doing the requirements analysis, the design team performing the system design and architecture, the coding team performing the development/programming, the QA team performing the testing and the operations/infrastructure team performing the server/environment sets ups and deployment. The Software has to pass through these silos in its various stages of development involving various approvals and paper work until it reaches production. The lack of effective communication and collaboration between the teams and the process caused huge delays when a valued feature or a change needed to get into production. Both the software development process and the software architecture accounted for this inability to quickly turn on features in production mode.

With the advent of web-development era (late 1990s) and when cloud computing was re-defining the ways companies and individual entrepreneurs could publish their software system for public use, software practitioners re-modelled the iterative software development methodology, rapid application development etc and defined Agile methodology which transformed the software development landscape. Companies started adopting Agile practices which broke down the traditional waterfall approach into smaller repeatable cycles of plan, design, code, test, integrate, deliver and improve called sprints where the so called siloed teams now worked as a single Scrum team to plan, code, test and integrate the code into various regions. The various Continuous Integration (CI) and Unit testing framework and tools allowed the teams to quickly test and integrate the code into the testing regions, but they still had to work with the operations team to provision the servers and deploy code for production use. The advancement in container and container orchestration technologies was a big leap towards finding ways to bring operations teams much closer to the development and business teams. Here was the birth of DevOps.

DevOps in its simple terms means bringing development (and business who is already together within a scrum team) and operations much closer. An example scenario would be where there is option to automatically allow the software to run unit tests, integrated and deployed into test environment and after approvals automatically provision and deploy into a scalable production environment. This was highly made possible by specific software architectures such as a microservices, container architecture, Automated Testing Tools, CI/CD tools (Continuous Integration, Deployment and Delivery), containerization and container orchestration tools.

In this cloud era where the time to plan, design, code, test, deploy the most valued feature is almost reduced to 2 weeks or less (or even a single day or seconds!), DevOps has a crucial role to play. The old monolithic, siloed software development process and methodologies has diminished usage nowadays or they are being transformed to this new way to deliver products and services that gives most value for the customer and at the right time. With DevOps enabling tools and techniques, the business, development and operations teams has the the flexibility to quickly provision and deploy computing environment and software in an automated fashion without worrying about the details of code packaging (even if the teams use different programming/build platforms/tools), environment creation/synch, capacity management, cloud usability scaling etc.