Microservicios de .NET: Arquitectura para aplicaciones .NET en contenedor.NET Microservices: Architecture for Containerized .NET Applications

Portada del libro

EDICIÓN v2.2: actualizada a ASP.NET Core 2.2EDITION v2.2 - Updated to ASP.NET Core 2.2

Esta guía es una introducción al desarrollo de aplicaciones basadas en microservicios y a su administración mediante contenedores.This guide is an introduction to developing microservices-based applications and managing them using containers. En ella se trata el diseño de la arquitectura y los métodos de implementación con .NET Core y contenedores de Docker.It discusses architectural design and implementation approaches using .NET Core and Docker containers.

Para que sea más fácil empezar a trabajar, la guía se centra en una aplicación de referencia en contenedor y basada en microservicios que puede explorar.To make it easier to get started, the guide focuses on a reference containerized and microservice-based application that you can explore. La aplicación de referencia está disponible en el repositorio de GitHub eShopOnContainers.The reference application is available at the eShopOnContainers GitHub repo.

IntroducciónIntroduction

Las empresas cada vez ahorran más costos, resuelven más problemas de implementación y mejoran más las operaciones de DevOps y producción mediante el uso de contenedores.Enterprises are increasingly realizing cost savings, solving deployment problems, and improving DevOps and production operations by using containers. Microsoft ha lanzado recientemente innovaciones en los contenedores de Windows y Linux con la creación de productos como Azure Kubernetes Service y Azure Service Fabric, contando además con la colaboración de líderes del sector como Docker, Mesosphere y Kubernetes.Microsoft has been releasing container innovations for Windows and Linux by creating products like Azure Kubernetes Service and Azure Service Fabric, and by partnering with industry leaders like Docker, Mesosphere, and Kubernetes. Estos productos ofrecen soluciones de contenedores que ayudan a las empresas a compilar e implementar aplicaciones a velocidad y escala de nube, sea cual sea la plataforma o las herramientas que hayan elegido.These products deliver container solutions that help companies build and deploy applications at cloud speed and scale, whatever their choice of platform or tools.

Docker se está convirtiendo en el estándar de facto del sector de los contenedores, ya que es compatible con los proveedores más importantes del ecosistema de Windows y Linux.Docker is becoming the de facto standard in the container industry, supported by the most significant vendors in the Windows and Linux ecosystems. (Microsoft es uno de los principales proveedores de nube que admite Docker). En el futuro, Docker probablemente estará omnipresente en todos los centros de datos en la nube o locales.(Microsoft is one of the main cloud vendors supporting Docker.) In the future, Docker will probably be ubiquitous in any datacenter in the cloud or on-premises.

Además, la arquitectura de microservicios se está convirtiendo en un enfoque fundamental para las aplicaciones críticas distribuidas.In addition, the microservices architecture is emerging as an important approach for distributed mission-critical applications. En una arquitectura basada en microservicios, la aplicación se basa en una colección de servicios que se pueden desarrollar, probar, implementar y versionar por separado.In a microservice-based architecture, the application is built on a collection of services that can be developed, tested, deployed, and versioned independently.

Acerca de esta guíaAbout this guide

Esta guía es una introducción al desarrollo de aplicaciones basadas en microservicios y a su administración mediante contenedores.This guide is an introduction to developing microservices-based applications and managing them using containers. En ella se trata el diseño de la arquitectura y los métodos de implementación con .NET Core y contenedores de Docker.It discusses architectural design and implementation approaches using .NET Core and Docker containers. Para que sea más fácil empezar a trabajar con contenedores y microservicios, la guía se centra en una aplicación de referencia en contenedor y basada en microservicios que puede explorar.To make it easier to get started with containers and microservices, the guide focuses on a reference containerized and microservice-based application that you can explore. Esta misma aplicación de ejemplo está disponible en el repositorio de GitHub eShopOnContainers.The sample application is available at the eShopOnContainers GitHub repo.

Esta guía incluye el desarrollo fundamental y una guía de arquitectura principalmente en el nivel del entorno de desarrollo con especial hincapié en dos tecnologías: Docker y .NET Core.This guide provides foundational development and architectural guidance primarily at a development environment level with a focus on two technologies: Docker and .NET Core. Nuestra intención es que lea esta guía cuando reflexione sobre el diseño de las aplicaciones sin centrarse en la infraestructura (en la nube o local) de su entorno de producción.Our intention is that you read this guide when thinking about your application design without focusing on the infrastructure (cloud or on-premises) of your production environment. Tomará decisiones sobre la infraestructura más adelante, cuando cree aplicaciones listas para la producción.You will make decisions about your infrastructure later, when you create your production-ready applications. Por lo tanto, esta guía está diseñada para ser independiente de la infraestructura y centrarse en el desarrollo y el entorno.Therefore, this guide is intended to be infrastructure agnostic and more development-environment-centric.

Una vez que haya estudiado esta guía, el siguiente paso que debería dar es obtener información sobre los microservicios listos para la producción en Microsoft Azure.After you have studied this guide, your next step would be to learn about production-ready microservices on Microsoft Azure.

VersiónVersion

Esta guía se ha revisado para tratar la versión .NET Core 2.2, además de muchas actualizaciones adicionales relacionadas con la misma “oleada” de tecnologías (es decir,This guide has been revised to cover .NET Core 2.2 version plus many additional updates related to the same “wave” of technologies (that is. tecnologías de Azure y tecnologías adicionales de terceros) que coincidan en el tiempo con .NET Core 2.2.Azure and additional 3rd party technologies) coinciding in time with .NET Core 2.2. Este es el motivo por el que la versión del libro se ha actualizado también a la versión 2.2.That’s why the book version has also been updated to version 2.2.

Aspectos no tratados en esta guíaWhat this guide does not cover

Esta guía no se centra en el ciclo de vida de la aplicación, DevOps, las canalizaciones CI/CD ni el trabajo de equipo.This guide does not focus on the application lifecycle, DevOps, CI/CD pipelines, or team work. La guía complementaria Containerized Docker Application Lifecycle with Microsoft Platform and Tools (Ciclo de vida de aplicaciones de Docker en contenedor con la plataforma y herramientas de Microsoft) se centra en esas cuestiones.The complementary guide Containerized Docker Application Lifecycle with Microsoft Platform and Tools focuses on that subject. La guía actual tampoco proporciona detalles de implementación de la infraestructura de Azure, como información sobre orquestadores específicos.The current guide also does not provide implementation details on Azure infrastructure, such as information on specific orchestrators.

Recursos adicionalesAdditional resources

  • Containerized Docker Application Lifecycle with Microsoft Platform and Tools (Ciclo de vida de aplicaciones de Docker en contenedor con la plataforma y las herramientas de Microsoft; libro electrónico descargable)Containerized Docker Application Lifecycle with Microsoft Platform and Tools (downloadable e-book)
    https://aka.ms/dockerlifecycleebook

Destinatarios de esta guíaWho should use this guide

Esta guía se ha escrito para desarrolladores y arquitectos de soluciones que no están familiarizados con el desarrollo de aplicaciones basado en Docker y la arquitectura basada en microservicios.We wrote this guide for developers and solution architects who are new to Docker-based application development and to microservices-based architecture. Esta guía será de su interés si quiere obtener información sobre cómo crear arquitecturas, diseñar e implementar aplicaciones de prueba de concepto con tecnologías de desarrollo de Microsoft (con un hincapié especial en .NET Core) y con contenedores de Docker.This guide is for you if you want to learn how to architect, design, and implement proof-of-concept applications with Microsoft development technologies (with special focus on .NET Core) and with Docker containers.

También le resultará útil si es el responsable de tomar decisiones técnicas (por ejemplo, un arquitecto empresarial) y necesita una descripción de la arquitectura y la tecnología antes de decidir qué enfoque tomar para el diseño de aplicaciones distribuidas tanto nuevas como modernas.You will also find this guide useful if you are a technical decision maker, such as an enterprise architect, who wants an architecture and technology overview before you decide on what approach to select for new and modern distributed applications.

Cómo usar esta guíaHow to use this guide

La primera parte de esta guía presenta los contenedores de Docker, describe cómo elegir entre .NET Core y .NET Framework como marco de desarrollo y proporciona una visión general de los microservicios.The first part of this guide introduces Docker containers, discusses how to choose between .NET Core and the .NET Framework as a development framework, and provides an overview of microservices. Este contenido está destinado a arquitectos y responsables de la toma de decisiones técnicas que quieren obtener información general pero que no necesitan centrarse en los detalles de la implementación de código.This content is for architects and technical decision makers who want an overview but don't need to focus on code implementation details.

La segunda parte de la guía comienza con la sección Proceso de desarrollo de aplicaciones basadas en Docker.The second part of the guide starts with the Development process for Docker based applications section. Se centra en los patrones de desarrollo y microservicios usados en la implementación de las aplicaciones que utilizan .NET Core y Docker.It focuses on development and microservice patterns for implementing applications using .NET Core and Docker. Esta sección será de gran interés para los desarrolladores y los arquitectos que quieran centrarse en el código, en los patrones y los detalles de implementación.This section will be of most interest to developers and architects who want to focus on code and on patterns and implementation details.

La aplicación eShopOnContainers es una aplicación de referencia de código abierto para .NET Core y microservicios que está diseñada para implementarse mediante contenedores de Docker.The eShopOnContainers application is an open-source reference app for .NET Core and microservices that is designed to be deployed using Docker containers. La aplicación consta de varios subsistemas, incluidos varios front-end de interfaz de usuario de almacén electrónico (una aplicación web de MVC, una SPA web y una aplicación móvil nativa).The application consists of multiple subsystems, including several e-store UI front ends (a Web MVC app, a Web SPA, and a native mobile app). También incluye microservicios y contenedores de back-end para todas las operaciones del lado servidor necesarias.It also includes the back-end microservices and containers for all required server-side operations.

El propósito de la aplicación es presentar patrones arquitectónicos.The purpose of the application is to showcase architectural patterns. NO SE TRATA DE UNA PLANTILLA LISTA PARA PRODUCCIÓN para iniciar aplicaciones del mundo real.IT IS NOT A PRODUCTION-READY TEMPLATE to start real-world applications. De hecho, la aplicación se encuentra en un estado beta permanente, ya que también se usa para probar nuevas tecnologías potencialmente interesantes a medida que aparecen.In fact, the application is in a permanent beta state, as it’s also used to test new potentially interesting technologies as they show up.

Envíenos sus comentarios.Send us your feedback!

Hemos creado esta guía para ayudarle a entender la arquitectura de aplicaciones y microservicios en contenedor en .NET.We wrote this guide to help you understand the architecture of containerized applications and microservices in .NET. La guía y la aplicación de referencia relacionada irán evolucionando, por lo que le agradecemos sus comentarios.The guide and related reference application will be evolving, so we welcome your feedback! Si tiene comentarios sobre cómo se puede mejorar esta guía, envíelos a:If you have comments about how this guide can be improved, please send them to:

dotnet-architecture-ebooks-feedback@service.microsoft.com

CréditosCredits

Coautores:Co-Authors:

Cesar de la Torre, administrador de programas sénior del equipo de producto de .NET, Microsoft Corp.Cesar de la Torre, Sr. PM, .NET product team, Microsoft Corp.

Bill Wagner, desarrollador de contenido sénior de C+E, Microsoft Corp.Bill Wagner, Sr. Content Developer, C+E, Microsoft Corp.

Mike Rousos, ingeniero de software principal del equipo de CAT de la división de desarrollo, MicrosoftMike Rousos, Principal Software Engineer, DevDiv CAT team, Microsoft

Editores:Editors:

Mike PopeMike Pope

Steve HoagSteve Hoag

Participantes y revisores:Participants and reviewers:

Jeffrey Richter, ingeniero de software asociado del equipo de Azure, MicrosoftJeffrey Richter, Partner Software Eng, Azure team, Microsoft

Jimmy Bogard, arquitecto jefe de HeadspringJimmy Bogard, Chief Architect at Headspring

Udi Dahan, fundador y director general de Particular SoftwareUdi Dahan, Founder & CEO, Particular Software

Jimmy Nilsson, cofundador y director general de Factor10Jimmy Nilsson, Co-founder and CEO of Factor10

Glenn Condron, director de programas sénior del equipo de ASP.NETGlenn Condron, Sr. Program Manager, ASP.NET team

Mark Fussell, responsable principal de administración de programas del equipo de Azure Service Fabric, MicrosoftMark Fussell, Principal PM Lead, Azure Service Fabric team, Microsoft

Diego Vega, responsable de administración de programas del equipo de Entity Framework, MicrosoftDiego Vega, PM Lead, Entity Framework team, Microsoft

Barry Dorrans, director de programas de seguridad séniorBarry Dorrans, Sr. Security Program Manager

Rowan Miller, director de programas sénior, MicrosoftRowan Miller, Sr. Program Manager, Microsoft

Ankit Asthana, director principal de administración de programas del equipo de .NET, MicrosoftAnkit Asthana, Principal PM Manager, .NET team, Microsoft

Scott Hunter, director asociado de administración de programas del equipo de .NET, MicrosoftScott Hunter, Partner Director PM, .NET team, Microsoft

Nish Anil, director de administración de programas, equipo de .NET, MicrosoftNish Anil, Sr. Program Manager, .NET team, Microsoft

Dylan Reisenberger, arquitecto y responsable de desarrollo de PollyDylan Reisenberger, Architect and Dev Lead at Polly

Steve "ardalis" Smith: instructor y arquitecto de software de Ardalis.comSteve "ardalis" Smith - Software Architect and Trainer - Ardalis.com

Cooper Ian, arquitecto de codificación de BrighterIan Cooper, Coding Architect at Brighter

Unai Zorrilla, arquitecto y responsable de desarrollo de Plain ConceptsUnai Zorrilla, Architect and Dev Lead at Plain Concepts

Eduard Tomas, responsable de desarrollo de Plain ConceptsEduard Tomas, Dev Lead at Plain Concepts

Ramon Tomas, desarrollador de Plain ConceptsRamon Tomas, Developer at Plain Concepts

David Sanz, desarrollador de Plain ConceptsDavid Sanz, Developer at Plain Concepts

Javier Valero, director de operaciones de Grupo SolutioJavier Valero, Chief Operating Officer at Grupo Solutio

Pierre Millet, consultor sénior, MicrosoftPierre Millet, Sr. Consultant, Microsoft

Michael Friis, administrador de productos de Docker Inc.Michael Friis, Product Manager, Docker Inc

Charles Lowell, ingeniero de software del equipo de CAT de VS, MicrosoftCharles Lowell, Software Engineer, VS CAT team, Microsoft

Miguel Veloso, consultor sénior en Turing ChallengeMiguel Veloso, Sr. Consultant at Turing Challenge

DESCARGA disponible en: https://aka.ms/microservicesebookDOWNLOAD available at: https://aka.ms/microservicesebook

PUBLICADO PORPUBLISHED BY

Equipos de producto de la División de desarrolladores de Microsoft, .NET y Visual StudioMicrosoft Developer Division, .NET and Visual Studio product teams

División de Microsoft CorporationA division of Microsoft Corporation

One Microsoft WayOne Microsoft Way

Redmond, Washington 98052-6399Redmond, Washington 98052-6399

Copyright © 2019 de Microsoft CorporationCopyright © 2019 by Microsoft Corporation

Todos los derechos reservados.All rights reserved. No se puede reproducir ni transmitir de ninguna forma ni por ningún medio ninguna parte del contenido de este libro sin la autorización por escrito del publicador.No part of the contents of this book may be reproduced or transmitted in any form or by any means without the written permission of the publisher.

Este libro se proporciona “tal cual” y expresa las opiniones del autor.This book is provided “as-is” and expresses the author’s views and opinions. Las opiniones y la información expresados en este libro, incluidas las direcciones URL y otras referencias a sitios web de Internet, pueden cambiar sin previo aviso.The views, opinions and information expressed in this book, including URL and other Internet website references, may change without notice.

Algunos ejemplos descritos aquí se proporcionan únicamente con fines ilustrativos y son ficticios.Some examples depicted herein are provided for illustration only and are fictitious. No debe deducirse ninguna asociación ni conexión reales.No real association or connection is intended or should be inferred.

Microsoft y las marcas comerciales indicadas en https://www.microsoft.com en la página web "Marcas comerciales" pertenecen al grupo de empresas de Microsoft.Microsoft and the trademarks listed at https://www.microsoft.com on the “Trademarks” webpage are trademarks of the Microsoft group of companies.

Mac y macOS son marcas comerciales de Apple Inc.Mac and macOS are trademarks of Apple Inc.

El logotipo de la ballena de Docker es una marca registrada de Docker, Inc. Se usa con permiso.The Docker whale logo is a registered trademark of Docker, Inc. Used by permission.

El resto de marcas y logotipos pertenece a sus respectivos propietarios.All other marks and logos are property of their respective owners.