Striking the Balance Between Innovation and Standardization in Cloud-Based Development
One of the key principles of Cloud-based development is that everything in that development environment – including the infrastructure — is offered to the user (developer) as a service.
In this new world, you don’t give a development team a server, or a load-balancing device. You give developers access to a storage service and a load-balancing service. Leading cloud providers, public or private, offer a wide array of computing, networking, storage, authentication, database, etc. services for developers to leverage (just have a look at AWS’s list of ‘products and services’ to get an idea).
The emergence of the Cloud has been a boost for innovation in the development world. Developers have fast and easy access to the resources they need, and so can deliver features faster. They can also spin up infrastructure on demand and at a low cost, so there’s more room for experimentation.
But there can be a down side when you give developers this much freedom – especially in the larger enterprise. Before the Cloud came along, developers had to go to their IT organization for access to infrastructure and tools. With IT playing a central role in the technical decision-making (and purchasing), they could impose corporate standards onto development. Developers had to use the tools IT gave them.
But in this new Cloud-based world, developers have the ability to circumnavigate IT to cherry pick resources and tools from public cloud vendors such as AWS. In many organization’s IT is now directly competing with AWS for the developer’s business, and in some cases IT’s desire for standardization and centralized control is losing out to the development team’s desire for flexibility and innovation.
But is it that black and white? Is it always the case that innovation has to come at the expense of standardization and control? I think there is a point of compromise where developers and IT can both be satisfied.
Recently, this topic was raised with Jeremy Edberg, Reliability Architect at Netflix, who was in to lead a session with some of our CloudOps customers. One of the customer in the audience asked Jeremy how Netflix balances the need to innovate with the need for standardization.
Jeremy responded by saying that first and foremost, Netflix puts the needs of development first and that they work very hard to make life easy for their developers, providing as many approved services as possible through a private AWS-like resource library.
Second, they provide developers with opportunities for experimentation. Netflix developers are given a chance to try out something new (a new resource, tool etc). If it works, Netflix will consider making that ‘thing’ a standard offering out of the resource library. If it doesn’t work then they have an incident review and determine if the developer needs to go back to using approved standards or not.
At CloudOps we believe, like Netflix, that the most successful companies today are those who are creating a balance between the need for innovation and the need for standardization. And as Netflix has proven, you can achieve that balance within the Cloud. IT organizations have to evolve their thinking in this new world. The rigid, top down, restrictive approaches of old simply do not work anymore. Developers will just do an end-run around the IT organization. Rather IT needs to move to a more customer-centric model where they provide development teams with a platform that supports agility and freedom of experimentation, but is also stable and supported so the business is never put at risk. That kind of shift in thinking will ultimately result in a faster and better business result.