Article Preview
Top1. Introduction
According to Gartner hype cycle1, micro services are capturing huge attention across the world in recent times. Specifically they are quickly moving towards the peak if technological expectations are investigated in the Gartner hype cycle. The micro service oriented architecture plays a significant role in the context of the design, development and deployment of complex service applications. There are numerous advantages of using micro service architectures for any given problem since it deals with complexity of the application, provides independent deployment, and independent scaling of an application.
The present day web and mobile applications are inherently complex and therefore, the complexity of an application is an important issue which needs to be addressed. Microservice patterns offer a viable solution to this problem (Richardson & Smith, 2016). Here, a huge monolithic application is decomposed into a number of small manageable pieces called services. Each of these small services bears a clear cut boundary. This boundary is in the form of either a message driven application programming interface (API) or remote procedure calls (RPC). In comparison, it is difficult to attain this kind of modularity in a monolithic code driven based application as is supported in the micro-service driven architecture.
Another benefit of micro service architecture is that it allows flexibility in application deployment. Normally, for the changes which are local to a specific service, the developers are required to track the incorporation of changes in the deployment. However, for the micro service oriented architecture based applications, there is no need for the developers to track those changes once they have been tested. Most importantly, for each service, there can be a number of instances which can be deployed pertaining to the specific constraints and capacity of that particular service. This provides the advantage of independent service scaling to an application (Núñez, 2017 & Daya et al, 2016).
At the backend, in the light of heterogeneous databases used in complex applications presently, the different characteristics for data storage, integration, maintenance and deployment come with their own complexities and issues to be handled. The existing traditional relational databases have the limitation that they cannot handle large volumes of data. Therefore, the NoSQL family of databases comes up as a better option for this problem Sadalage & Fowler, 2013 and González-Aparicio et al 2018). But, each NoSQL database is appropriate for a specific problem and has limitations for others. Further, the NoSQL databases follow the famous CAP theorem (Brewer, 2000), i.e., a NoSQL database can provide any two features out of consistency, availability and network partitioning. If an application requires all three features, it results in a need to use multiple database systems for the application. For instance, if an e-commerce application needs Document type NoSQL database for storing product related data, it can use MongoDB for the same. If this application also requires storing recommendations of products, it can use the NoSQL graph database system, Neo4j (Han, 2007). Consequently, applications are shifting to the concept of polyglot persistence (Kaur & Rani, 2015 and Srivastava & Shekokar, 2016) wherever any application requires using multiple data storage technologies for multiple types of data. The term polyglot persistence implies use of multiple data stores to store varied types of data being generated or used by a single application (Sadalage & Fowler 2013).
Though polyglot persistence is impressively effective for complex applications utilizing data from various sources, it is also applicable for simple applications involving multiple kinds of data (structured, unstructured or semi-structured). This drift towards polyglot persistence positively complements the micro services based architecture for application development. Each service boundary acts as a wrapper around a specific database technology selected for data storage and manipulation by the service. Therefore, it is beneficial to use micro-service in complex problem- oriented applications which employ polyglot persistence (Schaarschmidt et al., 2015).
This paper proposes an architectural framework for development of micro services based applications employing polyglot persistence. This framework will allow scalability, maintainability and independent deployment of applications which have microservice based architecture. This paper also evaluates a polyglot persistent application based on the proposed framework using parameters listed in the ISO/IEC 25010 standard.
The contributions of the paper can be summarized as: