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.
CloudFoundry
Score 10.0 out of 10
N/A
CloudFoundry is a free, open source cloud computing platform supported by the non-profit CloudFoundry. It is not tied to any particular cloud service, but can be self-hosted or run on any cloud service preferred.
N/A
Pricing
AWS Elastic Beanstalk
CloudFoundry
Editions & Modules
No Charge
$0
Users pay for AWS resources (e.g. EC2, S3 buckets, etc.) used to store and run the application.
No answers on this topic
Offerings
Pricing Offerings
AWS Elastic Beanstalk
CloudFoundry
Free Trial
No
No
Free/Freemium Version
Yes
Yes
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
CloudFoundry
Features
AWS Elastic Beanstalk
CloudFoundry
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.
Support for Orgs and Spaces that allow for managing users and deployables within a large organization.
Easy deployment, deploying code is as simple as executing single line from CLI, thanks to build-packs.
Solid and rich CLI, that allows for various operations on the instance.
Isolated Virtual Machines called Droplets, that provide clean run time environment for the code. This used to be a problem with Weblogic and other application servers, where multiple applications are run on the same cluster and they share resources.
SSH capability for the droplet (isolated VM's are called droplets), that allows for real time viewing of the App code while the application is running.
Support for multiple languages, thanks to build-packs.
Support for horizontal scaling, scaling an instance horizontally is a breeze.
Support for configuring environment variable using the service bindings.
Supports memory and disk space limit allocation for individual applications.
Supports API's as well as workers (processes without endpoints)
Supports blue-green deployment with minimal down time
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.
Does not support stateful containers and that would be a nice to have.
Supports showing logs, but does not persist the logs anywhere. This makes relying on Cloud Foundry's logs very unreliable. The logs have to be persisted using other third party tools like Elk and Kibana.
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.
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
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.
- 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.
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.
While Docker shines in providing support for volumes and stateful instances, Cloud foundry shines in providing support for deploying stateless services. Heroku shines in integrating with Git and using commits to git as hooks to trigger deployments right from the command line. But it does not provide on-premise solution that Cloud foundry provides.
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.
Positive impact, since it simplifies the deployment time by a huge margin. Without cloud foundry, deploying a code needs coordination with infrastructure teams, while with cloud foundry, its a simple one line command. This reduces the deployment time from at least few hours to few minutes. Faster deployments promote faster dev cycle iterations.
Code maintenance such as upgrading a Node or Java version is as simple as updating the build-pack. Without cloud foundry, using web logic, the specific version only supports a specific version of Java. So updating the version involves upgrading the version of web logic that needs to involve few teams. So without cloud foundry, it takes at least few days, with cloud foundry, its a matter of few mins.
Overall, happier Developers and thats harder to quantify.