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







How OpenShift useful for developer

How OpenShift useful for developer

We sometimes think how can development team concentrate more on their core task rather than extracurricular activities. Through OpenShift we can achieve this, it helps to
Simplify the Development Experience
Developers focus on coding and verification using OpenShift for application hosting.
Reduce Resource Waste
Dynamic application hosting reduces the overall infrastructure footprint
Extensible Development Pattern
Reuse the same streamlined application development process facilitated by OpenShift across multiple development teams
Continuous Integration with Jenkins
Development teams can ensure that all code is tested in a consistent and workflow-friendly manner
Artifact Orchestration
After a new build is tested, Jenkins can zip the application and perform coordinated actions

                            “OpenShift simplifies the Development experience “

OpenShift Developer Experience
Image title


Simplify the Development Experience
Authenticate, manage applications, develop/fix, test, release.
Through openshift applicaiton we can
•Focus on increasing developer productivity    • Decouple application dependencies
•No custom deployment solution                        • No co-mingled development teams

                                        “OpenShift Reduces Resource Waste”
OpenShift Multi-Tenant Developer Environment
Image title

Reduce Resource Waste
  • Developers can be co-located on OpenShift environments
  • Developers can create, delete, and manage just their applications
  • Delete unused applications to free up resources across the environment
  • Limit developer provisioning capacity
  • Adding more application hosting capacity without impacting current development
  • Manage application hosting density

OpenShift Feature Branch Continuous Integration Workflow

Image title

•          The Feature Branch Pattern can be extended to multiple development teams.
                Including various: team sizes, layer, release cadence.
•             The Master Branch Pattern can be extended to multiple development teams.
                Including various: team sizes, layer, release cadence
•             OpenShift is agnostic about the application type
•             Streamline application development for handoff to QA
•             Easy to customize

OpenShift Artifact Orchestration
Use Jenkins to perform coordinated actions for a new release
•             Highly customizable
•             Reduce new release publishing wait time
•             Continuous Deployment
•            Artifact orchestration is extensible to multiple development   teams
•             Create a single artifact that is deployment-ready for QA validation and production

                Image title                                                                                                                                                                                                                               
OpenShift DevOps Use Cases
•             Customizable OpenShift Data Centre Topologies
•             Setup OpenShift across multiple Data Centres
•             Hosting an Application in a Dedicated Resource Pool
•             Support application scaling based on demand
•             Out of the Box Application Deployment
•             OpenShift supports artifact deployment management
•             Application Monitoring
•             Ensure OpenShift integrity across Data Centres
•             Integration with Production Load Balancers
•             Support existing Load Balancers for routing
We can reduce infrastructure costs by Hosting an Application in a Dedicated Resource Pool and thereafter monitoring pool utilization
•             Simplify application management
•             Production publishes only affect one application type
•             Reduce production outage impacts by only hosting one application type per pool
•             Scale the number of redundant instances up or down within a pool without impacting                 other production applications or services

Out of the Box Application Deployment
•             Take the artifact handed off to QA and deploy it using the out of the box OpenShift REST                    API or command-line tool
•             The OpenShift application deployment tools are agnostic to the type of application
•             Deploy new releases in a standardized manner
•             The OpenShift Application Deployment tools support a variety of status, activation,                            rollback, listing, and information functions

.