Išnagrinėkite „Bulkhead“ modelį – pagrindinį projektavimo modelį, skirtą kurti atsparias gedimams ir patikimas sistemas, kurios gali atlaikyti gedimus ir išlaikyti prieinamumą. Apima praktinius pavyzdžius.
Atsparumas gedimams: „Bulkhead“ modelio įgyvendinimas atsparioms sistemoms
Nuolat besikeičiančioje programinės įrangos kūrimo srityje svarbiausia yra kurti sistemas, kurios galėtų grakščiai susidoroti su gedimais. „Bulkhead“ modelis yra esminis architektūrinis projektavimo modelis, skirtas šiam tikslui pasiekti. Tai yra galinga technika, skirta izoliuoti gedimus sistemoje, užkertant kelią vienam gedimo taškui kaskadiškai išplisti ir sugadinti visą programą. Šiame straipsnyje bus nagrinėjamas „Bulkhead“ modelis, paaiškinami jo principai, pranašumai, įgyvendinimo strategijos ir praktinis pritaikymas. Išnagrinėsime, kaip efektyviai įgyvendinti šį modelį, siekiant padidinti jūsų programinės įrangos atsparumą ir patikimumą, užtikrinant nuolatinį prieinamumą vartotojams visame pasaulyje.
Supratimas apie atsparumo gedimams svarbą
Atsparumas gedimams reiškia sistemos gebėjimą toliau veikti tinkamai, kai atsiranda komponentų gedimų. Šiuolaikinėse paskirstytosiose sistemose gedimai yra neišvengiami. Tinklo sutrikimai, aparatinės įrangos gedimai ir netikėtos programinės įrangos klaidos yra dažni reiškiniai. Sistema, kuri nėra sukurta atsparumui gedimams, gali patirti visišką gedimą, kai sugenda vienas komponentas, o tai gali sukelti didelių sutrikimų ir galimai didelių finansinių nuostolių. Pasauliniam verslui tai gali reikšti prarastas pajamas, sugadintą reputaciją ir klientų pasitikėjimo praradimą.
Apsvarstykite pasaulinę elektroninės komercijos platformą. Jei sugenda svarbi paslauga, pvz., mokėjimų apdorojimo šliuzas, visa platforma gali tapti nebenaudojama, o tai neleis klientams atlikti operacijų ir paveiks pardavimus keliose šalyse ir laiko juostose. Panašiai debesijos paslauga, siūlanti pasaulinį duomenų saugojimą, gali būti labai paveikta gedimo viename duomenų centre. Todėl atsparumo gedimams įgyvendinimas yra ne tik geriausia praktika; tai yra esminis reikalavimas kuriant tvirtą ir patikimą programinę įrangą, ypač šiandieniniame tarpusavyje susijusiame ir globaliai paskirstytame pasaulyje.
Kas yra „Bulkhead“ modelis?
„Bulkhead“ modelis, įkvėptas laivo skyrių (pertvarų), izoliuoja skirtingas programos dalis į atskirus skyrius arba telkinius. Jei sugenda vienas skyrius, tai neturi įtakos kitiems. Ši izoliacija neleidžia vienam gedimui sugadinti visos sistemos. Kiekvienas skyrius turi savo išteklių, tokių kaip gijos, tinklo jungtys ir atmintis, todėl jis gali veikti nepriklausomai. Šis suskirstymas į skyrius užtikrina, kad gedimai būtų sulaikyti ir neplistų visoje programoje.
Pagrindiniai „Bulkhead“ modelio principai:
- Izoliacija: Kritinių komponentų izoliavimas, siekiant užkirsti kelią vienam gedimo taškui.
- Išteklių paskirstymas: Konkrečių išteklių paskirstymas kiekvienam skyriui (pvz., gijų telkiniams, jungčių telkiniams).
- Gedimų sulaikymas: Apsauga nuo gedimų viename skyriuje, kad jie nepaveiktų kitų.
- Degradacijos strategijos: Strategijų, skirtų grakščiai susidoroti su gedimais, įgyvendinimas, pvz., grandinės pertraukikliai ir atsarginiai mechanizmai.
„Bulkhead“ įgyvendinimo tipai
„Bulkhead“ modelį galima įgyvendinti keliais būdais, kurių kiekvienas turi savo pranašumų ir naudojimo atvejų. Štai dažniausi tipai:
1. Gijų telkinio izoliacija
Tai yra labiausiai paplitęs „bulkhead“ įgyvendinimo tipas. Kiekvienai paslaugai ar funkcijai programoje priskiriamas savo gijų telkinys. Kai paslauga sugenda, jai priskirtas gijų telkinys bus užblokuotas, tačiau kitų paslaugų gijų telkiniai liks nepaveikti. Tai apsaugo nuo kaskadinių gedimų. Pavyzdžiui, paslauga, atsakinga už vartotojo autentifikavimą, gali naudoti savo gijų telkinį, atskirtą nuo gijų telkinio, apdorojančio produktų užsakymus. Jei autentifikavimo paslauga patiria problemų (pvz., atsisakymo aptarnauti ataka), užsakymų apdorojimo paslauga toliau veikia. Tai užtikrina, kad pagrindinė funkcija liktų prieinama.
Pavyzdys (konceptualus): Įsivaizduokite oro linijų rezervavimo sistemą. Galėtų būti atskiras gijų telkinys:
- Skrydžių užsakymui
- Mokėjimų apdorojimui
- Dažno skraidymo mylių valdymui
Jei mokėjimų apdorojimo paslauga sugenda, skrydžių užsakymo ir dažnų skraidymo mylių paslaugos toliau veiks, užkertant kelią visiškam sistemos prastovoms. Tai ypač svarbu pasaulinėms operacijoms, kai vartotojai yra paskirstyti skirtingose laiko juostose ir geografiniuose regionuose.
2. Semafaro izoliacija
Semafarus galima naudoti siekiant apriboti vienu metu siunčiamų užklausų skaičių į konkrečią paslaugą ar funkciją. Tai ypač naudinga valdant išteklių varžybas. Pavyzdžiui, jei paslauga sąveikauja su duomenų baze, semaforas gali būti naudojamas siekiant apriboti vienu metu siunčiamų duomenų bazės jungčių skaičių, apsaugant duomenų bazę nuo perkrovos ir nereagavimo. Semafaras leidžia ribotam skaičiui gijų pasiekti išteklius; visos gijos, viršijančios šį limitą, turi laukti arba būti apdorojamos pagal iš anksto nustatytą grandinės pertraukiklio arba perjungimo strategiją.
Pavyzdys: Apsvarstykite tarptautinę bankininkystės programą. Semafaras galėtų apriboti vienu metu siunčiamų užklausų skaičių į senąją pagrindinio kompiuterio sistemą, naudojamą operacijų duomenims apdoroti. Nustatydama jungčių limitą, bankininkystės programa apsisaugo nuo paslaugų sutrikimų ir palaiko paslaugų lygio sutartis (SLA) pasauliniams vartotojams, nepriklausomai nuo jų buvimo vietos. Limitas neleistų senajai sistemai būti perkrautai užklausomis.
3. Programos egzemplioriaus izoliacija
Šis metodas apima skirtingų programos ar jos komponentų egzempliorių diegimą, siekiant juos izoliuoti vienas nuo kito. Kiekvienas egzempliorius gali būti įdiegtas atskiroje aparatinėje įrangoje, atskirose virtualiose mašinose arba atskiruose konteineriuose. Jei sugenda vienas egzempliorius, kiti egzemplioriai toliau veikia. Apkrovos balansavimo priemonės gali būti naudojamos siekiant paskirstyti srautą tarp egzempliorių, užtikrinant, kad sveiki egzemplioriai gautų didžiąją dalį užklausų. Tai ypač vertinga dirbant su mikroservisų architektūromis, kur kiekviena paslauga gali būti nepriklausomai keičiama ir diegiama. Apsvarstykite daugiatautę srautinio perdavimo paslaugą. Skirtingi egzemplioriai galėtų būti skirti turinio pristatymui skirtinguose regionuose, todėl turinio pristatymo tinklo (CDN) problema Azijoje neturėtų įtakos vartotojams Šiaurės Amerikoje ar Europoje.
Pavyzdys: Apsvarstykite pasaulinę socialinės žiniasklaidos platformą. Platforma gali turėti skirtingus naujienų srauto paslaugos egzempliorius, įdiegtus skirtinguose regionuose, tokiuose kaip Šiaurės Amerika, Europa ir Azija. Jei naujienų srauto paslauga Azijoje patiria problemų (galbūt dėl srauto šuolio vietinio renginio metu), tai neturi įtakos naujienų srauto paslaugoms Šiaurės Amerikoje ir Europoje. Vartotojai kituose regionuose gali toliau pasiekti savo naujienų srautus be pertraukų.
4. Grandinės pertraukiklio modelis (kaip „Bulkhead“ papildymas)
Gandinės pertraukiklio modelis dažnai naudojamas kartu su „Bulkhead“ modeliu. Grandinės pertraukiklis stebi paslaugos būklę. Jei paslauga nuolat sugenda, grandinės pertraukiklis „išsijungia“, neleisdamas tolesnėms užklausoms pasiekti sugendančios paslaugos tam tikrą laikotarpį („atvira“ būsena). Šiuo metu naudojami alternatyvūs veiksmai, pvz., grąžinami talpykloje esantys duomenys arba suaktyvinamas atsarginis mechanizmas. Pasibaigus iš anksto nustatytam skirtajam laikui, grandinės pertraukiklis pereina į „pusiau atvirą“ būseną, kurioje leidžia ribotam užklausų skaičiui patikrinti, ar paslauga atsigavo. Jei užklausos pavyksta, grandinės pertraukiklis užsidaro ir atnaujinamas normalus veikimas. Jei ne, jis grįžta į „atvirą“ būseną. Grandinės pertraukiklis veikia kaip apsaugos sluoksnis, leidžiantis sistemai išlikti prieinamai net tada, kai priklausomybės yra neprieinamos arba patiria problemų. Tai yra gyvybiškai svarbi atsparumo gedimams paskirstytosiose sistemose dalis, ypač tose, kurios sąveikauja su išoriniais API arba paslaugomis.
Pavyzdys: Apsvarstykite finansų prekybos platformą, kuri sąveikauja su įvairiais rinkos duomenų teikėjais. Jei vienas rinkos duomenų teikėjas patiria tinklo problemų arba sutrikimų, grandinės pertraukiklis aptiktų pasikartojančius gedimus. Tada jis laikinai nustotų siųsti užklausas į sugendantį teikėją ir vietoj to naudotų alternatyvų duomenų šaltinį arba talpykloje esančius duomenis. Tai apsaugo prekybos platformą nuo nereagavimo ir suteikia vartotojams nuoseklią prekybos patirtį, net ir esant pagrindinės infrastruktūros gedimui. Tai yra esminė funkcija, užtikrinanti nuolatinį veikimą pasaulinėse finansų rinkose.
Įgyvendinimo strategijos
„Bulkhead“ modelio įgyvendinimas apima kruopštų planavimą ir vykdymą. Konkretus metodas priklausys nuo jūsų programos architektūros, naudojamos programavimo kalbos ir konkrečių jūsų sistemos reikalavimų. Štai kelios bendrosios įgyvendinimo strategijos:
1. Nustatykite kritinius komponentus ir priklausomybes
Pirmasis žingsnis yra nustatyti kritinius komponentus ir priklausomybes jūsų programoje. Tai yra komponentai, kurie, jei jie sugenda, turėtų didžiausią įtaką jūsų sistemai. Tada įvertinkite galimus gedimų taškus ir tai, kaip tie gedimai gali paveikti kitas sistemos dalis. Ši analizė padės jums nuspręsti, kuriuos komponentus izoliuoti naudojant „Bulkhead“ modelį. Nustatykite, kurios paslaugos yra linkusios į gedimus arba reikalauja apsaugos nuo išorinių trikdžių (pvz., trečiųjų šalių API skambučių, prieigos prie duomenų bazės arba tinklo priklausomybių).
2. Pasirinkite tinkamą izoliavimo techniką
Pasirinkite tinkamą izoliavimo techniką, atsižvelgdami į nustatytas rizikas ir našumo charakteristikas. Pavyzdžiui, naudokite gijų telkinio izoliaciją komponentams, kurie yra linkę blokuoti operacijas arba išeikvoti išteklius. Naudokite semaforo izoliaciją, kad apribotumėte vienu metu siunčiamų užklausų skaičių į paslaugą. Naudokite egzemplioriaus izoliaciją nepriklausomai keičiamiems ir diegiamiems komponentams. Pasirinkimas priklauso nuo konkretaus naudojimo atvejo ir programos architektūros.
3. Įgyvendinkite išteklių paskirstymą
Paskirkite specialius išteklius kiekvienam „bulkhead“, pvz., gijas, tinklo jungtis ir atmintį. Tai užtikrina, kad vieno komponento gedimas nepaliktų kitų komponentų be išteklių. Apsvarstykite konkretaus dydžio gijų telkinius ir maksimalius jungčių limitus. Įsitikinkite, kad jūsų išteklių paskirstymas yra pakankamas normaliam srautui apdoroti, paliekant vietos padidėjusiam srautui. Išteklių naudojimo stebėjimas kiekviename „bulkhead“ yra būtinas norint anksti aptikti išteklių išeikvojimą.
4. Integruokite grandinės pertraukiklius ir atsarginius mechanizmus
Integruokite grandinės pertraukiklio modelį, kad aptiktumėte ir grakščiai apdorotumėte gedimus. Kai paslauga sugenda, grandinės pertraukiklis gali išsijungti ir neleisti tolesnėms užklausoms ją pasiekti. Įgyvendinkite atsarginius mechanizmus, kad gedimų metu pateiktumėte alternatyvų atsakymą arba sumažintą funkciją. Tai gali apimti talpykloje esančių duomenų grąžinimą, numatytosios žinutės rodymą arba vartotojo nukreipimą į alternatyvią paslaugą. Kruopščiai sukurta atsarginė strategija gali labai pagerinti vartotojo patirtį ir palaikyti sistemos prieinamumą nepalankiomis sąlygomis.
5. Įgyvendinkite stebėjimą ir įspėjimą
Įgyvendinkite visapusišką stebėjimą ir įspėjimą, kad stebėtumėte kiekvieno „bulkhead“ būklę. Stebėkite išteklių naudojimą, užklausų atsakymo laiką ir klaidų dažnį. Nustatykite įspėjimus, kad praneštumėte, kai bet kuris „bulkhead“ rodo gedimo arba našumo sumažėjimo požymius. Stebėjimas leidžia aktyviai aptikti problemas. Stebėjimo įrankiai ir informacijos suvestinės suteikia vertingos informacijos apie kiekvieno „bulkhead“ būklę ir našumą, palengvinant greitą trikčių šalinimą ir optimizavimą. Naudokite šiuos įrankius, kad stebėtumėte savo „bulkheads“ elgesį normaliomis ir streso sąlygomis.
6. Testavimas ir patvirtinimas
Kruopščiai patikrinkite įgyvendinimą įvairiais gedimų scenarijais. Simuliuokite gedimus, kad patikrintumėte, ar „bulkheads“ veikia tinkamai ir apsaugo nuo kaskadinių gedimų. Atlikite apkrovos testus, kad nustatytumėte kiekvieno „bulkhead“ talpą ir užtikrintumėte, kad jis gali apdoroti numatomą srautą. Automatinis testavimas, įskaitant vienetinius testus, integracinius testus ir našumo testus, turėtų būti jūsų įprasto kūrimo ciklo dalis.
Praktiniai pavyzdžiai
Pailiustruokime „Bulkhead“ modelį keliais praktiniais pavyzdžiais:
1 pavyzdys: Elektroninės komercijos atsiskaitymo paslauga
Apsvarstykite pasaulinę elektroninės komercijos platformą su atsiskaitymo paslauga. Atsiskaitymo paslauga sąveikauja su keliomis tolesnėmis paslaugomis, įskaitant:
- Mokėjimo šliuzą (pvz., „Stripe“, „PayPal“)
- Atsargų paslaugą
- Pristatymo paslaugą
- Kliento paskyros paslaugą
Norėdami įgyvendinti „Bulkhead“ modelį, galite naudoti gijų telkinio izoliaciją. Kiekviena tolesnė paslauga turėtų savo specialų gijų telkinį. Jei mokėjimo šliuzas tampa nepasiekiamas (pvz., dėl tinklo problemos), bus paveikta tik mokėjimų apdorojimo funkcija. Kitos atsiskaitymo paslaugos dalys, tokios kaip atsargos ir pristatymas, toliau veiks. Mokėjimų apdorojimo funkcija bus bandoma pakartotinai, arba klientams bus pasiūlyti alternatyvūs mokėjimo būdai. Grandinės pertraukiklis būtų naudojamas mokėjimo šliuzo sąveikai valdyti. Jei mokėjimo šliuzas nuolat sugenda, grandinės pertraukiklis atsidarys, o atsiskaitymo paslauga arba laikinai išjungs mokėjimų apdorojimą, arba pasiūlys alternatyvias mokėjimo parinktis, taip išlaikant atsiskaitymo proceso prieinamumą.
2 pavyzdys: Mikroservisų architektūra pasauliniame naujienų agregatoriuje
Pasaulinė naujienų agregatoriaus programa naudoja mikroservisų architektūrą, kad pateiktų naujienas iš skirtingų regionų. Architektūra galėtų apimti paslaugas:
- Naujienų srauto paslauga (Šiaurės Amerika)
- Naujienų srauto paslauga (Europa)
- Naujienų srauto paslauga (Azija)
- Turinio įvedimo paslauga
- Rekomendacijų paslauga
Šiuo atveju galite naudoti egzemplioriaus izoliaciją. Kiekviena naujienų srauto paslauga (pvz., Šiaurės Amerika, Europa, Azija) būtų įdiegta kaip atskiras egzempliorius, leidžiantis nepriklausomai keisti ir diegti. Jei naujienų srauto paslauga Azijoje patiria sutrikimą arba srauto šuolį, tai neturės įtakos kitoms naujienų srauto paslaugoms Europoje ir Šiaurės Amerikoje. Apkrovos balansavimo priemonės paskirstytų srautą tarp sveikų egzempliorių. Be to, kiekvienas mikroservisas gali naudoti gijų telkinio izoliaciją, kad apsaugotų nuo kaskadinių gedimų pačioje paslaugoje. Turinio įvedimo paslauga naudos atskirą gijų telkinį. Rekomendacijų paslauga turės savo atskirą gijų telkinį. Ši architektūra leidžia pasiekti didelį prieinamumą ir atsparumą, ypač didžiausio srauto valandomis arba regioniniuose renginiuose, leidžiant vartotojams visame pasaulyje patirti sklandžią patirtį.
3 pavyzdys: Orai duomenų gavimo programa
Įsivaizduokite programą, skirtą gauti orų duomenis iš įvairių išorinių orų API (pvz., „OpenWeatherMap“, „AccuWeather“) skirtingoms vietovėms visame pasaulyje. Programa turi likti funkcionuojanti net jei viena ar kelios orų API yra nepasiekiamos.
Norėdami pritaikyti „Bulkhead“ modelį, apsvarstykite galimybę naudoti technikų derinį:
- Gijų telkinio izoliacija: Priskirkite kiekvienai orų API savo specialų gijų telkinį API skambučiams. Jei viena API yra lėta arba nereaguoja, jos gijų telkinys neblokuos kitų.
- Grandinės pertraukiklis: Įgyvendinkite grandinės pertraukiklį kiekvienai API. Jei API grąžina klaidų, viršijančių nustatytą ribą, grandinės pertraukiklis atsidaro, o programa nustoja siųsti jai užklausas.
- Atsarginis mechanizmas: Pateikite atsarginį mechanizmą, kai API yra nepasiekiama. Tai gali apimti talpykloje esančių orų duomenų rodymą, numatomosios orų prognozės pateikimą arba klaidos pranešimo rodymą.
Pavyzdžiui, jei „OpenWeatherMap“ API neveikia, grandinės pertraukiklis atsidarys. Tada programa naudos talpykloje esančius orų duomenis arba rodys bendrą orų prognozę, o toliau gaus duomenis iš kitų veikiančių API. Vartotojai matys informaciją iš tų prieinamų API, garantuodami pagrindinį paslaugų lygį daugumoje situacijų. Tai užtikrina didelį prieinamumą ir apsaugo programą nuo visiško nereagavimo dėl vienos sugendančios API. Tai ypač svarbu pasauliniams vartotojams, kurie pasikliauja tikslia informacija apie orus.
„Bulkhead“ modelio pranašumai
„Bulkhead“ modelis siūlo daugybę pranašumų kuriant atsparias ir patikimas sistemas:
- Padidintas prieinamumas: Izoliuodamas gedimus, „Bulkhead“ modelis apsaugo nuo kaskadinių gedimų, užtikrindamas, kad sistema liktų prieinama net jei kai kurie komponentai sugenda.
- Pagerintas atsparumas: „Bulkhead“ modelis padidina sistemų atsparumą klaidoms, netikėtiems srauto šuoliams ir išteklių išeikvojimui.
- Supaprastintas gedimų valdymas: Modelis supaprastina gedimų valdymą, sulaikydamas gedimus konkrečiuose skyriuose, todėl lengviau diagnozuoti ir ištaisyti problemas.
- Pagerinta vartotojo patirtis: Apsaugodamas nuo visiško sistemos sutrikimo, „Bulkhead“ modelis užtikrina, kad vartotojai galėtų toliau pasiekti bent dalį programos funkcijos, net ir gedimo metu.
- Lengvesnė priežiūra: Dėl modulinės „Bulkhead“ modelio prigimties lengviau prižiūrėti ir atnaujinti sistemą, nes vieno skyriaus pakeitimai nebūtinai paveikia kitus.
- Keičiamumas: Leidžia keisti atskirų komponentų mastelį nepriklausomai, o tai yra gyvybiškai svarbu norint patenkinti pasaulinę paklausą.
Iššūkiai ir aspektai
Nors „Bulkhead“ modelis siūlo didelių pranašumų, taip pat reikia atsižvelgti į kai kuriuos iššūkius ir aspektus:
- Padidėjęs sudėtingumas: „Bulkhead“ modelio įgyvendinimas padidina sistemos projektavimo ir įgyvendinimo sudėtingumą. Jam reikia kruopštaus planavimo ir supratimo apie jūsų programos architektūrą.
- Išteklių valdymo pridėtinės išlaidos: Išteklių paskirstymas kiekvienam „bulkhead“ gali lemti tam tikras pridėtines išlaidas, ypač jei „bulkheads“ skaičius yra labai didelis. Išteklių naudojimo stebėjimas ir išteklių paskirstymo optimizavimas yra labai svarbūs.
- Tinkama konfigūracija: Gijų telkinio dydžių, grandinės pertraukiklio ribų ir kitų parametrų konfigūravimas reikalauja kruopštaus apsvarstymo ir derinimo, atsižvelgiant į konkrečius jūsų programos reikalavimus.
- Išteklių trūkumo potencialas: Jei „bulkhead“ sukonfigūruotas neteisingai, jam gali trūkti išteklių, o tai gali lemti našumo sumažėjimą. Būtinas kruopštus testavimas ir stebėjimas.
- Pridėtinės išlaidos: Yra nedidelės išlaidos, susijusios su išteklių valdymu ir sąveikos tarp „bulkheads“ valdymu.
Išvada: Atsparių sistemų kūrimas globaliam pasauliui
„Bulkhead“ modelis yra esminis įrankis kuriant atsparias gedimams ir patikimas sistemas šiandieniniame sudėtingame ir tarpusavyje susijusiame pasaulyje. Izoliuodamas gedimus, kontroliuodamas išteklių paskirstymą ir įgyvendindamas grakščias degradacijos strategijas, „Bulkhead“ modelis padeda organizacijoms kurti sistemas, kurios gali atlaikyti gedimus, išlaikyti prieinamumą ir suteikti teigiamą vartotojo patirtį, nepriklausomai nuo geografinės vietos. Pasauliui vis labiau pasikliaujant skaitmeninėmis paslaugomis, gebėjimas kurti atsparias sistemas yra labai svarbus sėkmei. Suprasdami „Bulkhead“ modelio principus ir efektyviai jį įgyvendindami, kūrėjai gali sukurti tvirtesnes, patikimesnes ir globaliai prieinamas programas. Pateikti pavyzdžiai pabrėžia praktinį „Bulkhead“ modelio pritaikymą. Apsvarstykite pasaulinį gedimų pasiekiamumą ir poveikį visoms jūsų programoms. Įgyvendindama „Bulkhead“ modelį, jūsų organizacija gali sumažinti gedimų poveikį, pagerinti vartotojo patirtį ir susikurti patikimumo reputaciją. Tai yra pagrindinis programinės įrangos projektavimo blokas paskirstytame pasaulyje. „Bulkhead“ modelis, kartu su kitais atsparumo modeliais, tokiais kaip grandinės pertraukikliai, yra esminis patikimų, keičiamų ir globaliai prieinamų sistemų projektavimo komponentas.