As the complexity of Cloud Computing is reaching clouds, we, as developers, are posed with problems that never existed before; deployment being one of them. Of course, one could always go for Virtual Private Servers (VPS) or (opting for more modern means) cloud services such as AWS, Azure or GCP. Sure, these providers have fulfilled their promise of easing the process of deployment to an extent, but the ever evolving nature of cloud has rendered it still hard to navigate through.
These platforms, that we could call Big Cloud Providers have gotten complex to the point it must be proven that we are worthy of their services (of course, by taking some exams; I just made it over-dramatic..) Even the simplest of them, GCP is hard to know around.
So, bye-bye BCPs…
Now, coming back to our good old VPS Providers (such as Digital Ocean, Linode, Vult…), they still demand the knowledge of additional skills like linux and sysadmin, so let’s outright label them as not-simple.
With the Big Cloud Providers and VPS Providers out of spectrum, I’ve run down three providers which I deem good enough for these times’ use:
- Netlify and/or Vercel (for hosting JAM stack or serverless apps)
- Hostman (for both front- and back-end apps)
- Heroku (for back-end apps)
Netlify and/or Vercel
Also, it is one of the easiest solutions for using serverless.
That is not even the tip of the iceberg, however. Netlify uses serverless functions, powered by AWS Lambda, for backend usage matters.
Authentication of users can easily be enabled with Netlify Identity.
And don’t get me started about CI tools and CDN...oh, sure, I must get started! Well, it acts as an abstraction layer to host, so easy that a simple drag-and-drop is all you require. Github (and other git repositories) Integration is a given feature, so all it takes for the entire application to be built and hosted in the CDN is a
- The Vendor Lock, yes. It is not a thing for most of the services (in fact, all of the ones except their extra services) in Netlify, so migrating from it should not be much of a problem. Also, their services like git gateway, identity and CMS, all of them are open source, so you could rehost them if required.
- It’s one of the easiest solutions for using serverless functions. You just have to write the code and put it in a folder and netlify will take care of the rest. And even for non serverless needs (Frontend Hosting, etc.), you only have to set it up for around 5 minutes and that’s it. You don’t have to worry about anything else.
- It is, as mentioned earlier, one of the best options there is for JAMstack.
- Serverless, serverless and serverless -- Netlify doesn’t support anything other than serverless functions. Although it might be a really convenient way for abstracting backend infrastructures, it has its limitations (long cold boot time, etc.).
- Even if you plan to use serverless, there is no inbuilt support for persistent data. Meaning, you still need to use external services (AWS S3, Cloudinary, etc.) if your website has user uploaded data/ database.
- You cannot deploy real time applications as they need an event messaging system, which is not possible on Netlify.
- The pricing could get a bit awry. Simply put, it’s terrible. Given that it has a very generous free plan, once you get to the premium block, the cheapest plan for $45 all the way up-to $290 doesn’t quite add up...there are other cheaper alternatives.
Hostman uses containerized systems that run on top of AWS, GCP, Azure… but still implements them differently, in quite an easy manner. I mean, not having to write ConfigFiles( “Procfiles” as in heroku), sure is easy, isn’t it?
For most developers working with Python, Go, Node.JS, Scala or Clojure, Hostman is the ideal choice for hosting and deployment.
For deployment infrastructure, it uses a container that is running on top of AWS and DigitalOcean, which has a wide flexibility, i.e. this provider here supports horizontal as well as vertical scaling, which is a point one must not miss while talking about Hostman. Also, like Netlify, ‘push-to-deploy’ is an option here as well, so once you push the code to Github, it gets automatically updated.
Additionally, it has an automated alert system where you get emails (or through your preferred platform) in case of any failure in the CI/CD. Also, in such cases, the backup version of the application is used, so one up for you here, Hostman!
Not that it has no flaws, it has plenty, let’s break it down below:
- It supports 7 locations, be it in India, Europe or America. This helps reduce latency.
- It has a very fair pricing model -- cheaper than heroku, for comparison. Also, to add to the list, it gives a free SSL certificate to all users and websites (YAY!!!). Plus, it has CDN and is free for Front-end apps.
- I talked about configuration above as well: the 22 languages and frameworks require no additional configuration (not even the config-files.)
- It has a built in CI/CD tool that is very easy to set up; once set up, you can just sit behind and relax.
- Unlike Heroku, it has permanent storage, so no need to join additional forces with AWS or other storage services.
- You can run SSH into the container directly from the website.
- No CLI support. A big hole they busted, but it is what it is.
- Also, SQL supported readily are MySQL, MongoDB and PostgreSQL. (Limited, aren’t they?)
- Unlike heroku it has no support for 3rd party extensions.
Heroku is one of the pioneers of PAAS (platform-as-a-service) Solution.
It mostly comes in highlight due to its wide variety of useful Extensions (which include the ones for managing a database to sending emails or running cron jobs). Also,with built-in CI tools and the fact that almost all of the management tasks can be abstracted, you get a pat on the back, Heroku!!!
- Heroku has ready to use environments that allow developers to deploy code very fast.
- Heroku doesn't need infrastructure maintenance; meaning, you don’t need to manage the system. Also, it has easy-to-use built-in tools for monitoring and management.
- It has simple horizontal and vertical scaling.
- It has a built in continuous integration tool (Heroku CI).
- It is very easy to use: you could create a server in just some seconds with the Heroku Command Line.
- In need of more complex features, it allows rather easy integration with other AWS products.
- It also supports third party integrations through extensions.
- Although heroku offers a generous free tier, once you exceed the free tier, it gets expensive really fast. The free tier also has limitations where the app sleeps after 30 minutes of inactivity and the price can range for $35 per month to $500 per month without even counting the extra expenses for the 1st and 3rd party extension integrations.
- Although heroku is awesome for hosting backend applications. It is not suitable for hosting frontend applications. Especially in contrast to other services that offer CDNs.
- Although great for small (or medium) applications, it is not so ideal for comparatively larger applications.
- It has very limited types of instances.
- It has high inbound and outbound latency and has low network performance.
- Although heroku offers 3rd party integrations with extensions, The extensions are limited. You can’t do much and doing it so manually is a larger hassle than it should be.
Some final words
There is no one best thing out there, only “better at this than that”. So, with the things I have mentioned in the premise, it is in best interest to seek balance between your requirements and choose accordingly.
If your thing is backend only development, Heroku is the way to go; if mostly Netlify is a better choice. If you want to combine both front- and back-end applications, clean and easy UI, use Hostman.