Prečo začať cloudovať?

Web sa presúva na cloud a my nie sme výnimkou. Do oblakov pomaly premiestňujeme naše najväčšie projekty, Crossuite a SportNet. Rovnako ho využívame pri všetkých nových klientoch v ecommerce oblasti. Aké sú výhody cloudu a pre koho je toto riešenie vhodné? Aj na to sme sa opýtali kolegu Erika, ktorý má s cloudom bohaté skúsenosti.

Aké sú hlavné rozdiely medzi fyzickým serverom a cloudovým riešením?

Z môjho pohľadu je najväčším rozdielom flexibilita. To, čo potrebujem, mám dostupné na zopár kliknutí, všetko mám vo vlastných rukách. Ak treba niečo zmeniť, nemusím volať žiadnej podpore, objednávať RAM-ky, disky, čakať… A keď zístím, že je na projekte problém s priestorom, dokážem ho vyriešiť prakticky za niekoľko minút.

Druhým rozdielom je, povedzme, používateľská prívetivosť. Pri fyzickom serveri je potrebné si všetky komponenty nainštalovať a nastaviť ručne. Vytvoríš databázu, musíš si nastaviť jej zálohovanie, monitoring, kopec ďalších drobností. V cloude vytvoríš databázu a všetko ostatné sa nastaví a vykonáva samo.

A tretím je, aspoň čo som zatiaľ spozoroval, rýchlosť. Moja doterajšia skúsenosť je taká, že aj pri rovnakých nastaveniach cloudového a fyzického servera, je ten cloudový rýchlejší.

To všetko znie ako výhody, existujú aj nejaké riziká?

Určite cena. Cloudové riešenia, tým, že sa dokážu aj samé optimalizovať, dokážu samé aj “nazbierať” poriadne sumy peňazí. Napríklad ak si administrátor zle nastaví automatické škálovanie, môže to dopadnúť tak, že v nejakom bode prevádzky, kedy monitoring deteguje vysoký nápor, sa cloud sám rozhodne navýšiť prostriedky a za toto navýšenie samozrejme používateľ zaplatí. Netreba preto bezhlavo klikať, ale naštudovať si to, rozumieť prostrediu a nastaviť bezpečné limity.

Pri dobrom nastavení môže byť v dlhodobom meradle mesačná suma za cloud aj zhruba rovnaká, ako je to pri fyzickom serveri. Tie náklady sa vrátia v inej podobe, napríklad v tom, že bude mať administrátor viac času na iné veci, lebo toho s architektúrou nemusí toľko riešiť. A oplatí sa to aj kvôli monitoringu, vďaka ktorému včas objavíme potenciálny problém a vyriešime ho ešte predtým, ako spôsobí výpadok a tým pádom nejakú finančnú stratu. Treba si to však dobre prerátať a správne si vybrať.

Ďalšie riziko, ktoré mi napadá, sú možné obmedzenia. Napríklad v Amazon Web Services (AWS) majú štandardne zablokovaný port 25 (SMTP), ktorý sme používali ako zálohu na posielanie emailov pre tých klientov, čo si vlastné SMTP nenastavili. Po presune projektu sme preto museli časť kódu prepísať tak, aby sme tento port vynechali, aby bola funkcionalita v poriadku aj na AWS. Niektoré takéto veci sa ale dajú riešiť aj s AWS podporou, ktorá je veľmi rýchla a často sa aj sama ozve a navrhne optimalizáciu, riešenie. Možno by práve kvôli nám na našom projekte posielanie cez port 25 dokonca aj povolili, ak by sme ich o to požiadali.

Zdroj: www.aboutamazon.eu/what-we-do/amazon-web-services

Hovoril si o správnom výbere, z čoho je aktuálne možné vyberať a podľa akých kritérii si zvoliť ten správny cloud?

Najznámejšie riešenia sú Amazon Web Services, Google Cloud a Microsoft Azure, no existuje určite ešte veľa ďalších. My sme k výberu pristupovali veľmi jednoducho – vytvorili sme si testovacie konto na každom cloude a nastavili všade rovnaké požiadavky. Následne sme porovnali ceny za služby, vyskúšali si používateľské prostredie, špeciálne doplnky a podobne. Nakoniec sme vybrali Amazon.

Práve tie špeciálne požiadavky sú niečo, čo môže pri výbere dosť zavážiť (napríklad podpora určitých typov a verzií databáz, možnosti ich rozšírenia a pod.). Ak potrebuje klient určitú službu, ktorú ponúka len jedno z cloudových riešení, potom si ani nie je z čoho vyberať.

A posledným atribútom výberu je ľudský faktor. Ak máme v tíme človeka, čo sa skvele rozumie do Amazonu a o ostatných nevie nič, určite je lepšie využiť práve Amazon, ako učiť niekoho používať tie ďalšie.

Spomínal si, že bez ľudského faktora to nepôjde. Ako teda funguje správa a čo je vlastne úlohou človeka, ktorý sa o cloudový server stará?

Sú aj takí extrémisti, čo si povedia, že kým to ide, tak do toho netreba ani pozrieť :D Ale ako som spomínal, klient takto môže prísť o kopec peňazí úplne zbytočne. Ja kontrolujem server minimálne 2x denne. Napríklad si otvorím monitoring týkajúci sa pamäte a vidím, že 16 GB RAM-ku, čo sme si pôvodne nastavili, využívame len na tretinu. Okamžite teda urobím zmenu, čím samozrejme klientovi ušetrím. Rovnako napríklad kontrolujem databázu. Ak nejaká hodnota vyskočila do extrému, prezisťujem, či ide o bežný nárast alebo ide o nejakú chybu. V tom druhom prípade hneď hľadám spôsob, ako to vyriešiť. Aktuálne v spolupráci s pánom Madliakom robíme na to, aby som pri nezvyčajných nárastoch či poklesoch určitých hodnôt, napríklad práve to vyťaženie databázy, dostal notifikáciu a mohol sa tomu tak venovať ešte predtým, ako hodnoty prekročia kritické hodnoty. 

Tento prvý mesiac či dva fungovania sú časovo najnáročnejšie, lebo hľadáme optimum. Ale časom sa to vyladí a potom to už bude naozaj len o niekoľkých sekundových kontrolách denne.

Zdroj: Demo dashboard z play.grafana.org

Pre koho je efektívne presunúť sa do cloudu? 

Pre každého, komu fyzický server nestíha. Konkrétne napríklad pre rýchlo rastúce firmy, ktoré musia efektívne riešiť škálovateľnosť. Pre nich je cloud určite bezpečnejšie a efektívnejšie riešenie, ako budovať si vlastnú serverovňu. 

Rovnako možno pre firmy, ktoré ponúkajú obdobné služby, ako my. Náš ecommerce tím má cloud a ukladá naň projekty desiatok klientov, vďaka čomu sa ho v konečnom dôsledku nám i klientom oplatí prevádzkovať.

Dá sa presun nejakým spôsobom otestovať, nasimulovať, aby klient vopred vedel, že všetko bude bežať ako má?

Áno. Na Crossuite sme si napríklad urobili kópiu „live“ databázy z pôvodnej aplikácie (interne navývanej Gama), ktorá je aktuálne na našom fyzickom serveri, a tieto kópie sme presunuli na cloudovú dvojičku aplikácie – Deltu. Tento stav sme 3 až 4 týždne manuálne i automatizovane testovali. Až keď sme sa všetci – vývojári, testeri i klient – zhodli, že všetko je nastavené správne, presunuli sme týchto skoro 2000 používateľov naozaj.

Ako takýto presun projektu prebieha?

Prvý krokom je určite analýza spojená s výberom cloudu a potom návrh architektúry a samotné vytvorenie konta. Nasledovať by mala aktualizácia – napríklad najnovšia verzia jazyka, v ktorom je projekt písaný, a podobne. Nie je to podmienka, ale klientovi to umožní využívať cloud naplno, pretože staršie verzie môžu mať obmedzenia, alebo nemusia byť už vôbec podporované.

Najjednoduchšie je nastaviť si cloudový server 1 k 1 s pôvodným serverom a sledovať ho. Monitoring následne ukáže, kde pridať a kde naopak ubrať.

Lepšie, ako “kopírovať” pôvodné nastavenia serveru je ale využívať veci, ktoré dokáže len cloud. Napríklad urobíš z kódu docker image spúšťaný na cloude alebo využiješ serverless spúšťanie kódov. Samozrejme, všetko má svoje výhody, ale aj nevýhody, a aj nové “features” treba vedieť používať s rozumom.

Ďakujem za rozhovor.