Introducción
Cada vez más, las empresas están logrando ahorros en los costes, resolviendo problemas de despliegue de las aplicaciones y mejorando las actividades de desarrollo y operaciones, con la utilización de contenedores. Microsoft ha desarrollado y liberado innovaciones en contenedores para Windows y para Linux, creando productos como como el Azure Container Service y el Azure Service Fabric y aliándose con líderes de la industria como Docker, Mesosphere y Kubernetes. Estas compañías proveen soluciones de contenedores que ayudan a las empresas a construir y desplegar aplicaciones a la velocidad y escala que se manejan en la nube, sin importar las plataformas o herramientas que utilicen.
Docker se ha convertido en el estándar de facto en la industria de contenedores, siendo soportado por las empresas más significativas en los ecosistemas de Windows y Linux. (Microsoft es uno de los principales proveedores de la nube que soportan Docker.) En el futuro, Docker será omnipresente en cualquier centro de datos en la nube o en instalaciones internas (on-premises).
Además, la arquitectura de microservicios está surgiendo como un enfoque importante para las aplicaciones distribuidas de misión-crítica. En una arquitectura basada en microservicios, la aplicación se construye como una colección de servicios que se pueden desarrollar, probar, desplegar y versionar de forma independiente.
Esta guía es una introducción al desarrollo de aplicaciones basadas en microservicios y en su gestión usando contenedores. Se discuten enfoques arquitectónicos y de implementación con .NET Core y contenedores Docker. Con el fin de facilitar el inicio con contenedores y microservicios, la guía se enfoca en una aplicación de referencia basada en microservicios y desplegada en contenedores, que puede explorar fácilmente. La aplicación de ejemplo está disponible en el repositorio eShopOnContainers en GitHub.
Esta guía provee una orientación en cuanto a fundamentos de desarrollo y arquitectura, principalmente en el ámbito del desarrollo, enfocándose en dos tecnologías base: Docker y .NET Core. Nuestra intención es que lea la guía cuando esté trabajando en el diseño de su aplicación, sin preocuparse por la infraestructura del entorno de producción (sin importar si será en la nube o interno). Las decisiones de infraestructura se realizarán más tarde, cuando al desarrollar aplicaciones a nivel de producción real. Por lo tanto, está guía pretende ser agnóstica de la infraestructura y estar más orientada hacia el entorno de desarrollo.
Al terminar el estudio de esta guía, su próximo paso debería ser aprender acerca de microservicios a nivel de producción en Microsoft Azure.
Está guía ha sido actualizada para cubrir la versión .NET Core 2, así como muchas actualizaciones relacionadas con tecnologías de misma “onda” (esto es Azure y otras tecnologías de terceros) que se han liberado simultáneamente con .NET Core 2.
Esta guía no se enfoca en el ciclo de vida de las aplicaciones, es decir, DevOps, CI/CD pipelines (Líneas de procesos de integración y entrega continua) o trabajo en equipo. La guía complementaria Containerized Docker Application Lifecycle with Microsoft Platform and Tools se enfoca en esos temas.
Tampoco se cubre el despliegue de aplicaciones web ASP.NET Core basadas en un solo contendor o la migración de aplicaciones legacy monolíticas, en .NET Framework, a contenedores Windows. La guía complementaria Modernize existing .NET Framework applications with Azure and Windows Containers.
Tampoco se incluyen detalles de implementación en Azure, tal como información sobre orquestadores específicos.
Escribimos está guía para desarrolladores y arquitectos que quieren o están comenzando en el desarrollo de soluciones basadas en Docker y la arquitectura basada en micro servicios. Esta guía le ayudará si quiere aprender cómo definir la arquitectura, diseñar e implementar aplicaciones, como pruebas de concepto, con las tecnologías de desarrollo de Microsoft (especialmente con .NET Core) y con contenedores Docker.
También la encontrará útil si es responsable de decisiones técnicas, como un arquitecto empresarial, que desea tener una visión general de la arquitectura y la tecnología, antes de seleccionar el enfoque adecuado para nuevas aplicaciones modernas y distribuidas.
La primera parte de esta guía presenta los contenedores Docker y la discusión sobre cómo seleccionar entre .NET Core y .NET Framework, como framework de desarrollo y también presenta una visión general de los microservicios. Este contenido es para arquitectos y responsables de las decisiones técnicas que quieren tener una visión general pero no necesitan enfocarse en los detalles de implementación.
La segunda parte de la guía comienza con la sección El proceso de desarrollo de aplicaciones basadas en Docker. Se enfoca en patrones de desarrollo y microservicios para implementar aplicaciones usando .NET Core y Docker. Esta sección será muy interesante para arquitectos y desarrolladores que se quieran enfocar en el código y en los patrones, así como en los detalles de implementación.
La aplicación eShopOnContainers es una aplicación de referencia open source para .NET Core y microservicios, diseñada para ser desplegada en contenedores Docker. La aplicación contiene múltiples sub-sistemas, incluyendo varios tipos de interfaces de usuario para la tienda en línea (una aplicación web y una aplicación móvil nativa). También incluye un back-end de microservicios y contenedores para todas las operaciones en el servidor.
Escribimos esta guía para ayudarle a entender la arquitectura de aplicaciones basada en microservicios y contenedores en .NET. Tanto la guía como la aplicación de referencia estarán evolucionando continuamente, así que le agradecemos sus comentarios. Si tiene alguna opinión o sugerencia para mejorar esta guía, por favor envíelas a: dotnet-architecture-ebooks-feedback@service.microsoft.com