Nesta seção aprendemos a fazer o deploy do nosso projeto usando o Docker, Docker Machine, Traefik, etc; porém eu gostaria de deixar algumas ressalvas.
O setup usado aqui pode ser o suficiente para aplicações de pequeno e até mesmo algumas de médio porte, dependendo da carga de trabalho.
Porém se você quer ou precisa escalar seu projeto, algumas abordagens e até mesmo ferramentas precisarão ser consideradas.
Se você você trabalha em uma empresa que possui times/squads, geralmente existe um profissional que fica responsável somente pela parte de DevOps, então você não precisaria se preocupar muito com a infraestrutura.
Se você faz toda o trabalho sozinho, seria interessante aprender um pouco sobre:
- Swarm ou Kubernetes (clusterização) (Recomendo Kubernetes)
- Terraform (provisionamento)
- Ansible e/ou Concourse CI (automação)
E talvez até considerar a Amazon AWS como provedor Cloud.
Novamente: isso somente é necessário se sua aplicação precisar de alta escalabilidade e disponibilidade. O setup que fizemos nesta seção atende bem para casos "menores" e é possível melhorar ele mesmo um pouco mais, usando o PM2 por exemplo para criar "Workers" dentro do mesmo Host (caso o Host possuir mais de 1 núcleo de processamento).
Enfim, esta é uma "aula" apenas pra deixar alguns detalhes adicionais e um caminho a seguir daqui pra frente caso queira/precise melhorar seu entendimento sobre DevOps como um todo.
Eu não sou nenhum especialista na área, conheço bem pouco e tenho estudado a respeito, recomendo como fonte de aprendizado o canal LinuxTips do Jeferson e o Mateus, eles possuem um conteúdo muito bom e é apresentado de forma bem peculiar (hehe).
Um último detalhe é que também não ensinei como publicar suas próprias imagens no Docker Hub e pode ser uma boa ideia fazê-lo (de forma privada preferencialmente).
Dessa forma ao referenciar essa imagem em produção por exemplo, você precisaria especificar também o seu repositório no Docker Hub, exemplo:
// nosso container web web:1.0.1 // ficaria assim plinionaves/web:1.0.1
Qualquer dúvida coloque lá no fórum do curso, e nos vemos na próxima aula!
Plínio Naves