I've long been a consumer of cloud service providers. I have historically used Heroku for the majority of the projects I have worked on over the years and have been pleased with their offering. New on the scene is Vercel, also a cloud hosting provider, but with a different focus. Where Heroku found success embracing the move to cloud based servers and building a solid platform on top of it that was easy to use, Vercel has done the same with a focus on the shift to serverless and edge computing.
So which should you choose? As with anything in engineering, it depends.
Heroku is considered a platform as a service provider (PaaS). They offer hosting in a wide variety of languages (node, Clojure, Go, Ruby, Python, the list goes on) as well as easy to setup build pipelines and hosted databases. All of this can be stood up through their CLI or through their UI. The git integration is stable and quick to setup as well.
Their pricing structure also follows the more classical style where you don't pay for use but rather the size of the resources. So you pick from their hardware offerings and off you go. When you need to scale up you just select a larger machine or move to autoscaled clusters and you're all set. You will need to let Heroku know if you want a larger machine or if you want to autoscale and at what point to stop scaling. This can come in handy if you need to control your server costs.
Heroku also has Heroku CI, which is their automated test runner. Heroku CI plus their git integration enables you to have a fully functioning CI / CD pipeline all without any extra tooling. They also allow you to setup review applications, which are deployments tied to a specific branch when a pull request is made. This allows you to have a git flow, trunk based development setup but also have those individual environments when you have larger epics to test.
Another nice feature of Heroku is their teams features. Here you can set up teams that have their own set of permitted users and applications as well as their own billing. For agencies that have lots of clients this is great since clients can pay for their resources directly. Your developers can access all of your teams from a single login. This is logistically convenient if you manage many applications for different clients.
So when to pick Heroku? Heroku gets you up and running fast with more traditional requirements. If you need a long running cloud server, a SQL database, and a test pipeline all setup for you in a few minutes--heroku is for you. They also support a broader range of server languages than Vercel does right now. So if you are not on the node stack and perhaps doing something more esoteric like a Haskell build, you'll likely be able to find a build pack for your application. They also scale incredibly well. I've had their autoscaling dynos handling 10k requests per second without skipping a beat with Heroku's default server configurations. It's great to accommodate that type of scale without needing a specialized DevOps person on board.
Vercel is also a cloud hosting provider but they offer a different type of environment. They focus on serverless infrastructure that can handle infinite scale. The integrate quite tightly with the Next.js framework and can support the three core types of jamstack configuration:
Vercel also has a solid git integration like Heroku that will get you up and running with a git flow workflow in a few clicks.
Their focus on the tight integration with Next.js reminds me a lot of the apple model where software and hardware are tightly integrated. In cases where you want to utilize the full weight of Next.js as a framework, Vercel really shines. For example if you make use of the Next image component, don't bother trying to get this working on Heroku. You'll quickly max out their memory requirements as the compression and conversion of images requires a specialized setup that Vercel just gives to you. They're also setup for optimizing static hosting at the edge so you can have those super snappy static built pages or incremental static builds alongside dynamic pages without any performance consequences.
Vercel does not have an integrated test runner or any type of database offerings. You'll need to seek those elsewhere. This is not typically a problem with serverless database offerings like Fauna, CockroachDB, Amazon Aurora, or Mongo Atlas. The same goes for test runners. Today we have github actions and gitlab that can perform automated testing for us before deploys. If you're used to all the services Heroku provides around CI/CD and database management you'll want to research the best setup for you on Vercel.
That being said, Vercel is built for any scale, any time. True to the serverless promise of tools like AWS Lambda, you will not need to scale up or provision resources. Vercel's model is pay as you go. With Heroku, while you do have autoscaling, you have to enable this and do basic configuration yourself. This means you could find yourself needing to choose larger hardware from time to time. Vercel truly embraces hands off DevOps and is built to handle any amount of scale, on demand, at any time.
Team management is also easy in Vercel. You can create teams just like in Heroku and they can all have their own independent billing. That being said, Vercel does charge for the number of people that need to be able to push to that repository. So if you had a lot of contributors you could find those costs end up higher than if you were with Heroku, which does not have a pay-per-seat model of billing.
For me Vercel is perfect if you are using a modern javascript or typescript based web framework like Next.js, SvelteKit, or Nuxt. It's great if you are unsure of the scale your app will need to handle or are sure that the scale will be quite large and variable. If you are doing any kind of jamstack builds whether they be pure or hybrid Vercel is also an excellent choice.
Despite loving Heroku for many years, we're finding the speed and scaling benefits of Vercel to be winning us over these days. We build a lot of applications with Next.js and the integration of the platform and the framework is very convenient. We also love the new era of serverless computing so Vercel coupled with a serverless database offering like Fauna is a weight lifted off of the teams shoulders.
Both Heroku and Vercel are great cloud hosting providers that free you from the burden of DevOps. While Heroku embraces the classic cloud computing model, Vercel takes things further by truly embracing the serverless and edge computing landscape. In general we've found ourselves moving more and more of our applications to Vercel, but always have Heroku as the tried and true solution that's been stable for years.
as seen on Medium