Jedným z aktuálnych architektonických štýlov sú aj microservices. Sú založené na myšlienke, že systémy staviame z malých (naozaj dosť malých) komponentov, ktoré sú autonómne (čo najmenej závislé na ostatných systémoch a komponentoch).
Kľúčom k vyhodnoteniu užitočnosti IT architekúry microservices (MS) je dobre poznať kontext zákazníka, jeho biznis, jeho procesy (prevádzka, IT, životný cyklus jeho produktov a systémov atď.), už existujúce technológie a jeho očakávania (dlhodobá stabilita vs. vysoká dynamika, pružnosť vs. dlhodobé plánovanie atď.).
Nasleduje zhrnutie na základe úspešnej realizácie takéhoto projektu (resp. viacerých súvisiacich projektov), kde zohrala hlavnú úlohu pripravenosť a odhodlanie zákazníka, správny výber kľúčových hráčov a pružnosť, s ktorou sa musí počítať v každej fáze realizácie.
IT architektúra sa dá budovať rôznymi stratégiami a rôznym prístupom. Závisí samozrejme od kontextu – komu, načo, ako dlho má slúžiť, aký je predpokladaný životný cyklus budovaných systémov a pod..
Jedným z architektonických štýlov sú aj microservices. Sú založené na myšlienke, že systémy staviame z malých (naozaj dosť malých) komponentov, ktoré sú autonómne (čo najmenej závislé na ostatných systémoch a komponentoch). Typická mikroslužba sa má dať naprogramovať za pár dní, maximálne týždňov, má vlastnú databázu a komunikuje s ostatnými službami (ak je to nutné resp. žiadúce) čo „najľahším“ spôsobom – napr. HTTP REST. Takýchto služieb – keďže sú malé – vznikne veľa, a preto je vhodné ich automatické nasadzovanie a management.
Za to – a to je hlavná motivácia pre využitie tohto prístupu – získavame značné výhody:
Na druhej strane, IT architekt si musí uvedomiť aj riziká a nevýhody takéhoto prístupu:
Tak či onak, kritériá pre využitie tohto architektonického prístupu sú jasné – použijem ho vtedy, keď benefity prevyšujú riziká, čo by skúsený IT architekt, so znalosťou kontextu zákazníka, mal vedieť odhadnúť a spočítať.
Nedávno sme úspešne pomohli zákazníkovi prekonať technologický a štrukturálny problém v jeho predajných a zákazníckych systémoch práve postupným a plynulým prechodom od monolitu k microservices.
Jeho agendou bol predaj služieb a tovaru v pobočkách po celom Slovensku, eshop, elektronické služby koncovým používateľom a všetko čo patrí k starostlivosti o zákazníka (selfcare, call centrum a pod).
Všetky systémy však končili (či vlastne začínali) vo veľkom a pomerne zložitom (a preto aj drahom) systéme, ktorý síce fungoval spoľahlivo, ale bol už na hranici svojich možností – drahé a rizikové zmeny, obavy o výkon, predražovanie prevádzky a rozvoja atď.
Na počiatku bola teda typická motivácia – máme starý, drahý a pomalý systém typu „monolit“. Drahé licencie. Zvyšovanie výkonu škálovaním do šírky bolo už prakticky nemožné. Výkonnejší hardware už výkon nezlepšoval. Zmena architektúry riešenia znamenala urobiť to odznova.
Zákazník si uvedomoval, že náprava je možná iba výmenou prístupu k riešeniu, nie iba výmenou jednej škatule za inú.
Analytici a dizajnéri správne vyhodnotili, že jednotlivé časti systému majú rôznu životnosť, rôznu dynamiku zmien, rôzne nároky na výkon, rôzne správanie sa vzhľadom na škálovanie.
A že svet IT sa za posledné roky zmenil tak, že vývojári a ďalší špecialisti už majú iné očakávania na poli technológií aj metodiky svojej práce – vŕtanie sa v monolite, ktorý už nikde inde nestretnú, nepridáva na pocite zmysluplnosti.
Takže padlo rozhodnutie, že monolit sa postupne odbúra, bude nahradený viacerými nezávislými aplikáciami, ktoré budú organizované v rámci servisne orientovanej architektúry. Zostala iba otázka, aká presne bude ich granularita – niekoľko hlavných aplikácií, alebo veľa malých autonómnych služieb.
Nakoniec prevážil názor, že „niečo tak a niečo tak“, podľa toho, aký užitočný výkon nám ponúknu jednotlivé domény, tiež aký rozpad nám umožnia jej dáta – pretože rozloženie monilitných dát (databázy) je skúšobným kameňom každého pokusu o silne distribuovanú architektúru (čoho sú MS extrémnym prípadom).
Treba si hneď z kraja uvedomiť, že v rámci zákazníka existuje viacero skupín, ktoré majú rôzne požiadavky a očakávania od systému. Prevádzka, biznis, operátori a asistenti, call-centrum či marketing a samozrejme aj zákazníci v eshope a predajniach – každý z nich prichádza do styku so systémom inak, inokedy a za iným účelom. Uspokojiť (a upokojiť) prevádzku nie je menej dôležité ako naplniť očakávania marketingu.
Preto sme zvážili všetky dopady novo navrhovaného prístupu (architektúry) – od vývoja a rozvoja systému, cez jeho nasadenie do testu, prevádzky, až po jeho vyradenie, prípadne postupné nahrádzanie. Tiež je jasné, že žiadna požiadavka nie je konečná, že o pár mesiacov a rokov môže byť všetko inak, že systém sa bude musieť prispôsobovať – rôzne jeho časti rôzne rýchlo a vo viacerých rozmeroch – funkčne, výkonovo, používateľsky.
Preto sme za hlavné výhody navrhovanej microservisovej architektúry (pre väčšinu systému) deklarovali:
Merítkom úspešného projektu je, okrem iného, aj trvanie implementácie, kedže čas sú peniaze a predlžovanie projektu sa rovná jeho predražovaniu. Ale zdanlivo jednoduchá metrika – koľko projekt trvá vs. ako boli nastavené míľniky – má svoje úskalia. V tomto prípade boli práce na transformácii z monolitického systému na MS architektúru odhadované na 3 roky. Bolo však jasné, že za ten čas bude musieť realizačný tím absorbovať aj netriviálne množstvo zmien a prác, ktoré v pláne neboli:
Napriek týmto vplyvom sa ale projekt podarilo dostať do konečnej podoby načas (odchýlka bola v desiatkach dní).
Firma, ktorá si vybuduje (alebo nechá postaviť) systém pre svoj core biznis, zvyčajne má celkom konkrétne očakávania v oblastiach jeho funkčnosti a spoľahlivosti, aj ceny za jeho získanie.
Ale celkové náklady na to, že ten systém vlastní, používa, udržiava, a postupne alebo nárazovo vymieňa, alebo upravuje – tam sú odhady veľmi nepresné (a sú na to aj objektívne dôvody). Rozhodnutie pre nový systém alebo väčšiu zmenu starého si totiž vyžaduje predpovedať, ako sa bude firma, jej zákazníci a jej biznis vyvíjať do budúcnosti. Monolitické systémy zvyčajne indukujú rozhodnutia na dlhú dobu – ak do toho idem, bude to na dlho a zmena rozhodnutia bude drahá. Budovanie systému po menších – ale spolupracujúcich – častiach má svoje riziká (musím sa rozhodovať priebežne a vyhodnocovať, čo ďalej), ale každé rozhodnutie viem relatívne lacno a rýchlo zmeniť alebo opraviť. Čím vyššiu mieru neistoty potrebujem do plánov zahrnúť, tým viac sa mi oplatí investovať do škálovateľnej, tvárnej architektúry mojich systémov.
Vysoko dynamické odvetvia, ako je Telco, energie, média a čokoľvek na internete dnes už neriskujú, a volia prístup, kde sa dá všetko zmeniť a vymeniť do nasledujúceho zdaňovacieho obdobia.
Dnešný svet – otočený okolo technológií – je veľmi rýchly. Nápady sa recyklujú, ale ich používanie sa zrýchlilo a zlacnilo natoľko, že to zmenilo základné princípy budovania biznisu – nielen v technologickej resp. IT doméne.
Realita tlačí na to, že zmenu treba urobiť už dnes, vyskúšať a zajtra to poopraviť alebo zahodiť, zmeniť = čakať nie je na čo. MS ako architektúrny prístup je ústretový tejto filozofii – spraviť niečo rýchlo, hoci jednoducho, a zakrátko to zmeniť (aj úplne prerobiť), ak to nejde dobre. A naopak – ak to stačí, tak sa toho nijako nechytať (nerobiť si prácu navyše = nestrácať čas).
Všetky hore popísané výhody MS smerujú presne k tomuto – maximálna flexibilita, ľahká škálovateľnost, prenositeľnosť (=nezávislosť) – firme umožňujú robiť tieto zmeny rýchlo, málo rizikovo a reagovať na zmenu vonkajších podmienok (trh, technológie, dodávatelia), ale aj vnútorných potrieb a očakávaní (prejdeme do cloudu, alebo rádovo znásobíme zdroje, či zmeníme škálu svojho biznisu atď.).
Takže áno, microservices sú budúcnosť a už aj prítomnosť 🙂 .
Ak máte otázky alebo zvažujete použiť aj vo vašej firme microservices, neváhajte nas kontaktovať.