¿Debo crear cuentas de Amazon separadas para cada una de mis aplicaciones?

tl; dr: No, usa una cuenta.

En Superfly Insights, tenemos algunas “aplicaciones” / cargas de trabajo de producción muy distintas que gestionamos con éxito en una sola cuenta. El mayor inconveniente del enfoque de una cuenta es la “expansión” de los recursos que se desarrolla en la consola de Amazon, que se evitaría si hubiéramos dividido nuestros recursos en cuentas separadas. Dicho esto, hay algunas herramientas para abordar este problema y bastantes beneficios para ejecutar toda su carga en una sola cuenta.

  • Etiquete sus recursos: AWS le permite etiquetar la mayoría de los recursos con pares de valores clave, y además le permite utilizar esas etiquetas para configuraciones y facturación. Esto significa que puede etiquetar fácilmente un conjunto de recursos como pertenecientes al proyecto A o al proyecto B.
  • Gestión de la configuración : la distribución de sus aplicaciones en varias cuentas agrega una dimensión adicional de sobrecarga de configuración. Esos son dos conjuntos de claves de AWS que debes mantener y asegurarte de que cada aplicación consuma la correcta. Tendrá que configurar el doble de VPC, el doble de etc., y luego mantenerlas. En mi experiencia, la mayor fuente de errores en la producción en la nube (y en general) es la mala gestión de la configuración. Ahórrate un punto de dolor.
  • ¿Qué tan grandes son sus aplicaciones ?: ¿ Grandes en el sentido de cuántos recursos (instancias ec2, RDS, configuraciones de IAM, etc.) necesita cada aplicación? Si el número es pequeño y no espera que aumente, puede salirse con la suya sin tener que pensar demasiado en la expansión de sus recursos.
  • Comparta recursos entre aplicaciones: ¿realmente sus dos aplicaciones necesitan dos instancias RDS distintas? En su lugar, podría ejecutar una instancia con dos (3,4..n) bases de datos configuradas en ella. Lo mismo ocurre con sus instancias EC2. Si sus aplicaciones no consumen recursos significativos del servidor, puede colocar múltiples aplicaciones en un solo servidor (Docker es excelente para esto) y ahorrar costos y gastos generales de administración de dos servidores. Compartir recursos entre aplicaciones requiere que las ejecutes en la misma cuenta

En resumen, creo que el beneficio de usar una cuenta para sus aplicaciones es en gran medida cosmético, el desorden que verá en la consola. Al usar varias cuentas, solo moverá ese desorden desde la consola a sus configuraciones y administración. Amazon ofrece excelentes herramientas para administrar ese desorden en una cuenta y sus grandes beneficios de costo al usar una sola cuenta.

Ciertamente usaría varias cuentas, pero no necesariamente una por aplicación. Mi pensamiento inicial sería una cuenta por entorno. Consideraría tener cuentas separadas de producción, control de calidad y desarrollo.

Una razón para hacer esto es que si todo está en una cuenta, en este momento no es posible restringir por completo a un usuario con permisos altos a un determinado conjunto de recursos (por ejemplo, solo el entorno de desarrollo). La forma más sencilla de obtener el aislamiento deseado es con varias cuentas. Esto puede ayudar a prevenir daños accidentales a los recursos de producción por parte de un desarrollador y también puede limitar el daño que hace un hacker si las claves de alto permiso caen en sus manos.

Ahora que AWS tiene roles de cuenta cruzada y acceso a la consola, facturación consolidada, emparejamiento de VPC y reglas de instancia reservada más flexibles, muchas de las razones más antiguas para preferir una sola cuenta son menos convincentes.

Sí, debe usar cuentas de AWS separadas para cada aplicación. Es mucho más fácil comenzar con cuentas separadas (puede usar la facturación consolidada para simplificar el pago de todo) que intentar separarlas más tarde. Si tiene diez aplicaciones diferentes, y una de ellas se convierte en un gran éxito que desea vender a Zynga (lol, Zynga), entonces tenerla en su propia cuenta de AWS aislada hará que su vida sea mucho más fácil. Hay más gastos generales de administración (malabares con teclas de acceso separadas), pero probablemente valga la pena a largo plazo.

Otros ya han mencionado sobre la ventaja de precios.

Es especialmente útil si está utilizando AWS SES.
Mantiene su tasa de spam / rebote baja en caso de que envíe muchos correos electrónicos (en millones). Es una de las mejores prácticas mencionadas en el documento de AWS SES.