AWS Cloud Computing applications to Web Development
AWS Services
The primary AWS services used in this project are Elastic Beanstalk, EC2, DynamoDB Route 53, Certificate Manager, and S3.
Elastic Beanstalk
Elastic Beanstalk is the environment I am using to deploy my Node.js Application. It also makes use of Auto Scaling of EC2 instances, a Load Balancer, and a DynamoDB.
EC2 - Load Balancer - Auto Scaling
This website primarily runs on 1 EC2 instance. However, in the event of high traffic, the load balancer scales up to 4 instances! This process is similar to a Hadoop Distributed File System. HDFS uses a cluster of CPUs, a master process runs, and a worker process is created for each CPU in use. In my case, the worker process is my Node.js application, and the CPU is an EC2 instance.
Each EC2 instance has environment properties defined in the Elastic Beanstalk environment, and the properties are passed through to the Node.js application. This feature allows dynamic code changes directly from the Elastic Beanstalk UI. This website makes use of this feature to allow instant Bootstrap theme changes from the click of a button.
DynamoDB
The database in use, DynamoDB, is Amazon's NoSQL Database. My Node.js application passes an object via a POST request, through to my DynamoDB, when a user submits my "Contact Me" form. I am then immediately notified via email with the contents of the variables, pretty cool!
Route 53 - Certificate Manager
Route 53 handles DNS resolution, where I registered my domain and aliased the IPv4 address of my running EC2 instance to be "*.willschweiter.io." I used the Certificate Manager to obtain an SSL/TLS public certificate quickly.
Load Balancer - HTTPS Redirect
The load balancer allows both HTTP and HTTPS connection. To secure my website, by redirecting HTTP to HTTPS, I added Amazon's open-source HTTPS redirect config file to my config folder.
S3
S3 is used to store load balancer logs.