gegužės 20, 2020

Tablein vadovas: kai pagalvoji, mes neturėjome kito pasirinkimo

Aplikacija Tablein leidžia atrasti ir rezervuoti geriausius restoranus Lietuvoje ir visame pasaulyje. Sistemoje nuolat auga tiek restoranų, tiek vartotojų, o kas svarbiausia, tiek ir aukščiausių įvertinimų skaičius (Captera *****).

Pagrindinis iššūkis – įgalinti Lietuvos rinkoje išvystytą aplikaciją veikti globaliai, kai vartotojų geografija labai plati, užklausų į sistemą skaičius didelis.

Restoranų rezervacijos sistema Tablein labai dinamiška, vartotojas gali stebėti labai daug, nuolat atnaujinamos informacijos, o tai tiesiogiai susiję su užklausų į duomenų bazę skaičiumi ir nuolatiniu milžiniškų duomenų srautų apdorojimu, prieš pateikiant užklausos rezultatą vartotojui.

Kliento serveriai buvo lokuoti Lietuvoje, sistema naudojo nemažą dalį turimų resursų, reakcijos į užklausą greitis nebetenkino nei vartotojo, nei sistemos valdytojų. Tablein daug pasirinkimo variantų neturėjo – migracija į AWS buvo neišvengiama.

Skaylink yra aukščiausio lygio valdomų Cloud paslaugų tiekėjas. Mes padedame klientams siekti užsibrėžtų tikslų. Savo darbe vadovaujamės moderniomis ilgalaikių, negrįžtamų pokyčių planavimo praktikomis. Todėl prieš pradėdami darbus su klientu įsigilinome į situaciją, išsiaiškinome problemas, įsiklausėme ir išsiaiškinome kliento lūkesčius.

Migravimo į AWS standartinis kelias atrodo pakankamai paprastai: informacijos surinkimas, reikalavimų identifikavimas ir kliento infrastruktūros bei programinės aplinkos analizė, migravimo plano paruošimas, migravimas, testavimas, trūkumų pašalinimas, pakartotinis testavimas ir finalinis fine-tuning‘as. Dar gi, migravimo komanda po kiekvieno migravimo turi atskirą laiką, skirtą migracijos aptarimui ir išvadoms. Todėl pas kiekvieną naują klientą keliaujame dar labiau patobulėję.

Statistika iki migracijos. Analizei pateikti duomenys.

Tablein pateiktos informacijos matėsi, kad sistemos apkrova stabiliai didelė, atminties resursai nerodė jokių problemų. Svarbus aspektas buvo vartotojų, naudojančių dinaminį turinį skaičius. Taip pat svarbi vartotojų geografija.

Iki pokyčių kliento serveriai buvo lokuoti Lietuvoje, tačiau atsižvelgiant į geografiją parinktas AWS regionas Vokietijoje. Nors Lietuvoje „latency“ padidėjo labai nežymiai, kitų šalių greičiai pagerėjo reikšmingai.

Klientas mus davė informaciją apie įvykį, kurio ateityje norėjo išvengti. Vienu metu monitoringo sistema fiksavo neproporcingai padidėjus transakcijos laikus, matėsi, kad didžiausią dalį laiko naudojo MySQL duomenų bazė, kuri nesugebėjo sutvarkyti su užklausų skaičiumi ir vienos užklausos apdorojimo laikas galėjo užtrukti iki 100 sekundžių. Joks vartotojas nelauks atsakymo į užklausą daugiau nei minutę.

Incidentas, kurio klientas norėjo išvengti ateityje.

Kadangi informacijos rinkimo stadijoje visuomet stengiamės ne tik susirinkti informaciją, bet ir įsiklausyti į kliento lūkesčius, pageidavimus, gavome kliento turimos infrastruktūros topologines serverių schemas schematinę viziją. Tuomet argumentuotai galėjome parengti alternatyvią infrastruktūros architektūrą, kurią klientas, be jokios abejonės, patvirtino.

Jau pasirengimo stadijoje buvome labai džiaugėmės, kad strateginius pokyčius pradėjome kartu su BTT Cloud“, sako Tablein verslo vystymo vadovas Paulius Šuksteris.  

Identifikuojant reikalavimus būsimai Cloud architektūrai svarbiausia teisingai numatyti infrastruktūros bei platforminės ir aplikacinės įrangos resursus.

Ruošiant migracijos planą taikėme „Lift&Shift” migracijos metodą. Kitaip tariant, pagal pirminius TableIn reikalavimus, išanalizavę kliento esamą infrastruktūrą pasidarėme praktiškai identiškas replikas naujojoje infrastruktūroje, turėdami nustatytus našumo indikatorius pasitikrinome, ar sistema AWS veikia geriau, įskaitant užklausų į duombazę apdorojimo trukmę.

Tiesa sakant, eigoje pasimatė, kad migracija tampa ne visiškai „Lift&Shift”.

“Skaylink nuo pat migracijos pradžios viršijo mūsų lūkesčius, nes vietoj tradicinės duomenų bazės naudojo serverless duomenų bazę, kuri už tą pačią kainą, mūsų atveju, davė praktiškai dvigubą našumą. Taip pat nuėmėm SSL bei įgyvendinome visą eilę pagrindinio kodo „refactorin‘imo“ nereikalaujančių pakeitimų. Atskirai buvo sudėliotos ir ugniasienės, tinklų bei saugumo taisyklės“, sako Paulius Šuksteris

Turėdami visą reikalingą informaciją parengėme ir su klientu pasitvirtinome infrastruktūros architektūrinę topologinę diagramą. Atskyrėme statinį ir dinaminį turinį. DNS servisas infrastruktūroje veikia ir kaip  kešavimo servisas. Tai reiškia, kad jisai statinį turinį, automatiškai įeinantį iš/į infrastruktūrą kešuoja savo nuožiūra, atsižvelgiant į tai, ką nustato pats serveris: ar jisai nori kešuoti tą informaciją ar ne. Viena dalis infrastruktūros hostinama ant labai paprasto Amazon LightSail Instans‘o, kuris faktiškai yra valdoma paslauga. Kita dalis sukosi ant Vokietijos regione paruoštos AWS infrastruktūros, susidedančios iš virtualių mašinų, srauto maršrutizatorių, serverless duombazių ir kt., įskaitant ir hybrid-cloud  komponentus.

Svarbi detalė – susitarimas dėl atsakomybių ribų. Su klientu iš anksto susitarėme, kad mes paties kodo neliečiame, bet atsakome už infrastruktūrą, jos konfigūravimą ir veikimą iš infrastruktūrinės pusės. Aišku, realiame gyvenime kodą tenka liesti, bet šiuo atveju klientas į paruoštą infrastruktūrą kodą susikėlė pats ir pradėjome testavimo etapą, kuomet kiekvieną komponentą, kurį krauna puslapis, turėjome peržiūrėti.

Atlikus pirminį testavimą pasitvirtinome migracijos planą. Tablein iš anksto informavo savo klientus, jog bus atliekami profilaktikos darbai.

Migraciją pradėjome ankstų pirmadienio rytą, kai restoranų praktiškai niekas nerezervuoja. Sistemoje buvo sustabdyti visi veiksmai, paliktas tik statinis turinys. Sistema veikė „read only“ rėžimu.

Klonavome duomenų bazę ir įkėlėme kopiją į naują AWS infrastruktūrą. Tai užtruko apie 90 minučių. Tada buvo pakeisti DNS įrašai, padaryti nukreipimai į AWS infrastruktūrą.

Realizavus migraciją, kaip visada, pasipylė netikėtos klaidos, problemos. Iš praktikos žinome, kad tokiais atvejais vienintelis būdas veikti greitai – online komunikavimo kanalas, kuriame dirba įmonės vadovybė, programuotojų ir migracijos komandos. Kiekviena valanda buvo kritinė, bet mums pavyko eliminuoti visas problemas ir vėlų pirmadienio vakarą Tablein vadovas šovė virtualų šampano butelį, nes jo sistema AWS infrastruktūroje veikė puikiai.

Pasak Pauliaus Šuksterio, sėkmę lėmė abipusis požiūris į problemų sprendimą ir tiesioginė neformali komunikacija. „Mes visi nuolat slack‘e sprendėm problemas. Naudojant užduočių/incidentų valdymo priemones ir formalias procedūras migraciją galima sužlugdyti“, sako jis.

Daugiau informacijos apie Tablein rasite www.tablein.com.

„Buvo reikalų su sertifikatais. Bet susitvarkyta“, Arnoldas Mažeika 

„Pasižiūrėjus į aplikacijos veikimą prieš migravimą ir po migravimo matosi, kad jei iki migracijos užklausa truko 550 ms, tai dabar 262 ms. Jei skaičiai skiriasi tik maždaug dvigubai, tai vartotojo patirtis gavosi kokius keturis kartus geresnė. Svarbiausia, klientas liko patenkintas“, Dominykas Palšis

Tai dar viena sudėtinga, bet sėkminga mūsų Cloud divizijos migracija, kuria didžiuojuosi. O labiausiai didžiuojuosi savo komanda!“, Vytenis Sakalas