Staré Roští je vypnuté

Před pár minutami jsme vypnuli poslední servery starého Roští. Naučilo nás mnohé a minimálně pro mě tu bylo od mých Pythoních začátků. Poslední čtyři roky se nikam neposunulo a plně ho nahradilo nové Roští. Nakonec jsme došli do bodu, kdy jsme museli jeho provoz dotovat a tak bylo vypnutí nevyhnutelné. Tyto minuty jsou tak tlustou čárou za minulostí a časem k nějakému zhodnocení těch sedmi let. Byly to roky plné chyb a učení se, ale i dnes máme kam jít.

Tak nějak je u nás špatným zvykem, že děláme některé nepříjemné věci na poslední chvíli a proto ještě před dvěma týdny bylo na starém Roští závislé DNS a v posledních hodinách doháníme migraci SMTP serveru. U DNS serverů nám to ale pomohlo, protože jsme se mohli pořádně připravit a problémy s tím spojené jsme měli nakonec pouze tři. Dva se týkaly konkrétních domén a pak se nám podařilo vypnout doménu rostiapp.cz na celou hodinu – naštěstí mezi 23:00 a půlnocí. Navíc jsme ji chvíli propagovali jako 127.0.0.1 a i když máme TTL na 3600s, některé resolvery s agresivním cachováním se rozhodli, že si ten localhost nacachují na celý den.

Celá chyba měla dlouhou historii. Během jedné z migrací IP adres před dvěma lety jsme v databázi u rostiapp.cz a pár dalších domén, které už neexistují, nastavili 127.0.0.1 a ::1 u A a AAAA záznamů. Nikdy ale nedošlo ke commitu těchto změn do DNS serveru, takže když jsme teď vygenerovali zóny nové, překvapení to bylo veliké. Naštěstí monitoring rychle zareagoval a tak to mohlo být opraveno zavčasu.

Práce na starém Roští začaly někdy kolem roku 2011. Tenkrát jsem Roští ještě dělal sám a prvních 50 aplikací zvládl obsloužit tenkrát relativně čerstvý procesor Atom. CoolHousing měl akci na pronájem serveru za pár korun s Atomem, 320 GB diskem a 2 GB RAM. V té době to byla velká čísla a stovky obsazených MB paměti byla spíš doména Ruby a ne Pythonu. Pár aplikací se tam tedy vešlo.

Fun fact: Server běžel na Atomu a já jsem v té době měl Asus EEE 1000h také s Atomem. Většina kódu staré administrace byla napsána na tomto 10″ stroji.

Nicméně Roští začaly využívat i projekty, které na něj samozřejmě spoléhaly. Velký eshop s autodíly by neměl běžet na Atomu a jednom pomalém disku, i když optimalizaci jeho vývojáři zvládli na jedničku. Koupil jsem nový server a Roští přesunul. S přesunem se Roští trochu transformovalo. Aplikace se oddělily pod vlastní systémové uživatele a prostředí se standardizovalo. Řekl bych, že v tento moment Roští dospělo. Koupil se další server a stejně jako ten původní měl 6 jader, disky v RAIDu a 32 GB RAM. Od této chvíle měli naši klienti jistotu, že když se něco stane, zvládneme s tím něco dělat. O našem zázemí jsme ale moc nemluvili.

Během vývoje starého Roští jsem udělal jednu zásadní chybu, že jsem se snažil konkurovat běžným PHP hostingům a to jak cenou, tak tím, že jsem kopíroval jejich side služby jako jsou emaily nebo FTP přístup. Pro provoz moderní aplikace je obojí nesmysl, protože na emaily existují specializované služby a FTP přístup je neskutečný hack v jakékoli moderní infrastruktuře. Zkuste si provozovat třeba FTP server v Kubernetes, aniž byste exportovali 10 portů, byli jste kompatibilní s většinou klientů a zároveň zachovali nějaký výkon. Měli jsme se od začátku soustředit na nabídku hostingu pro stateful aplikace a nic na tom neměnit.

Zatímco jsem Roští dělal já a občas mi pomohl můj bratr, šel vývoj ve vlnách. Měsíc jsem na něčem pracoval a pak třeba měsíc nebo dva nic. V té době na podporu chodil dotaz jednou týdně, takže business to nebyl náročný.

Někdy v roce 2014 jsem poznal Martina Voldřicha, se kterým jsme se dali dohromady a navrhli to co znáte dnes jako nové Roští. Martin se zasloužil o design administrace, o spoustu kódu kolem emailů, plateb, DNS i aplikací samotných. Já měl na starosti backend. Tenkrát byl Docker v plenkách. Když jsme ho testovali, prakticky každý den nějaký kontejner crashnul. To byl květen a my chtěli 1. srpna novou administraci spustit.

Fun fact: Backend pro aplikace vznikl za víkend jako prototyp Django knihovny pro správu Docker kontejnerů v Django administraci. Byl ještě dvakrát přepsán, ale základní myšlenka a databázové modely zůstaly do dnes. V současné době tuto část vnímáme jako riziko a brzdu a plánujeme ji přesunout do mikro servicy napsané v Go.

Používali jsme Docker + Btrfs. Byly to těžké časy, technologie fungovaly na stole, ale v produkci jsme pak o data přišli dvakrát během dvou měsíců. V obou případech pomohla záloha, ale i tak to zamrzelo, protože jsme museli nasadit aufs, o kterém jsme netušili absolutně nic, ale nemohli jsme čekat než si ho vyzkoušíme. Naštěstí fungovalo bez problémů.

První měsíc po spuštění jsme řešili extrémní množství chyb a za celou tu dobu si jeden uživatel dobil kredit za přesně 100 Kč. Při jednom obědě jsme se tomu smáli a přemýšleli co s tím. Důvodem byly určitě chyby, ale těch jsme se rychle zbavili, takže jsme museli dát o novém Roští vědět více lidem.

Oba jsme měli ještě normální práci a tak jsme se setkávali o víkendech a bez spánku dávali dokupy nové vlastnosti. Během roku jsme pak nové Roští ještě víc vylepšili, odstranili další hromadu chyb, finalizovali kód kolem plateb, přepisovali kód, který úplně nefungoval a doplňovali věci, o kterých jsme si mysleli, že by mohli uživatele zajímat. Během těchto dvoudenních sprintů se Roští posunulo jako nikdy předtím.

Fun fact: V této době jsme si zařídili dočasnou víkendovou kancelář ve skladu Bazarobotu, kde jsem pomáhal s automatizací některých procesů. V té době v Hradci začínala Pizza Sprint. Když jsme měli session, vždy jsme si objednávali jídlo tam, i když se jim ho dělat moc nedařilo. Během několika měsíců se ale zlepšovali a byl to pro nás impulz, že my můžeme taky. 

Rostli jsme. Měli jsme najednou 6 docela velkých serverů, objížděli konference, občas o něčem mluvili, podporovali PoSobotu, někdy se setkali na PyVo a na Roští pracovali z nové kanceláře v Hradci Králové. Později jsme našli programátora Marka, který v té době měl programování jako koníček, ale profesionálně to nikdy nedělal. Na Roští jsme ho naučili jak se dá programováním živit a prakticky všechen kód napsaný mezi prázdninami 2016 až do teď je hotov díky němu.

V této době se staly tři věci, které Roští poslali úplně mimo nastavený kurz. Martin se začal věnovat jiným projektům a později firmu úplně opustil. Než se tak stalo, kývli jsme na hosting pro přibližně 50 starých projektů napsaných v Pythonu, Ruby a PHP. Zpětně se jednalo o úplně nesmyslnou transakci, protože Roští na tento typ klientů nebylo vůbec připravené a původní firma měla službu nastavenou úplně mimo ekonomickou realitu, čemuž odpovídala i připravenost jejich klientů na plánované změny. Tenhle deal byla taková facka, že se Roští zastavilo prakticky na rok, finančně drhlo, přestalo růst a hlavně byla úplně zničena motivace, bez které se pokračovat nedalo.

Původní firma těmto klientům nabízela podporu, tedy změny na webech na přání, samotný hosting a emaily. To všechno za ceny od 20 do 250 Kč. Ze dvou serverů byly tři a i když součástí dohody bylo, že samotnou migraci provede další firma, tak ta nebyla schopna klienty přesvědčit, že zadarmo se weby nepřesunou a podporu za 100 Kč měsíčně také nedostanou. Jenže servery jsme měli pod správou my a náklady šly za námi bez ohledu na to, co se stane.

Během roku jsme se prakticky nevěnovali ničemu jinému, protože přesunout jeden projekt je několik dní práce. Řešily se tam závislosti, které už se nedají sehnat, smíchané virtualenvy, staré knihovny, co nefungují s Pythonem 2.7 (náš nejstarší podporovaný Python), staré nepodporované PHP, které jednoduše odmítáme provozovat, Ruby, o kterém skoro nic nevíme a nebo komunikace s klienty o tom, že budou muset začít platit jinak a dělat změny v DNS. I když se web podařilo přenést, objevil se na něm bug, který vyžadoval hodiny a hodiny práce. Kdybychom měli takto přenášet každý web, v ceně hostingu by se nám to nevrátilo ani za 10 let a žádný z klientů nebyl ochotný migraci zaplatit.

Řešení se táhlo a tři nové servery, kde jeden byl managovaný za úplně nesmyslně vysokou cenu a dva byly super drahé EC2 instance v AWS, Roští poslaly do mínusu. Chvíli jsme to drželi, ale řešení trvalo dlouho, protože vyžadovalo komunikaci s klienty, kteří většinou netušili nic o tom, co vlastně provoz takového webu obnáší. Kdybych měl vyčíslit cenu tohoto rozhodnutí, dostanu se někam k nižším stovkám tisíc a věřím že jsme ztratili i kredit u našich klientů. Nakonec u nás zůstalo asi 8 z těchto 50 aplikací a u některých víme, že během pár měsíců zmizí.

Nemůžu říct, že je tato kapitola za námi, ale už neohrožuje existenci samotného Roští. Všechny tři servery jsme zrušili nebo přenesli jejich náklady plně na uživatele, co tam chtějí mít za každou cenu svůj web. Zároveň jsme udělali i nějaké změny v přístupu. Nabídky na převzetí aplikací odmítáme s poděkováním. Uživatelům už nepomáháme řešit problémy v jejich kódu. Zrušili jsme podporu po telefonu a nabízíme ji jen velkým klientům, kteří si za ní zaplatí. Rozhodli jsme se zjednodušit infrastrukturu a vypnout staré Roští a emaily.

Zmínil jsem tři věci, ale psal jen o dvou. Zatímco jsme bojovali, jsme se rozhodli zbavit fyzických serverů. Objevili jsme službu ScaleWay provozovanou obrovským korporátem Online.net. Testovali jsme jejich služby rok a během té doby měli jen minimální problémy. Došlo tedy na migraci nového Roští pod ScaleWay a problémy se mohli rozjet naplno.

Už tak špatnou finanční situaci jsme zhoršili náklady na nové servery ve ScaleWay. Nově pořízené servery se chovaly úplně jinak než ty staré testovací. Několikrát jsme přišli o data, podpora reagovala jen mezi po-pá 8:00 až 16:00 bez ohledu na závažnost problému. O víkendu bylo možné se dovolat, ale nikdo, kdo by mohl problém řešit, na podpoře nebyl. V té době jsme začali ztrácet klienty, i ty co byli na Roští od jeho začátků. Navíc jsme nemohli zrušit fyzické servery, protože hrozilo, se s novým Roštím zase vrátíme zpět. Vydrželi jsme to asi čtyři měsíce a když už byla situace nejzoufalejší, DigitalOcean přišlo s 50% zlevněním, což se stalo kompatibilní s naším ceníkem a během třech týdnů jsme se přestěhovali tam.

I když je ceníkově DigitalOcean i po slevě mnohem dražší než ScaleWay, výkonem je úplně někde jinde a platíme jen o $100 více než jsme platili u ScaleWay. Ze dne na den tak přestaly naše problémy. Nedocházelo ke ztrátě dat, podpora reaguje hned bez ohledu na denní dobu, zlepšil se výkon hostovaných aplikací a my si mohli zase oddechnout a začít připravovat zbavení se fyzických serverů, protože u DigitalOcean nějaký čas zůstaneme.

Po všech problémech jsme zavedli změny, díky kterým nám klesly náklady na podporu, snížila se složitost systému, zvedla se spolehlivost (některé weby měly u nás za poslední tři měsíce dostupnost i 100%), vrátila se nám chuť zase pokračovat a posunovat Roští dál. Máme v plánu se vrátit ke konferencím, kde jsme získávali nejvíce nových uživatelů, chceme administraci rozdělit ještě více mezi mikro služby, našli jsme možná způsob, jak snížit cenu hostingu o desítky procent, plánujeme vylepšení našeho SMTP serveru, dokumentace a UX administrace a chceme o sobě dávat mnohem víc vědět než jsme dávali doposud.

Děkujeme vám, že jste to s námi vydrželi, přestože to někdy nebylo jednoduché. Čekali jsme na tento den dlouho a čím blíž byl, tím častěji se odkládal. Toto pondělí je tedy jiné než ostatní pondělí, protože až ráno vstaneme, budeme se moci nadechnout a těšit se zase na to, co nás čeká.

Rychlejší práce s DNS

Prázdniny jsou obdobím, kdy se toho moc neudělá a letošní rok by mohl jít příkladem. V září už jsme se ale trochu posunuli a podařilo se nám dokončit změny v DNS, takže se budeme moci definitivně zbavit starých serverů.

Kvůli časovému deficitu fungovalo staré Roští ještě částečně do září a někteří z vás jste toho naplno využili. Snažili jsme se servery vypínat a v případě, že je někdo ještě chvíli potřeboval, tak je zapnout. Nicméně od tohoto týdně už posíláme jen data a servery znovu nezapínáme. Zároveň jsme vypnuli poštovní server, který neměl běžet už od konce července. Příští týden v pátek ale už jedeme do Master DC a tím definitivně skončíme s vlastními servery.

Master DC

K Master DC bych rád napsal pár řádek, protože pro nás byli těmi nejlepšími partnery, vycházeli nám vstříc a jejich serverovna byla vždy dobrým místem v lepších i horších chvílích. Dali nám spoustu IP adres, pomáhali nám se zvládnutím DDoS útoku a prakticky zařídili, že další útoky už naše uživatele nepostihli.

Důvod proč odtamtud odcházíme není o nespokojenosti s jejich službami, ale s fyzickými servery. Jejich éra pomalu končí a nemá smysl si je držet. Bohužel cloudové služby Masteru jsou cenově mimo naši hladinu a tak jsme postupně začali migrovat služby nejdříve pod ScaleWay a posléze do DigitalOcean. U Masteru nám zůstává pouze load balancer.

Děkujeme za ty čtyři roky.

DigitalOcean

Už přes půl roku jsme na DigitalOcean, které začátkem roku změnilo ceník a stalo se tak kompatibilní s tím naším. Po přechodu prakticky přestaly všechny výpadky našich služeb a během posledního půl roku jsme řešili jen rebootování serverů kvůli chybám v procesorech Intel. Rebooty by nevadily, ale došlo k ním v dost nešťastnou dobu mezi 16:00 a 20:00 ze strany DO a tak jsme byli u některých serverů pár minut dole.

Kromě této události se DigitalOcean osvědčilo a budeme na jeho službách dále zakládat ty naše. Jednou z následujících změn bude přechod administrace na Kubernetes, které DigitalOcean plánuje brzy spustit. To by nám mělo vyřešit současný setup plný SPOF.

DNS

S vypnutím starého Roští jsme museli řešit také naše DNS servery, které jsou pro obě administrace společné. Napsali jsme proto malou službu, která běží na jednom z NS serverů a zpřístupňuje REST API mezi administrací a Bindem. Služba se jmenuje dnsapi a je napsaná v Go. Zdrojové kódy jsou dostupné na GitHubu a ještě k nim přibude krátká dokumentace.

Před několika měsíci jsme se rozhodli nosné vlastnosti administrace přesunout mimo její kód a vytvořit několik menších služeb. Děláme to kvůli snazší testovatelnosti, větší spolehlivost i rychlosti. Nestane se nám pak třeba, že máme dvě na sobě závislé administrace. Navíc z frontendu nakonec zmizí 50 % kódu. Kromě DNS máme takto implementovaný i load balancer a snad ještě tento rok se k němu přidá správa kontejnerů, která přinese i pár zajímavých vlastností.

Nové DNS API nasadíme ještě tento týden. Jako uživatelé toho moc nepoznáte, jen změna DNS záznamu spadne z několika sekund na stovky milisekund s tím, že změna bude ihned poté viditelná – tedy na našich NS serverech. V tomto ohledu máme s Go velmi dobré zkušenosti. Je rychlé, staticky typované, má hezky integrované testy, i když ne tak propracované jako v Pythonu, a dobře se deployuje.

Kontejnerizační micro service

Aktuálně pracujeme na novém projektu, který se posadí vedle dnsapi a lbapi a bude se jednat o službu pro práci s kontejnery. Vyřešíme tím jeden z palčivých problémů Roští a to je cena. Nemyslíme si, že je vysoká pro nějaký eshop nebo jakýkoli komerční web, ale chtěli bychom hosting Pythonu, Node.js a PHP přiblížit metě několika korun za měsíc pro ty ostatní projekty.

Základem je pevná storage, kam se budou ukládat data. Tahle storage se v případě potřeby, tedy když přijde request, připojí na některý z nodů, kde se nastartuje také nový kontejner a request se obslouží. V případě že během pár minut či sekund přijde další request, tak bude obsloužen z běžícího kontejneru. Pokud ale request nepřijde, tak se kontejner vypne. Uživatel bude platit jen cenu za storage a za dobu, po kterou kontejner běží.

Kromě pevné storage pracujeme i možností posílat kód jako ZIP archiv, což může frontend přeložit do mnoha podob od Gitu přes deploy pomocí API. Takto uploadovaný kód by pak nabíhal v kontejnerech stejným způsobem s tím, že by neexistovala permanentní storage. Když dodáme API, tak se tím přiblížíme někam mezi AWS Lambda a Zappa. Kombinace obojího nás v této připravované novince hodně inspirovala.

Tahle služba je teprve ve stádiu příprav a pracujeme na demu, na kterém budeme moct vyzkoušet, zda to vůbec bude fungovat. Stejná služba bude na DigitalOcean spouštět a shazovat servery, takže doufáme, že se dostaneme na průměrnou cenu za aplikaci řádově od korun. Staneme se pak perfektní volbou pro malé projekty, blogy, fakturační systémy, itranety, prostě pro systémy, které potřebují běžet jen omezenou část dne.

Pokud vše půjde dobře, nahradí tento způsob současný způsob provozu aplikací, ale chceme, aby oba způsoby běžely nějaký čas vedle sebe. A protože teď máme zkušenost s vypínáním služeb, kde jsme museli starý hosting vypnout bez náhrady, tak jen dodám, že pokud bychom současný způsob provozu někdy vypínali, tak budeme připraveni na automatickou migraci. Jedná se totiž stále o kontejnery založené na Dockeru a tato novinka změní pouze jejich management.

A tímto bych tento článek ukončil, protože je delší než původně měl být 🙂

GDPR, konec emailů a starého Roští

Poslední měsíc pracujeme hlavně na migraci webů ze starého Roští na nové u zákazníků, kteří nám napsali, že s tím potřebují pomoci a řešili jsme novou formu podmínek, které budou kompatibilní s GDPR.

Rád bych napsal, že se podmínky zkrátily, ale úplně to není pravda. Původní dokument se zkrátil přibližně na polovinu, ale přibyly další dva, které obsahují informace o tom, jak zacházíme s vašimi osobními daty a daty vašich klientů.

GDPR pro nás bylo převážně o sepsání toho, co s daty děláme. V systému jsme upravili jen detaily. Například jsme přestali ukládat access logy na load balanceru a plánujeme přestat ukládat access logy i v kontejnerech. Tam si to můžete změnit sami, ale u nových imagů bude access log ve výchozím stavu vypnutý.

Jediné k čemu budeme držet logy je administrace, kde se může stát, že budeme potřebovat vědět, co se v ní dělo během nějakého vybraného časového intervalu. Nemáme úplně odvahu zrovna u administrace vypnout logy, ale u vašich aplikací nám stačí mnohem více anonymní data jako počet requestů a jak dlouho trvaly. Nepotřebujeme znát IP adresy vašich uživatelů ani URL, na kterou k vám chodí.

Zajímavou otázkou pro nás byly konverzace. Rozhodli jsme se, že budeme mazat rok a víc se staré konverzace. V některých případech nám to asi bude trochu komplikovat život, ale uchovávaní konverzací navždy bychom si neobhájili.

Kromě ukládání výše zmíněných dat se může stát, že vaše data použijeme v nějaké další službě. K interní komunikaci používáme třeba Slack a pro komunikaci s vámi zase HelpScout a SmartSupp. V obojím se tak může objevit vaše jméno, emailová adresa nebo podobně. Nicméně ani jedna ze služeb by neměla takto získaná data nějak využívat nebo rovnou zneužívat.

V příštích dnech do administrace přibude tlačítko na zrušení účtu a pravděpodobně tam implementujeme zaškrtávátko na zasílání obchodních sdělení. Vylepšíme ještě proces registrace, kde bude nutné souhlasit se všemi třemi dokumenty zvlášť.

Zároveň promažeme neaktivní účty, takže pokud u nás nemáte žádnou službu a nepřihlásili jste se několik měsíců, váš účet zrušíme.

Konec starého Roští a emailů

Dále řešíme konec starého Roští a pošty. Oficiálně skončí služby 31.5., ale reálně budou fungovat ještě o pár týdnů déle. Důvodem jsou DNS servery, které musíme přemigrovat, protože jsou natěsno svázány se starým Roštím. Rozhodli jsme se pro DNS vyvinout malou micro service, ale ještě ji nemáme připravenou pro produkci. Staré Roští i pošta běží na jednom fyzickém serveru, který bude fungovat ještě několik týdnů.

Vypnutí služeb přijde v tomto pořadí:

  • Odstranění kódu k emailům v nové administraci – začátkem června
  • Vypnutí staré administrace – začátkem června
  • Vypnutí DNS serverů pro staré Roští – v polovině června
  • Vypnutí serveru pandora – koncem června
  • Vypnutí zbylých serverů starého Roští – začátkem července
  • Vypnutí poštovního serveru – koncem července

Jednotlivé kroky nepřijdou všechny najednou. Starou administraci s emailovou částí nové administrace vypneme hned z kraje června. Ale pak se na chvilku zasekneme. Na migraci služeb máte ještě minimálně první půlku června. K vypnutí pošty dojde až v červenci. Server necháme běžet až do jeho vyzvednutí ze serverovny.

Termíny se mohou změnit, ale konec serverů, kde staré Roští a emaily běží, bude definitivní na konci července.

Březnové novinky

Po sérii restartů ze strany DigitalOcean se můžeme podívat na to, co se v březnu na Roští událo. Nejvíce změn najdete v administraci, jejíž nová verze bude tento týden nasazena a taky se koukneme, jak se serverům daří v DigitalOcean po přechodu ze ScaleWay.

V administraci jsme se tento měsíc zaměřili na API, do kterého budeme teď chvíli přidávat nové funkce. I ty, které nejsou ve webovém rozhraní dostupné. Během pár týdnů se tam ale objeví. Mimo to, že jsme dokončili snapshotování, jsme vyřešili i běh některých tasků na pozadí. Používali jsme a používáme django-rq, které zase používá python-rq, ale v jeho implementaci jsme měli mezery. V administraci nyní lépe trackujeme co se na pozadí děje a jsme schopni vám to ukázat. Můžete tak ověřit, zda daná akce dopadla dobře nebo ne.

Snapshotování má před sebou ještě pár mil než bude úplně dotažené a navíc zatím chybí snapshoty databází. Chybí nám také webové rozhraní a propojení s killerem, který odstraňuje aplikace z účtů, které jsou v mínusu. To je jeden z hlavních důvodů, proč jsme snapshoty zavedli, abychom mohli levně odsudnout aplikace, o které nikdo nejeví zájem a jako bonus jsme tuto možnost dali i vám. Snapshoty lze použít i pro zálohování podle vašeho vlastního uvážení. Je to úplně oddělený systém od našeho vlastního zálohování, takže se dá brát jako taková záloha a navíc je uživatelsky dostupné obnovování. Ze snapshotů lze vytvořit kopii aplikace nebo aplikaci kompletně obnovit do podoby, ve které byla předtím.

Změny v administraci se ale netýkají jen snapshotů. Tady je celý seznam:

  • Backend: Opraven bug v pozvánkách, kdy docházelo k přidání jednoho uživatele k firmě několikrát.
  • Backend. Opraven bug, kdy u odemykání účtu po zaplacení dlužné částky nenaběhly aplikace.
  • Admin: Opraven bug s kontrolou DNS záznamů.
  • API: Vytváření snapshotů aplikací
  • API: Obnova aplikací ze snapshotů
  • API: Mazání snapshotů
  • API: Seznam firem, do kterých má uživatel přístup
  • API: Seznam běžících a dokončených úloh, které jsou prováděny na pozadí.
  • Backend: Framework pro async procesy
  • Admin: K databázi je možné nyní přidat poznámku
  • Admin: Aktivovali jsme generování automatických faktur, pokud si je zapnete (není nutné se již přihlašovat do administraci kvůli platbě)
  • Backend: přístup k SMTP pro aplikaci (již není potřeba email)
  • Admin: Členy firem může odstranit kdokoli, kdo je součástí dané firmy. Ne pouze vlastník.

Aplikace dostaly svůj vlastní SMTP přístup

Kromě změn v administraci jsme zažily vlnu restartů ze strany DigitalOcean, které se tím rozhodlo vyřešit problém se Spectre a Meltdown. Výpadky na Roští probíhaly v absolutně nevhodný čas (16:00-21:00), ale chápeme, že jde o velký zásah do infrastruktury a tak chtěli mít v DO jistotu, že budou mít na případné problémy dostatek lidí a budou je tak moct řešit co nejrychleji.

Samotné restarty proběhly bez problémů, kromě jednoho serveru, který zůstal po celém procesu vypnutý. Toho jsme si všimli až po půl hodině, kdy už bylo divné, že nenabíhá. Nicméně servery naběhly absolutně bez problémů, aniž bychom do nich museli nějak zasahovat. Minulý rok jsme udělali maximum pro to, aby bootování serverů bylo co nejhladší a vypadá to, že se to povedlo.

Po mnoha měsících neřešíme problémy se sítí, s výkonem, se stabilitou, s výpadky nebo se ztrátou dat. Nepočítáme-li tedy zmíněné restarty, tak co jsme na DigitialOcean, neměli jsme jediný problém a doufáme, že v tom budeme takto pokračovat. Všechny změny, které jsem vypsal výše, bylo možné udělat, díky tomu, že jsme nemuseli řešit problémy s infrastrukturou a doufám, že tempo vylepšování se v dalších měsících ještě zrychlí jen co vypneme poštu a staré Roští. Hlavně propojení na DNS serverech a poštovním serveru mezi novou a starou administrací je svazující. Potřebovali bychom především přemigrovat DNS servery na nové, ale se starou administrací za zády to nezvládneme udělat.

Na následujících dvou obrázcích si můžete porovnat podobné období jednoho z našich serverů. První obrázek je aktuální server z DigitalOcean. Jeho zatížení nedosahuje ani na warning hranici. Druhý obrázek je ze ScaleWay, kde byl výkon o něco méně stabilní a zatížení se drželo na kritické hranici. Jiné porovnání bohužel nemáme, protože tohle je jediný server, který zůstal proti původním nezměněn, co se týče jeho obsahu.

Nový server na DigitalOcean

Původní server na Scaleway

Tento post vznikal postupně během března, ale všechny změny se nám podařilo dokončit a odladit až dnes. V dubnu se chceme zaměřit na naši homepage, takže v administraci toho moc neuděláme. Vzhledem k tomu, že jsme vyřešili naše problémy se servery, rádi bychom zase rozjeli nějaké formy propagace. Naše homepage už nepředstavuje to, jaké Roští je, ale spíš jaké bylo a to bychom rádi změnili.

Restart serverů

V úterý 27. března mezi 18:00 a 21:00 dojde k restartu některých našich serverů. Důvodem jsou záplaty, které budou do serverů instalovat v DigitalOcean. Podle současných informací se výpadek nebude týkat všech serverů, ale to se může změnit. Níže najde tabulku s informacemi.

Bohužel k restartům dojde v dost nevhodný čas a DigitalOcean to odůvodnil tím, že chtějí mít k dispozici co nejvíce lidí na řešení případných problémů. Výpadek by neměl trvat déle než 15 minut u každého serveru, ale určitě si v úterý večer zkontrolujte, zda všechno běží. Občas některá aplikace nenaběhne. Většinou se jedná o chybu v konfiguraci supervisoru. Máme nástroje na kontrolu zda kontejner s aplikací běží, ale ručně vaše aplikace neotvíráme.

Server Čas výpadku
node-11 20:00-21:00
node-12 28.3. 16:00-17:00 nebo 18:00 až 19:00 (nevíme přesně)
node-13 19:00-20:00
node-14 20:00-21:00
store3 18:00-19:00
store4 28.3. 16:00-17:00 nebo 18:00 až 19:00 (nevíme přesně)
admin 28.3. 16:00-17:00 nebo 18:00 až 19:00 (nevíme přesně)

Pokud se něco změní, tabulku doplníme.

Co se týče serverů node-12, store4 a admin, tak tam zatím nemáme zprávy o tom, že by k nějakým restartům mělo dojít, ale to se pravděpodobně změní. DigitalOcean postupně restartuje všechny servery ve všech svých lokalitách.

Aplikace, které používají store3, vypadnou postupně dvakrát, Nejdříve kvůli restartu databáze a posléze kvůli restartu serverů na kterých běží.

Aktualizace 27.2.2018

Dostali jsme další informaci o restartu některých serverů ve středu 28.3.2018 mezi 16:00 až 17:00 a 18:00 až 19:00. Bohužel nevíme kterých přesně. Pravděpodobně se ale bude jednat o node-12, store4 nebo admin.