Valg av arkitektonisk stil (del 2)

Hei, Habr. I dag fortsetter jeg serien av publikasjoner som jeg har skrevet spesielt for Ä starte det nye kurset. «Software Architect».

Innledning

Valg av arkitektonisk stil er en av de grunnleggende tekniske avgjÞrelsene nÄr man bygger et informasjonssystem. I denne artikkelserien Þnsker jeg Ä gÄ gjennom de mest populÊre arkitektoniske stilene for applikasjonsbygging og svare pÄ spÞrsmÄlet om nÄr en arkitektonisk stil er mest foretrukket. I lÞpet av forklaringen vil jeg prÞve Ä trekke en logisk fÞlge som forklarer utviklingen av arkitektoniske stiler fra monolitter til mikrotjenester.

I forrige gang Vi har gÄtt gjennom monolitten og kommet til at den har en rekke problemer: stÞrrelse, sammenkobling, distribusjon, skalerbarhet, pÄlitelighet og tungmodighet.

Denne gangen vil jeg snakke om mulighetene for Ă„ organisere systemet i form av et ensemble av moduler/biblioteker (komponentorientert arkitektur) eller tjenester (tjenesteorientert arkitektur).

Komponentorientert arkitektur

Komponentorientert arkitektur innebÊrer at systemet kjÞrer som et ensemble av komponenter som kan brukes bÄde i nÄvÊrende og fremtidige prosjekter. NÄr systemet deles opp i komponenter, tas det hensyn til: deres egnethet for gjenbruk, erstatting, uavhengighet fra konteksten, utvidbarhet, innkapsling og uavhengighet.

NÄr komponenter brukes riktig, lÞses problemet med "den store klumpen med dritt" (stor stÞrrelse + hÞy sammenkobling), og komponentene kan representere bÄde enheter for bygging (moduler, biblioteker) og distribusjon (tjenester). Distribusjonsenheter gjenspeiler ikke alltid den kjÞrende prosessen: for eksempel distribueres et webapplikasjon og en database sammen.

Monolitter utvikles oftest som et sett med moduler. Denne tilnĂŠrmingen fĂžrer til uavhengighet i utviklingen, men problemer med uavhengig skalering og distribusjon, feiltoleranse og uavhengighet fra den generelle teknologiske stakken forblir. Derfor er modulen en delvis uavhengig komponent.

Det stÞrste problemet med en slik monolitt er at oppdelingen i moduler er rent logisk og lett kan bli brutt av utviklerne. Det kan dukke opp en core-modul som gradvis utvikler seg til Ä bli en sÞppeldynge, og det kan oppstÄ en vekst i avhengighetsgrafen mellom modulene, og sÄ videre. For Ä unngÄ slike problemer mÄ utviklingen ledes av enten et veldig erfarent team eller under ledelse av en "arkitekt" som jobber heltid med kodegjennomgang og pÄpeker brudd pÄ den logiske strukturen av utviklerne.

Den «ideelle» monolitt bestÄr av et sett logisk atskilte moduler, hvor hver av dem peker mot sin egen database.

Tjenesteorientert arkitektur

Hvis man likevel planlegger Ă„ organisere systemet som et sett tjenester, snakker man om tjenesteorientert arkitektur. Dens prinsipper er: kompatibilitet mellom brukerorienterte applikasjoner, gjenbruk av forretnings tjenester, uavhengighet fra teknologiske sett og autonomi (uavhengig evolusjon, skalerbarhet og distribuerbarhet).

Tjenesteorientert arkitektur (SOA = service oriented architecture) lÞser alle de merkede problemene med monolitten: ved endringer berÞres kun én tjeneste, og et klart definert API opprettholder god innkapsling av komponentene.

Men ikke alt er sÄ enkelt: SOA fÞrer til nye problemer. Fjerntilkallinger er dyrere enn lokale, og omfordeling av oppgaver mellom komponentene har blitt betydelig dyrere.

For Þvrig er muligheten for uavhengig distribusjon en veldig viktig egenskap ved tjenesten. Hvis tjenestene mÄ distribueres sammen eller, enda verre, i en bestemt rekkefÞlge, kan ikke systemet betraktes som tjenesteorientert. I sÄ fall snakker man om en distribuert monolitt (som anses som et antipattern bÄde fra et SOA- og mikrotjenesteperspektiv).

Tjenesteorientert arkitektur fÄr god stÞtte fra det arkitektoniske fellesskapet og leverandÞrer. Herav kommer et stort antall kurs og sertifiseringer, samt velutviklede mÞnstre. Et av de mer kjente er enterprise service bus (ESB). Samtidig er ESB en bagasje fra leverandÞrene; den mÄ ikke nÞdvendigvis brukes i SOA.

Toppunktet for populariteten til tjenesteorientert arkitektur var rundt 2008, etter dette begynte den Ă„ avta, og nedgangen ble betydelig brattere etter fremveksten av mikrotjenester (~2015).

Konklusjon

Etter at vi har diskutert mulighetene for organisering av informasjonssystemer som tjenester og moduler, foreslÄr jeg Ä gÄ videre til prinsippene for mikrotjenestearkitektur og gi sÊrlig oppmerksomhet til forskjellen mellom mikrotjenestearkitektur og tjenesteorientert arkitektur i den neste delen.

Valg av arkitektonisk stil (del 2)

Kilde: habr.com

KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere đŸ”„ KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster