Cloud Strategy: Self-Service vs. Controlled


The major public Cloud platforms are playing a special kind of land-grab. As a result, ever more resources are made available closer to ever more customers. These resources are available to anyone, instantly, based on micro-billings for time reserved or actual use. All you need is a creditcard. It’s the ultimate form of self-service backed by automation.

At the same time, companies of all sizes are making their move to the Cloud or even started their existence in the Cloud. The true Cloud-natives. Regardless of how they ended up in the Cloud, as several surveys have made clear, all seem to aim for the greater scalability and availability, instant access to all the fancy new infrastructure and the overall promise of faster time-to-market which the Cloud will offer for their products and its features.

While this is definitely what a Cloud has to offer, it turns out that not every company is willing to give their development teams the freedom (and responsibility) to leverage this to its full potential. Many companies are struggling with this subject. It is about self-service vs. controlled.

I understand their concerns and acknowledge that having specialised teams (in-house or 3rd party) manage the infrastructural side of Cloud solutions for their development teams has advantages. But like many choices we have to make, it is a trade-off. On one end of the spectrum teams can go faster by having instant access to innovation and realising a faster-time-to-market. While, on the other end, teams are being more predictable, more stable maybe, and probably have less failures.

The more supporting cast is involved and the more procedures that require them to approve changes, i.e. the more dependent a development team is on other teams in the organisation, the more you move in the direction where the initial promises of faster-time-to-market and innovation are less likely to be observed.

How far you are willing to go should be a part of your Cloud strategy.

Do you allow teams the freedom to use every Cloud resource using self-service? Or opt for a hybrid approach where they are partially in control, for example the infrastructure is controlled by the infra team but which applications run in some cluster can be managed by the development team using CI/CD pipelines.

Are all teams/departments treated equally or can we distinguish different categories?

When in doubt, give self-service a try. 

Self-service means making autonomous decisions and it has been proven that being autonomous is motivating. Motivated developers create software to the best of their ability. They will learn from their mistakes, and prevent that mistake from happening again because they feel responsible.