5 Elements Your Cloud Infrastructure Needs to Enable Application Agility
Cloud computing offers affordability and agility, but that doesn't mean it automatically enables business agility. To achieve that, you may need to rethink the way you design, deploy and manage the application development lifecycle.
Thu, July 18, 2013
CIO — A couple weeks ago, I discussed how cloud computing enables affordable agility. Automated provisioning and easy scalability make it possible, for the first time, for companies to experience infrastructure agility.
However, it's a mistake to assume that agile infrastructure equals application agility (by which I mean both delivering applications into production more quickly and having those applications easily grow and shrink in terms of scale). In fact, one commonly encounters IT personnel who assume that the mere fact of hosting an application in a cloud environment will magically transform it into an all-singing, all-dancing agile application.
That's far from the truth. Cloud infrastructure is necessary but insufficient to achieve overall application agility. In order to achieve the nirvana of application agility, a number of other conditions need to be in place—principally relating to how the application itself is designed, deployed and managed—along with the organization and its processes surrounding the application lifecycle.
Here are five elements that need to change along with the shift to cloud infrastructure in order to allow business agility to take place.
1. Agile Development: Making Business Agility Dreams Come True
Agile development is so well-established in the industry that it seems like it would be a given for organizations seeking agility. However, many IT organizations have not yet implemented agile development practices or are still working toward implementing them in their development lifecycle.
While agile development is a concept rather than a specific set of practices, common to most perspectives on the term is the use of short delivery cycles, small and incremental functionality releases, and ongoing interaction between the application sponsor and functionality definer and the development team. This avoids the long, "big bang" development timelines that, at the end of an extended development cycle, deliver something unusable or unwanted. It's safe to say, though, that absent agile development, dreams of business agility will remain just that: Dreams.
2. Organizational Silos: Leave Them on the Farm
Manual handoffs between organizations are anathema to business agility. Unfortunately, many companies fail to recognize that their processes need to be automated just like their infrastructure. Without streamlined process, there's a mismatch between the speed of development and the speed of application delivery.
Some organizations propose a philosophy of continuous integration (agile development practices fostered by constant integration of incremental application functional improvements) and occasional deployment (release of updated applications into production on a less-frequent basis). That's not necessarily a bad approach, but if it's proposed as a rationalization for organizational silos and manual handoffs, then it's not a great solution.
The experience of leading Web-based companies is that pushing out frequent updates is far more successful and far less disruptive than occasional large code drops. The challenge for many IT departments is that organizational structures designed to meet previous infrastructure requirements are ill-suited to agile development and deployment. Particularly unhelpful are manual handoffs that result in each group redoing the application deployment to align with its internal practices. Each do-over takes time and poses the risk of errors.