Para as pessoas que estão dividindo aplicativos monolíticos em microsserviços, como lidar com o problema de quebrar o banco de dados? Os aplicativos típicos nos quais trabalhei fazem muita integração de banco de dados por motivos de desempenho e simplicidade.
Se você tem duas tabelas que são logicamente distintas (contextos limitados, se preferir), mas costuma agregar o processamento em grandes volumes desses dados, no monólito é mais do que provável que você evite a orientação a objetos e, em vez disso, use o padrão do seu banco de dados Recurso JOIN para processar os dados no banco de dados antes de retornar a visualização agregada de volta à camada do seu aplicativo.
Como você justifica a divisão desses dados em microsserviços onde, presumivelmente, você será obrigado a 'unir' os dados por meio de uma API em vez de no banco de dados?
Eu li o livro Microservices de Sam Newman e no capítulo sobre a divisão do Monolith ele dá um exemplo de "Breaking Foreign Key Relationships", onde ele reconhece que fazer uma junção em uma API vai ser mais lento - mas ele continua dizendo se seu aplicativo é rápido o suficiente de qualquer maneira, faz diferença se ele está mais lento do que antes?
Isso parece um pouco simplista? Quais são as experiências das pessoas? Quais técnicas você usou para fazer as junções de API funcionarem de maneira aceitável?