Experience the benefits of cost, speed, efficiency and competitive positioning with cloud computing by adopting a systematic and measure approach.

To say that cloud computing has revolutionized the industry, is an understatement. From changing revenue models and overhauling operations to fueling innovation, the cloud has driven massive changes. Isn’t it time for some shakeups at the heart of it all – the way we build on the cloud?

In traditional data-center-based applications, there are usually a small, fixed number of environments into which the application is deployed (production, staging, test, development, etc.). The availability and nature of these environments is strongly constrained by the availability of hardware and infrastructural systems for them to run on. We would like all our environments to be as similar to production as possible, but physical hardware and traditional infrastructural systems like databases are expensive and slow to provision. In practice, this means that there is a sliding scale of realism in the environments as you go from development to production. Development environments tend to be smaller than production (load-balanced applications may have only one server, when there are a dozen in production), they often use alternatives for some components (different database servers) and they frequently share components (fileservers, databases, monitoring systems) when these are dedicated in production. Similarly for test and even staging environments; though they may be more realistic the closer they are to production. This variation between environments causes several problems. Most obviously, some bugs are found further down the pipeline, rather than when developers are working on the code. This increases the cost of fixing the bugs. Another problem is that supporting the variation in environments increases the complexity of the code. And, more subtly, we end up making decisions which cause our architectures not to be optimized for the real deployment environment, because developers are divorced from the reality of running the system in that environment.

The inevitable restriction on the number of environments also causes problems. Availability of environments can cause delays or influence us to miss out on the testing that we would like to do. Maintenance of the environments, like cleaning up after stress tests, also takes time.

We have found that building a system that runs entirely on the cloud has enabled us to reconsider our use of environments and ensure that we don’t fall foul of any of these problems.

Immutable servers (a concept made possible by cloud computing) allow us to be absolutely certain of the state of a provisioned server (more reliably so than declarative configuration management tools). It’s impractical to specify every single detail of a system, so the end state that it reaches is inevitably dependent on what has gone before. For instance, consider how tough it is to remove a previously installed package. If you simply start again from scratch, you can be certain that there’s nothing installed, but what you need. Immutable servers also simplify our system. The deployment infrastructure is simplified because it doesn’t have to support different cases for upgrades and new environments (similar to ad-hoc environments). Testing is simpler because we don’t need different tests for upgrading servers and creating them from scratch. And it helps us fix deployment problems by rolling-forward because any problematic servers will be destroyed. The decisions we make in order to support immutable servers in our system also have a simplifying and clarifying effect on the architecture. They often help (or force) us into doing the right thing and have unanticipated benefits later on.


  • Accelerated deployment of new applications
  • Reduced capital requirements for up-front investments in IT
  • Flexibility to meet sudden changes in demand and peaks and troughs
  • Ability to efficiently deploy greenfield business processes
Contact Us

We'll get back to you, asap.

Start typing and press Enter to search

Skip to toolbar