Kako izgleda uspješan DevOps sustava koji broji preko 20 milijuna korisnika?

Infobip ❤️ Netokracijašto akvizicija znači za vas - i nas?

Kako izgleda uspješan DevOps sustava koji broji preko 20 milijuna korisnika?

DevOps se najčešće ocrtava matricom u obliku simbola za beskonačno (∞), riječ je o kompleksnom cikličnom sustavu u kojem se treba uspješno povezati operativne i developerske procese. Ali postaviti DevOps kada vaš sustav koristi 20 milijuna ljudi izazov je sam za sebe...

DevOps bi u idealnom slučaju trebao besprijekorno povezati software development (Dev) i IT operations (Ops) procese. No, to ne ide uvijek glatko kako je zamišljeno, pogotovo ne u stvarnom svijetu… Lekcije i iskustva onih koji su prošli DevOps stranputice zato su neprocjenjive, a jedan DevOps inženjer podijelio je s nama svoje tajne u koordiniranju velikih sustava.

Možete se zamisliti na mjestu glavnog DevOps inženjera i voditelja tima za razvoj sustava koji broji preko 20 milijuna korisnika? Kako bi u tom slučaju riješili problem automatskog skaliranja? Kako bi radili deployment, a kako bi tek napravili taj cijeli sustav sigurnim? Upravo je za tu ključnu ulogu i ova pitanja zadužen Boris Mijač u Ars Futuri.

U detalje nam je otkrio kako su u Ars Futuri postavili DevOps za Call of Duty League.

Počnimo od generalne podjele

Kada govorimo o proizvodu kojeg koristi 20 milijuna ljudi, organizaciju i praćenje sustava možemo promatrati kao temelje kuće. Boris nam zato odmah na početku objašnjava kako izgleda orkestracija servisa i nadzor takvog sustava.

Gledajući sa strane developmenta, sustav Ars Future sastoji se od frontenda, backenda te iOS i Android mobilnih aplikacija. Većina servisa koje koriste za frontend i backend se nalazi na Amazon Web Services (AWS). Frontend dio nalazi se u docker containerima na Fargateu u sklopu ECS servisa pomoću kojeg vrše i samu orkestraciju, no više o tome kasnije.

Što se tiče nadzora sustava, tu je Amazon CloudWatch koji je spojen na sve potrebne servise i kroz njegove metrike u Ars Futuri izvlače potrebne informacije, optimiziraju sustav, definiraju alarme na koje se određene stvari trebaju događati i slično. Također koriste Datadog, a treće servise po potrebi. Važno je spomenuti i kako na AWS-u općenito koriste 20+ različitih servisa i komuniciraju s 10-ak vanjskih (third party) servisa, a dalje ćete se upoznati i s tim kako koriste neke od najbitnijih kao što su: CloudFront, ECS, API Gateway, Lambda…

Skaliranje sustava za navale igrača vikendom

Ars Futura morala je riješiti problem automatskog skaliranja jer tijekom vikenda imaju pojačano korištenje njihovih servisa na nekoliko sati, a tijekom tjedna promet je nešto manji. Kako bi riješili taj problem, frontend dio su smjestili u docker containere na Fargateu u sklopu ECS servisa jer on pruža razne opcije skaliranja, poput automatskog skaliranja resursa na točno određeni datum i vrijeme te automatskog skaliranja resursa ako dođe do neočekivanog povećanja broja korisnika. To rezultira povećanjem u korištenju memorije, CPU-a i slično:

Naravno, sve je s naše strane točno definirano politikom skaliranja pod kojim uvjetima će se određeni servis skalirati.

Ne smijemo zaboraviti kako sustav posjećuju korisnici s raznih lokacija koji se nalaze diljem svijeta pa je vrlo bitno isporučiti isti sadržaj svima, istom brzinom. To su postigli korištenjem Cloudfront content delivery network servisa:

On nam omogućuje custom cacheiranje, geografska ograničenja te sigurnosne benefite, a jedan od njih je zaštita i kontroliranje DDoS napada.

Backend izazovi

Backend dio sustava je organiziran kroz Lambda funkcije. Svaka funkcija na sebi ima uključeno nadziranje uz pomoć kojeg smo analizirali pod kojim su opterećenjem te na osnovu toga svaku od njih optimizirali, pojašnjava Boris.

Jedan od problema na koje smo naišli je duljina trajanja izvođenja određenog requesta, što povećava “concurrent executions”. Povećanjem memorije na Lambdi i boljim definiranjem cacheiranja na API gatewayima je ovaj problem riješen.

Zatim, drugi problem nastaje kada dođe do naglog povećanja invokacija na određenu Lamdba funkciju. Tada se poveća i broj uzastopnih izvršavanja, a to rezultira throtlleanjem uslijed nemogućnosti podizanja u kratkom vremenskom periodu velikog broja okruženja (environment) za izvršenje. Taj problem je riješen korištenjem provisioned concurrencyja gdje se izbjegne ta anomalija hladnog starta novih izvršnih okruženja, dodaje Boris.

Kako optimizirati troškove kad imate velike oscilacije?

Kada imamo ovako specifičnu upotrebu proizvoda u određeno vrijeme dolazimo do pitanja kako su napravili optimizaciju troškova. Prije svega, ono što je utjecalo na samu optimizaciju troškova je prebacivanje s EC2 instanci na Fargate, dobra optimizacija cacheiranja, kao i korištenje opcije autoskaliranja na Lambda provisioned concurency.

Također, u tome je pomoglo korištenje privatnih poveznica, automatsko gašenje nekih servisa na QA okruženju kada se ne koriste (primjerice izvan radnog vremena):

Uz navedeno, optimizacija korištenja memorije i CPU-a na Lambdama i smanjenje vremena izvođenja je u konačnici smanjilo sam trošak izvođenja.

Također, optimizaciji troškova je doprinijelo i korištenje nekih od planova štednje koje nudi AWS, poput Compute Cloud Plan koji nudi smanjenje troškova za određene servise i do 60%.

Deployment…

Ars Futura ima 3 razvojna okruženja, a to su Quality Assurance, Staging i Production. Na svaki od njih se deployja ovisno po potrebi i dogovoru.

Za deployanje frontenda trenutno koristimo Jenkins, ali smo u potrazi za boljim rješenjem s obzirom na use case kada je potrebno istovremeno buildanje 20-ak različitih docker imagea i deployanje istih.

Što se tiče backenda, kada se novi kod spaja u zadane brancheve, automatski se deployja putem GitHub actionsa na odgovarajući environment. Borisu je teško istaknuti dobre alate i prakse za deployment jer to najviše ovisi o specifičnosti projekta i njegovim potrebama, tako da ne možemo reći kako je neki alat loš u odnosu na drugi:

Više je riječ o rješenju koje je za nas u tom trenutku bilo najpogodnije.

Kada imamo ogroman broj korisnika onda sustav ujedno zahtijeva i sigurnost na visokoj razini. Ars Futura je sigurnost postigla implementiranjem najboljih praksi poput ove:

Primjerice, okruženja na kojima testiramo su zaštićeni firewallom kroz koji kontroliramo tko ima pristup, a implementiranjem SSO servisa smo smanjili rizik neovlaštenog pristupa.

Sadržaj koji se ne dohvaća od trećih servisa se kreira i organizira kroz ContentStack. Govorimo o content management platformi putem koje mogu definirati što od sadržaja se objavljuje i na kojem environmentu:

Svakako, s gledišta sigurnosti, jako je bitno osvijestiti i educirati ljude uključene u projekt o potencijalnim prijetnjama i rizicima.

Što Boris savjetuje u osmišljavanju uspješnih DevOps praksi?

Nakon što ste postavili moderne DevOps prakse i mikroservisne arhitekture, Boris ima za ponuditi i pokoji savjet za one koji žele napraviti slično. Potrebno je dobro proučiti zahtjeve i potrebe sustava i vidjeti je li potrebna mikroservisna arhitektura i u kojoj mjeri će doprinijeti rješavaju dosadašnjih problema:

Da bi se postigla cjelokupna transformacija, potrebno je sudjelovanje cijelog tima koji poznaje tehnološki “stack” i arhitekturu sustava, definirani vremenski period u kojem će se promjene raditi te budžet i očekivani rezultat.

Sukladno članku 94. Zakona o elektroničkim medijima, komentiranje članaka na Netokraciji dopušteno je samo korisnicima koji ostave svoje ime i prezime te mail adresu i prihvate pravila ponašanja.

Pravila ponašanja

Na Netokraciji za vas stvaramo kvalitetan, autorski potpisan sadržaj i zaista se veselimo vašim kvalitetnim, kontruktivnim komentarima. Poštujmo stoga jedni druge prilikom komentiranja, kao i Zakon, držeći se sljedećih pravila ponašanja:

  • Ne budite 💩: Nema vrijeđanja, diskriminiranja, ni psovanja (osim ako nije osobni izričaj, ali onda neka psovka bude općenita, a ne usmjerena prema nekome). Također, upoznajte se sa stavkom 2. članka 94. Zakona o elektroničkim medijima prije no što ostavite komentar.
  • Samo kvalitetna rasprava, manje trolanja: Ne morate se ni sa kim slagati, ali budite konstruktivni i doprinesite raspravi! Svako trolanje, flameanje, koliko god "plesalo" na granici, leti van.
  • Imenom i prezimenom, nismo Anonymous 👤: Autor sadržaja stoji iza svog sadržaja, stoga stojite i vi iza svog komentara. Koristimo ime i prezime te pravu email adresu.

Kako koristimo podatke koje ostavljate? Bacite oko na našu izjavu o privatnosti.

Sve ostale komentare ćemo s guštom spaliti, jer ne zaslužuju svoje mjesto na internetu.

Odgovori

Tvoja e-mail adresa neće biti objavljena.

Popularno

Zabava i zanimljivosti

GOVNO framework – odgovor na birokratsku prirodu Scruma

Governance. Objectives. Visibility. Networks. Outcome. Sve su to ključni aspekti novog okvira za upravljanje projektima.

Društvene mreže

LinkedIn traži tvoju identifikaciju? Samo skoči do javnog bilježnika!

Vrijeme adventa pomalo ostavljamo iza nas, ali uspomene i pokloni ostat će još dugo s nama. Jedan naš poduzetnik posebno će pamtiti kako ga je poznata društvena mreža nagradila odlaskom kod javnog bilježnika.

Tehnologija

“Revolucija” koju donosi ChatGPT podsjeća me na samovozeće aute

Promjene koje donosi napredak u tehnologiji kompleksnije su, sporije i manje seksi od bombastičnih predviđanja na društvenim mrežama.

Što ste propustili

Novost

Hrvatski 404 i Shape postaju dio MYTY grupe, vodeće grupacije njemačkih i švicarskih agencija

404, najveća hrvatska komunikacijska agencija i Shape, tehnološka kompanija koja je dio 404 grupe, postaju dio MYTY, vodeće grupacije njemačkih i švicarskih agencija, čije je sjedište u Berlinu.

Netokracija Podcast

Ivan Vulić s Cambridgea objasnio nam je strojno učenje i kako zaista funkcionira ChatGPT

Ima li boljeg sugovornika na temu strojnog učenja, treniranja velikih jezičnih modela i glasovnih asistenata koji umjesto ljudi rješavaju probleme korisnika od čovjeka koji se time bavi istraživački i u praksi?

Najava

Jeste znali da je “ozbiljno igranje” sve popularniji trend u ozbiljnim firmama?

Često se kaže da je igranje na poslu privilegija samo game developera (da bar!), no i „normalne” tvrtke u posljednjih nekoliko godina ponovno otkrivaju igre kao alat za razvoj „mekih” vještina radnika, unaprijeđenje timske suradnje te katalizator poslovnih inovacija. U to sam se uvjerila posjetivši nekonvencionalnu gaming konferenciju #play14 te razgovarajući s Lidijom Kralj i Josipom Borić-Novosel, renomiranim domaćim stručnjakinjama u ovom području.

Tvrtke i poslovanje

Zašto je big tech ove godine otpustio već 60.000 ljudi i to – preko noći?

Kako oni smiju tako nasumce i preko noći otpustiti 12.000 ljudi pitali su se oni s druge strane svijeta dok su na društvenim mrežama gledali i čitali objave šokiranih američkih "guglera" koji su saznali da više nemaju posao tako što nisu mogli otvoriti službeni email ili ući u ured.

Tvrtke i poslovanje

Airtu je u samo 6 mjeseci odobren patent u SAD-u! Evo kako su u tome uspjeli

Patent osigurava vlasniku isključivo pravo na izradu, korištenje, stavljanje u promet ili prodaju izuma zaštićenog patentom, ali prije toga potrebno je imati originalnu ideju koju nitko na svijetu još nije osmislio.

Digitalni marketing

Emily u Parizu, Emily u hrvatskim oglasima za posao

Život je nekad prepun apsurda. Da ne kažem oksimorona. Nedavno sam na svom LinkedIn profilu objavio post koji uspoređuje ulogu Emily iz serije Emily u Parizu sa stvarnim svijetom marketingaša. Nije prošlo previše vremena prije nego su me preplavile notifikacije u vezi ove objave. Post je postao viralan. Baš kao i svaki post koji Emily objavi. Dok sam čekao poziv iz francuske agencije Savoir, nastao je ovaj članak.