Olá a todos,
Estou no processo de implementar um novo projeto simples baseado em microsserviços, como exemplo de um guia passo a passo para aqueles que tiveram dificuldades com a arquitetura de microsserviços e ainda estão procurando "outra" boa referência. Além disso, eu realmente aprecio o pensamento através do feedback e da proposta para tornar este projeto um pedaço de trabalho de alta qualidade.
Existem vários artigos e exemplos de código-fonte. Mas, infelizmente, não consegui encontrar nenhuma referência com instruções passo a passo simples, sem mergulhar fundo no Docker, no Event Store, em uma variedade de configurações, na implantação da nuvem, etc. Eu clonei vários projetos e tentei começar a brincar com eles, mas você sabe, só Deus sabe como iniciá-los, quais dependências estão faltando e por que todos esses scripts estão falhando com milhares de erros.
Por exemplo,
este projeto de eShop da Microsoft contém tudo o que precisamos, mas não é tão simples descobrir o que está acontecendo lá, cadeias de conexão de banco de dados SQL, scripts do Docker falham, nenhum How-Tos e não tenho certeza se é super arquitetura simples que você precisa para começar.

Esses caras da Polônia estão tentando fazer algo valioso e simples o suficiente,
confira .
Então, aqui tentarei implementar esse tutorial para que seja o mais simples possível para começar com o básico e escrever um código básico para usar posteriormente em seus projetos.
Não falaremos sobre “por que / quando devemos usar microsserviços?”, Existem muitos artigos sobre isso. Por exemplo, esse cara fez
uma boa pesquisa e resumiu sobre microsserviços .
Ele abordará os seguintes tópicos e tentará simplificar:
- Pré requisitos e configuração do ambiente
- Escolhendo um nome para um projeto + metas que queremos alcançar
- Arquitetura geral
- Início da implementação (.NET Core)
- Configuração e teste do banco de dados e cache
- Configuração de ferramentas e utilitários
- Definir cenário de caso de uso super básico + sua implementação
- Implantação em algum lugar
Usará o .NET Core 2.1, VS2017 no Windows 10. Os seguintes terceiros devem estar instalados e em execução na sua máquina:
Redis para Windows ,
MongoDB ,
Seq ,
RabbitMQ . Irá executar todas as coisas com seus parâmetros padrão. Eu achei essas ferramentas rápidas e fáceis de instalar e trabalhar prontas para uso.
Cliente de desktop para Redis (
https://redisdesktop.com/ ):

Cliente de desktop para MongoDB (
https://nosqlbooster.com/ ):

2. O objetivo do projeto é criar um back-end para aquisição de dados de milhares de dispositivos móveis / portáteis. O tipo de dados são dados do sensor: movimento de 9 eixos, localização, temperatura, umidade, etc. Também desejará processar e analisar todos esses dados para mostrá-los em algumas belas UIs baseadas na Web como estatísticas, gráficos, rastreamento etc. O nome de um projeto foi escolhido enquanto eu escrevia este parágrafo - "Sensor Fusion Backend". Os dois primeiros microsserviços que consigo pensar são o DataProcessorService e o DataAnalyticsService.
3. Vamos começar a pensar em arquitetura e infraestrutura mínima, pelo menos para iniciantes. Conectividade: nosso projeto está lidando com dados IoT / sensores, portanto, com isso em mente, eu usaria o broker de mensagens RabbitMQ para comunicação cliente-servidor. Aqui estão duas explicações
curtas e
simples . Banco de dados: usará a
combinação MongoDB + Redis . MongoDB como sistema principal de armazenamento e Redis como cache. Registro: biblioteca de registradores Serilog + Seq como ferramenta de visualizador.
Seq é um aplicativo da web hospedado em sua infraestrutura:

Para simplificar a API, usarei o Swagger:

Portanto, a primeira parte é mais sobre quais ferramentas usaremos para iniciar a implementação. Verá o código na Parte 2 e começará a jogar com a infraestrutura.