Programação Reativa com Spring Boot, WebFlux e DynamoDB
Fala galera, faz algum tempo que não posto tutoriais aqui no blog, então tive a ideia de criar um projeto no qual iremos construir em etapas, e nessa primeira etapa iremos criar um projeto de uma loja de produtos eletrônicos utilizando as seguintes tecnologias:
- Spring Webflux
Será nosso framework utilizado para a aplicação, com isso iremos tirar proveito dos benefícios da programação reativa non blocking do Spring WebFlux.
Como o intuito desse projeto não é explicar como cada coisa funciona mas sim botar a mão na massa, irei deixar aqui o link da documentação oficial do Spring.- Amazon DynamoDB
Será nossa camada de dados, iremos utilizar o SDK 2 da Amazon para o DynamoDB que nos possibilita tirar proveito dos benefícios da programação reativa, fazendo assim nossa stack full reativa, anteriormente somente era possível utilizando o MongoDB react.
Não se preocupe em criar uma conta na AWS caso não tenha, utilizaremos o tudo local, você pode baixar e ver como rodar o Amazon DynamoDB aqui.
O Amazon DynamoDB é um banco de dados de valor-chave e documento que oferece desempenho de milissegundos com um dígito em qualquer escala. É um banco de dados durável, que se estende por várias regiões, com vários mestres e totalmente gerenciado com segurança, backup e restauração integrados e armazenamento em cache na memória para aplicativos em escala de Internet. O DynamoDB pode processar mais de 10 trilhões de solicitações por dia e comportar picos de mais de 20 milhões de solicitações por segundo.
- REST assured
Framework responsável por realizar nossos testes.
A priori iremos criar testes utilizando uma instância do Amazon DynamoDB rodando local em nossa máquina, porém na próxima etapa iremos
executar direto da aplicação, quase como um H2 nativo do Spring, porém do Dynamo (durrrd).
Basta clonar e iniciar a configuração inicial, tem um exemplo de como as coisas irão funcionar, mas iremos aplicar mais coisas na segunda versão.
(ah, qualquer coisa é só mandar um pull request)