Deploying a Web App Using Elastic Beanstalk

Using AWS, you can develop web apps quickly and then deploy them to a cloud environment
that
scales on demand. And with several AWS deployment services to choose from, you can
create a
deployment solution that gives you the right mix of automation and control.

In this tutorial, we'll assume that you're working on a new web app that isn't ready
for
production yet, but in the meantime you plan to deploy a small placeholder app that
collects
contact information from site visitors who sign up to hear more. The signup app will
help you
reach potential customers—people who might become early adopters or take part in a
private beta test.

Here's a quick introduction to AWS Elastic Beanstalk and the other technologies we'll
be using. (To dive
right into the hands-on part of the tutorial, skip ahead to the next
section.)

AWS Elastic Beanstalk

Elastic Beanstalk is a high-level deployment tool that helps you get an app from your
desktop to the
web in a matter of minutes. Elastic Beanstalk handles the details of your hosting
environment—capacity provisioning, load balancing, scaling, and application health
monitoring—so you don't have to.

Elastic Beanstalk supports apps developed in Java, Go, PHP, .NET, Node.js, Python,
and Ruby, with
multiple configurations for each platform. A platform configuration defines the infrastructure
and software stack to be used for a given environment. When you deploy your app, Elastic
Beanstalk
provisions a set of AWS resources that can include Amazon EC2 instances, alarms, a
load balancer,
security groups, and more. The software stack that runs your application depends on
the
platform configuration type. For example, Elastic Beanstalk supports 3 configurations
for Python: Python
3.4, Python 2.7, and Python 2.6.

You can interact with Elastic Beanstalk by using the AWS Management Console, the AWS
Command Line Interface (AWS CLI), or the Elastic Beanstalk
CLI, a high-level CLI designed specifically for Elastic Beanstalk. For this tutorial,
we'll use the
AWS Management Console.

The Signup App

In this tutorial, we'll deploy an example app that lets customers submit contact
information and express interest in a preview of a hypothetical web app that you're
developing.

The app is built on Node.js, a platform that uses
server-side JavaScript to build network applications. Node.js consists of a library
and a
runtime. The runtime is provided by the V8
JavaScript Engine.

Node.js is designed around a non-blocking, event-driven I/O model, which makes it
useful
for creating highly scalable web servers. Our app employs two external Node modules:
Express, a web application framework, and Jade, a Node.js template engine that can be used to
create HTML documents.

AWS provides a Node.js SDK, which helps take the complexity out of coding by providing
JavaScript objects for AWS. We've used the Node.js SDK to build our sample application.
To
learn more about the Node.js SDK, see AWS SDK
for JavaScript in Node.js.

To make our app look good, we use Bootstrap,
a mobile-first front-end framework that started as a Twitter project.

Amazon DynamoDB

We'll use Amazon DynamoDB, a NoSQL database service, to store the contact information
that users
submit. DynamoDB is a schema-less database, so you need to specify only a primary
key attribute.
We'll use an email field as a key for our app.

Amazon Simple Notification Service

We want to be notified when customers submit a form, so we'll use Amazon Simple Notification
Service (Amazon SNS), a
push messaging service that can deliver notifications over various protocols. For
our app,
we'll push notifications to an email address.

Javascript is disabled or is unavailable in your browser.

To use the AWS Documentation, Javascript must be enabled. Please refer to your browser's
Help pages for instructions.