Partekatu honen bidez:


Conclusiones clave de arquitectura de microservicios de .NET

Sugerencia

Este contenido es un extracto del libro electrónico, ".NET Microservices Architecture for Containerized .NET Applications" (Arquitectura de microservicios de .NET para aplicaciones de .NET contenedorizadas), disponible en Documentación de .NET o como un PDF descargable y gratuito que se puede leer sin conexión.

Miniatura de la portada del libro electrónico 'Arquitectura de microservicios de .NET para aplicaciones .NET contenedorizadas'.

Como resumen y conclusiones clave, las siguientes son las conclusiones más importantes de esta guía.

Ventajas de usar contenedores. Las soluciones basadas en contenedores proporcionan importantes ahorros de costos porque ayudan a reducir los problemas de implementación causados por dependencias con errores en entornos de producción. Los contenedores mejoran significativamente las operaciones de DevOps y producción.

Los contenedores serán omnipresentes. Los contenedores basados en Docker se están convirtiendo en el estándar de facto del sector, compatibles con proveedores clave en los ecosistemas de Windows y Linux, como Microsoft, Amazon AWS, Google e IBM. Docker probablemente pronto estará omnipresente tanto en la nube como en los centros de datos locales.

Los contenedores como una unidad de implementación. Un contenedor de Docker se está convirtiendo en la unidad estándar de implementación para cualquier aplicación o servicio basado en servidor.

Microservicios. La arquitectura de microservicios se está convirtiendo en el enfoque preferido para aplicaciones críticas distribuidas y grandes o complejas basadas en muchos subsistemas independientes en forma de servicios autónomos. En una arquitectura basada en microservicios, la aplicación se crea como una colección de servicios desarrollados, probados, versionados, implementados y escalados de forma independiente. Cada servicio puede incluir cualquier base de datos autónoma relacionada.

Diseño controlado por dominio y SOA. Los patrones de arquitectura de microservicios derivan de la arquitectura orientada a servicios (SOA) y el diseño controlado por dominio (DDD). Al diseñar y desarrollar microservicios para entornos con necesidades y reglas empresariales en constante evolución, es importante tener en cuenta los enfoques y patrones de DDD.

Desafíos de los microservicios. Los microservicios ofrecen muchas funcionalidades eficaces, como la implementación independiente, los límites sólidos del subsistema y la diversidad tecnológica. Sin embargo, también generan muchos nuevos desafíos relacionados con el desarrollo de aplicaciones distribuidas, como modelos de datos fragmentados e independientes, comunicación resistente entre microservicios, coherencia final y complejidad operativa que resulta de agregar información de registro y supervisión de varios microservicios. Estos aspectos presentan un nivel de complejidad mucho mayor que una aplicación monolítica tradicional. Como resultado, solo los escenarios específicos son adecuados para aplicaciones basadas en microservicios. Entre ellas se incluyen aplicaciones grandes y complejas con varios subsistemas en evolución. En estos casos, vale la pena invertir en una arquitectura de software más compleja, ya que proporcionará una mejor agilidad a largo plazo y mantenimiento de aplicaciones.

Contenedores para cualquier aplicación. Los contenedores son cómodos para los microservicios, pero también pueden ser útiles para las aplicaciones monolíticas basadas en .NET Framework tradicional, cuando se usan contenedores de Windows. Las ventajas de usar Docker, como resolver muchos problemas de implementación a producción y proporcionar entornos de desarrollo y pruebas de última generación, se aplican a muchos tipos diferentes de aplicaciones.

CLI frente a IDE. Con las herramientas de Microsoft, puede desarrollar aplicaciones .NET en contenedor mediante su enfoque preferido. Puede desarrollar con una CLI y un entorno basado en editor mediante la CLI de Docker y Visual Studio Code. También puedes utilizar un enfoque basado en el IDE con Visual Studio y sus características exclusivas para Docker, como la depuración de múltiples contenedores.

Aplicaciones en la nube resistentes. En los sistemas basados en la nube y los sistemas distribuidos en general, siempre existe el riesgo de errores parciales. Dado que los clientes y servicios son procesos independientes (contenedores), es posible que un servicio no pueda responder de forma oportuna a la solicitud de un cliente. Por ejemplo, un servicio podría estar inactivo debido a un error parcial o por mantenimiento; es posible que el servicio se sobrecargue y responda lentamente a las solicitudes; o puede que no sea accesible durante un breve tiempo debido a problemas de red. Por lo tanto, una aplicación basada en la nube debe adoptar esos errores y tener una estrategia en vigor para responder a esos errores. Estas estrategias pueden incluir políticas de reintento (reenvío de mensajes o intentos de solicitud) e implementar patrones de corte de circuito para evitar la carga exponencial de solicitudes repetidas. Básicamente, las aplicaciones basadas en la nube deben tener mecanismos resistentes, ya sea en función de la infraestructura de la nube o personalizados, como los de alto nivel proporcionados por orquestadores o buses de servicio.

Seguridad. Nuestro mundo moderno de contenedores y microservicios puede exponer nuevas vulnerabilidades. Hay varias maneras de implementar la seguridad básica de las aplicaciones, en función de la autenticación y la autorización. Sin embargo, la seguridad de los contenedores debe tener en cuenta componentes clave adicionales que dan lugar a aplicaciones intrínsecamente más seguras. Un elemento fundamental de la creación de aplicaciones más seguras es tener una forma segura de comunicarse con otras aplicaciones y sistemas, algo que a menudo requiere credenciales, tokens, contraseñas y como, por lo general, conocido como secretos de aplicación. Cualquier solución segura debe seguir los procedimientos recomendados de seguridad, como cifrar secretos mientras están en tránsito y en reposo, e impedir que los secretos se filtren cuando la aplicación final lo consuma. Esos secretos deben almacenarse y mantenerse de forma segura, como cuando se usa Azure Key Vault.

Orquestadores. Los orquestadores basados en contenedores, como Azure Kubernetes Service y Azure Service Fabric, forman parte fundamental de cualquier aplicación significativa basada en microservicios y contenedores. Estas aplicaciones implican una complejidad elevada, demandas de escalabilidad y pasan por una evolución constante. En esta guía se han introducido orquestadores y su rol en soluciones basadas en microservicios y basadas en contenedores. Si las necesidades de su aplicación están haciendo que se incline hacia aplicaciones albergadas en contenedores complejas, le resultará útil buscar recursos adicionales para obtener más información sobre herramientas de orquestación de aplicaciones.