Microsoft Enterprise Web Site
This is a guest video post by Pankaj Arora, senior manager in the Global Strategic Initiatives team, Microsoft IT. See his prior post about the new book, “To the Cloud: Cloud Powering an Enterprise.”
Once you have envisioned the ways your organization can benefit from using cloud computing, the next step is to decide how exactly to move forward.
In the video below, I sit down with co-author Salil Dave to talk about important considerations and practices to enable cloud computing in an enterprise. Our discussion draws on our experiences within Microsoft IT, and experiences from the many enterprise customers we’ve met. In the video we touch on different topics including approaches to cloud adoption, selecting a service provider, investing in training, and cloud governance.
At the end of the video we also discuss the DevOps model, in which there is tighter integration between development and operations. In DevOps, there is often more fluid communication and more frequent releases. Software developers understand operational patterns and practices well, and operations personnel have a greater understanding of the technologies programmers use to build services. This model is important for IT shops to digest to maximize the benefits of the cloud. I’ve also included a short excerpt from the book below regarding DevOps, and of course there are many more best practices covered in the book.
Web 2.0 companies like Netflix and Flickr have written about their experiences using the DevOps model. In a presentation given at Velocity 2009 entitled “10+ Deploys per Day: Dev and Ops Cooperation at Flickr,” John Allspaw and Paul Hammond described how Flickr teams applied DevOps concepts to roll out as many as ten deployments in a day. They automated the deployment of infrastructure, created a one-step build and deploy process for shipping releases, and used online collaboration to coordinate issue resolution during releases.
Adrian Cockcroft’s April 2011 presentation about how Netflix did a full migration of its website to public cloud services, entitled “Moving Your Organization to Public Cloud,” drew many of the same conclusions about DevOps as Allspaw and Hammond did. Developers remain the owners of code running in production environments. Operations work shifts to writing code and creating tools that automate processes. Both roles have a part to play in collecting metrics. A flatter and more collaborative IT organization is necessary to accomplish all of this.
Most enterprise IT groups already have release management processes in place. DevOps can reduce development cycles from weeks or months to days or weeks, which means project managers or release coordinators will see a corresponding shift in their duties. Releasing smaller components more often lessens the risk of failures, assuming rollbacks are easy.
We suggest you take a close look at agile software development methodologies, such as Scrum, if you have not already done so. Also consider changing job descriptions or performance review goals to encourage better collaboration among IT staff. For example, educational goals could include “Operations engineers demonstrate a working knowledge of detailed systems design,” or “Software developers work one shift to support applications they built (per week, month, or quarter).”
DevOps teams managing new projects and releases in the cloud powering a cloud based enterprise resonates with me, but what about for managing the legacy environment? Your thoughts on applying a similar approach for an Enterprise that's made significant investments in a legacy product stack?
Carlos, Great question - it is applicable to nearly all organizations that have been around for a while.
There is indeed a lot of natural alignment between DevOps and Cloud Computing given the agility and reduced IT responsibilities the cloud provides—benefits that are maximized further through DevOps. That said, there is nothing inherent in DevOps that makes it entirely exclusive to the cloud. An organization can create tighter alignment between engineering and operations, introduce the notion of more frequent smaller releases, all while increasing automation and communication irrespective of the technology stack. In fact, many of these ideas have roots in concepts that pre-date cloud computing. The real differentiator is how well an organization can implement DevOps given legacy environment constraints.
In my experience it is generally easier, more cost effective, and more fruitful to implement DevOps in the cloud versus on-premises—and the organizations that are most competitive in this way utilize the cloud. However, I believe it is still worth investigating with legacy environments for a variety of reasons. First, there will still be some benefit including increased agility. Second, many organizations will have hybrid ecosystems for the foreseeable future—and it is likely that modern methodologies, as they are adopted for the cloud, will get applied in some way to legacy environments anyway - especially as customers see the value. In fact, some enterprises may wish to avoid having two IT methodologies in place for an extended period as it increases complexity. Also, DevOps and the Cloud can play a role in supporting legacy stacks—perhaps providing environments to support development and testing even as the service itself remains on-premises. And finally, implementing DevOps sooner rather than later may help prepare and motivate folks further for cloud adoption given the natural alignment.