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