In its heyday, Heroku was seen as an innovative cloud platform that made deployments and infrastructure management much more convenient than alternatives at the time. Ultimately Heroku lost momentum and, as cloud services rapidly evolved in the past decade, the platform didn't manage to provide enough flexibility to support users' needs.
Fans of Heroku will recognize much of the same simplicity in the Encore workflow. However, there are several key differences between Encore and Heroku, which make Encore a long term suitable technology choice.
Encore is designed to be flexible in letting you build your application using infrastructure, and cloud services, not yet natively supported in the Encore framework. This means you can use any type cloud infrastructure, as you normally would, even if it's not a built-in building block. The only drawback is that your developer experience will be more conventional, and you will need to manually provision the "unsupported" infrastructure.
|Infrastructure approach?||Infrastructure from Code||Platform as a Service|
|Charges for hosting?||No||Yes|
|Deploy to all major cloud providers?||Yes||No|
|Deploy to your own cloud account?||Yes||No|
|Cloud-agnostic applications?||Yes, by default||Never|
|Built-in Preview Environments?||Yes||Yes|
|Automatic Distributed Tracing?||Yes||No|
|Pricing?||$99 per developer||Variable (complex)|
Encore's infrastructure from code approach means there are no configuration files to maintain, nor any refactoring to do when changing your application's underlying infrastructure. Your application code is the source of truth for the logical infrastructure requirements!
In practise, you use the Encore framework's cloud-agnostic APIs to declare your infrastructure needs as part of your application code, and the Encore Platform automatically provisions the necessary infrastructure in all types of environments and across all major cloud providers. (This means your application is cloud-agnostic by default.)