.NET Microservservs: Arquitetura para Aplicações Containerized .NET

Book cover

EDIÇÃO v6.0 - Atualizado para ASP.NET Core 6.0

Consulte o alterlog para as atualizações do livro e as contribuições da comunidade.

Este guia é uma introdução ao desenvolvimento de aplicações baseadas em microserviços e à sua gestão utilizando contentores. Discute abordagens de design e implementação arquitetónicas utilizando contentores .NET e Docker.

Para facilitar o arranque, o guia foca-se numa aplicação baseada em contentores de referência e microservice que pode explorar. A aplicação de referência está disponível no eShopOnContainers GitHub repo.

Introdução

As empresas estão a perceber cada vez mais a poupança de custos, a resolver problemas de implantação e a melhorar as DevOps e as operações de produção através da utilização de contentores. A Microsoft tem vindo a lançar inovações de contentores para Windows e Linux, criando produtos como Azure Kubernetes Service e Azure Service Fabric, e através da parceria com líderes da indústria como Docker, Mesosfera e Kubernetes. Estes produtos fornecem soluções de contentores que ajudam as empresas a construir e implementar aplicações à velocidade e escala da nuvem, independentemente da sua escolha de plataforma ou ferramentas.

Docker está a tornar-se o padrão de facto na indústria de contentores, apoiado pelos fornecedores mais significativos nos ecossistemas Windows e Linux. (A Microsoft é um dos principais fornecedores de nuvem que suportam o Docker.) No futuro, Docker provavelmente será omnipresente em qualquer datacenter na nuvem ou no local.

Além disso, a arquitetura dos microserviços está a emergir como uma abordagem importante para aplicações críticas de missão distribuídas. Numa arquitetura baseada em microservices, a aplicação baseia-se numa coleção de serviços que podem ser desenvolvidos, testados, implantados e versados de forma independente.

Acerca deste guia

Este guia é uma introdução ao desenvolvimento de aplicações baseadas em microserviços e à sua gestão utilizando contentores. Discute abordagens de design e implementação arquitetónicas utilizando contentores .NET e Docker. Para facilitar o arranque com contentores e microserviços, o guia foca-se numa aplicação baseada em contentores de referência e microservices que pode explorar. A aplicação da amostra está disponível no eShopOnContainers GitHub repo.

Este guia fornece orientação fundamental para o desenvolvimento e arquitetura principalmente a nível do ambiente de desenvolvimento, com foco em duas tecnologias: Docker e .NET. A nossa intenção é que leia este guia ao pensar no seu design de aplicação sem se concentrar na infraestrutura (nuvem ou no local) do seu ambiente de produção. Tomará decisões sobre a sua infraestrutura mais tarde, quando criar as suas aplicações prontas para a produção. Por isso, este guia pretende ser agnóstico de infraestruturas e mais centrado no ambiente de desenvolvimento.

Depois de ter estudado este guia, o seu próximo passo seria aprender sobre microserviços prontos para a produção em Microsoft Azure.

Versão

Este guia foi revisto para cobrir a versão .NET 6 juntamente com muitas atualizações adicionais relacionadas com a mesma "onda" de tecnologias (isto é, Azure e tecnologias adicionais de terceiros) coincidindo a tempo com a versão .NET 6. É por isso que a versão do livro também foi atualizada para a versão 6.0.

O que este guia não cobre

Este guia não se centra no ciclo de vida da aplicação, nos oleodutos DevOps, CI/CD ou no trabalho de equipa. O guia complementar Containerized Docker Application Lifecycle com a Microsoft Platform and Tools foca-se neste assunto. O guia atual também não fornece detalhes de implementação sobre a infraestrutura Azure, como informações sobre orquestradores específicos.

Recursos adicionais

Quem deve usar este guia

Escrevemos este guia para desenvolvedores e arquitetos de soluções que são novos no desenvolvimento de aplicações baseadas em Docker e na arquitetura baseada em microserviços. Este guia é para si se quiser aprender a arquiteto, design e implementar aplicações de prova de conceito com tecnologias de desenvolvimento da Microsoft (com especial enfoque em .NET) e com recipientes Docker.

Você também vai achar este guia útil se você é um decisor técnico, como um arquiteto empresarial, que quer uma visão geral de arquitetura e tecnologia antes de decidir qual a abordagem a selecionar para novas e modernas aplicações distribuídas.

Como utilizar este guia

A primeira parte deste guia introduz recipientes Docker, discute como escolher entre .NET 6 e o .NET Framework como um quadro de desenvolvimento, e fornece uma visão geral dos microserviços. Este conteúdo é para arquitetos e decisores técnicos que querem uma visão geral, mas não precisam de se concentrar em detalhes de implementação de código.

A segunda parte do guia começa com o processo de Desenvolvimento para a secção de aplicações baseadas em Docker . Centra-se nos padrões de desenvolvimento e microserviços para implementar aplicações utilizando .NET e Docker. Esta secção será de maior interesse para os desenvolvedores e arquitetos que queiram focar-se no código e em padrões e detalhes de implementação.

A aplicação eShopOnContainers é uma aplicação de referência de código aberto para .NET e microserviços que foi concebida para ser implantada usando recipientes Docker. A aplicação é composta por vários subsistemas, incluindo vários front-ends ui de loja de e-store (uma aplicação Web MVC, um Web SPA e uma aplicação móvel nativa). Também inclui os microserviços e recipientes de back-end para todas as operações necessárias do lado do servidor.

O objetivo da aplicação é mostrar padrões arquitetónicos. Não É UM MODELO PRONTO PARA A PRODUÇÃO para iniciar aplicações no mundo real. Na verdade, a aplicação encontra-se num estado beta permanente, uma vez que também é usada para testar novas tecnologias potencialmente interessantes à medida que aparecem.

Envie-nos o seu feedback!

Escrevemos este guia para o ajudar a compreender a arquitetura das aplicações e microserviços em .NET. O guia e aplicação de referência relacionada vai evoluir, por isso damos as boas-vindas ao seu feedback! Se tiver comentários sobre como este guia pode ser melhorado, envie feedback para https://aka.ms/ebookfeedback.

Créditos

Coautores:

Cesar de la Torre, Sr. PM, equipa de produtos .NET, Microsoft Corp.

Bill Wagner, Sr. Desenvolvedor de Conteúdos, C+E, Microsoft Corp.

Mike Rousos, Engenheiro Principal de Software, Equipa de CAT da DevDiv, Microsoft

Editores:

Mike Pope

Steve Hoag

Participantes e revisores:

Jeffrey Richter, Partner Software Eng, equipa Azure, Microsoft

Jimmy Bogard, Arquiteto Chefe na Headpring

Udi Dahan, CEO fundador & , software particular

Jimmy Nilsson, Cofundador e CEO do Fator10

Glenn Condron, Sr. Gestor de Programas, ASP.NET equipa

Mark Fussell, Principal PM Lead, Azure Service Fabric equipa, Microsoft

Diego Vega, PM Lead, Equipa de Quadros de Entidades, Microsoft

Barry Dorrans, Gerente do Programa de Segurança

Rowan Miller, Sr. Gestor de Programas, Microsoft

Ankit Asthana, Diretor pm manager, .NET team, Microsoft

Scott Hunter, Partner Diretor PM, .NET team, Microsoft

Nish Anil, Sr. Program Manager, .NET team, Microsoft

Dylan Reisenberger, Arquiteto e Dev Lead na Polly

Steve "ardalis" Smith - Software Architect e Trainer - Ardalis.com

Ian Cooper, Arquiteto de Codificação na Brighter

Unai Zorrilla, Arquiteto e Dev Lead na Plain Concepts

Eduard Tomas, Dev Lead at Plain Concepts

Ramon Tomas, Desenvolvedor da Plain Concepts

David Sanz, Desenvolvedor da Plain Concepts

Javier Valero, Diretor Operacional do Grupo Solutio

Pierre Millet, Consultor Sénior, Microsoft

Michael Friis, Gerente de Produto, Docker Inc

Charles Lowell, Engenheiro de Software, equipa VS CAT, Microsoft

Miguel Veloso, Engenheiro de Desenvolvimento de Software da Plain Concepts

Sumit Ghosh, Consultor Principal da Neudesic

PUBLICADO POR

Microsoft Developer Division, .NET e Visual Studio equipas de produtos

Uma divisão da Microsoft Corporation

One Microsoft Way

Redmond, Washington 98052-6399

Copyright © 2022 by Microsoft Corporation

All rights reserved. Nenhuma parte do conteúdo deste livro pode ser reproduzida ou transmitida sob qualquer forma ou por qualquer meio sem a autorização escrita do editor.

Este livro é fornecido "as-is" e expressa as opiniões e opiniões do autor. As opiniões, opiniões e informações expressas neste livro, incluindo URL e outras referências do site da Internet, podem mudar sem aviso prévio.

Alguns exemplos aqui apresentados são fornecidos apenas para fins ilustrativos e são fictícios. Nenhuma associação ou ligação real é intencional ou deve ser deduzida.

A Microsoft e as marcas registadas listadas na https://www.microsoft.com página "Marcas Registadas" são marcas comerciais do grupo de empresas Microsoft.

Mac e macOS são marcas comerciais da Apple Inc.

O logotipo da baleia Docker é uma marca registada da Docker, Inc. Usada por permissão.

Todas as outras marcas e logótipos são propriedade dos respetivos proprietários.