Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Traefik: da PoC a Prod - v1.0.1 (OLX Edition) -...

Traefik: da PoC a Prod - v1.0.1 (OLX Edition) - TDC POA 2018 - Trilha Go

Versão da apresentação feita no TDC Porto Alegre 2018 - Trilha Go

http://www.thedevelopersconference.com.br/tdc/2018/portoalegre/trilha-go

Algumas soluções de reverse proxy e de load balancer existentes se mostram complexas para dar manutenção, além da necessidade de uma quantidade grande de recursos de hardware. O Traefik é um reverse proxy/load balancer simples, rápido, dinâmico, leve e bem poderoso, além de ser um projeto Open Source escrito em Go. O intuito é apresentarmos algumas das principais funcionalidades do Traefik, mostrar como é fácil utiliza-lo e, por fim, fazer uma comparação com algumas outras soluções similares que existem no mercado. Vamos mostrar também alguns cases de sucesso que mostram como realmente pode ser vantajoso usar o Traefik no ambiente produtivo de qualquer projeto.

Marco Paulo Ollivier

December 08, 2018
Tweet

More Decks by Marco Paulo Ollivier

Other Decks in Programming

Transcript

  1. • Grad. Análise de Sistemas @ Infnet • Software Engineer

    @ OLX • — Go, JVM, Docker e Linux • Segundo o Datafolha, 7 anos de experiência • Entusiasta de Astronomia e Física Marco Ollivier - @marcopollivier
  2. Agenda • Um pouco de teoria • Microsserviços • O

    que é um Proxy Reverso? • O que é um Balanceador de Carga? • Por que mudar? • Breve resumo das soluções do mercado • Apresentando o Træfik • Funcionalidades • Instalação • da PoC - Prova de Conceito • Instalação • Configuração • à Prod - Casos de sucesso • Usando com Swarm • Casos de sucesso • Resumo • Agradecimentos • Perguntas 

  3. Microsserviços Lorem ipsum dolor sit amet • Desacoplamento • Escalabilidade

    • Análise e investigação mais fácil e rápida • Maior facilidade na Entrega Contínua • Porém… • Gerenciar fica um pouco mais complicado
  4. Reverse Proxy Cenário… • Múltiplos microsserviços • Acesso externo ao

    seu contexto de solução: •Seja Internet •Serviços de terceiros
  5. Reverse Proxy • Como saber o que vai pra onde?

    • Como redirecionar as requisições?
  6. Reverse Proxy • api.domain.com vai acessar as APIs via internet

    • domain.com/loja vai acessar um website via internet • backoffice.domain.com vai acessar uma api de backoffice via internet • api.private-domain vai acessar a mesma API de dentro da rede interna
  7. Load Balancer Retornando ao problema... O que aconteceria se na

    nossa API de Adesão, só tivéssemos um servidor atendendo as requisições?
  8. Load Balancer Retornando ao problema... O que aconteceria se na

    nossa API de Adesão, só tivéssemos um servidor atendendo as requisições?
  9. Load Balancer E se essa máquina morrer por algum motivo

    qualquer? https://www.digitalocean.com/community/tutorials/an-introduction-to-haproxy-and-load-balancing-concepts
  10. Load Balancer • Como garantir minimamente minha disponibilidade? • Como

    garantir que, se meu servidor morrer, minha aplicação não vai cair? • Como diminuir as chances de não atender requisições devido a momentos de pico de acesso? • Ou até mesmo… como controlar a porcentagem de requisições que vão para uma determinada máquina?
  11. Load Balancer (Terminologia) Frontends Conjunto de regras que determinam como

    as requisições de entrada serão redirecionadas para o backend.
  12. Load Balancer (Terminologia) Backends • Conjunto de servidores que recebem

    os requests redirecionados. • É o ponto onde haverá de fato o balanceamento da carga
  13. Algumas soluções existentes • Não são dinâmicos - vários restarts

    • Configuração complicada - arquivos conf gigantes • Demandam muita infra - alto footprint • Difícil manutenção • Atendem a uma solução muito específica • Pagos • etc… etc… etc Zuul
  14. Funcionalidades • Apenas um pequeno e único binário • Hot

    reloading… sem restarts • Load-balancing • Circuit Breakers • Suporte a Websockets • HTTP2 • Healthchecks • Monitoramento
  15. Via Gerenciadores de Pacotes Via Helm ( — Kubernetes) $

    helm install stable/traefik Via Homebrew $ brew install traefik
  16. Via Docker e Docker Compose $ docker run -d -p

    8080:8080 -p 80:80 -v $PWD/traefik.toml:/etc/traefik/traefik.toml traefik Ou…
  17. • Simples de instalar • Simples de configurar • Não

    precisa restartar • Atende uma ampla gama de soluções de clusterização e orquestração • Monitoramento simples • Leve e rápido • Gratuito