I spent some time with the folks at rackspace yesterday, talking about the impact of cloud on business and business applications. If you aren’t familiar with cloud computing, or want a bit of a refresher, this deck from one of the business sessions gives a good overview:
The full set of presentations is on the unlocked blog. Behind all the acronyms (IaaS, PaaS, SaaS, …) the cloud represents a new way of delivering applications that is ultimately better suited to today’s business environment and the next generation of web-based applications. Hybrid solutions let us get the benefits of scale available in the cloud, while preserving the security that we need for ourselves and our customers.
The 5 Pillars of Cloudiness
There was a particular set of concepts in the fundamentals of cloud, that caused me to think. Rackspace’s Wayne Walls describes them as these:
- Multiple workstreams
- Get things done faster
- Avoid deadlock (two things competing for one resource)
- Decouple applications
- Small units of work are more manageable
- Partition tolerance
- Scale out, not up
- Eliminate single point of failures
- “pets versus livestock” – it’s a server, not your friend!
- Innovation velocity
- Development practices
- Quality control
- Establish trust
- Security domains
In the technical domain, the advantages of each of these is fairly clear. Building applications that will run on a cloud infrastructure inherently forces you to build applications that are inherently scalable and robust. That’s all good, but let’s put the technology aside for a moment: Can these same ideas be applied to the design of the business itself, to build a company that is scalable and robust?
Cloud Concepts for Better Business
Working on Milestone Planner means that we get asked to help with all sorts of interesting business planning challenges. The most common reasons that we see people struggling fall into one of these buckets:
- Lack of a strategic clarity – unclear goals/purpose.
- Lack of resource – resource contention.
- Unresolvable dependencies – dead-lock.
- Inability to adapt to adapt with rapidity.
- Poor communication – understanding, trust and expectations.
So let’s apply cloud pillars to those project problems:
Parallel and Modular
The working default, when building a project plan, is to build a long serial chain of events. Sometimes there are good reasons for that, but more often, many of those events can happen independently, in parallel. Designing activities to be in parallel, while also less closely interlinked, avoids dead-locks and deadline bow-waves down the line. Break things down into smaller sets of deliverables as soon as there is enough clarity to do so (but not before!). Define and describe the dependencies (in programming terms, the interfaces). It is not simple to do, but it is a highly effective way to get a project on track, and to make it robust enough to stay on track.
Horizontal versus vertical scaling is very poorly understood. In technical terms, vertical scaling is going out and buying a bigger server, with more CPU and memory, when the current server is overloaded, and ditching the old one. It is expensive (server price-to-power ratios are fairly exponential – you pay much more to get a little more). Vertical scaling means there is still a single point of failure – the one server. Horizontal scaling means going out and buying more small servers, and keeping the old one. It requires a different design to the software, since it will need the ability to run in parallel (across many servers).
Let me describe it another way. If you needed a to lift a big weight that kept growing, you might hire a weight lifter (although I’m not sure how well the job sites would serve you!). As the weight got bigger, you might have to hire a better weight lifter, may be a regional champion. Then after that, maybe the national champion, and after that the olympic champion. You can see how that is going to get both difficult and expensive, but I have seen many businesses head down that path! The alternative solution would be to put a longer bar on the weight, and have a growing team of people lift the weight. It requires a different design (that long bar between the weights), but it means that many people can contribute. Can you redesign your business structure and processes to allow horizontal rather than vertical scaling? If you can, the advantages are obvious.
This is a whole post on its own, so for now I’m just going to assert that the ideas around agile in the technical world have very real applications in the business world, not least because they came from the world of manufacturing in the first place! Businesses need to be able to make decisions quickly, then test them and learn from the results.
I don’t just mean information security here, I mean the level of trust enjoyed by the project and the project team. Contrary to popular misconceptions, security is not about “secrecy” or “restricting access” – it is something quite different. Good security is about creating domains of trust, and defining what information flows between them, and under what conditions. Security is about ensuring predictable behaviours, which lead to trust. Clear expectations and predictable behaviours are the foundation of security in the technical world, and in business.
The Cloud is not Vague – it is Specific
In the conversations I have about cloud, people always give me a sense that they think it is something very vague. While there are still some debates about the definite of cloud, the fact is that it is a very specific set of principles. The fact that those principles are portable to other domains, gives me a high degree of confidence that they are sound and valuable. New ways of doing business need new ways of running the business. If you want to adapt to the way that the world is changing, you need to adapt the way that you do things.