DevOps is the new buzzword of the day. Agile software development used to be the main philosophy when it came to developing and delivering products. However, there now seems to be something missing when it comes to delivering working software to the market at the speed which the Agile methodology promises. DevOps lies somewhere between developing and delivering a software. Let me explain my views about it.
What is DevOps?
In a SaaS and cloud obsessed world, there is constant market pressure to implement newer features in the product and release the products to consumers as fast as possible. Tech companies have embraced the Agile development philosophy to address the concerns surrounding faster release of products. They have even achieved success to some extent. However, while Agile development principles help develop a working software faster than any other process, what about releasing the product to market?
A typical Agile scrum based-development has sprints of 2 to 4 weeks. At the end of this sprint, which largely involves Dev, QA, Architect and BA, the product features agreed (sprint backlog items) are ready for production deployment. Note that the product is production ready but the actual production deployment can take some time. Typically, production deployment may take another week which could involve lot of to and fro between the deployment team and the Dev team due to the complexity involved in any SaaS and cloud based product. On average, the production release can be considered to take around 3 weeks for a 2 week sprint based development plan. If the deployment involves too many complexities, it is possible that the actual deployment time can prolong further. Some common practices involve creation of release sprints dedicated to release related activities. Such a release sprint may be planned after a certain number of sprints and generally involves releasing the product in bigger batches, thus defeating the purpose of the faster release of products.
DevOps is a newer chapter in the book of product engineering. DevOps makes agile principles stronger by bringing in the Development team and the Operations team (responsible for production deployment) closer. Both teams work closely to ensure tightly integrated development and deployment, resulting in seamless delivery. The DevOps processes will make sure that the new product features are integrated with the main product and released to market even faster. This means that at the end of a typical 2 week sprint, the product is not just production-ready but also deployed to production release, ready for end users.
What does it take to implement DevOps?
Bringing dev and operations team closer is the primary theme of the DevOps methodology. Tight integration of dev and operations would typically involve automation of configuration management, version controlling process, test scripts, creation of staging environment and production environment. With Cloud used prominently for hosting, automating cloud related operations such as setting up virtual machines too becomes part of the DevOps automation plan.
Most cloud setup activities revolve around configuring appropriate Virtual machines. The cloud platforms have matured, and many scripting options are available to automate these operations. With the new Containerization technology, which adds another layer of abstraction and automation of OS level virtualization, the overhead of maintaining virtual machines is further reduced. Though it was initially available on Linux platforms only, Microsoft and Docker partnered to come up with a Microsoft piece of the same.
In addition to available scripting options, we can consider using various DevOps tools for implementation and continuous delivery. Chef, Puppet and Ansible are some of the popular tools for the same. When it comes to the Microsoft world, Team Foundation Server (TFS) along with Azure runbook will help automate Microsoft Azure related operations.
Summary
Agile DevOps is becoming the thing when it comes to standing up to the promise of delivering a product to market. The Operations team, which largely consists of Sysadmin, DBA, and network engineers has a key role to play. Their collaboration with the development team ensures that production deployment is smooth and accurate. Due to the distributed nature of the application architecture, there are too many elements to be considered for automaton These range from code deployment to virtual machine creations. A wide variety of scripting may be required to automate them. This calls for a highly motivated and skilled Operations team that can jump from one scripting language to another, depending upon the situation.
Subscribe to our fortnightly newsletter!