Így csökkenthetők az Azure felhőköltségek
Egy legacy projekt infrastruktúrájának és CI/CD pipeline-jának újjáépítése.
Valódi időnyomás alatt kezdtünk dolgozni ezen a legacy projekten — az ügyfél mielőbb élesbe akarta állítani a rendszert. Az első célunk az azonnali tesztelés volt: javítottuk az ismert hibákat, és megpróbáltuk kiadni a változtatásokat.
Az örökölt CI/CD végezte a telepítést, és minden CI-futás több mint fél órán át tartott — akármilyen kicsi volt a változás. Ahogy a tesztelés egyre több hibát hozott felszínre, minden javítás újabb 30 perces telepítést jelentett. Ezzel a tempóval sosem értük volna el a határidőt.
Amikor belenéztünk a pipeline-ba, megdöbbentünk a bonyolultságán. Órákba telt csak megérteni, mit csinálnak az egyedi szkriptek. A projekt egyetlen CI-futás alatt többször is felépült, és a saját fejlesztésű változásérzékelő megoldás így is minden alkalommal a teljes kódbázist újraépítette.
Úgy döntöttünk, minden egyedi szkriptet eltávolítunk, és kizárólag iparági sztenderd eszközöket használunk, amelyeket a fejlesztők széles köre ismer. Így minimálisra csökken a tooling hibázásának kockázata, nem megy el idő a karbantartására — és drámaian gyorsabb lesz az új fejlesztők betanulása.
Bevezettük az NX-et a monorepo kezelésére, így csak a változással érintett részek épülnek újra. A telepítéshez Argo CD-t vezettünk be, ami átláthatóbbá és kevésbé hibaérzékennyé tette a telepítéseket, a felesleges CI-lépéseket pedig kiiktattuk.
A telepítési folyamat 30+ percről nagyjából 5–6 percre rövidült. A gyorsabb visszacsatolással a fejlesztők a hibajavításra és a funkciókra fordították az idejüket — nem a release-ek pesztrálására.
A projektnek országonként eltérő konfigurációval kellett futnia, és minden ország saját fejlesztési és staging környezetet kapott. A legacy megközelítésben minden környezethez külön Kubernetes-klaszter és adatbázis tartozott — hat klaszter csak fejlesztésre és tesztelésre, havi nagyjából 2500 fontért, miközben az éles környezet még hátravolt.
A klaszterek 4–5%-os kihasználtsággal üresjáratban futottak. Egyenesen megmondtuk az ügyfélnek: ez hosszú távon nem működik.
Mindent az alapoktól építettünk újra, két környezettel: egy a fejlesztésre és tesztelésre, egy az éles üzemre. Mindkettő menedzselt adatbázist és menedzselt Kubernetes-klasztert tartalmaz, az alkalmazásokat pedig namespace-ekkel választottuk el virtuálisan.
Az Azure-erőforrásokat Terraformmal hoztuk létre — így amikor eljött az élesítés ideje, ugyanazt a projektet futtattuk le más paraméterekkel.
Az új infrastruktúrára váltás után a havi költség 300–400 fontra esett, változatlan virtuális környezetek mellett. Az éles környezettel együtt a teljes összeg havi 700–800 font — még mindig az eredeti költség harmada. Évente több ezer fontot takarítottunk meg az ügyfelünknek.
50% — gyorsabb tranzakciók — 70%-kal alacsonyabb infrastruktúra-költség mellett
Egy beszélgetésből kiderül, jó partnerek vagyunk-e.