‫Tudo bem, agora que aprendemos tudo sobre o dimensionamento Swarm com redes superpostas e malhas de roteamento, eu quero que
‫você perca o processo de criação de ativos ou objetos que você precisa implantar em
‫um cenário Swarm.
‫Então, não estamos mais usando o comando de encaminhamento do docker, mas a rede e os volumes
‫são do mesmo tipo, mas um pouco diferentes.
‫Quero dar-lhe um cenário do mundo real de um aplicativo de várias camadas, e vamos usar o aplicativo de votação distribuída
‫do Docker.
‫É realmente chamado de Aplicação de Votação de Exemplo.
‫Você pode ter visto isso em Docker keynotes, ou em outros laboratórios ou tutoriais.
‫É um aplicativo bastante comum, e eu acho, um ótimo, porque tem pelo menos cinco papéis, ou diferentes
‫recipientes que você precisa implantar.
‫E todos servem uma função especial e eles realmente estão fazendo coisas que realmente funcionam, na verdade, faz o
‫que é suposto fazer.
‫E assim você pode jogar com ele e tem componentes de arquitetura distribuídos muito típicos, como o frontend
‫da web e o backend do
‫trabalhador, e o valor-chave em um banco de dados. Eu acho muito útil fazer. usar o diretório swarm-app-1.
‫Neste caso, você vai Na verdade, é nosso reembolso do curso. Não há mais
‫que um readme e uma imagem. A partir desse readme, você vai precisar criar o volume e algumas redes
‫e cinco serviços que são necessários para que este aplicativo funcione completamente.
‫Isso pode ajudá-lo a tentar alguns desses comandos localmente, ou realmente escrevê-los em seu editor de texto e classificá-los, porque eles
‫vão ser um pouco complexo, certo. Quando você cria esse serviço
‫docker, você terá que conectá-lo a uma rede específica e abrir portas e chamá-lo de
‫um nome específico e usar uma imagem específica. Então, pode ser mais fácil editá-lo localmente e depois cortar e
‫colar em seu shell, onde quer que esteja o seu Swarm.
‫Mas é só eu.
‫Tudo vai usar as imagens Docker Hub, porque na produção Swarm você não quer estar construindo.
‫Esse não é um processo que você deseja em sua produção Swarm, normalmente.
‫Normalmente, você quer fazer o seu edifício através de algum serviço online automatizado, como Docker Hub
‫ou Docker Cloud, ou em algum lugar em seu pipeline CI / CD que não está comendo recursos em sua produção Swarm.
‫Nesse cenário, podemos imaginar que nossas imagens estão sendo construídas em outro lugar e
‫armazenadas no Docker Hub e nós precisamos simplesmente puxá-las, independentemente das versões mais recentes, em nosso Swarm.
‫E só vou dizer isso, como muitas coisas na Ciência da Computação, esta é uma metade da ciência, uma metade da forma de arte.
‫Seus comandos podem estar em ordens totalmente diferentes, ou têm ordens de opções totalmente diferentes do que as minhas.
‫Você pode chamar suas redes de coisas diferentes.
‫Isso é bom.
‫No final, o resultado é que o aplicativo funciona, que eles são capazes de conversar uns com os outros
‫da maneira correta, que você tenha todos os portos publicados e que você tenha os dados protegidos em um volume.
‫Vejamos o que você enfrenta.
‫Imagine que você está tendo que projetar os comandos e a arquitetura para isso.
‫E isso é o que o desenvolvedor lhe daria que escreveu esse aplicativo.
‫Bem neste caso, provavelmente muitos desenvolvedores escreveram esse aplicativo, certo?
‫Porque, na verdade, temos uma interface da web que está em Python, temos um backend da Web que está
‫sendo executado no Node.
‫Temos um processo de trabalho que está sendo executado. NET e depois temos uma loja de valor de
‫chave Redis e um banco de dados PostgreSQL.
‫Isso é realmente algo que eu vejo cada vez mais, onde diferentes equipes estão escrevendo diferentes partes de
‫uma solução, e eles são capazes de escolher o idioma que eles acham melhor para esse cenário.
‫E no mundo dos contêineres, esse tipo de aplicação realmente brilha. com as dependências no Python ou o que for.
‫Como nossas aplicações
‫estão segmentadas, elas ainda podem ser executadas tecnicamente na mesma máquina, mas todas estão protegidas
‫umas das outras, de modo que você não acabar com o Nó em conflito
‫Você também notará aqui o fluxo de tráfego, e o aplicativo de votação não o possui, mas deve ter
‫uma pequena flecha ao chegar em que é aí que os usuários entrarão na parte do
‫aplicativo de votação.
‫E você pode ver que o aplicativo de votação realmente tem que empurrar seus votos para esta aplicação que, por sinal,
‫você vai votar por gatos e cães.
‫Isso vai empurrar isso para o Redis e, em seguida, o trabalhador estará realmente verificando o sistema Redis
‫para qualquer coisa na fila e, em seguida, estará empurrando os resultados para o Postgres, que será exibido em um
‫backend do WebSockets que realmente é atualizado ao ser como você está votação.
‫Se saltamos no Diretório real rápido, coloquei algumas anotações aqui para ajudá-lo ao longo do caminho, porque há
‫algumas coisas que são um pouco diferentes e novas.
‫Mas, a área de serviços seria escrita como se fosse de alguém que conhecesse sua aplicação, mas não
‫sabia realmente como implementar isso no Docker. E esse é um cenário bastante comum.
‫que você precisa implantar, o nome real que você precisa para dar, porque esses são importantes.
‫Você pode ver que nos serviços eu listei a imagem
‫Estas são imagens que, infelizmente, são codificadas para os nomes que eles vão procurar na rede.
‫Idealmente, você deseja que os aplicativos que você possa configurar sobre o que eles precisam fazer para os
‫nomes, mas, neste caso, o voto procurará especificamente um registro DNS chamado redis. Você pode ver que existem
‫duas redes aqui. Temos uma interface e uma rede de backend. Isso é muito típico também de
‫um aplicativo maior, onde talvez você queira proteger seu banco de dados em uma rede de backend para que
‫o aplicativo de usuário do frontend não tenha acesso direto a ele.
‫E é isso que mostramos aqui e você notará que o trabalhador realmente está conectado a duas redes.
‫Então, quando você usa seu comando create, lembre-se de que você está usando o serviço docker, não crie o docker.
‫Então, quando você usa seu comando de criação do serviço docker, você precisará especificar a --network
‫duas vezes, uma vez para o frontend e uma vez para o backend.
‫Obviamente, você sabe criar suas redes primeiro.
‫Então, alguns desses são especificados aqui. E se você precisar da imagem novamente, o diagrama de arquitetura também
‫está aqui, apenas no caso de isso ajudar de forma conceitual com a forma como você vai implantar isso.
‫E, claro, você terá a documentação do Docker. Você pode precisar usar o comando --help no serviço
‫criar o comando que lhe dará todas as várias opções que você pode precisar.
‫Vocês só precisarão de três ou quatro desses. Se você ficar preso com os próprios
‫comandos, você pode querer rever a documentação real, que eu colocarei nos recursos desta seção.
‫Mas este documento específico no âmbito do Swarm realmente envolve a criação de serviços e a configuração de serviços.
‫Então, é um pouco falado, mas tem muita informação nela que pode ajudá-lo se você ficar
‫preso aqui.
‫O próximo vídeo, na verdade, vou correr por tudo isso como se eu fosse você.
‫Boa sorte e divirta-se.