Firemný softvér v cloude: Ako zistiť, či je cloud správna voľba
Ako sme sa pustili do výzvy: Príbeh našej cesty k modernému riešeniu
V CodeArt sme čelili výzve, ktorá si vyžadovala nielen technické zručnosti, ale aj strategický prístup. Zákazník potreboval rozšíriť svoje hlavné biznisové riešenie o nové funkcie. Problém? Systém bol takmer monolitický, čo so sebou nieslo množstvo rizík, od potenciálnych chýb až po zložitý a zdĺhavý vývojový proces.
Na začiatku sme stáli pred otázkou, ako zabezpečiť kvalitné testovanie pri tak rozsiahlej zmene. Analýzou sme zistili, že existujúca infraštruktúra zákazníka nám na tento účel nestačí. Preto sme sa rozhodli navrhnúť nové vývojové a testovacie prostredia, ktoré by umožnili efektívny vývoj bez ohrozenia existujúceho riešenia.
Rozdelenie monolitu: Od analýzy ku kontajnerom
Prvým krokom bola detailná analýza kódu, vlastností systému a jeho prípadov použitia. Tá nám umožnila pochopiť, ako systém funguje a kde sa nachádzajú prirodzené hranice pre jeho rozdelenie. Rozhodli sme sa pristúpiť k refaktorovaniu systému do samostatných služieb. Kľúčovým prvkom nášho prístupu bolo identifikovanie a formalizovanie kontraktov medzi jednotlivými časťami systému. Viac sa o tejto téme môžete dozvedieť aj v našom blogu: Firemný softvér v cloude: Ako zistiť, či je cloud správna voľba.
Namiesto tradičného delenia podľa vrstiev (databáza, servisná logika, prezentačná vrstva) sme vytvárali služby okolo konkrétnych funkčných celkov. To znamená, že každá nová služba mala jasne definované API, ktoré odrážalo jej zodpovednosti. Pri delení sme využívali aj princípy CQRS (Command Query Responsibility Segregation), čo nám umožnilo rozlíšiť operácie modifikujúce dáta od tých, ktoré ich len čítajú.
Po rozdelení monolitu sme každú službu kontajnerizovali pomocou Dockeru, čo nám prinieslo:
- izoláciu prostredí: Každá služba mohla byť vyvíjaná, testovaná a nasadená nezávisle.
- štandardizáciu: Kontajnery zabezpečili, že všetci vývojári pracovali s rovnakým prostredím, bez ohľadu na ich lokálne nastavenia.
Prechod do cloudu – krok za krokom
Zatiaľ čo naši vývojári pracovali na nových funkciách, my sme paralelne budovali testovacie prostredie v cloude. V tomto bode nešlo o kompletné cloud-native riešenie – to by vyžadovalo veľké zmeny, ako napríklad bezstavovosť alebo idempotentné operácie. Naším cieľom bolo skôr umožniť efektívny vývoj a testovanie.
Výsledok? Zákazník získal robustné testovacie prostredie a nový, prehľadnejší spôsob postupného vývoja a nasadzovania. Rozdelením systému sme zjednodušili prácu, odstránili chaos v kóde a znížili riziko chýb. Navyše sme zákazníka presvedčili, že celý proces nemusí byť taký komplikovaný, ako sa obával.
Kam smerujeme
Teraz pracujeme na ďalšom kroku – príprave plne cloud-native produkčného prostredia. Zákazník už sám vidí výhody, ktoré cloud prináša: lepšiu kontrolu nad zdrojmi, efektívne riešenie problémov (napríklad vďaka dizaster recovery scenárom) a robustnejší systém. Naším cieľom je priniesť benefity ako automatické rozkladanie záťaže (load balancing), clustering a ešte viac možností pre škálovanie.
Pred nami je veľa práce – budujeme automatizované testy a pripravujeme všetko na plynulý prechod. No vďaka doterajším skúsenostiam vieme, že na tejto ceste dokážeme zákazníkovi priniesť moderné, efektívne a spoľahlivé riešenie.
Toto je náš príbeh, ako sme sa z výzvy prepracovali k inovácii a otvorili dvere do sveta moderných cloudových riešení. Ak vás tento prístup zaujal, radi vám ukážeme, ako by mohol fungovať vo vašej firme. 😊