Which cloud solution is right for me?
Tl;dr: Large scale public clouds offer more services and features than you could possibly imagine, but you need to know what you’re doing to make the most of them.
Assume fragile: the hardware you’re hosted on is not in a redundant state and considered disposable. If something fails it will be replaced, not restored. This could result in partial or complete loss of data.
Assume robust: the hardware you’re hosted on is considered valuable and generally in an n+1 (or greater) environment. If a component fails there will be a hot spare that will instantly take on the role, allowing for no/minimal interruption.
Back in the day, servers were only available in the form of big physical boxes. At the time, if you wanted peace of mind that your site/application wouldn’t go down, you’d make sure each component that could go wrong had some form of redundancy or error checking included. Secondary power supplies, RAID arrays, n+n servers, ECC memory, etc. The more resilience you wanted, the more you paid.
Having this inbuilt resilience meant you could assume the hosting environment was (pretty much) stable. Let’s call it assume robust. Yes there could be an OS failure (Windows, I’m looking at you), but you could easily restore a backup.
Which is great, and relatively simple in terms of your application – it could be designed without resilience considerations.
Also worth noting, this peace of mind usually came at a great cost if you were going to have a server with all the resilience bells and whistles I listed above. In fact, if brand new, cutting-edge technology was required this could easily amount to a small fortune. Surely there’s another approach to achieving the same resiliency goal.
And there is. There came a time in recent years where thought turned to the application/site running on this robust – and expensive – infrastructure; what if a robust environment wasn’t assumed for software to run on? What if readily available and easily replaceable commodity hardware was used and it was assumed fragile with the potential to fail?
Using an assume fragile mentality allows for massive cost savings on infrastructure. But in the world of karma, there needs to be balance. This means that your application or website needs to be able to handle the underlying hardware not being 100% available. So to manage that, every eventuality needs to be taken into consideration. What if one of the underlying hypervisors dies? What if a hard disk starts throwing back error messages? What if part of the network drops packets?
Hiring staff that are skilled enough to build a fault-tolerant and dynamically distributed environment can quite easily cost as much as the amount saved by moving to that fragile hosting platform in the first place. This is where Steamhaus comes into play, as the whole of us is greater than the sum of our parts. But more about that later.
The important thing to keep in mind that can sometimes be overlooked is this: just because you’re using the cloud, doesn’t mean your service(s) and data are safe/resilient. Nor does it mean your money is being spent in the most effective/efficient manner.
Public cloud environments don’t build in the same resilience that (some of) the smaller services available that use the likes of VMWare. Their principal is fundamentally different. That’s why they can offer such good pricing. If a node fails time isn’t wasted trying to fix it, rather it’s replaced straight away. Hardware is expendable.
The problem is, if the only instance of your service was on that node, then that’s it. Gone. If you had backups (I’m so glad you did) then there’s the time-critical task of restoring your data and bringing your site/application back online. Writing your services to assume the infrastructure is fragile can amount to a lot of time and money if done in house.
In this situation large-scale public cloud isn’t the best suited solution, something more thought out and (generally) offered by a smaller company would be considered robust in comparison. Steamhaus has created SteamCloud for this very reason.
We know there are sites and applications that want to assume a robust platform but don’t need to spend a fortune on physical hardware. We’ve used our experience in the hosting world to build SteamCloud in the most resilient and fault-tolerant form imaginable. Everybody has different needs and requirements; some environments function better if you assume robust, others flourish when you assume fragile.
Using a cloud consultancy like Steamhaus removes the stress and dramatically reduces the cost of hiring a cloud architect of your own. More importantly, a company like Steamhaus has multiple certified architects/engineers, so you can assume robust when it comes to techies ;). This means collectively, there would be more technical skill than hiring a single member of staff (who would also cost more). If you wanted to extend your IT department would you rather hire a single member of staff or pay less and have an entire company with over 50 years’ experience in the hosting world?