AWS ofrece la mejor opción en la nube para una alta escalabilidad y disponibilidad. Su amplia presencia de infraestructura en todo el mundo, así como su capacidad para integrarse con las mejores tecnologías DevOps como Docker, Jenkins, etc., la convierten en la mejor opción para tus planes.
En este caso, Auto Scaling y Load Balancing permitirán escalar hacia arriba o hacia abajo la cantidad de capacidad / servidores de recursos así como la distribución de la carga de tráfico para esos recursos. El servicio AWS CodeDeploy se encargará de implementar los cambios de código entre los servidores para que todos puedan actualizarse correctamente.
Jenkins:
Jenkins es un servicio bien reconocido y tal vez el más utilizado para los enfoques de Integración Continua / Despliegue Continuo, ya que le permite automatizar las tareas de construcción, prueba, embalaje e implementación al mismo tiempo que le permitirá mantener una visión completa de cada uno de ellos. estas tareas.
Redis:
Si su aplicación utiliza información repetitiva del usuario junto con su proceso de flujo básico, entonces es una buena idea contar con un proceso de administración de sesión implementado. Redis es una excelente opción para administrar esta tarea, ya sea si se agrega en el mismo servidor de aplicaciones o si se agrega en un servidor totalmente separado para un mejor rendimiento. Recomendamos utilizar un Redis por separado cuando tu aplicación o sitio web necesite una gran cantidad de información de sesión para ser almacenada y administrada.
Varnish:
Recomendamos agregar almacenamiento en caché para sus procesos de aplicación/sitio web porque es una muy buena convocatoria para mejorar la velocidad y el rendimiento general de la carga del sitio. Como ya sabrás, Varnish permite almacenar los procesos de solicitud básicos desde el sitio web para que no impliquen la misma carga para el servidor cada vez que se activan.
Github:
Debes contar con una herramienta de control de versiones eficiente para código como Github, a fin de hacer que el Despliegue continuo completo sea más suave y limpio, garantizando menos fallas y problemas.
PHP frameworks:
Ya sea que elijas Cake PHP, Laravel, CodeIgniter o cualquier otro framework de PHP, estarás haciendo una buena llamada incluyéndolos en su sitio web / aplicación para que la elección dependa de ti.
El proceso es simple
1-Crea su servidor maestro en AWS usando la pila LAMP o LEMP según lo desee.
2-Incluye y configure el almacenamiento en caché de Varnish en su servidor AWS.
3-Crea tu servidor RDS para alojar tu base de datos.
4-Crea tus depósitos S3 para almacenar todo el contenido estático de su aplicación o sitio web.
5-Configura el almacenamiento en caché de AWS Cloudfront para contenido S3.
6-Cree y vincule su repositorio Github a su infraestructura AWS ya creada.
Nota: debes asegurarte de vincular todo el contenido estático en S3 del código.
7-Crea y configure su servidor Redis en AWS según lo desee.
Nota: debea asegurarte de incluir Redis en tu código también.
8-Crea y configura tu servidor Jenkins, que se encargará de procesar los procesos de Integración Continua.
9-Crea grupos de escala automática y reglas de equilibrio de carga para tu infraestructura de AWS. Esta función creará o destruirá servidores según los niveles de demanda en la aplicación/sitio web.
10-Vincula tu depósito y los depósitos de S3 a Jenkins y crea tus trabajos de Jenkins para construir, probar, empaquetar e implementar cambios en el código.
11-Configura reglas CodeDeploy en AWS y vincúlalas con Jenkins. Las reglas de CodeDeploy incluirán cómo desplegará los cambios en las instancias contenidas en los grupos de Auto Scaling.
12-Prueba tu infraestructura aplicando cambios en su código y asegurándote de que se implementen de manera automática y adecuada en todas las instancias.
13-Optimiza y asegura tu infraestructura siguiendo las mejores prácticas. Para esto, puedes echar un vistazo al blog AWS Security Best Practices.
14-Configura las copias de seguridad automáticas para su infraestructura y código a fin de estar listo en caso de fallas inesperadas.
IMPORTANTE: debes incluir un proceso de reversión para las implementaciones fallidas
Echa un vistazo a cómo debe verse tu enfoque: