Coordination between multiple microservices: a systematic mapping study
Hirvonen, Aleksi (2023)
Hirvonen, Aleksi
2023
Tietotekniikan DI-ohjelma - Master's Programme in Information Technology
Informaatioteknologian ja viestinnän tiedekunta - Faculty of Information Technology and Communication Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2023-02-20
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202302062063
https://urn.fi/URN:NBN:fi:tuni-202302062063
Tiivistelmä
Mikropalveluarkkitehtuurin suosio on kasvanut huomattavisti viimeisen kymmenen vuoden aikana sen tarjoamien hyötyjen takia, jotka ovat osittain seurausta palveluiden vähentyneestä riippuvuudesta toisiinsa. Riippumattomuutta lisää esimerkiksi hajautettu tiedonhallinta, jonka mukaan jokaisen palvelun tulisi olla vastuussa omistamansa tiedon hallinasta käyttäen sopivinta tietokantateknologiaa. Vaikka tällä voidaan saavuttaa useita etuja, aiheuttaa se myös uusia ongelmia etenkin tiedon yhtenäisyyden hallinnassa kun usean palvelun hallitsemaa tietoa täytyy muokata yhteistyössä. Tämä ongelma voitaisiin välttää käyttämällä yhteistä tietokantaa palveluiden välillä, mutta se osittain poistaisi mikropalvelun hyödyt tuomalla lisää riippuvuusuhteita mikropalveluiden välille. Tästä syystä on tärkeää tarkastella muita vaihtoehtoja hajautetun tiedon hallintaan siten, että mikropalvelun hyötyjä on mahdollista ylläpitää.
Tässä työssä toteutetaan systemaattinen kirjallisuuskartoitus, jonka tavoitteena on löytää sopivia malleja usean mikropalvelun väliseen koordinointiin. Aluksi työssä tunnistetaan koordinointimallit, joista käydään paljon keskustelua kirjallisuudessa. Tämän jälkeen jokaisesta valitusta mallista keskustellaan käyttäen yhteistä keskustelukaavaa, joka sisältää mallin määrittelyn sekä hyötyjen ja haittojen listaamisen.
Kirjallisuuskartoituksessa saatujen tulosten perusteella huomattiin, että mikropalveluarkkitehtuurissa suositaan malleja jotka tarjoavat lopulta yhtenäistä tulosta (eng. eventual consistent). Tämä eroaa huomattavasti perinteisistä ohjelmistoista, joissa yhtenäisyyden täytyy olla ehdoton ja toteuttaa kaikki ACID periaatteet. Ero johtuu osittain siitä, että mallit joilla voidaan tarjota ehdoton johdonmukaisuus usean palvelun välillä vähentää mahdollisuutta rinnakkaisuudelle ja lisäksi vaikuttaa palveluiden saavutettavuuteen heikentävästi. Tästä syystä mikropalveluarkkitehtuurissa usein luovutaan ehdottomasta yhtenäisyydestä, koska sen seuraksena voidaan saavuttaa korkeampi suorituskyky ja lisääntynyt saavutettavuus. Etenkin saga-mallin havaittiin olevan suosittu yhtenäisyyden hallintaan mikropalveluiden välillä, koska siitä keskusteltiin ja siihen liittyviä parannusehdotuksia ja toteutustapoja ehdotettiin useissa töissä.
Vaikkakin saga-malli on tällä hetkellä yleisesti käytetty tapa mikropalveluiden välisessä koordinoinnissa, valitusta kirjallisuudesta huomattiin myös tarve ehdottoman johdonmukaisuuden toteuttaville malleille. Useita uusia malleja ehdotettiin ratkaisemaan tämänhetkisissä ratkaisuissa olevia ongelmia, mutta myös ratkaisuja joilla voitaisiin poistaa tarve usean palvelun väliseen koordinointiin ehdotettiin. Vaikka ehdotetut mallit ovatkin lupaavia, ne ovat vasta suunnitteluvaiheessa eikä niitä voida käyttää luotettavasti tai helposti teollisuusympäristössä. Tästä syystä lisätutkimuksia tarvitaan näiden uusien mallien jalostamiseen tai kokonaan uusien mallien visiontiin. The popularity of microservice architecture has risen recently due to its multiple advantages partly related to the increased independence of services. One of the features that improve independence is decentralized data management, which outlines that each service should manage its own data with preferred data management technologies. However, the usage of decentralized data management brings problems, especially with data consistency when data owned by separate microservices must be modified in coordination. To alleviate this, a shared database between services could be used as it removes the need for coordination altogether, but then again, the usage of a single database could defeat some of the benefits of microservice architecture by increasing tight coupling between services. Therefore, it is important to consider other possibilities to manage the coordination while maintaining the independence of the services.
We conducted a systematic mapping study to find out suitable design patterns to manage the coordination between multiple microservices. Firstly, design patterns that seemed widely discussed and adopted were identified. After this, these patterns were presented using a template that included advantages and disadvantages for each pattern.
The results gathered in the systematic mapping study show that even though traditional systems pursue strict consistency with ACID guarantees, eventual consistency patterns, such as the saga pattern, seem to be more popular in the microservice environment. This is due to drawbacks within distributed transaction protocols including limited concurrency and reduced availability which makes developers choose loosened consistency as a trade-off for higher availability and increased performance. The prevalence of the saga pattern can be seen in the selected works as there are multiple articles proposing methods to manage different parts of the pattern. Also, implementation details were mainly related to the saga pattern in the selected works.
Even though the saga pattern is currently the most prevalent option, there is still interest in highly consistent coordination methods in the research community. Multiple solutions have been proposed, which either propose new consistency protocols with strict consistency guarantees or entirely new solutions to remove the need for coordination completely. However, there are no novel solutions that could manage the requirements of microservice architecture reliably in the industry setting yet. Therefore, further research is still required to refine already proposed solutions or to vision new solutions for this problem.
Tässä työssä toteutetaan systemaattinen kirjallisuuskartoitus, jonka tavoitteena on löytää sopivia malleja usean mikropalvelun väliseen koordinointiin. Aluksi työssä tunnistetaan koordinointimallit, joista käydään paljon keskustelua kirjallisuudessa. Tämän jälkeen jokaisesta valitusta mallista keskustellaan käyttäen yhteistä keskustelukaavaa, joka sisältää mallin määrittelyn sekä hyötyjen ja haittojen listaamisen.
Kirjallisuuskartoituksessa saatujen tulosten perusteella huomattiin, että mikropalveluarkkitehtuurissa suositaan malleja jotka tarjoavat lopulta yhtenäistä tulosta (eng. eventual consistent). Tämä eroaa huomattavasti perinteisistä ohjelmistoista, joissa yhtenäisyyden täytyy olla ehdoton ja toteuttaa kaikki ACID periaatteet. Ero johtuu osittain siitä, että mallit joilla voidaan tarjota ehdoton johdonmukaisuus usean palvelun välillä vähentää mahdollisuutta rinnakkaisuudelle ja lisäksi vaikuttaa palveluiden saavutettavuuteen heikentävästi. Tästä syystä mikropalveluarkkitehtuurissa usein luovutaan ehdottomasta yhtenäisyydestä, koska sen seuraksena voidaan saavuttaa korkeampi suorituskyky ja lisääntynyt saavutettavuus. Etenkin saga-mallin havaittiin olevan suosittu yhtenäisyyden hallintaan mikropalveluiden välillä, koska siitä keskusteltiin ja siihen liittyviä parannusehdotuksia ja toteutustapoja ehdotettiin useissa töissä.
Vaikkakin saga-malli on tällä hetkellä yleisesti käytetty tapa mikropalveluiden välisessä koordinoinnissa, valitusta kirjallisuudesta huomattiin myös tarve ehdottoman johdonmukaisuuden toteuttaville malleille. Useita uusia malleja ehdotettiin ratkaisemaan tämänhetkisissä ratkaisuissa olevia ongelmia, mutta myös ratkaisuja joilla voitaisiin poistaa tarve usean palvelun väliseen koordinointiin ehdotettiin. Vaikka ehdotetut mallit ovatkin lupaavia, ne ovat vasta suunnitteluvaiheessa eikä niitä voida käyttää luotettavasti tai helposti teollisuusympäristössä. Tästä syystä lisätutkimuksia tarvitaan näiden uusien mallien jalostamiseen tai kokonaan uusien mallien visiontiin.
We conducted a systematic mapping study to find out suitable design patterns to manage the coordination between multiple microservices. Firstly, design patterns that seemed widely discussed and adopted were identified. After this, these patterns were presented using a template that included advantages and disadvantages for each pattern.
The results gathered in the systematic mapping study show that even though traditional systems pursue strict consistency with ACID guarantees, eventual consistency patterns, such as the saga pattern, seem to be more popular in the microservice environment. This is due to drawbacks within distributed transaction protocols including limited concurrency and reduced availability which makes developers choose loosened consistency as a trade-off for higher availability and increased performance. The prevalence of the saga pattern can be seen in the selected works as there are multiple articles proposing methods to manage different parts of the pattern. Also, implementation details were mainly related to the saga pattern in the selected works.
Even though the saga pattern is currently the most prevalent option, there is still interest in highly consistent coordination methods in the research community. Multiple solutions have been proposed, which either propose new consistency protocols with strict consistency guarantees or entirely new solutions to remove the need for coordination completely. However, there are no novel solutions that could manage the requirements of microservice architecture reliably in the industry setting yet. Therefore, further research is still required to refine already proposed solutions or to vision new solutions for this problem.