Servidor Couchbase

Microsserviços ASP.NET Core: Primeiros passos

Microsserviços ASP.NET Core: aplicativos que serão responsáveis por uma única fatia "vertical" de uma arquitetura geral de aplicativo/serviço.

Por que os microsserviços do ASP.NET Core?

Há muitos opiniões e recomendações sobre o que são microsserviços, quando usar microsserviços em vez de um monólito e muito mais.

Este artigo não abordará essas questões em sua totalidade. Em vez disso, tentaremos apenas caminhar antes de voar.

Vamos considerar que estamos explorando arquitetura de microsserviçose queremos aproveitar a persistência poliglota para usar um banco de dados NoSQL (Couchbase) para um caso de uso específico. Para o nosso projeto, vamos analisar um Banco de dados por serviço e usar o Docker (docker-compose) para gerenciar o banco de dados para o ASP.NET Core Microservices prova de conceito.

Os bancos de dados de documentos NoSQL, como o Couchbase, são bons para uma variedade cada vez maior de casos de uso incluindo gerenciamento de perfil, gerenciamento de conteúdo, personalização e muito mais.

Esta postagem do blog usará o Couchbase Server, mas você também pode aplicar os conceitos básicos aqui aos outros bancos de dados em sua arquitetura de microsserviços.

Estou usando ASP.NET Core porque é uma estrutura de código aberto e multiplataforma. Além disso, Visual Studio (embora não seja obrigatório) nos fornecerá algumas ferramentas úteis para trabalhar com o Docker e o docker-compose. Mas, novamente, você pode aplicar os conceitos básicos aqui a qualquer estrutura da Web ou linguagem de programação de sua escolha.

Etapa 1: Criar uma nova solução

Usarei o Visual Studio para esta postagem do blog, mas você pode obter o mesmo efeito (talvez com um pouco mais de trabalho) no Visual Studio Code ou na linha de comando antiga.

Crie um novo projeto ASP.NET Core. Chamei o meu de HelloMicroservice (e o O código-fonte completo está disponível no GitHub para sua referência.

New project in Visual Studio

Para meu microsserviço ASP.NET Core, também tomei essas decisões no Visual Studio:

  • Aplicativo Web MVC (gera algum HTML básico para fins de exibição, mas você poderia usar um projeto de API com a mesma facilidade)
  • ASP.NET Core 3 (o ASP.NET Core mais recente no momento em que este artigo foi escrito)
  • Configurar para HTTPS (não é estritamente necessário, mas é uma boa ideia)
  • Habilitar o suporte ao Docker

Visual Studio new project wizard

Neste ponto, você deve ter um projeto ASP.NET Core muito básico. Em seguida, adicionaremos alguma orquestração e um banco de dados.

Etapa 2: Adicionar suporte ao docker-compose

Clique com o botão direito do mouse no projetoe clique em "Add" (Adicionar) e depois em "Container Orchestrator Support" (Suporte ao Orquestrador de Contêineres).

Add Container O

Lembre-se de que o único objetivo deste projeto é iniciar o desenvolvimento de uma prova de conceito para microsserviços ASP.NET Core. É mais fácil lidar com o Docker-compose do que com o Kubernetes para o desenvolvimento de máquinas locais. É por isso que estou escolhendo a opção "Docker Compose", mesmo que, eventualmente, eu queira implantação para o Kubernetes.

Docker Compose

Também escolhi o Linux, porque é nele que espero implantar mais tarde.

Depois de concluir essa etapa, um item "docker-compose" será adicionado à sua solução.

Docker Compose in Visual Studio

Se você der uma olhada no arquivo docker-compose.yml, verá que ele tem um definido nele: hellomicroservice. Observe também que o "Docker Compose" agora aparece na barra de ferramentas do Visual Studio.

Docker Compose button

Nesse ponto, você pode pressionar CTRL+F5 para executar. O Visual Studio usará o Docker Compose para criar uma imagem de seu projeto e executá-la no Docker. Seu navegador deve abrir automaticamente e você verá a tela padrão de "Bem-vindo"

ASP.NET Welcome

Estamos progredindo. A próxima coisa que precisamos fazer é executar um banco de dados com o docker-compose e fazer com que nosso aplicativo ASP.NET Core se comunique com o banco de dados. Quando essas próximas etapas forem concluídas, teremos o shell mínimo básico do ASP.NET Core Microservices.

Etapa 3: Adicionar orquestração de banco de dados ao docker-compose

O Couchbase faz imagens de contêineres oficiais disponíveis no Docker Hub. Para usar essas imagens, vamos adicionar outro serviço em serviços: no arquivo docker-compose.yml:

Os princípios básicos do que você precisa são:

  • couchbase: Isso inicia uma definição de serviço chamada "couchbase" (você pode dar outro nome, se quiser)
  • imagem: couchbase:enterprise-6.0.3 A imagem a ser usada para esse serviço. É sempre uma boa ideia ser explícito e usar uma tag como essa, caso contrário, o padrão pode ser a imagem "mais recente", o que não é necessariamente o que você deseja.
  • portos: Isso define quais números de porta devem ser expostos externo do Docker. Estou expondo apenas 8091, porque esse é o número da porta da interface do usuário do Couchbase (consulte também: Requisitos de rede e firewall)

O volumes: não é estritamente necessário. No entanto, o uso de um volume significa que, mesmo quando a imagem do couchbase parar de ser executada, os arquivos de dados em /opt/couchbase/var será salvo no computador host (o sistema de arquivos do seu computador) e poderá ser montado novamente na próxima vez que você executar a imagem. Isso significa que todos os dados que você colocar no couchbase ainda estarão lá na próxima vez que você executar a imagem.

Se você pressionar CTRL+F5 para executar o aplicativo, o Docker Compose iniciará a orquestração, incluindo ambos o serviço de atendimento ao cliente e a imagem do couchbase. Elas não têm nada a ver uma com a outra (ainda), a não ser o fato de estarem sendo executadas lado a lado dentro do Docker. Se você abrir uma linha de comando e executar docker psvocê verá algo parecido com isto:

(Reduzi bastante o texto acima para que as informações relevantes coubessem na largura desta postagem do blog).

Etapa 4: Alterações de configuração

Como usei o estoque couchbase:enterprise-6.0.3 Imagem do Docker, ainda preciso abrir a interface do usuário do Couchbase (https://localhost:8091) e configurar o cluster manualmente. Consulte as "próximas etapas" no final para ver algumas opções de automatização.

Set up Couchbase Cluster

Há muitos documentação para orientá-lo nesse processoPortanto, não vou repetir isso aqui. Observarei que estou usando as credenciais "Administrador" e "senha". Também usei criou um balde chamado hellomicroservice.

Depois de criar o bucket, a próxima etapa é fazer com que o aplicativo ASP.NET Core se comunique com o banco de dados. Abra o docker-compose.yml e atualize a variável hellomicroservices: definição para:

Vamos detalhar cada uma dessas partes:

  • ambiente: Isso diz ao docker-compose para criar variáveis de ambiente.
  • Servidores do Couchbase__0 O nome de uma variável de ambiente. A nomenclatura aqui é importante. Isso corresponderá ao appsettings.json posteriormente.
  • https://couchbase:8091/ A URL de que o ASP.NET Core precisará para se conectar ao serviço couchbase. Se você nomeou o serviço com algo diferente de "couchbase", use esse nome aqui também.
  • depende_de É assim que o docker-compose saberá em que ordem iniciar os serviços.
  • comando Um comando a ser executado quando o serviço for iniciado.

Neste exemplo, estou usando wait-for-it.shO script de inicialização do Couchbase Server, um script que aguardará a disponibilidade do host/porta fornecido. Na imagem padrão do Docker do Couchbase Server, levará alguns segundos para que o Couchbase Server seja realmente iniciado, portanto, esse script aguardará até que isso aconteça para prosseguir.

Usando o wait-for-it é opcionalmas quando você está no meio do desenvolvimento, isso pode lhe poupar algumas dores de cabeça. (Observe que não incluí o wait-for-it.sh no meu arquivo exemplo de repositório do GitHub).

Por fim, para fazer com que o projeto ASP.NET Core se comunique com o Couchbase, usei o comando Extensão de injeção de dependência do NuGet:

A configuração será extraída do arquivo appsettings.json por padrão. NO ENTANTOLembre-se de que uma variável de ambiente de Servidores do Couchbase__0 é definido em docker-compose.yml. O ASP.NET Core examinará as variáveis de ambiente e substituirá as configurações de aplicativos usando esses valores. Portanto, não importa realmente o que valor está em appsettings.json (ou appsettings.Development.json) para "Servers":

No entanto, o nome de usuário/senha ainda são lidos nas configurações de aplicativos.

Etapa 5: Usando o banco de dados

Por fim, vamos nos certificar de que o aplicativo ASP.NET Core seja capaz de se comunicar com o banco de dados. Eu adicionei um Inserir e Obter para o HomeController Índice método:

Algumas alterações correspondentes à exibição em Index.cshtml:

Agora, temos os fundamentos do ASP.NET Core Microservices instalados. Pressione CTRL+F5 para executar o serviço. Quando o navegador abrir, você verá algo parecido com isto:

ASP.NET Core Microservices in action

Se, em vez disso, você vir uma mensagem de erro, verifique se configurou o Couchbase Server corretamente, se criou um bucket com o nome correto, se usou as credenciais de login corretas em appsettings.json e se o docker-compose.yml corresponde aos exemplos acima.

Próximas etapas

Agora você pode desenvolver seus microsserviços ASP.NET Core. Como desenvolvedor, a imagem do Docker do seu aplicativo ASP.NET Core será sua entrega. Dependendo de onde/como sua organização planeja implantar, as próximas etapas variam muito.

Isso é apenas o começo, mas aqui estão mais algumas coisas que você deve explorar:

Volumes. Feche completamente o Visual Studio. Após alguns segundos, as imagens do Docker desaparecerão (tente docker ps novamente para verificar isso). Agora, abra o Visual Studio e pressione CTRL+F5 novamente. Como usamos um volume, os dados que você armazenou no Couchbase ainda devem estar lá. Se é isso que você deseja para o desenvolvimento, está tudo certo.

Automação. Se preferir que os dados sejam apagados e regenerados todas as vezes, você precisará criar uma imagem personalizada do Docker. Você também pode dar uma olhada no excelente projeto couchbasefakeitque inclui várias ferramentas, variáveis, scripts, etc., para inicializar o Couchbase Server e preenchê-lo com índices e dados falsos. Você pode ver um exemplo disso em um A ideia que Brant Burnett compartilhou comigo.

Kubernetes. Se você planeja implantar o Couchbase Server (ou mesmo qualquer banco de dados) em contêineres, provavelmente vai querer dar uma olhada no Kubernetes e no Operadores de Kubernetesque facilitam muito o gerenciamento de bancos de dados em clusters do Kubernetes. Muitos fornecedores de bancos de dados criaram operadores Kubernetes, e o Couchbase foi o primeiro fornecedor de NoSQL a lançar um Operador autônomo de Kubernetes.

Agradecimentos especiais

Esta postagem do blog não teria sido possível sem a enorme ajuda da Comunidade Couchbase.

Agradecimentos a Brant Burnett por compartilhar comigo o processo de desenvolvimento de microsserviços de sua empresa.

Agradeço a Calvin Allen por ter trabalhado nesse processo comigo em minha Transmissão de codificação ao vivo na Twitch e para apresentando-me ao wait-for-it.

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Author

Posted by Matthew Groves

Matthew D. Groves is a guy who loves to code. It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything. He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s. He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community. He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP.

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.