Estender a arquitetura de serviços

Concluído

Com o aplicativo baseado em .js Express configurado para fornecer acesso a um banco de dados PostgreSQL por meio de rotas de API REST, você está pronto para implementar um aplicativo Web frontend Next.js que oferece recursos de gerenciamento. Embora seja possível criar a interface de frontend usando o Express.js, você decidiu seguir a arquitetura baseada em serviços e separar a implementação da funcionalidade frontend e backend.

Nota

Da mesma forma, você pode usar Next.js para implementar rotas de API REST.

Nota

Next.js é uma estrutura web de desenvolvimento frontend de código aberto que inclui suporte para renderização do lado do servidor.

Como estender a arquitetura de serviços

Os aplicativos tendem a se tornar cada vez mais complexos, à medida que seu número de recursos aumenta em resposta às demandas por resposta rápida, recursos inovadores e tempo de inatividade zero. Os aplicativos nativos da nuvem facilitam o desenvolvimento e a implementação desses recursos por meio da separação entre seus componentes de acoplamento flexível.

No seu caso, o aplicativo Express.js expõe uma API REST que fornece a capacidade de adicionar dados de inventário a um banco de dados PostgreSQL. Para observar os dados e executar tarefas de gerenciamento de dados, você pretende usar um aplicativo Next.js. Este é um exemplo de uma abordagem baseada no CQRS.

O CQRS separa os modelos de leitura e gravação de dados. Este processo envolve a divisão das operações de um sistema em duas categorias separadas:

  • Comandos que alteram o estado de um sistema.
  • Consultas que apenas retornam resultados, sem afetar o estado do sistema.

Em alguns casos, o CQRS vai além da separação de operações e inclui armazenamentos de dados físicos distintos para leituras e gravações, com a replicação mantendo-os sincronizados.

Nota

Em cenários mais complexos, os sistemas CQRS podem implementar o Event Sourcing para atualizações, que armazenam apenas eventos, em vez de dados reais.

Cada um dos dois serviços que você usará para implementar esse padrão tem seu próprio modelo de dados que corresponde aos dados reais no banco de dados de destino. Devido à sua separação, os serviços se beneficiam dos recursos associados aos componentes de aplicativos nativos da nuvem, incluindo dimensionamento independente, maior nível de resiliência e suporte para atualizações sem a necessidade de rearquitetar todo o aplicativo.