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.

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.

Acting like a friendly, fun consumer service provider when you offer boring internal enterprise IT services

I’m an IT Director of an internal, enterprise IT organization.

But more and more I find myself influenced and inspired by people and industries outside of my profession.

One thing I talk about with my staff a lot is offering customer-centric services. Some people call this: the consumerization of IT. But even before that phrase existed, being customer-centric was a valid philosophy.

What does this mean in practice?

  • Going the extra mile to be clear, accessible, and informal in our communications. Writing well. (yes, WITH LANGUAGE). even though we are just IT geeks
  • Going the extra mile to anticipate likely issues and proactively document for them
  • Going the extra mile to make outstanding support resources and provisioning tools
  • Designing well. (yes, GRAPHICALLY) even though we are just IT geeks
  • Avoiding unfriendly formats and attachments in our communications. This means: No .pdf email attachments, no URLs that end in .doc
  • Making everything as self-serve as possible
  • Getting out of the way
  • Iterating + improving rapidly
  • Helping users be amazing

Sometimes offering consumer style services can be challenging, attitude-wise, because we offer internal services.  Some staff will question whether it’s worth it to put effort into things that “only” internal staff see.

Yes, yes, yes.  A thousand times yes.

While it does take time to be customer-centric, it saves more time. It’s consistent with the entire spirit of IT: centralizing a resource the entire organization needs.  The easier an IT service is to use, the more efficient it is for ALL employees.

When IT doesn’t take the time to make services extremely easy to consume, it COSTS the organization money, reflecting complexity onto an entire organization instead of absorbing it.

Being consumer-esque also keeps IT staff on its toes, and gives us fun, stimulating challenges.  Consumerifying our internal IT services is a great break from what’s often perceived as the dreary, bureaucratic nature of the enterprise. I have great fun with my staff “playing Apple,” with our products, and coming up with fun, helpful error messages.

But I’m hardly a guru of this stuff.

Kathy Sierra is a guru of being truly customer-centric.  And I recommend you Google her talks, wisdom, etc.

I was introduced to her work through David Heinemeier Hansson, creator of Ruby on Rails and partner of 37Signals.  I can’t remember the exact place I heard him mention her, but he references her here.

Kathy Sierra gave the talk I’ve embedded above at this conference.

Seven million students are using Google Apps

Seven million students are using Google Apps according to Google. And that doesn’t even include the ones using Gmail and Google Docs for personal stuff.

These are the people corporate America is courting. I feel so bad when a new young hire expresses confusion or disappointment with the tools we offer him or her to work with. When Java applet crashes on his or her desktop in a sad mess.

I also feel they will quit. Or stay and work unenthusiastically.  One thing I have been tasked with is making our enterprise future-ready, as a recruitment tool.

(via irq)

This is happening. I’ve also seen a variation: projects moves forward anyway, and it’s assumed staff will learn as they go. (This isn’t so different from when management buys a big suite or toolset without much realistic technical due dilligence, and the staff learn as they go then, too.)

Another thing I’ve observed is that this pinches the enterprise (internal IT departments) worse than web companies. As an IT Director for an enterprise environment,  I’ve noticed often really talented folks will answer an ad, but the enterprise environment just isn’t appealing to them. What we in management are faced with is accelerating some choices we probably should have made a long time ago anyway: stop using some of the typical enterprise toolset.  (Especially since they often aren’t actually the most well-proven configuration management/cloud/virtualization tools anyway))

An example: Debian and Ubuntu Linux are running more of the cloud in Internet companies than in the enterprise.  I recently met with an amazing systems engineer who balked at the version of Linux one prospective enterprise gig was using. He was very polite and understanding. And gave great reasons for his rationale to use Ubuntu or Debian. He’s fully booked, not hungry for a gig.  And that company is having a hard time finding people who are really good who also want work in these environments.  I think consulting is going to take up more and more of IT’s staff spots, as these folks can write their own ticket.

There are a few ways this can play out.  Enterprise environments may outsource directly to private cloud providers… they may get suckered by their legacy vendors’ new offerings to not adopt some of the new data center strategies, they may just learn to be staffed by a larger percentage of consultants… or we may just find that a lot of these older companies slowly fade away at a business level, IT aside, due to a lack of agility.  (Not to leave the topic of IT, but slow IT practices can be an indicator of the larger business dynamic at hand.)

On a personal level, it’s quite challenging as a director, to hang on to my staff who “see the light” and have these data center 2.0 skills.  I want to keep them motivated and have them stick around. At the same time, I’m simply unable to let them do all the things they’re dying to do. This is an unsolved problem. I hope to write about it more here later.

VMware’s founder Diane Greene is back

masa302:

VMware’s founder Diane Greene is back - UPDATED | virtualization.info

Great to hear. Really liked VMware’s strategy during her involvement.