Extracting Microservices from a Monolithic Application
Typ
Examensarbete för masterexamen
Program
Publicerad
2019
Författare
Axelsson, Emil
Karlkvist, Erik
Modellbyggare
Tidskriftstitel
ISSN
Volymtitel
Utgivare
Sammanfattning
Microservices is a relatively new way of developing backend applications. Usually in backend applications,
often referred to as monolithic applications, the code is developed and deployed as a
single software artifact. In microservices, this artifact is split up into multiple small applications or
services, where each service can be developed and deployed independently from one another. Microservices
have gained popularity since it enables targeted scaling of specific features and a more
fault tolerant system, among other benefits. However, the microservice system has to be designed
and implemented in such a way that they enable these benefit, which comes with several challenges.
In this thesis, an action research methodology was used to find and validate information about microservices.
The research was therefore split into two phases. The first phase focused on knowledge
gathering, and the second phase on validating the knowledge gathered by migrating a microservice
from a monolith.
During the first phase the challenges that comes with microservices were explored together with
different strategies that can be applied to combat the challenges. Information about microservices
was found through reviewing literature and conducting interviews with developers who has worked
with microservices. Several challenges were found, were the most dominant challenge was analyzing
the domain and defining service boundaries. Another area of focus during the first phase was
to find any advantages or disadvantages of being a small company when developing microservices.
A migration strategy was created at the end of the phase based on the knowledge gathered. The
strategy includes all necessary steps that needs to be conducted in order to successfully migrate
microservices from a monolith.
In the second phase, the migration strategy was tried out and a microservice was migrated. Generally
the strategy worked well and it resulted in a fully functional microservice. However, some
issues were found during implementation, which resulted in some adaptations to the strategy. One
of the goals for the migration strategy was that it should be generalized and usable in any context
where there is a previous monolith. Whether or not the migration strategy is applicable to other
monoliths has not been validated, and further research on it might be necessary.
Beskrivning
Ämne/nyckelord
microservices , services , software architecture , service boundaries