This Demo Project guides in implementing AWS DevOps Services using Blue-Green Deployment of Java and React based Monolith Application on Amazon ECS with Amazon EC2 & AWS Fargate launch type, one by one.
This demo implements proof of concept solution to a specific usecase of a fictitious company called Octank.
Problem Statement
Octank's travel division wants to move their outdated online ticketing system, currently hosted on premises, to the cloud. They have following key current challenges.
- They want their development and operations teams to adopt a DevOps model, and be able to take advantage of the speed and agility that AWS provides.
- They want to be able to perform zero-downtime deployments, something they currently do not do, instead doing deployments in the middle of the night.
- They have a distributed development team, and want a way to solve 'but it works on my machine' when dealing with distributed teams of developers.
- They want to develop a mobile app that allows users to check on status of trips.
Solution
Solution proof of concept is focusing on how Octank Team can leverage AWS cloud with DevOps Services and Elastic Container Service to run their existing code base - having multiple technologies like Java, React, NodeJs...etc

Solution is prepared with Amazon ECS service for deployment. It provides two launch type for deployment. Amazone EC2 and AWS Fargate. This demo shall cover both, and respective solution architecture diagrams are as given below.
In Architecture diagram, green marked section under VPC, shows difference w.r.t EC2 Launch type, in terms of services automatically taken care by AWS Fargate, making developer and operation team's job simple.
This section lists major frameworks and services part of working project demo.
-
Monolith Application
-
AWS DevOps Services
-
AWS ECS related Services
You shall need to install below listed softwares/packages to setup, configure and run this demo project.
- Install Java 8+. I recommend you use AdoptOpenJDK builds, as they are open source and free
- Install Node.js from the Node.js website (please use an LTS 64-bit version, non-LTS versions are not supported)
- AWS CLI:
- Configure AWS CLI
$ aws configure AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Default region name [None]: us-east-1 Default output format [None]: json
- Configure AWS CLI
Planning to add support for Amazon Elastic Kubernetes Service (EKS) - Managed Kubernetes Service. AWS has also recently announced support for Amazon EKS on AWS Fargate, with this EKS and Fargate make it straightforward to run Kubernetes-based applications on AWS by removing the need to provision and manage infrastructure for pods, this shall also be super fun to implement.
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the Apache License. See LICENSE for more information.
- AWS IAM Roles
- Create an AWS CodeCommit Repository
- Creating Amazon ECR Repository
- Create a Build Project (Console) in CodeBuild
- Creating an Amazon Aurora DB Cluster
- Tutorial: Create a Pipeline with an Amazon ECR Source and ECS-to-CodeDeploy Deployment
- Tutorial: Using Cluster Auto Scaling with the AWS Management Console
- Best-README-Template

