Introduction to AWS Elastic Beanstalk

Updated 11 July 2017

In this blog, we will talk about Elastic Beanstalk which is a PAAS(Platform as a Service) offering by Amazon Web Services. Generally, PAAS allows the developers to deploy their web applications using supplier-specific server architecture, tools and languages. However with Elastic Beanstalk, you get more control over the underlying architecture. It is very helpful for developers and system administrators to deploy codes without spending time on managing and configuring servers, databases, load-balancers, firewalls & networks, etc. AWS Elastic Beanstalk reduces management complexity without restricting choice or control. You simply upload your application, and Elastic Beanstalk automatically handles the details of capacity provisioning, load balancing, scaling, and application health monitoring.

 

Elastic Beanstalk is a combination of various AWS services, including EC2, S3, Simple Notification Service (SNS), CloudWatch, auto-scaling, and Elastic Load Balancers. It allows developers to deploy and easily scale web applications and services developed with Java, PHP, Node.js, Python, Ruby, Go and Docker on popular web-servers such as Apache, Nginx, Passenger and IIS. However, Elastic Beanstalk does not restrict your choice of persistent storage and database service options. You can attach as many ebs needed or select a database of your choice for your application.

 

For Elastic Beanstalk, there is no additional charges. You only have to pay for the AWS resources needed to store and run your applications. The underlying  architecture is easily accessible from the AWS console. You can interact with Elastic Beanstalk by using the AWS Management Console, the AWS Command Line Interface (AWS CLI), or eb, a high-level CLI designed specifically for Elastic Beanstalk.  However, most of the deployment tasks can be handled directly from the Elastic beanstalk web interface.

 

For deployment of code with Elastic Beanstalk, you can upload your application in the form of source bundle (for example, a Java .war file). Elastic Beanstalk automatically launches an environment and creates and configures the AWS resources needed to run your code. After your environment is launched, you can then manage your environment and deploy a new application versions.

 

 

Basically Beanstalk provides two types of environments – Web Server environment and Worker environment.

Web Server Environment :

  • It is used to run a website, web application, or web API that serves HTTP requests.
  • It consist of one elastic load balancer, an Auto Scaling group, and one or more Amazon EC2 instances.
  • It also consist of a software component called the host manager (HM) is present and runs on each Amazon EC2 server instance.
  • The host manager is responsible for deploying, managing logs and monitoring of the application server.
  • Every environment has a CNAME (URL) that points to a load balancer by using a CNAME record in Amazon Route 53. This URL can be used to serve HTTP requests.

 

Worker Environment :

  • It is generally used for web applications that run background jobs or tasks.
  • It consist of an Auto Scaling group, one or more Amazon EC2 instances, and an IAM role.
  • For the worker environment, Elastic Beanstalk also creates and provisions an Amazon SQS queue if you don’t already have one.
  • When you launch the worker environment, Elastic Beanstalk installs the necessary support files for the selected programming language and a daemon on each EC2 instance in the Auto Scaling group.
  • The daemon is responsible for pulling requests from an Amazon SQS queue and then sending the data to the web application that will process those messages.
  • If you have multiple instances in your worker environment tier, each instance has its own daemon, but they all read from the same Amazon SQS queue.

 

You can choose any of the two environments for deployment that suits the purpose of your application. Once you have created and deployed your application, you can view the information about the application including metrics, events, and environment status through the AWS Management Console, APIs, or Command Line Interfaces, or the unified AWS CLI.

So in short, Elastic Beanstalk provides developers and systems administrators an easy, fast way to deploy and manage their applications without having to worry about AWS infrastructure. In the next blog, we will discuss how to deploy codes with beanstalk.

 

Thanks for your time…

 

In case of any help or query, please contact us.

Category(s) Uncategorized
author
. . .

Leave a Comment

Your email address will not be published. Required fields are marked*


Be the first to comment.

Start a Project




    Message Sent!

    If you have more details or questions, you can reply to the received confirmation email.

    Back to Home