13. – 15. novembra sa časť admin tímu presunula do Londýna, kde sme sa zúčastnili konferencie Velocity 2013. Táto konferencia je zameraná na web performance, operations a mobilné technológie, na ktorej prednášajú ľudia, ktorí škálujú a prevádzkujú weby ako Facebook, Google, Tumblr, Etsy a podobne. Svoje si tu nájdu ako systémoví administrátori, tak aj developerská komunita, resp. DevOps.
Na konferencii je možné oboznámiť sa s novými nástrojmi, trendami a technikami, ktoré prednašajúci väčšinou sám vyvinul, takže to máte častokrát priamo od zdroja.
Pre nás to bola príležitosť potvrdiť si, či sme na správnej ceste, a porovnať sa so svetovými trendami. Zároveň počas večerných meet-upov sa aj bližšie zoznámiť priamo s ľuďmi už z konkrétnych firiem ako Facebook alebo CFEngine3.
Ako prvú prednášku sme navštívili Bring the Noise od @jonlives z Etsy, ktorý hovoril o výzvach spracovania dát z monitoringu. Postaviť monitoring v komplexnejších infraštruktúrach už nie je triviálna záležitosť. Rovnako nie je jednoduché interpretovať množstvo dát, ktoré na človeka z monitoringu chŕlia.
Trend sa teda posúva k automatizovanej analýze dát z monitoringu, tak aby na výstupe dali človeku skôr plnohodnotnú informáciu než dáta, ktoré musí ešte dodatočne analyzovať. Automatizovaná analýza umožňuje upozorniť aj na anomálie neustálym porovnávaním nových dát s tými, ktoré boli namerané skôr. Systém sa tak môže sám naučiť, čo je normálne alebo normálne nie je, a upozorniť na to.
V Etsy na to vyvinuli dva projekty – Skyline – určený na zisťovanie anomálií v časových priebehoch a Oculus – na vyhľadávanie korelácií medzi jednotlivými časovými priebehmi. Vyhľadávanie korelácií je nesmierne dôležité pri skúmaní problémov a zisťovaní toho, ktorý systém ovplyvnil iný systém a ako.
Detekcia anomálií v nameraných dátach je jedna z vlastností, ktorú má aj CFEngine3 kvôli jeho schopnosti Model based monitoringu.
Ďalšia zo zaujímavých prednášok bola When dynamic becomes static od @wimgtr. Klasický spôsob generovania stránky je neustále renderovanie HTML pomocou PHP, ktoré je nutné parsovať a interpretované interpretom PHP pre každú jednu požiadavku. To býva častokrát zbytočné, pretože na stránkach sa rôzne jej časti menia rôznou rýchlosťou, a teda nie hneď.
Autor preto navrhol jazyk, resp. modul do webserveru nginx s názvom SCL (vychadzajúci z ESI), ktorým ukladá jednotlivé vyrenderované a personifikované (v prípade session) časti stránok do memcache. Používateľ tak dostáva neustále vyrenderovanú stránku z memcache, takže všetko je veľmi rýchle. Na základe testov bol rozdiel v prospech SCL až o tri rady vyšší než v prípade klasického generovania dynamického obsahu. Takýto rozdiel v spotrebe zdrojov predstavuje aj vyššiu odolnosť webu voči rôznym vplyvom zvonka (napríklad útoky) – vďaka nízkej spotrebe zdrojov a konštantných odoziev RAM.
Je však jasné, že takáto webová aplikácia musí byť na to napísaná od úplného začiatku. Zdrojové kódy pre tento nginx modul ešte nie sú však dostupné, autor ich však sľúbil v priebehu prvého polroka 2014.
High Performance Browser Networking bol názov ďalšej prednášky od @igrigorik, autora rovnomennej knihy. Na túto tému mal viacero prednášok a patrili medzi najobľúbenejšie.
Zaoberal sa prevažne vplyvom latencie poslednej míle na rýchlosť prenosu dát medzi webserverom a browserom, ktorá má na to významný vplyv.
HTTP/1.1 nie je úplne najideálnejší aplikačný protokol pre TCP/IP, pretože pozostáva z veľa krátkych spojení na webserver. Takéto krátke spojenia neumožňujú využiť celú prenosovú rýchlosť konektivity kvôli slow-start algoritmu v TCP/IP. Zjednodušene povedané, slow-start algoritmus má na starosti, aby nezahltil celú kapacitu siete, takže začína prenášať najprv malé množstvo dát (okno) a každým ďalším potvrdením zvyšuje množstvo dát, ktoré prenesie. Pri malých súboroch sa však toto okno nestihne dostatočne zväčšiť, takže sa viac prejavuje latencia a trvá dlhšie, kým sa dáta stiahnu – napriek tomu, že máte rýchle pripojenie k internetu.
Riešení je niekoľko. Prvým je zväčšiť veľkosť prvotného okna z hodnoty 3 segmentov na 10 segmentov, pretože pôvodná hodnota bola skôr vhodná v 80. rokoch. Vo WebSupporte už niekoľko rokov používame veľkosť TCP okna 10. V posledných kerneloch, minimálne verzie 3.8, je táto veľkosť už defaultná.
Druhým je nahradiť protokol HTTP/1.1 novým protokolom HTTP/2.0, ktorý má zahrnuté veľké množstvo zaujímavých vlastností, ktoré lepšie využívajú zdroje. Podľa autora má byť rok 2014 práve rokom HTTP/2.0, pretože by mala byť sfinalizovaná podpora vo všetkých významných webserveroch a prehliadačoch.
Migrovali ste niekedy hosting? Bolo to náročné? A čo tak zmigrovať 10 000 hostingov alebo rovno 50 miliónov blogov? O veľkých migráciách bola ďalšia prednáška o (takmer) fiktívnom startupe Hipster. Ako prudko rástol, s akými problémami sa stretávali a ako migrovali na novú infraštruktúru.
Príbeh veľmi podobný tomu nášmu so všetkými frustráciami, problémami a výzvami. Je výzvou škálovať služby, pokiaľ máte prudký rast, je však ešte ťažšie, ak sa rast z roka na rok zrýchľuje, pretože veci sa dejú príliš rýchlo. Je to ako keby ste chceli prestavať (vymeniť motor, pneumatiky, karosériu…) celé, neustále zrýchľujúce auto na diaľnici, pričom nesmiete spomaliť ani zastať.
Rozdiel je však v rýchlosti migrácie. Keďže na hostingu nemáme kontrolu nad aplikáciami, je nutné ich migrovať postupne. Je to z toho dôvodu, že kvalita kódu býva rôzna aj na inak serióznych stránkach. Niektorým stačí drobná zmena prostredia (napr. ak sa lokálna databáza zmení na vzdialenú, zmení sa cesta k hostingu v adresárovej štruktúre), aby mali problémy s fungovaním. S ohľadom na náš helpdesk je teda nutné takéto zmeny robiť postupne. Ako robievame migrácie, je však už na samostatný blogpost.
Ďalšou prednáškou bolo Getting 100B Metrics to Disk od spoločnosti Newrelic. Newrelic je známy nástroj na analýzu a zber metrík zo systému alebo aplikácie, odosielajúci ich do centrály, kde sa všetky metriky ukladajú na disk.
Ako nástroj prudko rástol na popularite, stretávali sa jeho tvorcovia taktiež s množstvom výziev a tuningov. Jedna z týchto výziev je, že ak sa nepodarí zapísať dáta do databázy skôr ako za 60 sekúnd, tak sú už vlastne pre nich nepoužiteľné, pretože nejde o meranie v reálnom čase.
Drobné nástroje
V rámci tzv. keynotes, čo boli krátke prednášky prezentujúce nejaký nástroj, sme sa stretli s niekoľkými zaujímavými:
-
grunt-uncss – nástroj, ktorým môžete prečistiť nepotrebný CSS kód zo stránky, a tak skrátiť čas stiahnutia; Video.
-
wpt-script – skript, ktorým zautomatizujete otestovanie rýchlosti webu cez webpagetest.org z rôznych lokácií.
Ďalšie záznamy z prednášok a nástroje môžete nájsť tu.
Meet-upy
Večer po celodenných prednáškach sme mali možnosť zúčastniť sa stretnutí, ktoré organizovalo obyčajne zoskupenie fanúšikov nejakého produktu alebo firma. Sledovaním hashtagu #velocityconf na Twitteri sa nám podarilo dostať na stretnutia spoločností CFEngine, Facebook a Google.
Spoločnosť CFEngine má na starosti vývoj komunitnej a enterprise verzie nástroja pre konfiguračný manažment – CFEngine3. Neformálne sme mali možnosť komunikovať priamo s programátormi a obchodníkmi produktu. Na naše veľké prekvapenie im nebolo meno WebSupport neznáme. Neskôr vysvitlo, že si nás pamätali na základe našej komunikácie z marca minulého roka, keď sme zisťovali cenu komerčnej verzie CFEngine3.
Spomenuli sme im náš projekt deploymentu Openstacku cez CFEngine3, na ktorom už nejaký čas pracujeme a aj ho používame. Odozva bola veľmi pozitívna, na čo sme boli pozvaní o tom porozprávať na Config managment camp, ktorý bude prebiehať v meste Gent v Belgicku 3. – 4. februára 2014.
Druhou akciou bol meet-up s londýnskou vetvou spoločnosti Facebook.
Mali sme možnosť zistiť detaily fungovania Facebooku, ako napríklad, že minimálna jednotka serverov, ktoré si môžete “objednať” v ich datacentre, je rack. Pre istotu v každom datacentre.
Témou rozhovorov bolo zároveň použitie Flash pamätí v serverových aplikáciách. Facebook používa vo veľkom PCIe Flash karty od spoločnosti Fusion-IO, my používame karty od spoločnosti OCZ (Velodrive3 a Z-Drive R4). U nás sa používajú na cachovanie IO operácií pomocou projektu flashcache na storage serveroch pre službu virtuálnych serverov. U nich je to hlavne pre MySQL.
Treťou akciou bola Webperfdays, ktorá sa konala v priestoroch spoločnosti Google (inak pomerne nenápadná budova neďaleko centra Londýna). Zo samotných priestorov sme však videli iba pivničné prostredie, kde majú kuchyňu a lab na testovanie aplikácií na mobilných zariadeniach, ktorých tam bolo niekoľko kusov.
Najviac sme však debatovali s organizátorom DevOpsDays o koncepte DevOps, ktorý považujeme za jediný rozumný spôsob vývoja produktu v tak rýchlo rastúcich spoločnostiach, ako je Facebook. Stiera hranicu medzi prevádzkou a vývojom, takže vývojár je zároveň zodpovedný za deployment a správanie aplikácie na produkčných serveroch. Táto samostatnosť zároveň eliminuje réžiu, ktorá vzniká, pokiaľ sú admin a dev tímy oddelené.
Záver
Konferencia Velocity je konferencia, za ktorou sa oplatí cestovať. Máte možnosť sa priamo stretnúť s ľuďmi, ktorí pomáhajú utvárať trend, a dostať sa k novým, zaujímavým nástrojom.
Prvky ako konfiguračný manažment, automatizovaný deployment IT infraštruktúr, automatizovaná analýza anomálií a vyhľadávanie korelácií v monitoringu budú o pár rokov samozrejmosťou pri prevádzke IT infraštrukúry. Zároveň tu budeme mať onedlho HTTP/2.0, ktorý pomôže vyriešiť množstvo neefektívnosti HTTP/1.1, takže sa web bude sťahovať zas o niečo rýchlejšie aj na mobilných zariadeniach (ktoré sú trendom samé osebe).
My sme sa zároveň utvrdili v tom, že opatrenia, ktoré sme zaviedli za ostatný rok, nás vedú správnym smerom.