Friday 28 February 2014

DevOps KeyPrinciples CICD.

In my earlier post I explained what is DevOps ? In this artcile I ll touch upon two important concepts of devops Continuous Integration /Continuous delivery.

Continuous Integration: – Agile in practice:


“Continuous Integration is a software development practice where members of a team integrate their work frequently; usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible.”


  
The value that Continuous Integration brings to the table is that it forces developers and team of developers to integrate their individual work with each others as early as possible. This exposes integration issues and conflicts on a regular basis.

Principles of CI

  • Maintain a Single Source Repository
  • Automate the Build
  • Make Your Build Self-Testing
  • Everyone Commits To the Mainline Every Day
  • Every Commit Should Build the Mainline on an Integration Machine
  • Keep the Build Fast
  • Test in a Clone of the Production Environment
  • Make it Easy for Anyone to Get the Latest Executable
  • Everyone can see what's happening
  • Automate Deployment
Continuous Delivery – Extending Agile beyond Development:

Continuous Delivery takes Continuous Integration step further. After the application is built, at the end of every Continuous Integration build, deliver it to the next stages in the application delivery lifecycle. Deliver it to the QA team for testing and then to the operations team (the Ops in DevOps) for delivery to the production system. The goal of Continuous Delivery is to get the new features that the developers are creating, out to the customers and users as soon as possible. The goal being to Ensure applications are production-ready throughout the lifecycle and can be released at any time while minimizing rollback due to quality issues



Principles of CD

  • Validate on more production-like conditions earlier
  • Automate hand-offs/promotions to increase velocity through the different stages
  • Standardization on processes and assets between Dev and Ops
  • Automated monitoring and dashboarding of quality and performance against service level agreements at multiple stages

Saturday 22 February 2014

DevOps :Putting Software development on cruise control


I have heard about devOps. Not sure if I know a lot of it and if its relevant to me?. I have often encountered this question .In this article i have tried to answer that.

Automating repetitive procedures can provide real value to software development projects.If you’re a developer \tester\production support  who enjoys spending your time actually adding value to your project, rather than repeating the same routine tasks over and over, you’ll want to
consider advocating the concept of continuous Delivery in your team.Harnessing the power of Continuous Delivery to increase delivery speed, quality & stability via frequent, automated releases.DevOps is an approach to IT focused on fostering cooperation and collaboration from developers through operations and production support. Testers, release managers, and change management teams are included. Through joint efforts, DevOps seeks an IT team that is more responsive to the business, and more efficient while still delivering high quality product in compliance with regulations and separation of duties concerns.

Why   use DevOps?

Without arguing the benefits of Automation in software delivery pipeline there are certainly other  compelling factors once can think of to consider DevOps.Agile development method have promised greater business agility by letting developers create applications faster.But the infrastructure team  and operations teams aren’t always able to deploy the changes / applications at the same speed.Thus, IT experiences the bottlenecks that occur when Agile’s need for speed clashes with operations’ need for stability. The result is non-agile, Agile–a feedback loop with a huge delay in the middle. Second now with the changing ecosystem ,the softwares are getting much more complex and are not just a single component. A typical banking \Big Data Analytics\Mobile application  are amalgamation of various software components orchestrated to work in concert.  Managing these various components each with there own version and maintaining a release ready software  is critical to business in order to incorporate user feedback and changing business trends. Other could be , there is often mismatch in the environment software is developed and the environment in which it is deployed .

The crux is to bring both agile principles such as iterations and cross functional teams together with operations fundamentals automation  , to the entire application lifecycle assessment, development, management and monitoring.  Because DevOps includes a strategy and set of principles, backed up by tooling, for promoting collaboration between development and operations DevOps can help solve the problem of non-agile Agile by producing leaner, more responsive teams that ultimately deliver business value back to the customer.

There are tools available for continuous integration and release management that can enable devops . But tooling alone doesn't enable DevOps. "It's a mindset. Companies need to understand that you can't buy DevOps. You understand and invest in DevOps as a team, a process and a lifestyle." That process can happen on purpose with full buy in up front, or gradually by stealth as part of the natural evolution of a company.

Return on investment on devops?

Adopting Devops is not cheap not just in terms of the cost of tools ,people but the effort it takes .Its not just adopting some tools but the transformational change that the organization goes through .Its important to understand if done in a right way one can realize the value pretty soon.some of the benefits one can realize are

time to market.
Reduce cost/time to deliver
Reduce time/cost to test
Increase test coverage
Increase environment utilization
Minimize deployment related downtime
Minimize deployment time issues (you know, the weekend long deployment marathons)
Minimize roll-backs of deployed Apps
Increase the ability to reproduce and fix defects
Reduce defect cycle time


This is only the start of the journey, there is more to learn. However, what (we hope) we know is that long release cycles are a thing of the past. With most organizations using some form of Agile and iterative development, operations leaders can make their teams leaner and more responsive by embracing DevOps.  

coming next is my blog on knowing the right set of tools to realize devops.