Making environment deployment easier in AWS


Whether you’re a seasoned AWS expert or not, you will want to simplify your job when it comes to deploying your application environments. I mean, who wants to spend hours launching, configuring and tweaking an environment? Especially when you consider that agile software development methodologies can result in weekly and even daily software releases – deployment should not become a full time job, but what can we do to streamline the process?

Well, the first thing we can do is to utilize a tool called Elastic Beanstalk which allows us to deploy and manage our applications with little consideration for the underlying infrastructure that runs those applications. Essentially, you upload your application code (either through a zip file or from a GIT repository). You then sit back and relax as Elastic Beanstalk handles the provisioning, load balancing, scaling and monitoring of your application. Don’t get me wrong, this is not an adequate solution for very complex applications, however, it is suitable for basic web applications such as WordPress sites.

Elastic Beanstalk allows you to:

  • Select the operating system required by your application
  • Define your chosen database and storage options
  • Login to your EC2 instances to troubleshoot
  • Run in multiple availability zones, improving your application availability and fault tolerance
  • Quickly and easily enable HTTPS on the load balancer for enhanced security
  • Get notified from CloudWatch about your application health
  • Access logs without logging into your application servers

The Elastic Beanstalk service is designed to be a good tool for developers without knowledge of building AWS services. It enables us to deploy dev/qa/live environments from code, stored in a GIT repository. The developer can submit their app to the GIT repository and can use the Elastic Beanstalk command line to deploy the code automatically.

Cloud formation is another tool which helps us to streamline our application environment deployment. It essentially allows you to code your own infrastructure. What do I mean by that? Well, you can script the creation of a VPC, giving that VPC a subnet, creating an SQS queue and plenty more tasks in a JSON document. Well, that’s great, I guess… but why would you want to do that?

  • Cloudformation enables you to backup the entire environment in code. Think of this as a version control system for your infrastructure. You keep version control of documents and application code, so why not for your environment too?
  • Create identical copies of your environment stack, enabling you to quickly deploy an identical architecture in multiple regions, leading to improved availability and fault tolerance.
  • You can pass parameters to your CloudFormation template at stack creation. For example, you might want to define the particular instance types, alarm thresholds or port numbers on stack creation. These may be parametrized and may differ by region.
  • AWS CloudFormation Designer provides a visual view of your JSON file. This gives you the ability to view the relationships between each component and can drag and drop elements to edit the template.

All of the above leads to faster deployment and easier management of your architecture.

Image used under creative commons