/awsdevopsecs

ECS Reference Architecture: Continous Deployment Pipeline

Primary LanguageTypeScriptApache License 2.0Apache-2.0

ECS Reference Architecture: Continous Deployment Pipeline

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.

Table of Contents

About Project

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.

  1. 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.
  2. 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.
  3. 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.
  4. 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

Project Demo Screenshot

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.

AWS Demo Architecture - DevOps with ECS on EC2 launch type

DevOps with ECS on EC2 launch type

AWS Demo Architecture - DevOps with ECS on Fargate launch type

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.

DevOps with ECS on Fargate launch type

Built With

This section lists major frameworks and services part of working project demo.

Prerequisites

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
      

What's Next

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.

Contributing

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.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the Apache License. See LICENSE for more information.

Contact

Ashish Patel - Twitter LinkedIn Github

Acknowledgements