Deploying complex apps to AWS with Terraform, Ansible, and Packer

Click for: original source

An article about how author has recently helped a client migrate a set of complex Ruby on Rails applications to AWS, deploying across multiple environments and regions. By Jake Morrison.

The big driver for improvement, however, was the need to separate customer data by country/region. GDPR compliance is easier if they keep European data hosted in Europe. Customers in China were also complaining about poor network performance crossing the “Great Firewall”.

One of the most important design considerations was handling all their apps and environments with a common framework. If there are too many special cases, the system becomes unmanageable. It’s a false economy to optimize one environment with custom code, but increase the cost of managing the overall system. It is better to have a standard template with configuration options. On the other hand, we can’t have too much configurability, it must be “opinionated”.

The article then goes over solution:

  • Architecture
    • Multiple AWS accounts
    • Sharing resources between accounts
    • Structure
    • Meeting legacy apps half way
    • Deploying with CodeDeploy and Capistrano
    • Encryption

… and more. Very detailed article with all the code and a complete example of deploying an app to AWS. Good read!

[Read More]

Tags devops aws cloud kubernetes ansible