Here we will take a look at two platforms from Amazon Web Services (AWS); Elastic Beanstalk and Cloudformation.
Regularly used in conjunction with one another for best results, we will discuss what these platforms are, the benefits of using them and why they are popular with developers and organisations.
Overview of AWS Elastic Beanstalk
A product of Amazon Web Services (AWS) Elastic Beanstalk is an open-architecture cloud deployment and provisioning platform designed to streamline the set up of applications on AWS.
Known for its use of ease, Elastic Beanstalk takes care of managing the App Stack allowing users to concentrate on other tasks such as writing code etc.
Who uses Elastic Beanstalk?
Elastic Beanstalk is primarily suited for use by Developers. Organisations using AWS Elastic Beanstalk include Prezi, BMW, Samsung, Crowdchat and more.
AWS Elastic Beanstalk Pros ✓
Quick & Easy Application Deployment
Elastic Beanstalk users can upload and deploy their applications in AWS within a matter of minutes and with minimal effort required through the AWS Management Console or an Integrated Development Environment. Users can simply upload code and let Elastic Beanstalk handle the deployment from there.
Customisation and Choice
Users are offered a variety of choices when it comes to Elastic Beanstalk and how they choose to run their applications, These include;
- Deployment options: Including; AWS Management Console, Elastic Beanstalk Command Line Interface, Visual Studio, and Eclipse.
- Deployment Policies: Multiple deployment policies can be chosen at once that assist the speed and security of deploying applications. These include; rolling, rolling with an additional batch, immutable, and blue/green.
- Application Platforms: Elastic Beanstalk is able to support web applications in a choice of application platforms for deployment including Java, .NET, Node.js, PHP, Ruby, Python, Go, and Docker
- Languages: There are a variety of programming languages supported within Elastic Beanstalk including Python, .NET, Java, Ruby, and PHP.
- Integrations: Elastic Beanstalk offers a range of integrations including Deep Security, Semaphore, Slack, Datadog, Papertrail, CloudBees, Docker, JetBrains, GitHub, StackShare, Grails, Webhooks, Eclipse and Jenkins
Whilst users have full control over the AWS resources powering their applications, Elastic Beanstalk frees up developer’s time by auto-managing a variety of the time-consuming processes needed for optimal hosting and scaling. These include:
- Scaling: Applications are scaled through Elastic Load Balancing and Auto Scaling to scale and balance workloads within the application based on their specific needs.
- Updates: Using Managed Platform Updates, users can run automatic updates to the latest Elastic Beanstalk environment.
- Health Monitoring: The Amazon CloudWatch tool auto-monitors the health of applications by collecting data from 40+ key metrics. Users can check on their application’s health through the Elastic Beanstalk Health Dashboard as well as customising their checks, reporting and permissions.
Users of Elastic Beanstalk minimise their costs as they are required to pay only for AWS resources used to store and run their applications with no additional charges. There are no contracts or long term commitments involved and users can calculate an estimated cost for their project using the AWS Pricing Calculator
How AWS BeanStalk works
Image Credit: AWS.Amazon
Elastic Beanstalk Cons
Lack of Failure Notification or Alerts
When a deployment within Elastic Beanstalk fails, there are no notifications triggered to warn users – meaning further deployments could fail without user knowledge.
Deployments in Elastic Beanstalk are not instantaneous and can take anything from 5-15 minutes to successfully deploy.
The AWS Cloudformation service is an ‘infrastructure as code’ tool designed to help set up, model, manage and provision infrastructure resources in a cloud environment. Developers or organisations can use Cloudformation to describe, create and provision a collection of related AWS and third-party resources and launch and configure them as a stack.
Who uses Cloudfirmation?
Cloudformation is mainly used to make life easier for System engineers. Organisations using Cloudformation include; Expedia, Deloitte and FC Barcelona.
Cloudformation Pros ✓
Manually managing a multi-service infrastructure and creating, updating and managing multiple AWS resources can be time-consuming. This is where the benefit of Cloudformation really comes in to play – allowing users to save time and effort on manually and individually managing resources by providing a way to manage them all in one place automatically.
Languages & Authoring
Cloudformation supports a number of familiar programming languages including Typescript, Python, Java and .NET meaning the platform is accessible to a number of users. The entire cloud environment can be modelled in text files and open source languages such as JSON or YAML can be used. For those looking to use Cloudformation in a more visual way – AWS Cloudformation Designer can be used.
Rather than managing resources individually, Cloudformation offers the chance to create a template of their infrastructure which can then be versioned, revised and replicated where necessary. Users simply define the resources they want AWS to ‘spinup’ into a template and AWS can create this with the click of a button.
Private and Third-Party Resource Management
Cloudformation offers the chance to not only manage AWS resources but third party application resources alongside them. Cloudformation’s open-source CLI means users can build their own CloudFormation resource providers – native AWS types published as open source.
Tracking and Control
Changes made within your infrastructure can be easily controlled and tracked using Cloudformation. The templates exactly describe resource provisions and settings. Users can use version control systems within their templates to view exact changes and details including when they were changed and who made them.
Cloudformation allows users to scale their infrastructure and manage their resource scaling and best practices by sharing templates across the organisation. Sharable templates and parameters allow for easy scaling and mean safety, compliance and configuration standards can be met across all AWS accounts and regions.
Users can bypass time-consuming processes by simplifying and automating best practices in Cloudformation. DevOps and GitOps best practices can be employed and automated triggers can be set up for deployments, pipeline integrations and auditing.
Like Elastic Beanstalk, CloudFormation users pay only for the AWS resources used and with no additional charges.
How Cloudformation Works
Image Credit: AWS.Amazon.com
As an AWS product, Cloudformation only supports and can only be used within AWS. This means you are unable to use Cloudformation for other cloud platforms.
Cloudformation has a 200 resource per stack limit. These ‘resource’ numbers can be easily reached even when creating a simple infrastructure.
Common feedback from users of Cloudformation is the amount of initial learning needed to be able to successfully use it. New users will need to take some time in learning its features and structures before being able to properly utilise the platform.
AWS Elastic Beanstalk vs Cloudformation: Comparison
|Primary Users||Developers||Systems Engineers|
|Primary Use||Cloud Deployment and Provisioning||Model, manage & provision infrastructure resources in a cloud environment.|
|Languages Supported||Python, .NET, Java, Ruby, and PHP.||Typescript, Python, Java and .NET|
|Pricing||Pay only for AWS Resources Used||Pay only for AWS Resources Used|
|Integration||Deep Security, Semaphore, Slack, Datadog, Papertrail, CloudBees, Docker, JetBrains, GitHub, StackShare, Grails, Webhooks, Eclipse and Jenkins||Can be integrated with other AWS services including AWS identity, AWS Service Catalogue, AWS Config and Codepipeline.|
Whilst both these platforms have their own unique uses and can be used individually, Cloudformation and Elastic Beanstalk are designed to complement and support one another rather than being seen as the other’s alternative.
This means that the two platforms are best used in conjunction for best results when deploying apps in the AWS Cloud Environments – with Elastic Beanstalk handling app deployment whilst Cloudformation manages and simplifying resources and infrastructure.