Mikroservice arkitektur

Microservice-arkitektur  er en variant af serviceorienteret softwarearkitektur, der har til formål at interagere så små som muligt, løst koblede og let modificerede moduler - microservices , som blev udbredt i midten af ​​2010'erne i forbindelse med udviklingen af ​​agil udviklingspraksis og DevOps [1] [2] [3] .

Mens moduler i traditionelle serviceorienterede arkitekturer kan være ret komplekse softwaresystemer i sig selv, og interaktion mellem dem ofte er afhængig af standardiserede sværvægtsprotokoller (såsom SOAP , XML-RPC ), er systemer i en mikroservicearkitektur bygget af komponenter, der yder relativt elementære funktioner og interaktion ved hjælp af omkostningseffektive netværkskommunikationsprotokoller ( REST -stil ved hjælp af f.eks. JSON , Protocol Buffers , Thrift ). Ved at øge modulernes granularitet sigter arkitekturen på at reducere graden af ​​kobling og øge tilslutningsmuligheder , hvilket gør det lettere at tilføje og ændre funktioner i systemet til enhver tid [4] .

Egenskaber

Egenskaber, der er specifikke for mikroservicearkitektur [1] :

Mikroservicefilosofien kopierer faktisk Unix-filosofien om, at hvert program skal "gøre én ting og gøre det godt" og interagere med andre programmer på enkle måder: mikrotjenester er minimale og dedikeret til en enkelt funktion. De vigtigste ændringer i denne henseende pålægges organisationskulturen, som bør omfatte automatisering af udvikling og test, såvel som designkulturen, som er påkrævet for at sørge for løsningen af ​​tidligere fejl, udelukkelse af ældre kode, hvis det er muligt (mikrotjenester udskiftes ofte helt, da deres funktioner er elementære).

Det mest populære miljø til at køre mikrotjenester er containeriserede applikationsadministrationssystemer (såsom Kubernetes og dets tilføjelser OpenShift og CloudFoundry , Docker Swarm , Apache Mesos ), i hvilket tilfælde hver af mikrotjenesterne normalt er isoleret i en separate containere eller små gruppecontainere, tilgængelige over netværket for andre mikrotjenester og eksterne forbrugere, og styres af et orkestreringsmiljø, der giver fejltolerance og belastningsbalancering. En typisk praksis er at inkludere et kontinuerligt integrationssystem i runtime-løkken for at automatisere opdateringen og implementeringen af ​​mikrotjenester.

Historie

Selvom begrebet "mikrotjenester" har eksisteret siden midten af ​​2000'erne, går konceptets oprindelse tilbage til det årlige Software Architects Workshop i Venedig 2011. I 2012 blev mikroservices præsenteret på 33d Degree-konferencen i Krakow, og der var også en række publikationer om "granular SOA", der skitserede mikroservicetilgangen. I 2012-2014 blev introduktionen af ​​mikrotjenester inden for deres egen softwareudvikling annonceret af specialister fra virksomheder som Amazon , Netflix , Twitter , siden 2015 er bøger om mikroservicearkitektur regelmæssigt blevet udgivet i førende forlag, flere regelmæssige konferencer afholdes helt afsat til mikrotjenester.

Kritik

Arkitekturen er konstant blevet kritiseret fra det øjeblik den blev dannet, blandt de nye problemer, der opstår under implementeringen, bemærkes:

Noter

  1. 12 Martin Fowler . mikrotjenester . martinfowler.com (10. marts 2014). Hentet 29. juni 2016. Arkiveret fra originalen 14. februar 2018.
  2. Balalaie, A.; Heydarnoori, A.; Jamshidi, P. Microservices Architecture Enables DevOps: Migration to a Cloud-Native Architecture   // IEEE - software : journal. - 2016. - 1. maj ( bd. 33 , nr. 3 ). - S. 42-52 . — ISSN 0740-7459 . - doi : 10.1109/MS.2016.64 .
  3. Kontinuerlig implementering: Strategier . Hentet 7. oktober 2016. Arkiveret fra originalen 9. oktober 2016.
  4. Oliver Wolf. Introduktion til mikrotjenester . Hentet 29. juni 2016. Arkiveret fra originalen 11. juni 2016.
  5. 12. Jan Stenberg . Erfaringer fra at fejle med Microservices (11. august 2014). Hentet 29. juni 2016. Arkiveret fra originalen 3. marts 2016.

Litteratur