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

Construindo um BFF com PHP

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers. →

Construindo um BFF com PHP

Avatar for Tais Duarte

Tais Duarte

August 04, 2024

More Decks by Tais Duarte

Other Decks in Technology

Transcript

  1. Prazer, Tais Desenvolvedora a 10 anos Software Engineer na Creditas

    Apoiadora do PHPWomenBR Esposa e Mãe (coruja) do Joaquim @taisreis67
  2. O que é o BFF? 01. De onde veio, onde

    vive e qual problema veio resolver? 🤔
  3. Temos uma comunicação direta, mas agora entre um cliente e

    três APIs (micro serviços) Agora o cliente precisar fazer várias requisições para compor uma página 😔
  4. Com um API Gateway o cliente faz a requisição para

    uma aplicação e ela se encarrega de se comunicar com as outras Além de trazer outros benefícios como segurança 😌
  5. E se tivermos mais clientes? Web API Gateway Account API

    Authentication API Movies API Parceiro Mobile
  6. Com mais clientes nosso API Gateway começa a ficar inflado

    com diversos tipos de requisições diferentes para cada cliente Cada cliente pode ter necessidades diferentes 😔
  7. Qual o benefício do BFF? O cliente terá autonomia para

    poder utilizar os micro serviços de acordo com o que ele precisa independente de outros clientes Cada cliente agora tem sua aplicação personalizada 😉
  8. Qual a desvantagem do BFF? Com a criação de um

    BFF será mais uma aplicação para dar manutenção, monitorar, fazer o deploy… Devemos analisar se temos como manter 🤔
  9. Responsabilidade Se a lógica se repete em vários BFF ou

    se ele está começando a ficar inflado, provavelmente são regras de negócio e devem ficar nos serviços Performance Os endpoints podem ser otimizados para retornarem somente os dados necessários e reduzir o número de requisições Algumas dicas Devo criar um BFF? Se os clientes possuem as mesmas necessidades talvez não seja necessário criar um BFF para cada um
  10. O que vamos usar? Biblioteca PHP para utilizar o GraphQL

    PHP Linguagem para construir a aplicação GraphQL Uma Query Language para APIs GraphQL-PHP TMDB API Uma API pública de dados sobre filmes, séries e entre outros
  11. Sobre o REST O REST (Representational State Transfer) é um

    modelo utilizado para arquitetar APIs que é baseado no protocolo HTTP. Muito utilizado para a comunicação entre o serviço e o cliente
  12. Como funciona? GET PUT POST DELETE /movie:id /movie /movie /movie

    Encontra um filme Atualiza um filme Cria um filme Deleta um filme
  13. Overfetching Retorna mais dados que o necessário para a aplicação

    que fez a requisição Underfetching Às vezes a aplicação precisa fazer mais que uma requisição para conseguir todos os dados Exporsiçao Acaba expondo mais dados do que o necessário Quais os problemas com o REST? Para resolver esses problemas surgiu o GraphQL
  14. O que é GraphQL? É uma Query Language para APIs

    que permite com que o cliente peça exatamente os dados que ele precisa
  15. Como funciona? O cliente faz uma chamada POST para um

    único endpoint passado no body da requisição o que ele precisa Pode ser um pedido para retornar dados (query) ou um pedido para alterar algum dado (mutation) 😉
  16. Minhas referências 🙂 • https://philcalcado.com/2015/09/18/the_back_end_for_front_end_pattern_bff.html • https://philcalcado.com/2019/07/12/some_thoughts_graphql_bff.html • https://medium.com/jeitosanar/backend-for-frontend-uma-estratégia-sob-demanda- para-a-entrega-de-microsserviços-2f12d4cb9e3f

    • https://adevait.com/php/creating-graphql-server-with-php • https://webonyx.github.io/graphql-php/getting-started/ • https://developers.themoviedb.org/3/getting-started/introduction • https://graphql.org/learn/
  17. CREDITS: This presentation template was created by Slidesgo, including icons

    by Flaticon, infographics and images by Freepik Thank you! 😊