Giter VIP home page Giter VIP logo

rs-dw-2021-bff's Introduction

Backend for frontend

Nessa aula vamos aprender sobre um padrão de arquitetura para conectar aplicações clientes - e.g. UIs - ao backend formado por microservices: Backend for frontend - BFF.

Utilizaremos um exemplo com:

  • microservices construídos em Node.JS expondo APIs REST
  • BFFs construídos em Node.JS expondo APIs GraphQL
  • infraestrutura deployada localmente utilizando Docker e docker-compose

Exemplo

Neste exemplo, teremos um sistema de e-commerce EXTREMAMENTE SIMPLIFICADO com a seguinte arquitetura:

  • Domain services:
    • user identity service
      • responsável por gestão e autenticação de usuários
      • POST /login: autentica o usuário, gerando um JWT
      • POST /validate: valida a autenticidade de um token
    • buyer service
      • responsável por gestão de informações pessoais de um usuário comprador
      • GET /buyers/:id/profile: retorna dados pessoais do usuário
      • GET /buyers/:id/address: retorna o endereço do usuário
    • product catalog service
      • responsável por gestão de catálogo de produtos vendidos pela plataforma
      • GET /products: listagem paginada de produtos
      • GET /products/:id: detalhes de um produto
      • PUT /products/:id: edição de dados de um produto
    • order service
      • responsável por gestão de pedidos de compra de produto
      • POST /orders: cria um novo pedido
      • PUT /orders/:id/status/:status: altera o status do pedido
      • GET /orders: listagem paginada de pedidos
      • GET /orders?buyer=:buyerId: listagem paginada de pedidos de um usuário comprador
  • BFFS:
    • buyer mobile bff:
      • API pública a ser usada pelo app cliente mobile do usuário comprador
    • backoffice web bff:
      • API pública a ser usada pelo cliente web de backoffice do usuário administrador

Comandos

Iniciar a aplicação

make start

Derrubar a aplicação

make stop

Status dos containers

make status

Usando

Os BFFs backoffice web bff e buyer mobile bff ficam expostos em http://localhost:4000 e http://localhost:4001 respectivamente.

Recomendo navegar para essas URLs e explorar as APIs utilizando o Apollo Studio - que será ativado automaticamente ao se navegar para essas URLs.

As queries e mutations são todas autenticadas - exceto pelas mutations de login - logo é necessário antes de tudo se autenticar na aplicação - através das mutations login.

Os usuários - credenciais hardcoded no código do user-identity-service - são:

  • buyer:
    • username: dowhile2021
    • password: password123
  • admin:
    • username: theadmin
    • password: strongpassword

Referências

Expert

Rodrigo Botti

rs-dw-2021-bff's People

Contributors

rodrigobotti avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.