An important design principle of microservices architecture is database per service pattern i.e. domain data is encapsulated within a service and if other services need data then they do so by calling the APIs. This design principle brings one interesting challenge - coordinating writes to more than one service as a single business transaction.
Temporal is an open-source, workflow-as-code workflow orchestration platform. In Temporal, you define workflow steps (called Activities) in code using constructs of language-specific client SDK.
In GraphQL, a mutation is used to insert, update or delete data. The mutation API is defined with the type Mutation rather than the Query. In Spring for Graphql, a mutation can be implemented using @SchemaMapping or @MutationMapping.
GraphQL is susceptible to one issue, commonly known as N + 1 problem. If the GraphQL service is not implemented correctly, it can cause significant latency in the API calls.
The Kubernetes, an open-source container orchestration platform, allows us to deploy the containerized microservice application in public, private, or hybrid cloud infrastructure.
A microservice is built around business capability and DDD provides a framework for building microservices around business capabilities. Likewise, Event storming is a workshop-style, lightweight DDD framework. This article explains a recipe for building a microservice application using Spring Boot, DDD, Event Storming, and API-first design.