Actividades previas a la implementación
Diseño del entorno
El entorno en el que se prueban y evalúan las aplicaciones influye en el grado de minuciosidad con que se puede realizar la prueba y en la confianza que se deposita en el hecho de que esos resultados reflejan con precisión lo que ocurrirá en producción. Es posible que pueda realizar algunas pruebas de integración localmente en máquinas de desarrolladores mediante servicios como Amazon DynamoDB (consulte Configuración de la versión de DynamoDB local en la documentación de DynamoDB). Sin embargo, en algún momento tendrá que realizar las pruebas en un entorno que replique el entorno de producción para conseguir la máxima confianza en los resultados. Este entorno conllevará costos, por lo que le recomendamos que adopte un enfoque por etapas o por canalizaciones para sus entornos, de forma que los entornos similares a los de producción aparezcan más adelante en la canalización.
Prueba de integración
Las pruebas de integración son el proceso mediante el cual se comprueba que un componente bien definido de una aplicación desempeña sus funciones correctamente cuando funciona con dependencias externas. Esas dependencias externas pueden ser otros componentes desarrollados a medida, servicios de AWS que utilice para su aplicación, dependencias de terceros y dependencias en las instalaciones. Esta guía se centra en las pruebas de integración que demuestran la resiliencia de la aplicación. Se supone que ya hay pruebas unitarias y de integración que demuestran la precisión funcional del software.
Le recomendamos que diseñe pruebas de integración que prueben específicamente los patrones de resiliencia que ha implementado, como los patrones de los disyuntores o la reducción de carga (consulte Etapa 2: diseño e implementación). Habitualmente, en las pruebas de integración orientadas a la resiliencia se aplica una carga específica a la aplicación o se introducen interrupciones intencionadas en el entorno mediante el uso de capacidades como AWS Fault Injection Service (AWS FIS)
Canalizaciones de implementación automatizadas
La implementación y las pruebas en sus entornos de preproducción son una tarea repetitiva y compleja que es mejor dejar en manos de la automatización. La automatización de este proceso libera recursos humanos y reduce la posibilidad de errores. El mecanismo para automatizar este proceso a menudo se denomina canalización. Cuando cree su canalización, le recomendamos que configure una serie de entornos de prueba que se parezcan cada vez más a la configuración de producción. Debe utilizar esta serie de entornos para probar su aplicación de forma repetida. El primer entorno proporciona un conjunto de capacidades más limitado que el entorno de producción, pero implica un costo significativamente menor. Los entornos posteriores deberían agregar servicios y escalarse para reflejar mejor el entorno de producción.
Para empezar, realice pruebas en el primer entorno. Una vez que las implementaciones superen todas las pruebas del primer entorno de prueba, ejecute la aplicación con cierta cantidad de carga durante un periodo de tiempo para comprobar si se produce algún problema con el tiempo. Confirme que ha configurado la observabilidad correctamente (consulte Precisión de las alarmas más adelante en esta guía) para poder detectar cualquier problema que pueda surgir. Cuando este periodo de observación se haya completado correctamente, implemente la aplicación en el siguiente entorno de pruebas y repita el proceso, agregando pruebas adicionales o cargándolas según lo permita el entorno. Una vez que haya probado suficientemente la aplicación de esta manera, puede utilizar los métodos de implementación que configuró previamente para implementar la aplicación en producción (consulte Definición de estrategias de CI/CD anteriormente en esta guía). El artículo Automating safe, hands-off deployments
Prueba de carga
A primera vista, las pruebas de carga se parecen a las pruebas de integración. Pruebe una función discreta de la aplicación y sus dependencias externas para comprobar que funcione según lo esperado. Por lo tanto, las pruebas de carga van más allá de las pruebas de integración y se centran en el funcionamiento de la aplicación con cargas bien definidas. Las pruebas de carga requieren la verificación del buen funcionamiento, por lo que deben realizarse después de una prueba de integración correcta. Es importante entender en qué medida responde bien la aplicación a las cargas esperadas y cómo se comporta cuando la carga supera las expectativas. Esto lo ayuda a comprobar que ha implementado los mecanismos necesarios para garantizar que la aplicación siga siendo resiliente ante una carga extrema. Para obtener una guía completa sobre las pruebas de carga en AWS, consulte Distributed Load Testing on AWS