Microservice architecture for multistore database using canonical data model
In a microservice architecture, solutions are created by teams focused on specific domains and needs. They independently develop and deploy distributed services in the network. One characteristic of microservices is decentralized data management. Each microservice may use different data management technology which best fit its needs. Hence, it is an issue to integrate data of heterogenous microservices to come up with consolidate data views. Flexible and efficient solutions in this scenario are needed. This work is based on the use of a canonical data model as the mechanism for data integration in microservices. The canonical data model is the reference for query specifications and data integration. This work proposes and implements a microservice architecture based on this strategy and it is composed by nodes that intercommunicate through several mechanisms (e.g., SPARQL, GraphQL and JDBC queries, calls to REST services and proprietary APIs). The solution was analyzed in a proof of concept in a fictitious scenario but using real services available at DBPedia and Twitter. The evaluation goal was to qualitatively analyze the use of the architecture in the design, development and execution of microservices in order to identify the characteristics one should consider when using the canonical data model strategy. The evaluation employed the criteria of ISO/IEC 25010 model that most relate to the SOA challenges, which were: usability; performance; compatibility; and, maintainability. The identified advantages and disadvantages of using the architecture (i.e., the strategy) can be used by architects and developers to make their development decisions.