Cloud traps: How to avoid them

Thoran Rodrigues talks about the traps that can sabotage an otherwise successful move to the cloud.

Moving to the cloud is still a big challenge for many companies. For all its potential benefits - cost optimizations, greater reliability, improved scalability, easier access to computing resources - there are equally valid concerns that keep companies from making this move: security issues still plague several cloud solutions, the track record of vendors in achieving the promised SLAs has been less than stellar, and others. Deciding to make the move is only half the battle, though.

Even if they manage to properly address all the concerns related to the cloud, or to find use cases where these concerns aren't as important, companies may still be hard pressed to fully realize the benefits of cloud computing. This is a direct result of two cognitive traps: the trap of ownership and the trap of past successes.

The ownership trap

People are hardwired to value the things they own, and to have a hard time letting go of things once they have developed a sense of ownership (even if it isn't real). In the cloud, this translates to users developing a sense of ownership over their cloud servers, turning resources which should have been hired on a pay-as-you-go basis into "dedicated virtual servers" for which people are paying hundreds of dollars every month. In the end, this developed sense of ownership creates a reluctance to shut down existing servers, leading to the elimination of any kind of cost optimizations that could be derived from a cloud model.

This is what I call the ownership trap. Instead of using the utility computing model that the cloud enables, companies end up having several underused virtual servers on-line, replicating the inefficiencies of a conventional data center at a much higher cost. And several vendors encourage this, offering "special" monthly prices that guarantee the full availability of the requested resource. If the monthly price is 50% of what you would pay to keep that server online the whole month on a pay-as-you-go model, but you only actually use that server for 10% of the month, you are still overpaying by a large margin.

The only way to beat this trap is by learning to let go. It's not that companies shouldn't own any servers, but rather that they can skip purchasing servers to handle peak demand, and rely instead on temporary servers that can be quickly brought online and then later shut down. The same goes for test servers: for most companies, there is no real need to keep a test server online 24x7. It can be spun up, used, and then have an image saved and shut down. This is what leads to cost optimizations.

The trap of past successes

One of the top methods people use to solve problems is by similarity: they'll look to the past to find problems that are similar to the ones they are facing, and apply the same solutions used before. This usually works, but in the case of the cloud, it can lead to big trouble. As developers got used to the client-server computing model, system architectures based on centralization (of data, of access control, and of other elements) became widespread, mainly because it worked.

A cloud environment, however, is closer to a distributed system than a centralized one, and therefore solutions based on centralization don't perform very well. A centralized data store, for instance, can create a single point of failure for applications, reducing the reliability. At the same time, it can create a performance bottleneck that restricts the possibility of horizontal scalability. As scalability and reliability are two of the promises of cloud-based systems, employing centralized solutions can quickly destroy these benefits.

To escape this trap, developers in particular need to recognize that cloud systems need to be designed and developed differently from conventional ones. Once we understand that the shift in computing paradigms leads to the need for new architectures and development techniques, it becomes plain that what worked before may well not work again.

Finding the right mentality

Escaping these traps is no easy feat. I've been working with cloud-based systems for over two years now, and every now and then I still catch myself falling into them. It requires constant attention and a sort of "reeducation" of IT professionals from all areas. At the same time, it is essential to achieving the full potential of cloud solutions.

I don't mean that the other concerns about the cloud aren't important. They are and, in most cases, they will actually determine if a move to the cloud is feasible or not. The right mindset, however, is necessary to keep companies from perceiving their cloud efforts as major failures.