Med teknologi, der udvikler sig i en hidtil uset hastighed, udgør det udfordringer for virksomheder inden for it-domænet at klare den hurtigt skiftende tendens. Og med den stigende efterspørgsel efter meget skalerbare applikationer bliver den konventionelle monolitiske arkitektur forældet og er ikke længere nyttig. Efter et vist punkt kan monolitiske applikationer være vanskelige at skalere, fordi de er for store og komplekse til at foretage ændringer hurtigt og korrekt. For at overvinde begrænsningerne i den monolitiske arkitektur er Microservices Arkitektur og serviceorienteret arkitektur kommet i spil. De fik snart popularitet som grundlag for at bygge distribuerede systemer.
Både mikroservices og SOA-arkitektur er noget relateret; begge er baseret på distribuerede systemer, der sigter mod at opdele applikationer i tjenester. Begge fremgangsmåder har fælles anvendelsesmodularitet, og de er uafhængige af konkret teknologi. Udtrykket "Microservices" er relativt nyt, men konceptet bag det har eksisteret i lang tid, selv i den tidlige dag, hvor SOA var populært. Mikroservices er et modulariseringskoncept, der er baseret på at opdele store systemer i mindre moduler for at lette implementeringen og udviklingen af softwaren. SOA er endnu en arkitektur baseret på modularisering af software og deler mere eller mindre lignende sæt funktioner. Begge har imidlertid deres rimelige andel af forskelle.
Mikroservices er et arkitektonisk softwaremønster, der strukturerer en applikation som en samling af små, uafhængige processer, der skal bruges til specifik forretningsmæssig kapacitet. Microservices er en tilgang til modularisering af software designet til at adressere specifik finkornet forretningsfunktionalitet. Det bruger moduler, der kører som forskellige processer, hvilket betyder, at det fremmer opbygning af en softwareprogram som en pakke med uafhængige tjenester. Enkelt sagt handler Microservices-arkitektur om at dykke en applikation eller et system i mindre, uafhængige dele baseret på princippet om enkeltansvar. Enkeltansvar betyder, at hver mikroservice har et sæt veldefinerede funktioner og skal køre på en separat proces som en tjeneste.
Service-Oriented Architecture (SOA) er et software-designmønster eller -tilgang til opbygning af applikationsarkitektur baseret på tjenester. Ligesom mikroservices er applikationer i SOA bygget baseret på tjenester. Det er et softwarearkitektonisk koncept, der definerer brugen af løst koblede tjenester til understøttelse af softwarebrugernes krav. Hver service har et unikt sæt funktionalitet i design af en konkret softwarearkitektur. Fokus for en serviceorienteret arkitektur er på den funktionelle infrastruktur og dens forretningstjenester snarere end på den tekniske infrastruktur og dens tjenester. SOA er velegnet til at håndtere komplekse distribuerede systemer. Det giver enheder, der kræver visse distribuerede kapaciteter, mulighed for at lokalisere og gøre brug af disse kapaciteter. Tanken er at distribuere virksomhedens hele it-infrastruktur i separate tjenester.
- Mens begge de arkitektoniske stilarter er baseret på distribuerede systemer, og de sigter mod at opdele applikationer i tjenester, har hver tjeneste et andet ansvar i begge de arkitektoniske mønstre. Microservices-arkitektur handler om at udvikle en enkelt applikation som en pakke med små og uafhængige tjenester, der udvikles og implementeres uafhængigt. SOA er på den anden side et bredere koncept, så mulighederne for problemer med denne stil er større. I modsætning til mikroservices omfatter SOA løst koblede applikationstjenester, der kommunikerer via en fælles kommunikationsmekanisme.
- Mikroservices har uafhængig datalagring, hvilket betyder, at hver mikroservice er en uafhængig service og deler ikke nogen fælles datalagring indbyrdes. Datalagring bringer sit eget sæt fordele og ulemper. Kommunikationen mellem mikroservices skal kun ske gennem et fælles sæt af protokoller som HTTP. I SOA-modellen deler tjenesterne det samme datalagringslag i applikationen. Tjenesterne er løst koblet i SOA og selvforsynende. Forbrugerne er kun bekymrede over servicegrænsefladen og er ligeglade med dens implementering.
- Da mikroservices er selvstændige, kan enhver ændring til en mikroservice testes og implementeres uafhængigt. Dette gør det nemt for dig at koncentrere dig om en enkelt mikroservices forretningsmulighed i stedet for at tænke over hele applikationen. Så ændringer, der kræves til nye funktioner, er begrænset til individuelle mikroservices. SOA har på den anden side større organisatorisk fleksibilitet, og implementeringer er miljøspecifikke, så de effektivt kan reagere på et skiftende forretningsmiljø. SOA distribuerer logikken til portalen og de individuelle tjenester.
- SOA muliggør hurtigere integration af eksisterende softwarekomponenter fra forskellige kilder, hvilket gør fejltolerancen mulig. Fejltolerance er nøglen til store distribuerede systemer. Det minimerer påvirkningen af ændringer og fejl på systemlandskabet som helhed. Mikroservices er på den anden side mere tilbøjelige til fejl på grund af spredning af tjenester og deres kommunikation mellem netværkets netværk. En given applikation i mikroservice er en samling af uafhængige, autonome tjenester, og en fiasko på en eller flere end én tjenester bør ikke bringe hele applikationen ned.
Kort sagt fokuserer mikroservices på isolering, hvilket betyder, at tjenester er uafhængige af hinanden, og ændringer, der kræves til nye funktioner, er begrænset til individuelle mikroservices. Kort sagt repræsenterer mikroservices arkitektur for et individuelt system. SOA definerer på den anden side, hvordan et væld af systemer interagerer inden for virksomhedens IT. I modsætning til mikroservices er fokuset i en serviceorienteret arkitektur på den funktionelle infrastruktur og dens forretningstjenester snarere end på den tekniske infrastruktur og dens tjenester.