Mikropalveluarkkitehtuuri on muunnos palvelukeskeisestä ohjelmistoarkkitehtuurista, jonka tavoitteena on vuorovaikuttaa mahdollisimman pienet, löyhästi kytketyt ja helposti muunnettavat moduulit - mikropalvelut , joka yleistyi 2010-luvun puolivälissä ketterien kehityskäytäntöjen ja DevOps -kehityksen yhteydessä [1] . [2] [3] .
Kun perinteisissä palvelukeskeisissä arkkitehtuureissa moduulit voivat olla itsessään varsin monimutkaisia ohjelmistojärjestelmiä ja niiden välinen vuorovaikutus perustuu usein standardoituihin raskaan sarjan protokolliin (kuten SOAP , XML-RPC ), kun taas mikropalveluarkkitehtuurissa järjestelmät rakennetaan komponenteista, jotka toimivat suhteellisen hyvin. perustoiminnot ja vuorovaikutus käyttämällä kustannustehokkaita verkkokommunikaatioprotokollia ( REST -tyyli käyttäen esim. JSON , Protocol Buffers , Thrift ). Moduulien tarkkuutta lisäämällä arkkitehtuuri pyrkii vähentämään kytkentäastetta ja lisäämään liitettävyyttä , mikä helpottaa toimintojen lisäämistä ja vaihtamista järjestelmään milloin tahansa [4] .
Mikropalveluarkkitehtuurille ominaiset ominaisuudet [1] :
Mikropalvelufilosofia itse asiassa kopioi Unix-filosofiaa , jonka mukaan jokaisen ohjelman pitäisi "tehdä yksi asia ja tehdä se hyvin" ja olla vuorovaikutuksessa muiden ohjelmien kanssa yksinkertaisilla tavoilla: mikropalvelut ovat minimaalisia ja omistettu yhdelle toiminnolle. Tärkeimmät muutokset tässä suhteessa kohdistuvat organisaatiokulttuuriin, johon tulee sisältyä kehityksen ja testauksen automatisointi sekä suunnittelukulttuuri, jonka edellytetään varaavan aikaisempien virheiden kiertokulkua, mahdollisuuksien mukaan vanhan koodin poissulkemista. (mikropalvelut korvataan usein kokonaan, koska niiden toiminnot ovat alkeellisia).
Suosituin ympäristö mikropalveluiden pyörittämiseen ovat konttipohjaiset sovellustenhallintajärjestelmät (kuten Kubernetes ja sen lisäosat OpenShift ja CloudFoundry , Docker Swarm , Apache Mesos ), jolloin jokainen mikropalvelu on yleensä eristetty erilliset kontit tai pienryhmäkontit, jotka ovat verkon kautta muiden mikropalveluiden ja ulkopuolisten kuluttajien käytettävissä ja joita hallinnoi orkestrointiympäristö, joka tarjoaa vikasietoisuuden ja kuormituksen tasapainotuksen. Tyypillinen käytäntö on sisällyttää ajonaikaiseen silmukkaan jatkuva integrointijärjestelmä mikropalvelujen päivityksen ja käyttöönoton automatisoimiseksi.
Vaikka termi "mikropalvelut" on ollut käytössä 2000-luvun puolivälistä lähtien, konseptin alkuperä juontaa juurensa vuosittaiseen ohjelmistoarkkitehtien työpajaan Venetsiassa 2011. Vuonna 2012 mikropalveluita esiteltiin 33d Degree -konferenssissa Krakovassa, ja siellä julkaistiin myös useita julkaisuja "granular SOA:sta", jotka esittelivät mikropalvelulähestymistapaa. Vuosina 2012-2014 mikropalveluiden käyttöönotosta omassa ohjelmistokehityksessään ilmoittivat mm. Amazonin , Netflixin , Twitterin asiantuntijat , vuodesta 2015 lähtien mikropalveluarkkitehtuuria koskevia kirjoja on julkaistu säännöllisesti johtavissa kustantamoissa, useita säännöllisiä konferensseja järjestetään kokonaan. omistettu mikropalveluille.
Arkkitehtuuria on kritisoitu jatkuvasti sen muodostumishetkestä lähtien, ja sen toteutuksen aikana esiin tulevista uusista ongelmista mainitaan: