POKE ME for any consultancy

Thursday, June 8, 2017

Rollout DevOps in Agile methodology

Rollout DevOps in Agile methodology



1         Introduction

Software development methodology is a delivery of software development work into well-defined phases containing activities with the objective of better administration and planning. As software industry expanded in 1960, many methodologies were introduced to it. Numerous software development methodology (SDM) frameworks are introduced. Agile Methodology is one of the most popular & sensational software development approach. It was introduced near to  year 2000.
 What Is Agile?
Agile methodologies emerged as an alternative to traditional sequential development (i.e. waterfall methodologies).
Agile software development is based on the principles of evolving requirements and resolutions through a collaborative effort of self-organized cross-functional teams.
Agile Methods break the product into minor incremental builds. Builds are delivered in iterations. Iteration takes from about one to three weeks usually. Each iteration includes cross-functional teams occupied simultaneously on various areas like planning, requirements analysis, design, coding, unit testing, and acceptance testing.
At the end of the iteration, a working product is shown to the customer.
Interaction with customer is the foundation of Agile methodology, and open communication rather than heavy documentation are the classical features of Agile development approach. The agile teams work in collaboration with each other. The product is verified frequently, through the release iterations. This minimizes the risk of any major failures in future.

1.1          Agile principles

The Agile is based on few principles:
1. Customer satisfaction by early and continuous delivery of treasured software.
2. We should adapt changing requirements, even in late development.
3. Workable solution is delivered frequently (weeks rather than months).
4. Close, daily teamwork between business people and developers.
5. Projects are built around inspired individuals, who should be trusted.
6. Face-to-face conversation is the best form of communication (co-location).
7. Working software is the prime measure of progress.
8. Development should have a constant pace.
9. Continuous attention to technical excellence and good design.
10. The technique of maximizing the capacity of remaining tasks is necessary.
11. Best architectures, requirements, and designs emerge from self-organizing teams.
12. The focus of team is on being more efficient, and balanced.

1.2          Agile Methodologies vs. others

Traditional methods consist depth planning and having a firm design of the certain tasks to be delivered during the product life cycle. The following phase is started after former phase is reviewed and verified. Also traditional model focuses more on documentation like design documents and requirements documents. New modifications go through the design and analysis phase or through change control management.
Traditional model can be best fit to those deliveries in which requirements and scope are freeze; the product itself is stable.
Agile method gives flexibility to developers with minimal documentation. It is suitable for changing requirements and gives flexibility to developers.



2         DevOps

2.1          Introduction

Providing the interface between IT and the business is the prime responsibility of the operations team in IT business. Every so often, Ops is the first POC for the end-user. Ops team has to be well organized and experienced so that they can contribute quality service to business.
Many times, when the Dev team creates the solution, attention is given to the functional requirements but deployment and support requirements are neglected at some extent. This creates situation of confusion during application deployment-production support, and recovery. If such instances happen more often, business notices IT as unexpected and unfriendly.
DevOps is a culture where the business teams, development teams, and the operations organization altogether collaborate on a regular basis. This culture makes sure the on time availability of IT solutions to business and working fine and smooth also.

2.2          Agile and DevOps

2.2.1        Agile without DevOps

The development team produces some working functionality at closing of every iteration in Agile Methodology. However, the successful completed functionality would have to hold if the Ops team is not ready for IT and deployment or business is not ready to go live with the new functionality, there will be release delays. And, minimal time to market (one of the beauty of Agile) is not understood completely.

2.2.2        The need for DevOps

DevOps is a culture, motivation focusing on the collaboration of both, software developers and other I.T. professionals, with automating the process of software delivery and infrastructure changes. It aims at initiating a culture where building, testing, and releasing software can be more frequent, quicker and more reliable.

DevOps enables understanding the benefits achieved through Agile such as faster delivery of functionality.
A pre-requisite of DevOps is that the Ops team should consistently engaged with the Dev team throughout the life cycle of product development. Ops should begin contributing from early stage, the epics, and the release time lines for quick and better understanding of business Idea. They should also contribute to determining the schedule feasibility.
DevOps is recognised by the people having  versatile skill set, people who are much more  comfortable with the infrastructure and configuration, but also open to write tests, debug and ship features.

2.3          Benefits of DevOps

The companies which are practicing DevOps have outlined its remarkable benefits. For instance, significantly improved customer satisfaction, shorter time-to-market, more reliable releases, better product quality, improved productivity and efficiency, and the increased ability to build the right product by rapid experimentation.

Technical benefits

·         Faster resolution of problems
·         Continuous software delivery
·         Less complex problems to fix

Business benefits

·         Stable working environments
·         More rapid delivery of features
·         More time available to add value (rather than fix/maintain)
The Devops movement is still in its beginning stage, but it's gathering pace. We're on the edge of a revolution in the software industry - a paradigm shifts where developers and Ops team start working together, to train each other.

3         How to implement DevOps?

Most developers are focusing to understand the business value of DevOps and to implement it the best. The previous was easy to define, while the final has been more difficult.
Five steps to execute successful implementation of DevOps are as follows:

3.1          Continuous Planning

Continuous Planning is the first step of adapting the DevOps. Continuous Planning makes the developers-business analyst, testers, operations team collaborated at single platform in the preparation of a release plan. Control on what is being check-in inside the pipeline shows much better integration for better traceability in succeeding development activities, including testing. Success of planning makes budget management-resource allocation management and demand in market handling easy.

3.2          Continuous Integration

In DevOps, Continuous integration (CI) belong to the Developers. The main focus here is to have a continuous bug free builds with best practices & standards of version controls that are followed. And then these builds are picked up for the deployment in the specified environments.
Frequent processing of the check-in of developer’s code can identify error quickly as a result, reduces the failure of builds significantly.
The Agile has also helped in growth of this phase. The tools are being developed by multiple vendors and open source community for implementing its function, focusing around build automation, code quality assurance and artifacts repositories.
The challenge is to select the right tool set that can fulfil your requirements correctly. And after selecting it, verifying that the selected tools work smoothly with each other and with the other solutions.

3.3          Continuous Testing  

Testing is an important aspect of development life cycle. Testing assures the quality of the product delivered to the end customer. DevOps emphasis on automating all the categories and phases of testing. DevOps requires automation and enforced traceability as pre-requisites.
Most common scenarios are cloud based services and test automation. These all are pre-defined plug-and-play components.


3.4          Continuous Deployment        

Deployment is the key element for implementation of DevOps.
As continuous integration and delivery defines Agile, the core of DevOps is continuous deployment. It links IT to operations. This area is looking for automation in maximum areas possible as release, deployment and environment provisioning being the chief among them.

3.5          Continuous Feedback & Monitoring

Feedback and Monitoring is the final stage of the DevOps. This operations area is important for the development and demand management.
Implementation issues centre around automated sensing and alerts. From a tools perspective, secondary issues are completing the monitoring loop. The tool must identify the issue using either manual or automated mechanisms. Tool must label the issue with the component so the developers or operators understand what, why and where it occurred.

4         Tools used for DevOps

Below are some tools Used to achieve DevOps.
·         Jenkins: Continuous integration tool
·         Monit: Monitoring tool
·         Graylog: Centralized log management
·         Chef: Configuration management tool
·         Graphite: Tool for monitoring.
·         ActiveMQ: Messaging and integration tool

 


6.    Certifications

Below are few of the certifications to benchmark our knowledge in Agile and Devops.
PMI Agile Certified Practitioner (PMI-ACP): It is for project management professionals whose organizations currently use or are moving to agile practices.

International Consortium for Agile (ICAgile):
ICAgile Certified Expert (ICE) certifications are extremely prestigious. There are three certification levels: Professional, Expert and Master, to test and evaluate candidate's knowledge acquisition and competency within Agile.

DevOps Foundation Course: Courseware shared by DevOps Institute
DevOps Foundation Certification provided through Peoplecert







No comments:

Post a Comment