DevOps in the enterprise

DevOps. Many of us in enterprise IT look longingly upon the growing DevOps movement. We have a significant challenge: Often the “dev” in DevOps isn’t just another team or department, but in a completely different corporate group, with a different VP. Unlike a web company (often not big enough to have an IT department dedicated to internal technical needs), enterprise IT’s role isn’t necessarily equivalent to “operations,” but it more closely resembles ops than development.

There is also a culture in enterprise IT to learn vendors ahead of process. Cisco, Microsoft, VMware, RedHat… Enterprise IT is quick to recognize expertise in tools.

As a lot of the code enterprise IT runs is bought not built, it compromises our ability to really learn to dance to the rhythm of software development.

That said, enterprise IT has plenty of opportunity to benefit from DevOps. The trick for us will be not to burn too many cycles in meetings and bureaucracy before just trying some things out with our partners in the organization.

“If you find yourself squirming uncomfortably at the idea of developers deploying code to production environments, you probably work in an environment that discourages mixing of dev and ops roles.”

The write-up below by Adzerk is a fantastic overview of DevOps and great way to diffuse many of initial concerns people have with the idea.

Perhaps a start for those of us in enterprise IT is to pass along their blog post internally. :-)

adzerk:

“A system of local optimums is not an optimum system at all.” - Dr. E. Goldratt

DevOps, the mutant offspring of software development and the subsequent operations to keep that software functioning, is typically an abberaration for most organizations. Most engineering groups create a cultural wall between the developers and the people tasked with installing and running the software. Instances where the disciplines are considered to be a unified skillset are few and far between. Looking around the landscape of technology companies I am happy to see that this artificial division is eroding.

At Adzerk there is no separation between development and operations. All engineers are expected to develop and master skills of writing code and keeping the business operations functioning. 

IS THIS YOU?

If you find yourself squirming uncomfortably at the idea of developers deploying code to production environments, you probably work in an environment that discourages mixing of dev and ops roles. Developers write the code. Operations engineers install the code.

Perhaps there’s a hand off, with a lot or maybe little ceremony. Perhaps you have coordinated release reviews where the heads of departments show up and grunt and nod and sign off on a release. Or maybe you also have a long verification process filled with checklists that takes days or weeks to finish. There’s probably also volumes of expected documentation which acts as a contract designed to insulate your team from blame.

Worse still, if there is a problem with the deployed code there is a frustrating delay to fix it. Developers can’t work on the systems to deug the problem easily, or at all. Production staff insist on overly complicated rituals before they will expose themselves to yet another risky release of code. The feedback cycle on the software lengthens further still, delaying the delivery of actual value from the software. 

Because the production staff is so overwhelmed with rising costs of complexity and risk of each deployment, they demand larger work buffers. In this case the buffers are carefully documented processes and ever more rigorous manual inspection of the product before they deploy. Since they cannot directly control the process of putting quality into the software, they react the only way they can - they must hire more people to make the workload manageable.

Meanwhile, the developers react to the demands of the production staff by grumbling about how production is “dragging their feet” on deploying fixes. Any problems in the deployment is clearly the fault of people who just don’t understand how to work with the product. They are unable to rapidly adjust the product to a changing marketplace. They lengthen their work buffers by creating longer cycles of “requirements gathering” and architecting features no one asked for.

The end result is that the business become slower to respond to change. Development costs begin to climb as projects become delayed. Engineers become frustrated and angry with the workplace. Attrition becomes a problem as the most talented people seek greener pastures. 

Everyone sees problems but no answers. Everyone complains “We can’t get anything done!”

KANBAN

As bad as this sounds, there are ways to turn it around. As Andy explained in a previous post, Kanban is a powerful tool for visualizing and inspecting the flow of software delivery. By creating large and visible representations of how we work, we were able to avoid the trap of dividing our engineering team into functional silos. Rather than focus on efficiency of each work unit (code created per developer) we chose to focus on the pace of the working, software delivered.

Eliminating the “traditional” specialization between development and production is an outcome of our Kanban adoption. Kanban is not the only way to address this problem, of course. Any framework that encourages inspection of how work is done and encouragement of explicit conversations about how to improve that work are necessary conditions.

INFRASTRUCTURE AS CODE

As a corollary to devops as an organizing principle, we’ve adopted “Infrastructure as Code”. This says that the configuration and provisioning of our infrastructure is described and controlled by programming tools. We chose Chef, but there are many tools available such as Puppet and cfengine. Every developer has access to the infrastructure code and the server infrastructure itself. 

If the thought of easy access to the servers that run your business makes you uneasy, it just means you are sufficiently paranoid. We use that unease to develop our version of “poka-yoke”, or error proofing mechanisms. Since we are responsible for the availability of the production environment, we make engineering choices to minimize fear.

CONTINUOUS DELIVERY

Our software is pulled from our Github source code control repositories into a continuous integration pipeline. We apply a battery of fast unit tests. If those tests pass, we immediately and automatically deploy the code to a test environment. The pipeline runs another round of API tests followed by our slowest functional tests. The pipeline shuts down when it detects a failure and notifies everyone.

If the tests pass then the code is promoted to a release. The pipeline then deploys the promoted code automatically to our production servers. 

EMERGENT PROPERTIES

Do we make mistakes? Of course! What we have found is that the longer the time a developer takes to commit changes, the bigger the changeset. And the more that changes, the greater the chance that a bug has been introduced. By forcing all changes to be applied as soon as possible we encourage small changes. 

Small, incremental changes are also easy to debug. If a developer makes a mistake in 3 lines of code, we know we only have to search 3 lines of code for the problem. If your release cycle takes a month, how many lines of code did you change? How many lines of code do you have to inspect to find and fix the defect? Thousands? Tens of thousands? Millions?

The other advantage to making frequent releases is that the time to fix a problem is usually about 15 minutes. We don’t petition a committee to make a change, or fill out a form, or create a ticket proposing the change. We make the change is made and it’s deployed immediately. Our build and deployment infrastructure creates and reports the information we need to audit changes and fix problems.

We think the ability to react this rapidly is an immense advantage. This stance forces everyone to have explicit conversations about what constitutes value to the business. We measure the impact of changes almost immediately, rather than in weeks or months. This culture creates an engineering culture of achievement and pride instead of fear and frustration.

We learn rapidly from our work. We serve our customers better. Win!

(Source: adzerk)

New conference: Consumerization of IT in the Enterprise in San Francisco

I’m sure it will have some boring parts, and some helpful parts. But how fantastic that there’s a mainstream conference like this about the topic of consumerization! :-)

Thanks rankandfile:

March 2012 brings the debut of the Consumerization of IT in the Enterprise (CITE) conference and expo in San Francisco, California.

Managed by IDG, and sponsored by Cisco and Citrix, the event will likely be a bit more staid and devoted to things bureaucratic. (The example agenda previews sessions on governance, asset lifecycle, risk management.) But it makes for an interesting compliment to Box.net’s lively Boxworks conference, and the long-running Enterprise 2.0 series of events.

You’re encouraged to submit a speaking proposal to CITE by November 18th, 2011.

Programmer/designer super combo

Agreed. Ideally one knows both. Not to save on resources or expect the impossible, but because there’s often a gap of possibility when it’s two separate people.

Unfortunately in an enterprise environment, it’s incredibly hard to get good designers, let alone one who knows both. I can’t blame these wonderful folks, what fantastic designer wants their work to be seen only inside a corporate internet, or quarterly report PDF?

chriseidhof:

Recently there was an excellent post by Mike Rundle about how one person can be a designer and programmer at once.

I think having a designer and programmer in the same person is a great idea. I wish I would be better at design (not only do I lack experience, I’m also not sure if I would have the patience to become a good designer).

When I’ve worked with designers before, I sometimes noticed that they would just give me a design to implement, which I did. If something didn’t work on the iPhone (for example, creating an endless navigation structure) I would report back.

There is a problem with this: often times, there is a gap between the knowledge of the designer and the programmer. The designer doesn’t always know what’s technically possible, what’s simple or what’s a good idea. On the other side, a programmer often doesn’t know what makes good design.

I think the best teams are with people who have an overlap, instead of a gap. For example, if a designer knows how to program, they know the kind of things that are possible. Also, programmers need to know more about design.

One good example of where this is done is the Square credit card field, which is not just design or programming, but really achieves synergy by combining them.

Another thing is animations: a lot of designers aren’t used to this yet, mostly designing interfaces that don’t animate. Programmers often don’t know when it’s useful or meaningful to do an animation. They just want the button to do what it’s supposed to do. If we both move a bit closer towards each other, I imagine it could improve software a lot.

To come back to Mike’s article, when one person knows how to design and code, there is no gap between that knowledge. A very powerful combination indeed.

Discuss on Hacker News

(Source: chriseidhof)

"It might appear that even tobacco companies enjoy a better level of overall ‘likeability’ than do enterprise software vendors."

Thomas Wailgum, an editor at CIO.com (via cliveb)

(Source: TechCrunch, via cliveboulton)

The anti-Windows Chrome OS video that doesn’t mention the word Windows?

This is a video from Google about their new Chrome OS. Not Chrome browser. Chrome Operating System. 

Though they never utter the words Microsoft Windows this video is all about “how computers get slow.” About how you have to manage and remove programs. About how computers get crufty. If you work in modern corporate IT you’re thinking of Windows registry. Of Windows start-up scripts. Of Windows login scripts.

Whether Chrome OS delivers an antidote to all that remains to be seen. But it’s pretty friggin clear who and what they’re referring to. And they never even mention Windows by name.

OK, we’re listening, Google. Deliver the goods, and we’ll check it out.

soupsoup:

Google launches Google Chrome OS

(via techspotlight)

New book about workplace culture: Rework

jeremiahsmith:

“When you turn guesses into plans, you enter a danger zone. Plans let the past drive the future. They put blinders on you. “This is where we’re going because, well, that’s where we said we were going.” And that’s the problem: Plans are inconsistent with improvisation.”

I’ve read the excerpts and am familiar enough with the 37signals blog that I know I will enjoy this book.

It’s something that those of us who work in traditional 9-5 environments especially need to read, as we have the most to overhaul.

We need to put a price tag on productivity

smarterplanet:

“If today is an average workday, you could lose about an hour of time trying to get something done. But you won’t be able to accomplish the task because you can’t find the right information, access the right tool or reach the right person due to inefficient processes. Employees spend 25% of their time just looking for information. Every week, 42% of people use the wrong information to make decisions, requiring rework. And with the economic downturn, there is an even greater urgency to improve business productivity.”

Smarter Work

Finding things easily saves money and makes money.

At an employee level, at a project level.

Making data findable, and available is imperative.

In terms of business applications, this means USEFUL API’s.

In terms of user applications, this means search, friendly user experiences.

This means ancient enterprise apps with web lipstick painted on do NOT cut it.

Sometimes there’s a enterprise level app that meets this requirement. Sometimes we’re filling in the blanks with consumer apps.

What does Google Apps Marketplace mean for devs? For IT?


Yesterday Google announced the Google Apps Marketplace.

Google already provided a rich set of API’s for Google Apps, so I won’t say “now Google Apps is a platform.”

It already was a platform.

But now 3rd party Google Apps tools can appear to be blessed by Google by being in this store.  They also have a way to visually feel more a part of the “suite” of Google Apps, by appearing in the universal Google Apps navigational menu.

IT Departments like mine are already getting inquiries from anxious users wanting to try all these previously consumer only applications.

It will be harder to say no.  And that’s probably a good thing.

Bring it on, Google.

Cisco CEO: Almost all of our mistakes have been when we moved too slow

This is a short interview between Harvard Business and Cisco CEO John Chambers.

Some things of note for IT professionals:

  • “Almost all of our mistakes have been when we moved too slow.”
  • Their “decade of productivity” was all about enabling Internet technologies for their customers and employees. A test of its value was “being able to close our books whenever we wanted to within 24 hours.”
  • Telepresence is saving CISCO 150 million dollars. (Needless to say, they get a nice discount.)

Good reading for February 22, 2010

  • Going virtual: Choosing a hypervisor, and moving things there. From an operations perspective. (via Michael Cote at Redmonk.)
  • Notes from Al Zollar’s keynote at IBM Pulse 2010: Integrated Service Management
    IBM is hosting a major event this week, IBM Pulse.  I’m not there, but am following the event with the Twitter hashtag #ibmpulse. IBM’s Todd Watson (@turbotodd) is taking great notes, including the link above that I found quite provocative.  As soon as an enterprise vendor uses the word “integrated” I usually flinch.  It often means a toolchain you use 2% of that’s incompatible with everything else you have.  It’s exactly why REST is so cool, and saving us with data and software we can do anything we want with. Still, I definitely think IBM understands the problem (complexity). Whether they get the solution is something I’m not sure of.
  • Embrace your malcontents, by Martha Finney (@marthafinney)  How I choose to deal with malcontents on my staff depends one thing: If they’re anxious and yearning to work and change the things they’re unhappy with, or if they want to complain as as observer. Martha is writing about the former category. And she is right. We HAVE to invest in them.  These are the people who move your organization forward. They CARE. It would be easier for them to maintain the status quo, and yet they’re itching to change things. It’s everybody else we need to be nervous about.
  • (related to above link) Counterfactual thinkers are more motivated and analytical
  • The Irony of Microsoft’s Anti-Google Apps campaign on Youtube. I actually didn’t even think these videos were coherent enough to be wrong or right. They’re really quit high-level. So high-level, that they become abstract. When Google uses cartoons it helps you understand things.  When Microsoft uses animation, it makes things unintelligible.