Prática DevOps com Docker para Machine Learning
  • Prática de DevOps com Docker para Machine Learning
  • Autores e Agradecimentos
  • Uso do Livro
  • Contribua com o Livro
  • Licença
  • Organização do Livro
  • 1. Introdução
    • 1.1 Máquinas Virtuais e Contêineres
    • 1.2 DevOps e Docker
    • 1.3 Configuração do Ambiente - Python
    • 1.4 Configuração do Ambiente - Docker
    • 1.5 Dockerfile, Imagem e Contêiner Docker
    • 1.6 Docker Hub e Comandos Adicionais
  • 2. Desenvolvimento
    • 2.1 Do notebook para aplicação - parte 1
    • 2.2 Do notebook para aplicação - parte 2
    • 2.3 Do notebook para aplicação - parte 3
  • 3. Produção
    • 3.1 Desenvolvimento vs Produção: o fim ou o início?
    • 3.2 Ambiente de Produção - parte 1
    • 3.3 Ambiente de Produção - parte 2
    • 3.4 Ambiente de Produção - parte 3
  • 4. Monitoramento
    • 4.1 Introdução
    • 4.2 Configurando o Servidor de Monitoramento
    • 4.3 Monitorando Servidores do Ambiente de Produção
    • 4.4 Comandos de Verificação do Nagios
    • 4.5 Criando Verificações Mais Específicas
    • 4.6 Criando Alertas
    • 4.7 Recuperando de Problemas
    • 4.8 Verificação de Contêineres via NRPE
  • 5. Infraestrutura como Código e Orquestração
    • 5.1 Introdução
    • 5.2 Orquestração com Docker Compose
    • 5.3 Orquestração com Kubernetes
  • 6. Integração Contínua
    • 6.1 Introdução
    • 6.2 Controle de Versão
    • 6.3 Configurando um repositório no GitLab
    • 6.4 Branch e merge
    • 6.5 Pipeline de Integração Contínua com GitLab CI/CD
  • 7. Entrega Contínua
    • 7.1 Introdução
    • 7.2 Implantação automática no Docker Hub
    • 7.3 Implantação automática no Heroku
    • 7.4 Implantação automática no Google Kubernetes Engine (GKE)
    • 7.5 Testando tudo junto
  • 8. Model serving
    • 8.1 Introdução
    • 8.2 Model serving com mlserver
    • 8.3 CI/CD com GitLab e mlserver
    • 8.4 Testando tudo junto
  • 9. Model serving batch
    • 9.1 Introdução
    • 9.2 Spark
    • 9.3 Airflow
    • 9.4 Testando tudo junto
  • 10. MLOps com mlflow
    • 10.1 Introdução
    • 10.2 Visão geral do MLflow
    • 10.3 Configuração do MLflow
    • 10.4 Testando MLflow
  • 11. MLOps com Kubeflow
    • 11.1 Visão geral do Kubeflow
    • 11.2 Configuracão
    • 11.3 Kubeflow Pipeline
    • 11.4 Kserve
    • 11.5 Testando tudo junto
  • 12. Conclusão
    • Conclusão
Powered by GitBook
On this page
  1. 3. Produção

3.1 Desenvolvimento vs Produção: o fim ou o início?

Previous2.3 Do notebook para aplicação - parte 3Next3.2 Ambiente de Produção - parte 1

Last updated 3 years ago

Neste capítulo falamos sobre o ambiente de produção. Conforme comentado no livro "", Sato (2018) argumenta que o ciclo de vida do software deveria iniciar somente apenas quando o usuário passasse a fazer uso do software.

Particularmente, essa é uma afirmação interessante. Do ponto de vista de desenvolvimento de software, sabe-se que bons produtos de software ficam no mercado por mais de 20 anos. Desse modo, se comparado com o tempo de desenvolvimento do produto e o primeiro lançamento, pode-se dizer que o software passa muito mais tempo em manutenção do que em desenvolvimento.

A ideia deste capítulo é ilustrar como podemos utilizar o Docker para montar o ambiente de produção e disponibilizar uma aplicação para ser utilizada pelo usuário final.

Recapitulando a figura do Capítulo 1 que ilustra um fluxo DevOps, esse capítulo tem como objetivo final começar a abordar o item 5 da figura, ou seja, o ambiente de produção.

Fluxo de trabalho genérico e para o ciclo de vida do aplicativo em contêineres do Docker (extraída de Torre (2020))

Iremos adotar, a princípio, um ambiente simples de produção, fazendo uso do Docker e contêineres para executar algumas tarefas típicas de um sistema de Machine Learning. Em particular, veremos como é possível configurar um ambiente de produção para os três exemplos típicos de tarefas vistos no capítulo anterior: uma tarefa online para processamento de dados em batch, e duas tarefas online: API HTTP e processamento em fluxo.

Neste momento, o ambiente será realmente simples, portanto várias coisas ficarão de fora, como monitoramento, versionamento, agendamento de tarefas, testes de sanidade, e outros conceitos importantes de um ambiente de produção de Machine Learning. À medida que avançamos no livro, acrescentaremos algumas dessas funcionalidades e ferramentas.

DevOps na Prática: Entrega de Software Confiável a Automatizada