In a serie of blog articles I’ll take a closer look at the available CI/CD development tools, serverless architecture and orchestration services (like Elastic Beanstalk and Cloudformation) in AWS. This blog article is about Elastic Beanstalk and the application lifecycle.
AWS cloud platform consists of a large collection of resources and services. When you start building environments in AWS the number of available resources can be overwhelming. From developers perspective this can make it a little discouraging to use AWS resources for their application. In AWS there are several services that take care of the deployment of your AWS infrastructure. What service is most in line with your goal depends on your needs.
When you’re looking for development tools and you already have your environment running in AWS it can be interesting to take a closer look at CodeCommit, CodePipeline and CodeBuild. These services are well integrated with other AWS resources/services.
Serverless services in AWS (Lambda, SQS, API gateway, DynamoDB etc) are intelligently designed and offers great flexibibility and a huge amount of possibilities to enhance your application. AWS provides a seamless integration between their services and resources. Serverless applications don’t require provisioning, maintaining, and administering servers for backend components such as compute, databases, storage, stream processing, message queueing etc. You also no longer need to worry about ensuring application fault tolerance and availability. Instead, AWS handles all of these capabilities for you. When building serverless applications you rely on the serverless services of AWS.
Elastic Beanstalk and Cloudformation are services that take care of the deployment on your behalf. Elastic Beanstalk in particular deploys new applications, while cloudformation orchestrates your infrastructure in AWS. Elastic Beanstalk eventually relies on Cloudformation when it comes down to building and provisioning the infrastructure in AWS.
Elastic BeanStalk is an orchestration service that provides a layer of abstraction between the AWS resources and the application. When you have a web application written in PHP, Elastic BeanStalk can be used to run your code, automatically provision your EC2 instances, load balancers and auto scaling configuration. As a developer you don’t have to understand what kind of AWS resources you need and how it’s configured, to run your application in AWS. Elastic BeanStalk will do that for you. You only need to know what capacity is needed and some basic knowledge of what kind of architecture is required to run your code.
So Elastic beanstalk is basically a rapid application deployment service. You write the code and AWS will run it for you on the platform of your choice. It supports applications written in several languages like Java, .Net, Go, Python,Node.js, Docker, Tomcat, PHP and Ruby. For each application that you are going to create, you have different options available. This is handled by the platform configuration that is part of your creation of the application.
To deploy an application on Elastic Beanstalk it follows a lifecycle. After you’ve created an application, you must upload that as a bundle, and provide information about the application to Elastic Beanstalk. Elastic beanstalk will then launch that environment (through Cloudformation), and it will create and configure all of the resources that you specify in order to execute the application that you have created. After it’s launched you can manage your environment and you can deploy new versions.
Create the application, upload, launch and manage it, and then follow the cycle process as you iterate over the evolution of your application.
Vincent Lamers, Linux-consultant @ AT Computing