BFF Pattern

Seu melhor amigo backend

Engenharia de Software - FIB

Desenvolvedor - Finch Soluções

http://helder.traci.com.br/

Helder Traci

https://github.com/helderdiin

O que é
BFF?

O que é BFF?

  • Backend For Frontend
  • Pattern
  • Phil Calçado

O que é BFF?

  • Motivação
    • Uso de API genérica
    • Responsabilidades nas UIs
    • Desorganização entre times

O que é BFF?

API backend genérica

API backend genérica

API backend genérica

  • Diferentes necessidades e limitações
  • Separação entre times
  • UI != UI
  • Alterações centralizadas
  • Novas UIs

API backend genérica

  • Diferentes necessidades e limitações
  • Separação entre times
  • UI != UI
  • Alterações centralizadas
  • Novas UIs

Time A

Time B

Time C

API backend genérica

  • Diferentes necessidades e limitações
  • Separação entre times
  • UI != UI
  • Alterações centralizadas
  • Novas UIs

O pattern BFF

O pattern BFF

  • Foco específico
    • Conversões
    • Response limpo
    • Contratos
    • Padrões
  • Responsabilidade
    • Construção de objetos
    • Unificação de requests

O pattern BFF

Quantos BFFs?

Quantos BFFs?

  • One experience, one BFF
  • Reutilização de um BFF
  • Unificação de times
  • Estrutura dos BFFs

Múltiplos serviços

Múltiplos serviços

  • Padrão essencial
  • Exemplo E-commerce

Reuso e BFF

Reuso e BFF

  • Duplicidade de código
  • Abordagens
    • biblioteca compartilhada
    • novo serviço
    • unificação de serviço
  • Evite generalização prematura
  • rule of three

Reuso e BFF

  • Evolução do BFF

Sobre autonomia

Sobre autonomia

  • Velocidade no desenvolvimento
  • Auto-gerenciável
  • Toma as próprias decisões

Quando utilizar

Quando utilizar

  • Interfaces distintas (muitos dispositivos)
  • Agregação no lado do servidor
    • Chamadas a serviços distintos
    • API genérica complexa
  • Organização de times

Quando não utilizar

Quando não utilizar

  • Times pequenos e especialistas
  • Suporte para poucos dispositivos (foco específico)
  • Não baseado em serviços (e nem vai migrar)
  • Quando não quer

E mais...

E mais...

  • Trial no RADAR da ThoughtWorks (2015/2016)
  • Cases
    • SoundCloud
    • SporTV
  • Bluemix Developer Console – BFF (Backend for Frontend) Pattern

Dúvidas?