# Challenges and Solution Directions of Microservice Architectures: A Systematic Literature Review
## 1 Introduction  
Distributed software systems have come to the fore in the last decade with increased demand for Internet of Things applications and advancements in cloud infrastructure. As a response to this demand and following the developments of service-oriented architecture (SOA) [1], microservice architecture (MSA) has emerged as an architectural style by promoting the use of fine-grained services and the cooperation of the nodes in the cloud. With a set of principles and patterns that address many best practices such as service discovery, API gateway, and circuit breaker, MSA is aimed especially at the problems of availability, fault tolerance, scalability, and maintainability that are experienced in software applications employing SOA or monolithic style.  
With the MSA style, a distributed software application can be structured as a set of small services that run in their own process and communicate using lightweight mechanisms [2]. These services are small, autonomous, and work together [3]. An important aspect that emerged with MSA is the autonomy of the services. It is very critical that the services are designed as fine-grained. At this point, domain-driven design (DDD) [4, 5] principles could be applied to decompose domains into subdomains and identify bounded contexts.  
MSA promises software development firms increased agility because it is more open to changing requirements and related use cases and technologies than monolithic applications [2]. Design, development, and infrastructure automation processes can be handled successfully with MSA. Infrastructure automation decreases manual effort in building, deploying, and operating microservices. On the other hand, decentralized governance and data management allow services to be independent [6]. Thanks to important benefits, several important vendors such as Amazon, Netflix, LinkedIn, and Spotify have implemented their applications using MSA [2; 6; 7].  
Despite these identified advantages, it is not straightforward neither for software teams to use MSA in distributed projects nor for researchers to guide the teams in their successful MSA adoption. One of the basic reasons for this difficulty is that the concept of MSA is complex in terms of distributed service identification, management, and maintenance and, therefore, requires considering a number of challenges together with the related solutions. Successful adoption of MSA thus requires a clear insight into the challenges and the corresponding solutions. Unfortunately, so far, no study has provided a systematic review to categorize the MSA challenges and the potential solution directions.  
This article aims to identify the state of the art of MSA and describe the challenges in its application. In addition, solution directions for the identified challenges are investigated. A systematic literature review (SLR) [8] has been chosen as the research method while carrying out the literature analysis, and a multiphase study selection process has been applied using the published studies since the introduction of MSA in 2014. Overall, 3842 papers discovered using a well-planned review protocol have been examined, and 85 of them have been identified as primary studies for further review concerning research questions. The SLR has resulted in the identification of nine basic categories and forty sub-categories of challenges and the corresponding solution directions that can be used to depict the state-of-the-art in MSA and provide a vision for further research.  
The article is organized as follows. Section 2 provides basic concepts about microservice architecture. Section 3 describes the adopted research method. Section 4 provides an overview of the selected studies. Section 5 presents the results and identified challenges according to the research questions. Section 6 provides a discussion of the results. Section 7 presents the related studies. Finally, Section 8 concludes the paper.