GitXplorerGitXplorer
o

multi-docker-ci-aws

public
0 stars
0 forks
0 issues

Commits

List of commits on branch main.
Unverified
af6f6faa4397c731ed9ff4bf0a5f5cd33893292a

Added description with figure

committed 4 years ago
Unverified
5c152bbca5b3e97bd2ef8d121cdb7109342c77fe

Descriptive figure

committed 4 years ago
Unverified
f194d04515243b0fc3ebe1326a14f00533c9a4cc

Fixed typo ,

committed 4 years ago
Unverified
ab2cf6ddebc17f6e6dd1d7758fb3ca07ba17b7d0

Added memory

committed 4 years ago
Unverified
eece4a45ea94e3f892746065d56b1ac6de412ba8

Fixed github branch from master to main

committed 4 years ago
Unverified
606ca6cf8a9a6d63704086176e7b41ac77d81fb1

Finalized for deployment to AWS EB

committed 4 years ago

README

The README file for this repository.

Building Multi-Container Application And Deploying to AWS Elastic Beanstalk Using Travis CI

Containers

  • Nginx
  • Redis (AWS Elasticache)
  • Postgres (AWS RDS)
  • React (client)
  • Express (api server)
  • Worker (calculator)

Docker flow diagram

Descriptions

  • Browser sends the request to Nginx server, which routes the request to respective location
  • Request coming from browser with '/' path requesting (HTML or JS) is directed to react/client server located at port 3000.
  • Request coming from browser with '/api' path (submitting or retrieving values) is directed to express/api server located at port 5000
  • All the submitted values are stored in Postgres database for permanent storage
  • All the submitted and calculated values are stored in Redis database as key-value pairs
  • If the number submitted is previously seen, it will return the calculated value from Redis server, otherwise it is sent to worker container for the calculation
  • Nginx, Express, React and Worker server are hosted on AWS Elastic Beanstalk
  • Redis server is hosted on AWS Elasticache
  • Postgres database server is hosted on AWS RDS
  • Every new version is deployed on AWS EB, as we push our code changes to Github, which is build, tested and deployed using Travis CI

Redis/Postgres is separated from AWS EB because:

  • AWS automatically creates and maintains Redis/Postgres instance for us
  • Super easy to scale
  • Built in logging + maintenance
  • Better security
  • Easy to backups