Starting the DevOps Journey Using Cucumber and Selenium
DevOps is a software building process which emphasises communication and collaboration between the teams involved in product management, software development, and operations. Cucumber is a behaviour driven development tool, which when combined with Seleni
It is often said that continuous change is the law of the universe and the same is true in the software industry. We have seen a variety of software development models, starting from Waterfall, V and spiral models to the incremental option. All these models have different requirements and guidelines and suit different scenarios. These days, most organisations have embraced the Agile methodology for software development.
The Agile method of developing software and applications focuses on delivering high quality products frequently and consistently, which leads to an increase in business value and profits.
Table 1 lists the differences between the Waterfall and Agile software development approaches.
You can see that the Waterfall model can cause overshooting in time and resources, which can lead to huge losses to the company in terms of profits and user satisfaction. To avoid this, organisations have started adopting the Agile model. There are other reasons too, for choosing this model, some of which are listed below.
Client engagement: In the Agile model, the client is engaged in the software development process at every step — before, during and after the sprint. This helps the development team to understand the client’s vision clearly so that defect-free and high quality software can be developed and delivered in less time.
Transparency: Since the client is actively involved in all the sprint activities, ranging from feature prioritisation and planning to reviewing and, finally, to deployment, this
ensures transparency to the client. Timely delivery: Usually, the duration of a sprint is fixed and varies between one and four weeks, which forces the team to deliver features rapidly and frequently. This also helps product owners to predict the costs involved in the development and keep these under check.
Changing requirements: The Agile methodology also allows teams to incorporate changes in the requirements at an early stage of the development cycle, which helps companies to develop high end products without overshooting their budgets.
User focused: Instead of test cases, the Agile model employs user stories that have business and user focused acceptance criteria. This helps teams to understand the needs of the users and deliver products that can be beta tested in time, so that the necessary changes can be done at the earliest.
Steps in the Agile approach
Let’s look at the steps involved in implementing the Agile methodology.
1. Discovery: To develop a high quality product, one needs to have a clear vision and considerable experience in the technology used in that project. Discovery sessions are significant, since they are the basis for all the upcoming activities in the sprint. During these sessions, the clients’ goals, the users’ expectations and the business challenges are understood deeply so that no ambiguity remains in the minds of the team, regarding the product.
2. Product backlog: The result of successful discovery sessions is product backlog, which contains a list of all the features that need to be developed. These features are then classified on the basis of priority by the product owner (in discussion with the client), so that high priority features can be developed, tested and delivered first. 3. Iterations: After the high-level product backlog is finalised along with the priority, sprints are planned and work begins on the features mentioned in the backlog.
4. Cycle: If all the features are completed and tested successfully, then the cycle stops; otherwise, additional sprints are planned to carry out the remaining work.
Agile and DevOps: The connection
Agile and DevOps – these two terms have become the buzzword these days. Though these two words are used interchangeably, there’s a stark difference between them. Agile is mainly concerned with software development and the processes or steps involved in it, whereas DevOps comes into the picture after a high quality product has been developed, i.e., it is about the deployment and management of software. The term DevOps is derived from two words – development and operations. Before delving deeper into the details of DevOps, let’s see how it emerged in the IT scene.
We have seen how organisations reaped benefits by implementing the Agile methodology, but this model also had some hitches, which are listed below:
There were chances of incompatibility between old features and new features during integration. Often, budget goals and deadlines were missed.
There was a lack of cooperation between the development and IT operations teams.
Usually, whenever any product is released or any service is made live by an IT organisation, two departments come together to support this release – the development and operations teams. Yet, there is a lack of coordination between development activity and operations activity. The development team feels it is being paid to bring about ‘change’, whereas the operations team is looking at stability and considers ‘change’ its enemy. This conflict in mindsets often leads to inefficiency and overhead costs for the company. DevOps is a practice employed to smoothen the IT service delivery by promoting communication between development and operations teams, which is essential to increase a company’s productivity. It helps the company to continually deliver software with highly stable features, faster and more frequently.
DevOps brings more flexibility to the Agile methodology and leverages its productivity. It widens the scope of
Agile principles by including operations teams in its ambit instead of stopping the Agile cycle at code check-in only.
So, you can deduce that Agile principles and processes can be employed as a part of DevOps. In layman’s language, we can say that by using the Agile methodology, high-end products are developed and by implementing DevOps, the developed products are deployed in a timely manner. So the Agile model and DevOps complement each other, but are totally different from one another.
Development Team Operations Team
Figure 1: Agile and DevOps complement each other with the support of the QA and IT operations teams
I want change! I want stability! Figure 2: Wall of confusion between the development and operations teams