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.

Avatar for Marco Paulo Ollivier

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