Mikroteenused

Mikroteenused on tarkvaraarendamise tehnika - teenusorienteeritud arhitektuuri stiili variant – mis struktureerib rakenduse lõdvalt sidestatud teenuste kogumina. Mikroteenuste arhitektuuris on teenused tehtud detailseks ja protokollid on kergekaalulised. Rakenduse väiksemateks osadeks jaotamise eelis on modulaarsuse võimaldamine, mistõttu saab seda lihtsamini mõista, arendada, testida ning muuta vastupidavamaks arhitektuuri erosioonile. Mikroteenused võimaldavad paralleelset arengut, andes väikestele autonoomsetele tiimidele võimaluse arendada oma enda vastavaid teenuseid. Mikroteenustepõhised arhitektuurid võimaldavad pidevvalmidust. Kuigi ametlikku definitsiooni mikroteenuste kohta ei ole, on informaatikamaailmas ajapikku kujunenud konsensuslik vaade. Tihtipeale loetakse defineerivateks omadusteks järgmisi karakteristikuid: Mikroteenuste arhitektuuri teenused on tihti protsessid, mis suhtlevad eesmärgi täitmiseks üle võrgustiku, kasutades tehnoloogiliselt agnostilisi protokolle nagu HTTP. Mikroteenuste arhitektuuri teenused on eraldiseisvalt toimivad. Teenused on organiseeritud detailsete ärivõimekuste ümber. Mikroteenuste detailsus on oluline, kuna see eristab seda teenusorienteeritud arhitektuurist. Teenuseid saab rakendada, kasutades erinevaid programmeerimiskeeli, andmebaase, riist- ja tarkvaralist keskkonda sõltuvalt sellest, milline sobib kõige paremini. See ei tähenda, et üks mikroteenus oleks kirjutatud mitmes erinevas keeles. Kuigi on peaaegu kindel, et erinevad komponendid, millest teenus koosneb, nõuavad erinevaid keeli või rakendusliideseid, on see tegelikult efektiivne võrdluses monoliitse arhitektuuristiiliga. Teenused on suuruselt väikesed, sõnumite saatmise võimalusega, seotud kontekstidega, autonoomselt arendatud, eraldiseisvalt rakendatavad, detsentraliseeritud ja ehitatud ning välja lastud automaatsete protsessidega. Mikroteenus pole kiht monoliitses rakenduses, vaid pigem eraldiseisev osa ärifunktsionaalsusest selgete liidestustega ja võib läbi omaenda sisemiste komponentide rakendada kihilist arhitektuuri. Strateegilisest perspektiivist järgib mikroteenuste arhitektuur põhimõtet "Tee ühte asja, aga tee seda hästi." Briti tarkvaraarendaja ja informaatik Martin Fowler kirjeldab mikroteenustepõhist arhitektuuri järgnevate omaduste kaudu:  Kasutab loomu poolest modulaarset struktuuri.  Laenab end pidevvalmiduses tarkvaraarendusprotsessile. Rakenduse väikesele osale muudatuse tegemine vajab ainult ühe või väikese hulga teenuste muutmist. Järgib põhimõtteid nagu detailsed liidestused ja ärijuhitav arendus. On võrdlemisi tavaline, et sellist arhitektuuristiili kohandatakse pilvepõhistele rakendustele ja rakendustele, mis kasutavad kergekaalulist struktureeritud väljalaskmist. Keeleline lähenemine mikroteenuste arendamisel keskendub programmeerimiskeele, mis saaks mikroteenust esitada kui ühtset tarkvaramoodulit. Efektiivsust saab määrata projekti arhitekteerimise ja rakendamise tasakaalustatuse järgi. Üheks seda rolli täitma pidavaks keeleks on Jolie. Chen, Lianping (märts 2018). "Microservices: Architecting for Continuous Delivery and DevOps". Vaadatud 18.08.2019. Richardson, Chris. "Microservice Architecture Pattern". Vaadatud 18.08.2019. Fowler, Martin (25.03.2014). "Microservices". Originaali arhiivikoopia seisuga 14. veebruar 2018. Vaadatud 19.08.2019. Nadareishvili, I., Mitra, R., McLarty, M., Amundsen, M., Microservice Architecture: Aligning Principles, Practices, and Culture, O’Reilly 2016 Krause, Lucas (2015). Microservices: Patterns and Applications: Designing fine-grained services by applying patterns. Weber Morales, Alexa (07.01.2019). "Grails Founder: What Java Developers Don't Know About Memory Can Cost Them Money in the Cloud". Forbes. Vaadatud 18.09.2019. "CI/CD for microservices architectures". 27.03.2019. Vaadatud 18.08.2019. Josuttis, N. (2007). SOA in Practice. Sebastopol, CA, USA: O'Reilly. The Jolie Team. "Vision of Microservices Revolution". Vaadatud 18.08.2019.