Your Cloud Platform — IaaS, PaaS and the providers
Let us see how do we choose our platform ?
Continuing from my earlier article, cloud and wine… We discussed the IaaS and PaaS.
Let us see how do we choose our platform ? Should I go the IaaS or PaaS way ?
You need to give Amazon Web Services (AWS), it credit for pioneering the space, and by most estimates they are ahead of all the other players by a huge margin. This doesn’t mean there is no other alternative in the town. Google Cloud platform, Microsoft’s Windows Azure and other prominent alternatives.
Between IaaS and PaaS, the tradeoff is flexibility vs ease of use. IaaS gives you the hardware (on demand), you use it the way you want — Very flexible, but you need to handle a lot of stuff on your own. PaaS gives you a software layer (hardware is mostly abstracted) and you get going — you need to use it the way the vendor is offering the platform — less flexibility, but if your need fits what they offer — you found the right place.
AWS started as an IaaS provider with S3 (storage) and EC2 (compute). Google Cloud started off as PaaS with GAE (Google App Engine). Heroku came up with a very easy to use PaaS platform for building web applications — might not support all needs, but many applications just fit well! To answer these challenges from Google and Heroku, AWS made a service called Elastic Beanstalk — EC2, Database, load balancer etc all wrapped together nicely as a service. They now continue to invest and innovate in this “easy to use” segment. Google on the other hand made GCE (Google Computer Engine) on the IaaS side to compete with AWS. (I don’t yet have much insight on Microsoft Azure yet — will write later on this)
AWS has undoubtedly the most feature rich platform — beginner advantage and they keep investing in this with great focus. They address the ease of use problem with newer “packaged” stack services like Beanstalk and Opsworks.
You need to choose the one which suits you the best. If you choose one provider and then find future unfulfilled needs, the story is not all over — Parts of your cloud can be run on other providers, if the need be. One great advantage Google cloud has is the ability to handle spike loads. On AWS, typically it takes few minutes to add another instance to the compute cluster.
If you are choosing a PaaS provider, you need to also look into whether they support your programming language and framework stack (as discussed here).
My personal choice is AWS — to me they give best of both worlds. I would start building with packaged services like Elastic Beanstalk and later move to more bare bones if the need be. Very likely you will not have to go to bare-bones (EC2) for quite a long time. Say, if I have a need to run a video codec built in C++ on AWS, I get that flexibility too — such things typically wont be possible with many “PaaS-only” providers — At the same time, also keep in mind that 70% of the applications wont have such special needs !
Also @ http://notingon.com/2014/02/07/your-cloud-platform-iaas-paas-and-the-providers/