Desarrollo y pruebas más rápidos con el desarrollo apoyado en contenedores
Los contenedores ofrecen una forma consistente de compilar, compartir y ejecutar aplicaciones en diferentes entornos. Aunque los contenedores se utilizan normalmente para contenedorizar tu aplicación, también facilitan enormemente la ejecución de los servicios esenciales necesarios para el desarrollo. En lugar de instalar o conectarse a una base de datos remota, puedes iniciar fácilmente tu propia base de datos. Pero las posibilidades no terminan ahí.
Con el desarrollo apoyado en contenedores (container-supported development), utilizas contenedores para mejorar tu entorno de desarrollo al emular o ejecutar tus propias instancias de los servicios que necesita tu aplicación. Esto proporciona ciclos de retroalimentación más rápidos, menos acoplamiento con servicios remotos y una mayor capacidad para probar estados de error.
Y lo mejor de todo es que puedes obtener estos beneficios independientemente de si la aplicación principal en desarrollo se ejecuta o no en contenedores.
Qué aprenderás
- El significado del desarrollo apoyado en contenedores
- Cómo conectar aplicaciones no contenedorizadas a servicios contenedorizados
- Varios ejemplos de uso de contenedores para emular o ejecutar instancias locales de servicios
- Cómo usar contenedores para añadir herramientas adicionales de resolución de problemas y depuración a tu entorno de desarrollo
¿Para quién es esto?
- Equipos que desean reducir el acoplamiento que tienen con infraestructuras compartidas o desplegadas o endpoints de API remotos
- Equipos que desean reducir la complejidad y los costes asociados con el uso directo de servicios en la nube durante el desarrollo
- Desarrolladores que desean facilitar la visualización de lo que sucede en sus bases de datos, colas, etc.
- Equipos que desean reducir la complejidad de configurar su entorno de desarrollo sin afectar el desarrollo de la aplicación en sí
Integración de herramientas
Funciona muy bien con Docker Compose y Testcontainers.
Módulos
¿Qué es el desarrollo apoyado en contenedores?
El desarrollo apoyado en contenedores es la idea de utilizar contenedores para mejorar tu entorno de desarrollo mediante la ejecución de instancias locales o emuladores de los servicios de los que depende tu aplicación. Una vez que usas contenedores, es fácil añadir servicios adicionales para visualizar o solucionar problemas de lo que sucede en tus servicios.
Demostración: ejecutar bases de datos localmente
Con el desarrollo apoyado en contenedores, es fácil ejecutar bases de datos localmente. En esta demostración, verás cómo hacerlo, así como la forma de conectar una aplicación no contenedorizada a la base de datos.
TipObtén más información sobre la ejecución de bases de datos en contenedores en la guía Usar bases de datos contenedorizadas.
Demostración: simular (mocking) endpoints de API
Muchas APIs requieren datos de otros endpoints de datos. En desarrollo, esto añade complejidades como el intercambio de credenciales, el tiempo de actividad/disponibilidad y la limitación de peticiones (rate limiting). En lugar de depender directamente de esos servicios, tu aplicación puede interactuar con un servidor de API simulado (mock).
Esta demostración mostrará cómo el uso de WireMock puede facilitar el desarrollo y las pruebas de una aplicación, incluidos los distintos estados de error de las APIs.
TipObtén más información sobre el uso de WireMock para simular APIs en la guía Simular servicios de API con WireMock.
Demostración: desarrollar en la nube de forma local
Al desarrollar aplicaciones, a menudo es más sencillo subcontratar aspectos de la aplicación a servicios en la nube, como Amazon S3. Sin embargo, conectarse a esos servicios en el desarrollo local introduce políticas de IAM, restricciones de red y complicaciones de aprovisionamiento. Aunque estos requisitos son importantes en un entorno de producción, complican significativamente los entornos de desarrollo.
Con el desarrollo apoyado en contenedores, puedes ejecutar instancias locales de estos servicios durante el desarrollo y las pruebas, eliminando la necesidad de configuraciones complejas. En esta demostración, verás cómo LocalStack facilita el desarrollo y las pruebas de aplicaciones completamente desde la estación de trabajo del desarrollador.
TipObtén más información sobre el uso de LocalStack en la guía Desarrollar y probar aplicaciones AWS en la nube usando LocalStack.
Demostración: añadir herramientas adicionales de depuración y resolución de problemas
Una vez que empiezas a usar contenedores en tu entorno de desarrollo, resulta mucho más sencillo añadir contenedores adicionales para visualizar el contenido de las bases de datos o colas de mensajes, inicializar almacenes de documentos (seed document stores) o publicadores de eventos. En esta demostración, verás algunos de estos ejemplos, así como la forma en que puedes conectar múltiples contenedores entre sí para facilitar aún más las pruebas.