A 9-page primer for commercial application design, based on thirty-three years of experience. This is tactical strategy I learned from experience, much came from IBM's Websphere Commerce Server (now HCL Commerce) and re-interpreted for AWS. It's a highly configurable and scalable e-commerce server for commercial use.
Define a Cloud Formation (CF) template as your application foundation. CF templates have automatic rollback capability which you'll eventually need in conjunction with testing, which maximizes your up-time.
Create your CF templates with abstract references which merge with specifics in Velocity templates to create the final deployment template. This gives maximum consistency with minimum effort. New tiers are easy to deploy, existing tiers are easy to fully re-deploy. Common infrastructure objects can be shared, like a DNS server.
Your template should contain at least 90% of the infrastructure objects. You can supplement it with a CLI script but that introduces less consistency and more maintenance over time.
AD1: Infrastructure with Cloud Formation
AD2: Messaging I/O
AD3: Abstract Factory
AD5: Application Layer - Aspects
AD5: Application Layer - Canonical
AD5: Application Layer - Data Mapping
AD5: Application Layer - Protocol Adapter