Microservices in Software Development
Stenroos, Kasper (2019)
Stenroos, Kasper
2019
All rights reserved. This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2019052812451
https://urn.fi/URN:NBN:fi:amk-2019052812451
Tiivistelmä
The purpose of this thesis was to examine microservice-based architecture and compare it to the traditional monolithic approach. The thesis project was conducted in a case company, where a new welfare application is under development. It is implemented with microservices and will eventually replace a preceding, monolithic legacy system. The goals were to analyze the advantages of using microservices in software development and study various principles, design aspects and technologies that are commonly paired with them.
The reform of welfare and social care in Finland is tightly related to this application project. However, even if the reform was not passed, the need for a renewed application remains. The legacy application is not compliant with the new national requirements regarding, for example, service code classifications. Furthermore, the new application can be integrated with external resources and services.
Microservice architecture is based on independent and isolated services, which resemble multiple small applications. Each microservice offers a logically separated set of functionalities and the collaboration of the services forms the overall functionality of the application. All communication between the services happens via versioned interfaces. Microservice architecture was an apt choice for this whole project based on its features, since the migration from the preceding legacy software can be done gradually by deploying new features in the form of microservices. Additionally, it fits together with Agile development methodologies. Microservices do not share resources and their lifecycles are handled separately, thus different teams and team members are able to work simultaneously without interruptions. The developers are also able to choose the tools they are most comfortable with for each service.
The main advantages of microservices proved to be modularity, scalability and fault tolerance. The development cycles are faster and more flexible compared to monoliths. When a service is under strain, more instances of it can be created and the network traffic shared among them instead of adding more physical resources, which presents financial savings and enhanced service availability. The microservices of this project were managed with container technologies, which is a lightweight deployment method and allows them to be easily transferred to cloud services in the future.
The reform of welfare and social care in Finland is tightly related to this application project. However, even if the reform was not passed, the need for a renewed application remains. The legacy application is not compliant with the new national requirements regarding, for example, service code classifications. Furthermore, the new application can be integrated with external resources and services.
Microservice architecture is based on independent and isolated services, which resemble multiple small applications. Each microservice offers a logically separated set of functionalities and the collaboration of the services forms the overall functionality of the application. All communication between the services happens via versioned interfaces. Microservice architecture was an apt choice for this whole project based on its features, since the migration from the preceding legacy software can be done gradually by deploying new features in the form of microservices. Additionally, it fits together with Agile development methodologies. Microservices do not share resources and their lifecycles are handled separately, thus different teams and team members are able to work simultaneously without interruptions. The developers are also able to choose the tools they are most comfortable with for each service.
The main advantages of microservices proved to be modularity, scalability and fault tolerance. The development cycles are faster and more flexible compared to monoliths. When a service is under strain, more instances of it can be created and the network traffic shared among them instead of adding more physical resources, which presents financial savings and enhanced service availability. The microservices of this project were managed with container technologies, which is a lightweight deployment method and allows them to be easily transferred to cloud services in the future.