Servian Tech Challenge - DevOps

Tools used

  • Terraform
  • AWS Cli
  • Git
  • Docker
  • jq
  • Bash

Architecture Diagram

diagram

Components

  • Application load balancer to receive and distribute traffic through to app servers
  • App are hosted in AWS ECS Fargate across two AZs in the same region
  • Database layer using RDS Aurora Postgres with read replica across AZs
  • App image is hosted in ECR

Todos

  • Add application repo as a submodule

  • Build a docker image for the app

  • Create ECR repository using AWS Cli

  • Push image to ECR

  • Provisioning Infrastructure in Terraform

    • Networking
    • Security Groups
    • IAM roles
    • Database
    • Application Load Balancer
    • ECS Fargate
  • Seed the database

  • Instructions on how to use the project

  • Better console output for user experience

How to run the project

Please make you the correct AWS credentials are configured before running the following commands.

# one command to spin up everything
make start
# Tear down
make destroy

More ideas

  • Refactor terraform components into modules for better reusability
  • Create tests for terraform modules
  • Migrate makefile logic to CI/CD pipeline
  • Move state to a remote backend
  • Map a domain to load balancer dns name in route53 & enable HTTPS for connection