"Cloud" is such an indefinite term. However, I think this is a very good question.
Basically, IaaS cloud hosting does not magically make your application scale. It is truly a virtual private server with very short contract / cancellation periods.
For scalability, the magic is not so much in hosting, but in the horizontal scalability of the application code itself. This is related to all distributed computing tasks. For example, adding more application servers is not always easy: you have to be sure that you are not storing any user state in the server application (but rather, in the database, static can be evil), caching can be problematic, since local caches can make things worse if you use a roundabout strategy, etc.
- What is your experience moving the application to the cloud and which one did you choose and why?
- What would you recommend, what should I think about when developing / developing a solution to make the transition as painless as possible.
You do not need to do anything else, just to host on EC2 or Azure - basically. But of course, itโs not so easy when things grow.
For example, EC2 instance storage is quite limited. However, additional storage on EBS does not provide comparable performance characteristics and may be slightly more lagged than a disk. The point here is that EBS makes a magical scale, and probably more PaaS than IaaS; but it is not a simple hard drive, and therefore it does not behave like a hard drive. I do not know about Azure block storage. In general, expect additional levels of abstraction to create their own problems no matter what they do.
- Based on your experience, is it better to go to the cloud (financially wise) or is it better to buy your own servers and load balance application yourself and, possibly, save money in the long run?
Typical cloud providers are more expensive than regular โthird-party VPS providers,โ but they are, in my experience, also much more reliable and professional. EC2 has a free tier (but it's pretty small), Azure gives you a small copy for free for 3 months.
Performing the correct calculation is quite difficult; for example, if you need to close the service for any reason, itโs nice to be able to cancel now, and not pay another year โ you may want to include this risk in your calculations. On the other hand, both EC2 and Azure will be significantly cheaper if you sign up for 6 or 12 months, instead of paying by the hour.
You might want to check out the free Azure plan, because it's nice to start messing around at no cost. The big advantage of cloud providers is that you can scale vertically very easily: buying a 16-core 64-gigabyte operating server is very expensive, but if there is so much traffic on your site, updating your plan will not be such a big problem.