Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

An Agile Introduction to DevOps, Part IV: Ship Ahoy!

DZone's Guide to

An Agile Introduction to DevOps, Part IV: Ship Ahoy!

You've finally tested your software! How exciting! However, that means nothing if you don't get it out to actual customers.

· DevOps Zone
Free Resource

Download “The DevOps Journey - From Waterfall to Continuous Delivery” to learn about the importance of integrating automated testing into the DevOps workflow, brought to you in partnership with Sauce Labs.

This is the fourth part of a series on Agile and DevOps. Part I, Part II, and Part III should be read first!

StrangeYippee! We now have tested software...

...which means nothing if we don’t get it to actual customers. So, let’s talk about shipping to production. Like everything we discussed until now, automation lowers the risk of manual errors and saves time.

Even deploying to production has to have some kind of method to it. We’ve already discussed version management, but that was more internal, and therefore in our control. Going out to the wild means we’re going to lose control, so we want to minimize the risk.

Shipping Along Side-By-Side

It used to be that “side-by-side” meant two versions running at the same time. Things have become more complex since.

First of all, we need to define a version in deployment. It’s easier if we think in an “all or nothing,” binary way; as in, whatever I release, the version number was just incremented.

However, is that always true? What if I open a feature just for New Zealand? Which version am I running right now?

Like with Doctor Strange, we’re now adding multiple dimensions to our situation. Since we can deploy to multiple servers, what happens between starting the deployment on Server 1 until it’s fully replicated and deployed to Server n?

The real issue is not identification but reproduction. If something happened during the process of deployment and we want to reproduce it, we need to know the conditions. It used to be that version numbers were all we needed. That is not so anymore, and DevOps methods need to answer both identification and reproduction numbers.

Versions used to be helpful when something went wrong. If that happened, we would simply roll back to a previous version. Well, if we don’t have a definition of what a version means, how can we roll back to one?

In fact, imagine 500 of your colleagues committing code all day, every day. Now, it seems that yesterday’s deployment needed a revert. However, that means reverting everything else the guys have written. Do you start separating wheat from chaff?

You don’t. Organizations that understand this stopped rolling backward, and just push the fixes forward. That’s a DevOps understanding of how the systems work and how to manage them.

In order to do that, we need the ability to automate this kind of volume to production in a safe manner. Enter Continuous Delivery, another method from the DevOps school. CD is CI’s big brother. It’s an extension of the early cycles of automation (build, developer tests, system tests) and builds on the capabilities of deployment and environment management.

Continuous Delivery is not just about automation. It’s about minimizing the risk of something bad going to production, and raising early warning flags before it does.

We may be “done,” but we're not “done-done.” Software these days doesn’t just end when it’s in production. The DevOps methods reach beyond that. Next time, we’ll talk about the afterlife of software.

Discover how to optimize your DevOps workflows with our cloud-based automated testing infrastructure, brought to you in partnership with Sauce Labs

Topics:
devops ,agile ,software testing ,shipping

Published at DZone with permission of Gil Zilberfeld, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

THE DZONE NEWSLETTER

Dev Resources & Solutions Straight to Your Inbox

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.

X

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}