By: Vinay Kulkarni, Senior Software Engg. Manager, Juniper Networks IEC
DevOps is generally interchanged for Agile, or coupled with Agile. Given to the perception that majority of SMEs are either software based or turning software-only, it would be prudent to analyze the applicability of DevOps to the traditional “Systems” companies that are built on software (SW) and hardware (HW) modules.DevOps is generally interchanged for Agile, or coupled with Agile. Given to the perception that majority of SMEs are either software based or turning software-only, it would be prudent to analyze the applicability of DevOps to the traditional “Systems” companies that are built on software (SW) and hardware (HW) modules.
The waterfall model was a linear method that slowed down the delivery leaving the test to the end of the cycle only after all the code was written. Gradually IT professionals, especially development teams (including coding and testing) started embracing Agile methodology that is a nonlinear development cycle with demonstrated quicker steps for “fail-quick-fail-often”, ideal for lean startups. While development was tuned to Agile, deployment still clung to waterfall model, creating huge bottlenecks in development cycles. Feedbacks would come only from the end of the cycle when the problem were discovered, often leading the developers to start from the beginning.
DevOps is the practice of bringing development engineers and operators together collaborating closely in developing, building, releasing, operating and supporting of the service lifecycle. It is assumed, that the “agile development and operations” are part of the lifecycle.
While the term “Dev” is collectively used for design, coding, and testing functions, “Ops” is used to collectively identify systems engineers and administrators, operations staff, release engineers, DBAs, network engineers, security professionals, and such.
Traditionally, a systems company employed “waterfall” model of development and release cycle as SW and HW were quite coupled to a product. As the companies progress in decoupling HW and SW, to reuse the HW in multiple products, and as the need for quick changes in SW arise, both (Agile and Waterfall) needs to be adopted to the new requirements. As a result, DevOps models will evolve.
WorkflowA typical DevOps workflow looks like:
Generally, the SW framework adopts Agile model in its development cycle. Agile development consists of four different “levels” of concern.
Similarly, people are discussing different “levels” of DevOps in parallel as below:
DevOps for systems that have HW and SW components
One of the crucial requirements in HW development cycles is to build it flawlessly because its redesign and rebuilding would cost a medium sized company a fortune. This excludes methods that adopt simulations. Thus, it is essential for a systems company to build HW once and build-test-deploy SW as many times. This necessity indicates clear distribution of the ownership of HW and SW, and the freedom of adoption of methodologies that serve their goals. Waterfall model gives the HW design and verification teams ample time to ensure the design is tried and verified on simulators leaving its manufacturing and QA to the end of the cycle. Once the HW is built and handed over to SW, it would only have to worry about the code written and rewritten in the feedback-enabled Agile SW cycles.
Overall view of the development cycle:
A systems’ company would need to make modifications to both their waterfall and agile models to achieve alignments between their HW and SW cycles. HW designs and builds are usually planned to be used in multiple products in the company. On the other hand, SW is built, tested and deployed multiple times on the same product or as cycles of different products. Integration and delivery.
Writing the code, testing and delivery of the build is classified in two popularly activities:Continuous Integration (CI)
This is the activity in which developers maintain a common repository to check-in or commit their code on regular basis. Each code committed is then tested as a unit by every developer committing the code to detect and prevent integration problems. There are several opensource / commercial tools like Jenkins, TravisCI, and CircleCI that can help in CI. Continuous Delivery (CD)
This activity ensures that the code committed and tested in CI is ready to be released any time. CD is the next step to CI in incremental software delivery, maintaining the versions for general availability.
The very fact that “Dev” is a common term used for writing the code, automation and testing. Companies must do away with the distinction between development and testing. Collaboration, communication and frequent realignment are the key skills required by the engineers in today’s scenario. The need to seek multiple talents – coding, debugging, deploying – in the same individual, and be a team player for common delivery is a dire need now.
A congenial infrastructure is a non-negotiable requirement of DevOps cycle. With the advent of virtualization, improved service chaining, advanced monitoring system and friendly debugging environment have catalyzed the delivery model. Coding team’s sandboxes, functional-test teams emulations, HW heavy solutions testing, and proof-of-concept test beds need to be collapsed into a “behind-the-scene” infrastructure with “on-demand” instantiation capabilities. The user-experience of the DevOps team need not be any inferior to the real customers in the market.
· Job loss
Since there is a diffusion of developers towards operations and vise-versa, the scare of losing the job is quite natural. Till now, developers are asked to focus in depth but they end up pigeon-holed in their approach, and the operators are perceived as “Jack of all trades”, the knowledge is more of girth than depth. Although part of it is true, there are plenty of opportunities for the either sides to learn new skills and grow as an all-round talent. Operations are closer to the deployment (customers) and hence the business teams. The existing principles, processes and practices created silos and barriers for free exchange of needs in these teams. In order to facilitate new learnings, bandwidth needs to be created for individuals. This necessitates automation of routine and mundane tasks from the current practices.
DevOps is a concept that facilitates an environment for product development, delivery and operations. It provides guidelines and tools to achieve collaboration, communication and integration in a more structured and uniform framework across the teams in an enterprise. It is possible to adopt a hybrid model of ‘waterfall and agile’ to achieve quicker delivery. Even when the HW development cycle has a fixed design and execution duration, SW cycle can follow Agile model.