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

Kako izgleda uspješan DevOps sustav 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

Prikaz

Native Teams u Hrvatskoj: Kako olakšavaju brigu o porezima, doprinosima i zapošljavanju u inozemstvu?

Native Teams, platforma za freelancere i digitalno plaćanje koju globalno koristi gotovo sto tisuća ljudi, u Hrvatsku je stigla prije dvije godine. Otkrivamo kako im je izgledalo širenje na regiju te što su u međuvremenu nova uveli.

Zabava i zanimljivosti

Hrvati napokon mogu glasati elektronski, i to zahvaljujući Samu Altmanu (i botovima)

Već niz godina naklapa se i navija za uvođenje elektronskog glasanja u Hrvatskoj. Ako nismo tijekom pandemije koronavirusa, kad ćemo, pitaju se mnogi. Ova superizborna godina, u kojoj nas čekaju parlamentarni, europski i predsjednički izbori jedina je još sila (ne)prilika koja bi mogla nagnati Državno izborno povjerenstvo da poduzmu mjere po tom pitanju.

Digitalni marketing

“Želim samo logo za svoj brend” je kao naručivanje hrane bez soli i začina

U dinamičnom svijetu poslovanja, gdje nam se svakodnevno servira tona sadržaja i reklama i gdje se prvi dojam često stvara jednim pogledom – dobro osmišljen logotip izuzetno je važan. Međutim, put kroz brendiranje ide daleko izvan stvaranja logotipa.

Što ste propustili

Startupi

Tim MediBoost pobjednik je inovacijskog natjecanja AI4Health.Cro

U natjecanju je sudjelovalo 28 timova, od kojih je 10 ušlo u veliku završnicu te dobilo priliku natjecati se za prve tri nagrade, a pobjedu je odnio tim MediBoost.

Intervju

Moran Cerf: Vrijeme je da marketinška industrija uporabi alate koje su neuroznanstvenici stvorili!

Moran Cerf znanstvenik je koji je revidirao protokol lansiranja nuklearnog oružja, a na Danima komunikacija najavio je marketing budućnosti – marketing u našim snovima. I nije riječ o sanjarenju!

FinTech

Regulativa vs. korisničko iskustvo: Kako banke identificiraju korisnike na daljinu?

Pravilnikom Ministarstva financija o uvođenju novih klijenata u bankarski sustav industrija je zadovoljna, ali kako provjeriti identitet klijenta na daljinu - i dalje ostaje veliki problem za banke.

Novost

Cancel kultura: Tko (ni)je dosad otkazan?

U novoj epizodi podcasta komentiramo dvije prilično kontroverzne teme - otkazivanje i politiku.

Analiza

SDP najviše potrošio na digitalno oglašavanje od stranaka, a od pojedinaca – Andrej Plenković

Dan prije izborne šutnje predstavljamo vam tko je bio najglasniji, barem što se tiče trošenja novca, na internetu.

Analiza

E-glasovanje: Dobro za malu Estoniju i veliki Brazil, ali ne i za Hrvatsku. Zašto?

Iako ima više razloga zašto bi ga trebalo modernizirati, izborni je proces u Lijepoj našoj i dalje jedno od čvrstih uporišta otporu digitalizaciji.