HumanGov: Proof of Concept (POC) on AWS Elastic Container Service (ECS) fronted By Application Load Balancer (ALB) and Storing Docker Images on Elastic Container Registry (ECR)
During this hands-on project, I delved into the intricate world of cloud architecture and deployment. My task revolved around the HumanGov application, which was to be modernized, containerized, and deployed onto the AWS Cloud environment. I started by creating necessary IAM roles, followed by initializing the AWS Cloud 9 environment and cleaning up outdated directories. This set the stage for our application transition, as I then containerized the HumanGov application using Docker. Next, I built and pushed our Docker images to AWS ECR for both our Flask app and the NGINX application. The meticulous step-by-step process ensured each layer was built properly with the right configurations.
Using Terraform, I provisioned an AWS S3 Bucket and a DynamoDB table. Terraform’s Infrastructure as Code capability streamlined this process, allowing me to instantiate, modify, and version infrastructure safely and efficiently. With AWS S3 and DynamoDB ready, it was then onto the Elastic Container Service (ECS). After creating an ECS cluster, I formulated a Task Definition for our ECS deployment.
This definition detailed the containers, their roles, and necessary configurations, from environment variables to port settings.
Finally, it was time for deployment. I set up a service on ECS, using Fargate as the launch type. The service seamlessly integrated our Docker containers, AWS configurations, and the necessary resources to ensure our application’s optimal performance. The results were a fully functional, scalable, and resilient cloud-based HumanGov application.
Overall, this project gave me an in-depth understanding of cloud deployment processes, from IAM roles, Docker containerization, AWS ECR, Terraform provisioning, to AWS ECS service deployment. Each step was a lesson in best practices, troubleshooting, and the immense potential of cloud technologies.
Below are few screenhots:
HumanGov Logo
Add permissions to a role
Role created
AWS Cloud 9
Create a public on AWS Elastic Container Registry(ECR) — similar to DockerHub
Commands to authenticate the humangov-app with AWS Cloud 9 environment.
Tagged humangov-app
Docker push
humangov-app image
humangov-nginx public repository
Commands to authenticate the humangov-nginx with AWS Cloud 9 environment.
humangov-nginx image tagged
Docker push
Docker push complete
humangov-nginx image
Cloud 9 user key generation
Terraform install on Cloud 9
Terraform init and Terraform show
Terraform plan for the state of California
Terraform apply for the state of California
humangov cluster
Task definition
humangov deployment in progress
humangov deployed successfully
Health checks
humangov loadbalance dns name
Two serverless FARGATE application running for High Availability
First one runs on us-east-1a
Second one runs on us-east-1f
Load balancer dns name
Application Up and running for the state of California
Employee table empty
Adding a record
The data shows in the table for the record addded
AWS S3 humangov bucket shows the pdf attachment
AWS Dyanamodb table shows the record that was added