Thoughts of virtualization – Part II

I really like going to events at the GarageGeeks (www.garagegeeks.org) – apart from meeting with some friends, having a good laugh and enjoying the casual beer, the technical talks and the general subjects that are being attended at a gathering are always interesting.

This time, the Geeks had decided to focus on Cloud Computing, trying to introduce the somewhat highly evolving field of the IT/Computing industry to the visitors of Garage. Now, I have to admit that during the past few weeks I’ve been studying the various aspects of utilizing Amazon EC2 services, and I’ve come to the somewhat problematic conclusion: “Cloud computing is a wonderful solution, as long as you have clear and concise control over your computing cloud!”

The main problem with traditional cloud computing, as offered by Amazon and others, is that the physical boundaries of your system are somewhat unknown – not to you and in some cases, not to your provider either. Let us imagine a Tier based architecture platform, implemented utilizing Amazon EC2 technologies – our web front-end may be located in the US, the application server in the UK and the Database in Zimbabwe for all that matters – in accordance to EC2 and traditional cloud computing, that is fairly normal.While EC2 and some other providers had introduced the idea of a Zone, making sure that your virtual servers are all located in the same physical data center, other solutions are yet to follow.

The above design introduces an interesting “Critical Path” management problem, tied deep into the Tier based architecture design pattern. Companies such as GigaSpaces and others had made it their business to cash in on the problem, by providing a distributed, memory based, middle-ware – literally sweeping the “Critical Path” problem under the rug. However, as the platform will evolve, “Critical Path” issues have a tendency to re-appear, usually, a lot more serious than the original problem – due to new constraints and new operational paradigms within the operational construct of the cloud platform.

So, question be asked: “Is cloud computing good? Can you really build a full service based upon cloud computing services?” – The answer isn’t a straight forward yes or no. For example, while I have a couple of servers on EC2, serving me as development servers mainly, I’ve built my own little cloud environment on my own servers – used for production usage. I’ve used a mixture of OpenVZ servers tied together with my own provisional interface to create a seamless cloud, enabling me to replicate servers, control their operational structures at east and most important – expand my cloud rapidly by introducing new servers to my cloud.

Is my paradigm good for all purposes? I can’t really say – it works for me, it may not work for you. The thing is this, don’t expect cloud computing to come in and solve all your problems, you may run into new ones you are completely unfamiliar with.

3 comments

  1. Hi Nir,
    As always with choices, good or bad is a matter of alternatives.

    The basic problem which you call it the critical path is also known as collocation.
    The concern you raise is valid, however, it is directly linked to the infrastructure software you select.
    The fact that you have to divide presentation, business logic processing, data access and data is a design choice.

    Some applications are fine with geographical separation – for example, many web 2.0 mesh-up applications which consume remote web services have no problem with this concern.

    At the other extreme, high-performance/low-latency systems require that all information is processed on the same node, and even within the same process.

    Product like GigaSpaces XAP enables you make those decisions at deployment time.
    Deployment becomes a matter of SLA and cost.

    Cheers,
    Guy Nirpaz,
    GigaSpaces Technologies

  2. Hi Guy,

    Correction, the critical path is surely not co-location, as if co-location was a problem that the solution path for that problem is known – as indicated by the various “zone” type solutions available.

    The “Critical Path” is based upon a thought pattern that needs to be modified and cultivated with the IT manager. After the GarageGeeks event, I’ve talked to a few of my friends, who are well versed in EC2 and Cloud Computing. Most of them indicated that they’re not really aware of where the physical aspects of the cloud hardware are located, thus, asking questions like: “What is the latency of storage response from the database to my storage?” or “As the instance of my server may shift from one data center to another, what affect does that have on my application?” – when dealing with Web 2.0 mesh-ups, the problem is more or less redundant, by the utilization of CDNs and distributed information stores, but when dealing with Real-Time applications, such as VoIP and IVR, the physical aspects of the installation become one of the key factor in the establishment of a proper platform.

    By no means am I suggesting that any solution for this problem is bad, be it GigaSpaces or any other solution – however, the requirements of the platform must be weighed against the cost factor – not only by TCO/ROI values – but also by operational values as well. Most managers and finance people tend to completely disregard these, thus, forcing IT managers to take wrongful decision. I see the role of GigaSpaces (or the like), not only as the providers of a solution enabling this, but also to assist the prospective customer in the analysis of their requirements and have a clear understanding if cloud computing is truly the solution for them.

    Nir

  3. Hi Nir,

    If you suggest that the critical path is an execution of a single business transaction, which may be an order fulfillment, a SIP call, a move in a multi-user game, I would still argue that what is most important is to make sure that the operation of the service on a specific data-set should be done within a single unit, at best within a single process.
    This is the principal of partitioning in order to scale and collocating related activities and information in order to achieve performance and latency.
    In my view, it is the responsibility of the PaaS to provide this SLA.

    Guy

Leave a Reply