Microsserviços do .NET: Arquitetura de aplicativos .NET em contêineres.NET Microservices: Architecture for Containerized .NET Applications

Capa do livro

EDIÇÃO v2.2.00 – atualizada para o ASP.NET Core 2.2EDITION v2.2.00 - Updated to ASP.NET Core 2.2

Este guia é uma introdução ao desenvolvimento de aplicativos com base em microsserviços e ao gerenciamento deles usando contêineres.This guide is an introduction to developing microservices-based applications and managing them using containers. Ele discute as abordagens de design de arquitetura e de implementação usando o .NET Core e os contêineres do Docker.It discusses architectural design and implementation approaches using .NET Core and Docker containers.

Para facilitar a introdução, o guia concentra-se em um aplicativo de referência em contêineres e baseado em microsserviços que você pode explorar.To make it easier to get started, the guide focuses on a reference containerized and microservice-based application that you can explore. O aplicativo de referência está disponível no repositório GitHub eShopOnContainers.The reference application is available at the eShopOnContainers GitHub repo.

IntroduçãoIntroduction

As empresas estão cada vez mais percebendo a economia de custo, resolvendo problemas de implantação e melhorando as operações de produção e de DevOps usando os contêineres.Enterprises are increasingly realizing cost savings, solving deployment problems, and improving DevOps and production operations by using containers. A Microsoft tem lançando inovações de contêiner para Windows e Linux com a criação de produtos como o Serviço de Contêiner do Azure e o Azure Service Fabric e por meio de parcerias com líderes do setor como a Docker, a Mesosphere e a Kubernetes.Microsoft has been releasing container innovations for Windows and Linux by creating products like Azure Container Service and Azure Service Fabric, and by partnering with industry leaders like Docker, Mesosphere, and Kubernetes. Esses produtos oferecem soluções de contêiner que ajudam as empresas a criar e implantar aplicativos com a velocidade e a escala da nuvem, seja qual for a escolha de plataformas ou de ferramentas.These products deliver container solutions that help companies build and deploy applications at cloud speed and scale, whatever their choice of platform or tools.

O Docker está se tornando o verdadeiro padrão no setor de contêineres, com suporte dos fornecedores mais significativos nos ecossistemas do Windows e do Linux.Docker is becoming the de facto standard in the container industry, supported by the most significant vendors in the Windows and Linux ecosystems. (A Microsoft é um dos principais fornecedores de nuvem com suporte para o Docker). No futuro, o Docker provavelmente será onipresente em qualquer datacenter na nuvem ou local.(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.

Além disso, a arquitetura de microsserviços está despontando como uma abordagem importante para aplicativos críticos distribuídos.In addition, the microservices architecture is emerging as an important approach for distributed mission-critical applications. Em uma arquitetura baseada em microsserviço, o aplicativo é criado em uma coleção de serviços que podem ser desenvolvidos, testados, implantados e ter as versões controladas de forma independente.In a microservice-based architecture, the application is built on a collection of services that can be developed, tested, deployed, and versioned independently.

Sobre este guiaAbout this guide

Este guia é uma introdução ao desenvolvimento de aplicativos com base em microsserviços e ao gerenciamento deles usando contêineres.This guide is an introduction to developing microservices-based applications and managing them using containers. Ele discute as abordagens de design de arquitetura e de implementação usando o .NET Core e os contêineres do Docker.It discusses architectural design and implementation approaches using .NET Core and Docker containers. Para facilitar a introdução aos contêineres e microsserviços, o guia concentra-se em um aplicativo de referência em contêineres e baseado em microsserviços que você pode 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. O aplicativo de exemplo está disponível no repositório eShopOnContainers do GitHub.The sample application is available at the eShopOnContainers GitHub repo.

Este guia fornece diretrizes básicas de desenvolvimento e de arquitetura, principalmente no nível do ambiente de desenvolvimento, com foco em duas tecnologias: Docker e .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. Nossa intenção é que você leia este guia, ao pensar sobre o design do aplicativo sem focar a infraestrutura (nuvem ou local) do ambiente de produção.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. Você tomará decisões sobre a infraestrutura mais tarde, quando criar seus aplicativos prontos para produção.You will make decisions about your infrastructure later, when you create your production-ready applications. Portanto, este guia tem a intenção de ser independente da infraestrutura e mais centrado no ambiente de desenvolvimento.Therefore, this guide is intended to be infrastructure agnostic and more development-environment-centric.

Depois de estudar este guia, a próxima etapa será saber mais sobre os microsserviços pronto para produção no Microsoft Azure.After you have studied this guide, your next step would be to learn about production-ready microservices on Microsoft Azure.

VersãoVersion

Este guia foi revisado para abordar a versão do .NET Core 2.2, além de muitas outras atualizações relacionadas à mesma "onda" de tecnologias (ou seja,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. as tecnologias do Azure e outras de terceiros) simultâneas ao .NET Core 2.2.Azure and additional 3rd party technologies) coinciding in time with .NET Core 2.2. É por isso que a versão do guia também foi atualizada para a versão 2.2.That’s why the book version has also been updated to version 2.2.

O que este guia não cobreWhat this guide does not cover

Este guia não se concentra no ciclo de vida do aplicativo, em DevOps, nos pipelines de CI/CD nem no trabalho da equipe.This guide does not focus on the application lifecycle, DevOps, CI/CD pipelines, or team work. O guia complementar Containerized Docker Application Lifecycle with Microsoft Platform and Tools (Ciclo de vida de aplicativo do Docker em contêineres com a plataforma e as ferramentas da Microsoft) trata desse assunto.The complementary guide Containerized Docker Application Lifecycle with Microsoft Platform and Tools focuses on that subject. O guia atual também não fornece detalhes de implementação na infraestrutura do Azure, como informações sobre orquestradores específicos.The current guide also does not provide implementation details on Azure infrastructure, such as information on specific orchestrators.

Recursos adicionaisAdditional resources

  • Ciclo de vida do aplicativo do Docker em contêineres com a plataforma e as ferramentas da Microsoft (livro eletrônico para download)Containerized Docker Application Lifecycle with Microsoft Platform and Tools (downloadable e-book)
    https://aka.ms/dockerlifecycleebook

Quem deve usar este guiaWho should use this guide

Escrevemos este guia para desenvolvedores e arquitetos de solução que são novos no desenvolvimento de aplicativos com base no Docker e em arquitetura baseada em microsserviços.We wrote this guide for developers and solution architects who are new to Docker-based application development and to microservices-based architecture. Este guia será indicado para você se desejar saber como arquitetar, projetar e implementar aplicativos de prova de conceito com tecnologias de desenvolvimento da Microsoft (com foco especial no .NET Core) e com contêineres do 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.

Esse guia também será útil se você for um tomador de decisões técnicas, como um arquiteto corporativo que deseja ter uma visão geral da arquitetura e da tecnologia antes de decidir qual abordagem selecionar para aplicativos distribuídos novos e modernos.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.

Como usar este guiaHow to use this guide

A primeira parte deste guia apresenta os contêineres do Docker, discute como escolher entre o .NET Core e o .NET Framework como estrutura de desenvolvimento e fornece uma visão geral sobre microsserviços.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 conteúdo é para arquitetos e tomadores de decisões técnicas que desejam ter uma visão geral, mas que não precisam se concentrar nos detalhes da implementação 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.

A segunda parte do guia de começa com a seção Processo de desenvolvimento de aplicativos baseados no Docker.The second part of the guide starts with the Development process for Docker based applications section. Ela se concentra nos padrões de desenvolvimento e de microsserviços para implementar aplicativos que usam o .NET Core e o Docker.It focuses on development and microservice patterns for implementing applications using .NET Core and Docker. Esta seção será de interesse especial para desenvolvedores e arquitetos que desejam se concentrar no código, nos padrões e nos detalhes de implementação.This section will be of most interest to developers and architects who want to focus on code and on patterns and implementation details.

O aplicativo eShopOnContainers é um aplicativo de referência de software livre para .NET Core e microsserviços criado para ser implantado usando contêineres do Docker.The eShopOnContainers application is an open-source reference app for .NET Core and microservices that is designed to be deployed using Docker containers. O aplicativo é composto de vários subsistemas, incluindo vários front-ends de interface do usuário de loja virtual (um aplicativo Web MVC, um SPA Web e um aplicativo móvel nativo).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). Ele também inclui os microsserviços e os contêineres de back-end de todas as operações do servidor necessárias.It also includes the back-end microservices and containers for all required server-side operations.

A finalidade do aplicativo é demonstrar padrões de arquitetura.The purpose of the application is to showcase architectural patterns. A TI NÃO É UM MODELO PRONTO PARA PRODUÇÃO para iniciar aplicativos de mundo real.IT IS NOT A PRODUCTION-READY TEMPLATE to start real-world applications. Na verdade, o aplicativo está em um estado beta permanente, porque também é usado para testar novas tecnologias potencialmente interessantes, à medida que aparecem.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.

Envie-nos seus comentários!Send us your feedback!

Escrevemos este guia para ajudá-lo a entender a arquitetura de aplicativos em contêineres e de microsserviços no .NET.We wrote this guide to help you understand the architecture of containerized applications and microservices in .NET. O guia e o aplicativo de referência relacionado continuarão sendo desenvolvidos, portanto seus comentários são bem-vindos!The guide and related reference application will be evolving, so we welcome your feedback! Se você tiver comentários sobre como este guia poderá ser melhorado, envie-os para: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, Gerente sênior de produtos , equipe de produto do .NET, Microsoft Corp.Cesar de la Torre, Sr. PM, .NET product team, Microsoft Corp.

Bill Wagner, Desenvolvedor sênior de conteúdo, C+E, Microsoft Corp.Bill Wagner, Sr. Content Developer, C+E, Microsoft Corp.

Mike Rousos, Engenheiro de Software Principal, equipe DevDiv CAT, MicrosoftMike Rousos, Principal Software Engineer, DevDiv CAT team, Microsoft

Editores:Editors:

Mike PopeMike Pope

Steve HoagSteve Hoag

Participantes e revisores:Participants and reviewers:

Jeffrey Richter, engenheiro de software parceiro, equipe do Azure, MicrosoftJeffrey Richter, Partner Software Eng, Azure team, Microsoft

Jimmy Bogard, Arquiteto Chefe na HeadspringJimmy Bogard, Chief Architect at Headspring

Udi Dahan, Fundador e CEO, Particular SoftwareUdi Dahan, Founder & CEO, Particular Software

Jimmy Nilsson, Cofundador e CEO da Factor10Jimmy Nilsson, Co-founder and CEO of Factor10

Glenn Condron, Gerente sênior de programas, equipe do ASP.NETGlenn Condron, Sr. Program Manager, ASP.NET team

Mark Fussell, PM Líder Principal, equipe do Azure Service Fabric, MicrosoftMark Fussell, Principal PM Lead, Azure Service Fabric team, Microsoft

Diego Vega, PM Líder, equipe do Entity Framework, MicrosoftDiego Vega, PM Lead, Entity Framework team, Microsoft

Barry Dorrans, gerente de programas de segurança sêniorBarry Dorrans, Sr. Security Program Manager

Rowan Miller, Gerente sênior de programas, MicrosoftRowan Miller, Sr. Program Manager, Microsoft

Ankit Asthana, Gerente de PM Principal, equipe do .NET, MicrosoftAnkit Asthana, Principal PM Manager, .NET team, Microsoft

Scott Hunter, PM Diretor de Parceiro, equipe do .NET, MicrosoftScott Hunter, Partner Director PM, .NET team, Microsoft

Nish Anil, Gerente de Programa Sênior, Equipe .NET, MicrosoftNish Anil, Sr. Program Manager, .NET team, Microsoft

Dylan Reisenberger, Arquiteto e Desenvolvedor Líder na PollyDylan Reisenberger, Architect and Dev Lead at Polly

Steve Smith, Especialista e Instrutor em Software na ASPSmith Ltd.Steve Smith, Software Craftsman & Trainer at ASPSmith Ltd.

Cooper Ian, Arquiteto de Codificação na BrighterIan Cooper, Coding Architect at Brighter

Unai Zorrilla, Arquiteto e Desenvolvedor Líder na Plain ConceptsUnai Zorrilla, Architect and Dev Lead at Plain Concepts

Eduard Tomas, Desenvolvedor Líder na Plain ConceptsEduard Tomas, Dev Lead at Plain Concepts

Ramon Tomas, Desenvolvedor na Plain ConceptsRamon Tomas, Developer at Plain Concepts

David Sanz, Desenvolvedor na Plain ConceptsDavid Sanz, Developer at Plain Concepts

Javier Valero, Diretor Executivo de Operações no Grupo SolutioJavier Valero, Chief Operating Officer at Grupo Solutio

Pierre Millet, Consultor sênior, MicrosoftPierre Millet, Sr. Consultant, Microsoft

Michael Friis, Gerente de Produto, Docker IncMichael Friis, Product Manager, Docker Inc

Charles Lowell, Engenheiro de Software, equipe do VS CAT, MicrosoftCharles Lowell, Software Engineer, VS CAT team, Microsoft

Miguel Veloso, Consultor sênior da Turing ChallengeMiguel Veloso, Sr. Consultant at Turing Challenge

DOWNLOAD disponível em: https://aka.ms/microservicesebookDOWNLOAD available at: https://aka.ms/microservicesebook

PUBLICADO PORPUBLISHED BY

Divisão de Desenvolvedores Microsoft, equipes dos produtos .NET e Visual StudioMicrosoft Developer Division, .NET and Visual Studio product teams

Uma divisão da Microsoft CorporationA division of Microsoft Corporation

One Microsoft WayOne Microsoft Way

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

Copyright © 2018, Microsoft CorporationCopyright © 2018 by Microsoft Corporation

Todos os direitos reservados.All rights reserved. Nenhuma parte do conteúdo deste guia pode ser reproduzida ou transmitida de nenhuma forma nem por nenhum meio sem a permissão por escrito do 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 manual é fornecido "no estado em que se encontra" e expressa os pontos de vista e as opiniões do autor.This book is provided “as-is” and expresses the author’s views and opinions. Os pontos de vista, as opiniões e as informações expressos neste guia, incluindo URLs e outras referências a sites da Internet, podem ser alteradas sem aviso prévio.The views, opinions and information expressed in this book, including URL and other Internet website references, may change without notice.

Alguns exemplos aqui representados são fornecidos apenas para ilustração e são fictícios.Some examples depicted herein are provided for illustration only and are fictitious. Nenhuma associação ou conexão real é intencional ou deve ser deduzida.No real association or connection is intended or should be inferred.

A Microsoft e as marcas comerciais listadas em https://www.microsoft.com na página da Web “Marcas comerciais” são marcas comerciais do grupo de empresas da Microsoft.Microsoft and the trademarks listed at https://www.microsoft.com on the “Trademarks” webpage are trademarks of the Microsoft group of companies.

Mac e macOS são marcas comerciais da Apple Inc.Mac and macOS are trademarks of Apple Inc.

O logotipo de baleia do Docker é uma marca registrada da Docker, Inc. usado mediante permissão.The Docker whale logo is a registered trademark of Docker, Inc. Used by permission.

Todas as outras marcas e logotipos são propriedade de seus respectivos proprietários.All other marks and logos are property of their respective owners.