In software development, it is crucial to chose a suitable architecture for the base of your application. During the process you should keep in mind the needs of your software and what are the main issues that can came up throughout implementation. In modern systems, some of the most common difficulties are high coupling between components, challenging scaling and the rigidness of technologies. Microservices architecture solves these problems, among others.
The purpose of this document is to introduce the microservices architecture, including it’s advantages and disadvantages. Moreover, it shows the process of developing a system based on this architecture, while highlighting the main technologies and design patterns to make efficent microservices. Also, it displays the difficulties and the solutions for these difficulties, that can came up during implementation.
Readers can discover the process of designing services, the internal and external communication in these systems and the method used for securing and monitoring components. They can also learn about deploying and operating microservices in containerized environment.