At its very core, Elastic Beanstalk has been designed to simplify AWS deployment. It is intended as a mean for developers to select their platform and upload their application.
This Amazon service then automatically handles resource provisioning, including setup of instances, internet gateways, automatic scaling, load balancing and databases, as necessary. The idea is to take away some of the management overhead of building and deploying software in the cloud.
And enabling developers and engineers to deploy via code repositories.
We’ll be taking a look at the core components that make up Elastic Beanstalk, and what you need to know about its inner workings before you get down to the business of getting your app up and running on the Amazon cloud.
Applications deployed to the cloud have to conform to the cloud rules, and things are no different with Elastic Beanstalk. Only, the main purpose of this service is to let users easily deploy and run web applications in the cloud — but making them highly available and scalable in the process.
Perhaps the most important EB component is deployment.
Deployment has always been a quite a hassle for cloud developers, even when using tools for continuous integration, like Hudson or Jenkins. The big story is that moving an application around from one environment to the other is always difficult. It usually involves careful planning, more so for complex applications that have a big footprint.
That said, there are five main components that make Elastic Beanstalk, five main areas that you need to focus on and completely understand before you make your move.
Elastic Beanstalk, for the most part, simplifies the process of deploying an application on the Amazon cloud. The service allows developers the ability to upload and manage different versions of their apps, and switch between them in different environments like development, test, and production.
An application in Elastic Beanstalk is basically a collection of environments, versions, and everything else related to them, like events. In other words, an Elastic Beanstalk application is conceptually similar to a folder. Most users normally create a separate EB application for each of their applications, and although this is not required, it does help streamline management.
A version is the deployable code of an application. Depending on your programming platform of choice, you will have a file, or a set of files that you upload, with a label and description. You can then see where it is deployed, in which environment, and even download the file or files, if needed.
As you may have guessed, an environment is a deployed version on specific instances, load balancers, and scaling groups, etc. A typical workflow is creating one environment for testing, and another for production. Though you can, of course, create as many as you need, as much as your budget allows. Amazon provides access to your environment via a specific URL, and provide different health status so you can quickly get an idea of how things are up there. Green is okay, yellow when your environment has not responded within the last 5 minutes, red if it hasn’t responded for more than 5 minutes, and gray, unknown.
Events tell you what is going on with your environments. They are either informative, warnings, or errors, letting you know details like when an environment successfully launches, or an instance is close to utilizing its resources. You can view the events in a web console, or have them sent to you via email.