AWS Elastic Beanstalk is the platform-as-a-service offering provided by Amazon and designed to leverage AWS services such as Amazon Elastic Cloud Compute (Amazon EC2), Amazon Simple Storage Service (Amazon S3).
$0
Users pay for AWS resources (e.g. EC2, S3 buckets, etc.) used to store and run the application.
Heroku Platform
Score 9.2 out of 10
N/A
The Heroku Platform, now from Salesforce, is a platform-as-a-service based on
a managed container system, with integrated data services and ecosystem for deploying modern apps. It takes an app-centric
approach for software delivery, integrated with developer tools and
workflows. It’s three main tool are: Heroku Developer Experience (DX), Heroku
Operational Experience (OpEx), and Heroku Runtime.
Heroku Developer Experience (DX)
Developers deploy directly from tools like…
$25
per month
Pricing
AWS Elastic Beanstalk
Heroku Platform
Editions & Modules
No Charge
$0
Users pay for AWS resources (e.g. EC2, S3 buckets, etc.) used to store and run the application.
Production
$25.00
per month
Advanced
$250.00
per month
Offerings
Pricing Offerings
AWS Elastic Beanstalk
Heroku Platform
Free Trial
No
No
Free/Freemium Version
Yes
No
Premium Consulting/Integration Services
No
No
Entry-level Setup Fee
No setup fee
No setup fee
Additional Details
—
—
More Pricing Information
Community Pulse
AWS Elastic Beanstalk
Heroku Platform
Features
AWS Elastic Beanstalk
Heroku Platform
Platform-as-a-Service
Comparison of Platform-as-a-Service features of Product A and Product B
AWS Elastic Beanstalk is well suited for [the] rapid development of applications that use standard compute platforms based on popular programming languages. So getting a Go, Python, Ruby, or Node.js app going in AWS Elastic Beanstalk will be easy. For non-standard applications, containers provide another option for using AWS Elastic Beanstalk. In either case, AWS Elastic Beanstalk is well suited for applications that are [self-contained]. AWS Elastic Beanstalk is also good for development or test environments that need a built-in deployment method. AWS Elastic Beanstalk is less appropriate for complex applications that rely on multiple AWS services. While deploying and running the base code might be easy to get going, it may be difficult to apply permissions and integrations with the other services.
Heroku is very well-suited to early stage and/or rapidly changing projects. It is great for getting moving quickly or changing direction quickly. In scenarios where there is already scale or well-defined requirements, it may be preferable to set things up directly on AWS or another cloud provider to avoid the additional costs of Heroku as the middleman.
How to more easily integrate with other other AWS services. There are plenty out there, but it's not quite as seamless as I feel like it should be to mix and match products.
Make backing up easier when scaling the server. It took quite a bit of time to make sure we had everything set up in case something went wrong.
When you are first starting to use AWS, the dashboard can be very intimidating. There are countless products all with names that aren't very indicative of what they actually do.
Could be less expensive, although you get what you pay for
Sleeping apps can be an annoyance: Heroku automatically puts your apps in sleep mode and they have to spin back up after periods of inactivity. Much of this can be solved but it requires working around the built-in functionality. I understand why they do it but it's an area that could be improved.
Restrictions to server access means you can't customize as much as you could if you owned the server. But again, this is also a benefit because it's about convention over configuration. So you can't configure as much, but then, you typically don't have to.
As our technology grows, it makes more sense to individually provision each server rather than have it done via beanstalk. There are several reasons to do so, which I cannot explain without further diving into the architecture itself, but I can tell you this. With automation, you also loose the flexibility to morph the system for your specific needs. So if you expect that in future you need more customization to your deployment process, then there is a good chance that you might try to do things individually rather than use an automation like beanstalk.
Heroku is a critical and core part of our infrastructure that is serving our customers well. We are very satisfied with the cost of our solution. While it would be difficult to move away from Heroku, we have no plans to do so. We have had no major issues with it and it is a pleasure to use. Other products on the market might offer comparable functionality, but until we expose a need that Heroku cannot satisfy, we'll stay the course.
The overall usability is good enough, as far as the scaling, interactive UI and logging system is concerned, could do a lot better when it comes to the efficiency, in case of complicated node logics and complicated node architectures. It can have better software compatibility and can try to support collaboration with more softwares
If you have basic backend and Git knowledge, deploying to Heroku is a breeze. It now supports many types of backends, including hybrid backends (ex: nginx + application server) through its build pack system. The dashboard is easy to use, and the CLI tools are well designed. Accessing the add-ons is also easy. It uses an SSO-type system so you don't have to re-sign in to view the add-on dashboards.
Heroku availability correlates pretty strongly to AWS US EAST availability. We had a couple of times where there was a Heroku-specific issue but not for the last 7-8 months.
As I described earlier it has been really cost effective and really easy for fellow developers who don't want to waste weeks and weeks into learning and manually deploying stuff which basically takes month to create and go live with the Minimal viable product (MVP). With AWS Beanstalk within a week a developer can go live with the Minimal viable product easily.
I've used it for many years without facing any major problem. It's not hard at all to get used to it, it's documentation is outstanding and simple. We are close to 2020 and I don't think most of the existing companies or startups should still face old problems such as wasting time deploying code and calculate computing resources.
- Do as many experiments as you can before you commit on using beanstalk or other AWS features. - Keep future state in mind. Think through what comes next, and if that is technically possible to do so. - Always factor in cost in terms of scaling. - We learned a valuable lesson when we wanted to go multi-region, because then we realized many things needs to change in code. So if you plan on using this a lot, factor multiple regions.
Be ready to pay a bit more than expected in the beginning if you're migrating from a big server. The application is probably not ready for the change and you have to keep improving it with time.
It's also important to consider that you can't save anything to the disc as it will be lost when your application restarts, so you have to think about using something like S3.
There are many services like AWS Elastic beanstalk, but there are none with the maturity in the platform or the cost-effectiveness of AWS Elastic Beanstalk. Also, AWS Elastic Beanstalk is the oldest among them, so there are more people with AWS experience than the other platforms. The only thing is their documentation and UX are a bit old, which doesn't stop it from performing greatly, but yes, if you are looking for better UX, then you can check out other options.
Heroku has advantages over Docker, Google App Engine and AWS products, but it depends largely on your use case. If you are already in AWS, it's probably in your best interest to stay with AWS products. However, other "Cloud Formation/Orchestration" products like Docker are typically lacking the ease-of-use factor that allows you to get up and running with Heroku quickly.
Elastic Beanstalk removes countless hours from development team responsibility, freeing up those resources to instead focus on building the products that our customers want to use.
As a business that is already embedded into using EC2 instances, it's essentially free to leverage the work that AWS performs on configuring the Elastic Beanstalk stacks.
With Elastic Beanstalk, while there is still a responsibility to ensure that applications can work with updated underlying dependencies, it's much easier when AWS handled the heavy lifting of updating the stacks.