Infra 3.0 projekt on toonud SMITi infrastruktuuri ja teenused kaasaegsele ning efektiivsele tasemele, pakkudes suuremat paindlikkust ning kiirust meie arendus- ja haldustegevustes. See võimaldab meil paremini toetada organisatsiooni eesmärke ja kohaneda kiiresti muutuvate nõudmistega, kirjutab äriteenuste arhitekt Mart Järvi projekti kokkuvõtteks.
Aastaks 2019 oli SMIT kaks aastat juurutanud Cloud Foundry konteinerplatvormi. Jõuti ka esimese 500 paigaldatud konteinerini. Siis ei osanud keegi aimata, et 2024. aastaks muutuvad kardinaalselt kogu meie majutusplatvormi arhitektuur ja kasutatavad vahendid.
Projekti alustamine ja väljakutsed
Esimesel aastal alustasime infrastruktuuriprojektiga, mille koondnimeks sai Infra 3.0. Selle eesmärk oli konsolideerida organisatsioonis kasutusel olevad erinevad virtualiseerimisplatvormid ja minna üle ühele lahendusele. See võimaldab säästa nii litsentsi- kui ka halduskulusid. Pärast põhjalikku analüüsi valisime platvormiks Nutanixi ja otsustasime seeläbi ka VMware'i sulgemise.
Analüüsi käigus ilmnesid aga mitmed murekohad, mis vajasid lahendamist:
- Praegune konteinerplatvorm oli liiga tsentraliseeritud ja toetas ainult VMware'i.
- Virtuaalserverite haldamine ja loomine nõudis endiselt palju käsitsitööd.
- Rakenduste paigaldus ei olnud täielikult automatiseeritud.
- Kõik andmebaaside või võrkudega seotud toimingud nõudsid JIRA piletite avamist.
- Virtuaalserveripõhised keskkonnad olid liiga erinevad (arendus vs test vs live).
Meeskond
Tegemist oli kogu asutust hõlmava projektiga ja juurutusfaasis oli kaasatud terve organisatsioon. Arenduse ja disainifaasis tegutses peamiselt kuni 8-liikmeline meeskond, mis koosnes arendajatest, arhitektidest ja süsteemiadministraatoritest.
Ja kuigi võiks arvata, et sellise mastaapse projekti puhul tehti palju hankeid, hangiti väljast lisajõudu ja osteti uut tarkvara, siis tegelikkuses lisaraha ei kulutatud.
Tegelikult töötas sama meeskond selle projektiga osakoormusega, tegeledes samal ajal oma igapäevatöö ja teiste projektidega. Kõik puuduv tarkvara või vajalik automaatika sai nende poolt jooksvalt juurde arendatud. See kõik näitab meeskonna pühendumust ja võimekust leida loomingulisi lahendusi olemasolevate ressursside piires.
Arhitektuuri põhimõtted
Projekti eesmärkide saavutamiseks seadsime paika järgmised disainipõhimõtted:
- 2+1 andmekeskust: Tagada kõrge käideldavus.
- Avatud lähtekoodiga lahenduste eelistamine või vajadusel ise lahenduste loomine.
- Keskkondade ühtlustamine: keskendume andmetele ega erista enam arendus-, testimis-, tootmis- või eeltestimiskeskkondi, sest keskkondade hulk võib olla dünaamiline vastavalt arendatava tarkvara iseärasustele.
- Teenuste standardiseerimine ja automatiseerimine: rohkem „kariloomadena“ käsitletavaid teenuseid (standardiseeritud ja automatiseeritud), vähem „lemmikloomadena“ (erilahendused), üks tõeallikas – GIT.
- Maksimaalne iseteenindusvõimalus: meeskondadel on võimalus teenuseid ise hallata ilma JIRA piletiteta.
Lisaks rakendasime uudset meeskonnapõhist mudelit, mis võimaldab neil omada oma iseseisvat tenant-keskkonda eelprovisioneeritud teenustega. See tagab meeskondade sõltumatuse ja võimaldab probleemide mõju piirata lokaalseks. Meeskonnad saavad oma tenantis ise teenuseid hallata ja konfigureerida.
Rakendamine
Projekti raames võtsime kasutusele järgmised lahendused:
- Ühtne hüperviisor: Nutanix.
- Iseteenindusega virtuaalserverite „imaged“: loome iga kuu värsked virtuaalmasinate mallid, mida meeskonnad saavad kasutada oma teenuste provisioneerimisel.
- Meeskonnapõhised avatud lähtekoodiga Kubernetese ja PostgreSQLi klastrid.
- Meeskonnapõhised avatud lähtekoodiga tulemüüri ja koormusjaoturi klastrid (HAProxy).
Teenuste haldamiseks kasutasime Terraformi, Ansible'it ja Kubernetese operaatoreid. CI/CD automatiseerimiseks kasutasime Atlassian Bamboo'd ja lähtekoodi haldamiseks Atlassian Bitbucketit. Kõik teenused olid loodud kõrgkäideldavana ja Kubernetese disainisime nii, et klastrite loomine ja uuendamine oleks lihtne CI/CD abil, arvestades klastrite suurt hulka.
Rakendused ja nende sõltuvused pakendati Docker konteineritesse, olenemata sellest, kas neid paigaldati Kubernetesesse või virtuaalserveritesse. See võimaldas hoida virtuaalserverite konfiguratsiooni minimaalsena ja tagas rakenduste ühtlase käitumise erinevates keskkondades.
Projekti ajakava ja tulemused
Projekti ajakava:
- 2021–2023: Disain ja arendus.
- 2023–2024: Cloud Foundry konteinerite migratsioon Kubernetesesse (kokku tekkis 100+ Kubernetese klastrit).
- 2024: Virtuaalmasinapõhiste teenuste migratsioon Kubernetesesse või uutesse virtuaalmasinatesse.
Esimese aasta sügisel migratsiooniga alustanud, oli meil 2500 konteinerit ja üle 3000 virtuaalmasina. Peale migratsiooni lõpetamist on meie infrastruktuuris 6500 konteinerit ja umbes 1300 tavalist virtuaalmasinat (lisaks Kubernetese masinad).
Kokkuvõttes langes üldine virtuaalmasinate hulk oluliselt. See aitab säästlikumalt kasutada olemasolevaid ressursse ja tõsta konteinerite abil lihtsamini rakenduste käideldavusi.
Kokkuvõte
Infra 3.0 projekti lõpptulemused:
- Üle 100 meeskonnapõhise Kubernetese ja PostgreSQLi klastri.
- Cloud Foundry edukas sulgemine.
- 99% vanadest virtuaalmasinatest on suletud.
- Äriteenuste meeskondade suurem iseseisvus: teenuste haldamine muutus lihtsamaks ja kiiremaks.
- Standardiseeritud töövahendid: meeskonnad saavad lihtsamini värvata uusi arendajaid ja administraatoreid, kuna töövahendid ning põhimõtted on ühtlustatud. Samuti saab sama hulga inimestega rohkem teenuseid hallata.
- Kiirenenud arendusprotsess: äriteenuste meeskondade arenduskiirus on kasvanud tänu parematele vahenditele ja protsessidele.
- Infrastruktuuri- ja platvormimeeskondade rolli muutus: nendest on saanud üha enam teenusepakkujad, kes toetavad meeskondade iseseisvust.
Tegime ka võrdluse, et kui osta sama kogus Kubernetese klastreid sisse teenusena (riistvara kulusid arvestamata), läheks see maksumaksjale maksma miljoneid aastas.
Täna suudame sama töö ära teha kahe administraatoriga, kes tegelevad lisaks ka teiste teenuste haldusega – ehk haldavad Kubernetest osakoormusega. See näitab meie lähenemise kuluefektiivsust ja efektiivsust ressursside kasutamisel.
Suur aitäh ja kummardus kõikidele smitikatele oma panuse ja aja eest sellesse projekti! Tänu smitikatele saime selle ühise pingutusena tehtud!