infra-dapps/README.md

2.0 KiB

Description

This repo configures infrastructure for the https://dap.ps/ service.

The service is split into two stages:

The prod environment is CNAMEed to dap.ps domain.

Technical Details

The infrastructure is hosted on AWS and consists of 5 main elements:

All the AWS parts are provisioned and managed with Terraform and the MongoDB cluster configured with Ansible.

The only part that is not AWS is Gandi DNS provider due to AWS Route53 not supporting the .ps TLD.

Usage

Creation of both dev and prod stages is as simple as:

terraform init
terraform apply

And then configure the MongoDB hosts using ansible:

ansible-playbook ansible/dev.yml
ansible-playbook ansible/prod.yml

Known Issues

  • The ElasticBeanstalk environments can fail when being recreated
    • This is mostly due to AWS being slow at destorying resources and their race conditions
  • There is no easy way of making ElasticBeanstalk spread geographically
    • The only way seems to have multiple EB environments linked via ELB

TODO

  • #4 - [prod] Geographically spread hosts
  • #10 - [prod] Periodic EC2 Snapshots
  • #11 - [prod] MongoDB Web UI
  • #13 - [prod] Stress test infrastructure