API

Je to už dlouho, co jsme se o API zmiňovali poprvé. To jsme si ještě nemysleli, že to potrvá tak dlouho. Nakonec jsme se k tomu dostali až po dlouhých dvou letech. Ale o to lepší nakonec výsledek je. Nyní máme hroznou radost, že vám můžeme oznámit, že API pro aplikace a databáze je hotové.

Tahle novinka je pro Roští milníkem v jeho vývoji, protože API otevírá v jeho službách úplně nové možnosti. Je to základ, na kterém budeme stavět v následujících měsících. S API můžete integrovat deployment do vašeho build systému, případně upravit deployovací skripty. Možností je hodně. Na implementaci některých se chystáme sami, jiné necháme v rukou komunity.

Naši hlavní prioritou v téhle oblasti bude utilitka s názvem rostictl, se kterou půjde naše API integrovat do vašich shell scriptů pro deploy a testování. Díky tomu, že používáme Django a Django REST framework je to možné už dnes díky coreapi schématům a nástroji coreapi-cli. Vytvoření aplikace tak lze provést z BASHe třeba takto:

Naše utilitka k tomu ale přidá jedno malé vylepšení, Rostifile – definice toho co aplikace potřebuje

Další varianty volání coreapi lze nalézt v naší dokumentaci pro API. Dokumentace je v angličtině. Odpovědi z API budou chodit zatím v češtině, ale co nejdříve se je pokusíme také přepnout do angličtiny. Bojujeme trochu s tím, že je admin spojený s API. Řešení je několik a nakonec jedno vybereme, ale teď jsme chtěli API hlavně vypustit.

Je možné, že během následujících týdnů a měsíců tuto verzi budeme ještě upravovat, ale nebude to větší změna než datový typ nějakého fieldu.

Chybí nám ještě API pro DNS a platby. DNS doplníme hned jak to bude možné, protože to budeme potřebovat pro rostictl. U plateb uvidíme, není to zatím priorita.

Další změny

Společně s API přišly i nějaké další změny. Pojďme mrknout na screenshot.

Hned na první pohled je vidět první změna. Úložiště už nejsou vázaná na aplikaci. Chtěli jsme dřív nabídnout službu zálohování aplikace včetně databáze. Tedy takový snapshot stavu v čase. Nakonec se to ukázalo být komplikované. Navíc jsme na základě zpětné vazby zjistili, že uživatelé chtějí spíše jednu databázi k více aplikacím. Tento krok tedy usnadní fungování nám a snad i většině uživatelů.

Druhou změnou je přesun položky upozornění ze side menu nahoru do loga, kde byl v našem původním návrhu. Potřebovali jsme tuhle vlastnost rychle a tak jsme úplně neřešili kde se zobrazí. Tímto jsme to tedy opravili.

Třetí změna ani tak změna není, protože tohle už v administraci nějaký čas je. Ale je to místo, kde se nastavuje token pro API a taky tu můžete změnit heslo pro svůj účet. Token je generovaný pro uživatele, ne pro firmu. Takže s jedním tokenem můžete přistupovat ke všem aplikacím firem, ke kterým máte práva i v administraci.

A to je všechno. Budeme rádi, když si naše API zkusíte a když nám nahlásíte jakýkoli bug na který narazíte. Většinu toho chytneme v Sentry, ale i tak budeme rádi za zpětnou vazbu.

Konec emailových služeb

O konci emailových služeb už jsme minulý rok psali a v tomto krátkém článku bychom chtěli jen zopakovat již zveřejněné informace a postup, kterého se budeme držet. Konec emailů, stejně jako konec starého Roští je pro nás zavření jedné kapitoly, která se s naší firmou táhla od jejího začátku.

Důvodem ukončení emailových služeb jsou nároky na jejich provozování a malý zájem mezi zákazníky, kteří u nás platí za aplikace. Za emaily jsme nikdy nechtěli žádné peníze a brali jsme je jen jako vedlejší službu pro zákazníky, kteří u nás měli web. Z dat, která jsme za pět let nasbírali, jsme zjistili, že 26 % schránek u nás web nemá a přibližně 60 % zákazníků, kteří u nás mají web, u nás nemá žádnou emailovou schránku.

Chvíli jsme zvažovali, zda bychom emaily na Roští nezmodernizovali, ale investice do takového projektu a blížící se potřeba nového hardwaru, nás přesvědčily, že by to byl krok do neznáma a raději tu energii budeme věnovat hostingu aplikací, ve kterém můžeme, na rozdíl od emailů, nabídnout něco unikátního.

Doufáme tedy, že náš krok pochopíte. Vypnutí serveru přijde 31. května 2018, tedy za necelé čtyři měsíce. To by mělo být dostatek času na migraci pod jiného poskytovatele. Tři poskytovatele, se kterými máme zkušenosti, jsme vám vypsali v naši dokumentaci, společně s dalšími informacemi, které vám s migrací pomohou.

V následujícím seznamu najdete seznam událostí spojených s touto změnou. Některé už proběhly, jiné nás ještě čekají.

Co se týče odchozího emailového serveru, tak ten zůstane a jeho možnosti se rozšíří pro potřeby aplikací. O tom ještě zveřejníme informace později.

Konec starého Roští (stare.rosti.cz)

Jak jsme psali už dříve, tak staré Roští pomalu končí a 31.5.2018 bychom rádi původní servery vypnuli. Když jsme vypustili novou administraci s úplně novou infrastrukturou, posunuli jsme staré Roští na vedlejší kolej a byla jen otázka času, kdy ho vypneme úplně. V tomto postu vám chceme dát vědět, jak celou akci plánujeme.

Důvodů, proč byste na starém Roští neměli mít žádná data je hned několik:

  • Infrastruktura je založená na Debian Wheezy a Squeeze (už bez upstream podpory),
  • administraci jsme poslední dva roky nevyvíjeli,
  • všechny aplikace běží na našem fyzickém serveru, za který již nemáme žádnou náhradu,
  • instalace serverů není nějak automatizovaná.

Staré Roští používá na jednom ze serverů Debian Squeeze, který již není podporován a obsahuje minimálně dvě zásadní bezpečností chyby. Jednu se nám podařilo potlačit, druhou bohužel ne. Debian Wheeze je stále podporován, ale jeho podpora končí 31.5.2018. Tam běží většina webů a proto chceme staré Roští vypnout dříve než se z pohledu bezpečnosti stane úplně nepoužitelné.

V administraci jsme od nasazení nové administrace moc neudělali, pouze opravili ty nejdůležitější chyby a změnili způsob fakturace. Hodně nás naučila, ale už jsme se posunuli dál.

Aktuálně běží všechny aplikace na starém Roští na našem fyzickém serveru, kde jsou jen pomalé HDD disky a výkon se během dne občas propadne. Migrací tedy získáte pár milisekund k dobru.

Když nepočítáme výpadky v Master DC, neměly aplikace hostované na starém Roští problém dosáhnout 100% dostupnosti většinu roku. Na druhou stranu, postupy související se starou infrastrukturou vybledly a kdyby nyní k něčemu došlo, trvalo by nám hodně dlouho dát vše do pořádku. Nové Roští je celé zansiblované. I kdybychom nyní přišli o všechny servery najednou, jejich obnova se bude rovnat času potřebnému pro kopírování dat ze záloh, což trvá u některých strojů asi dvě hodiny.

Jak to bude probíhat

Vypnutí proběhne 31.5.2018 ale předtím i potom je několik bodů, které musíme splnit. Tady jsou:

  • únor: rozešleme emaily o konci služby
  • únor až březen: přesuneme DNS servery na samostatné servery
  • duben: další email o konci služby
  • 31. květen: konec starého Roští
  • červen: kredity ze staré administrace převedeme do nové na účet se stejnou emailovou adresou
  • 31. červenec: odstraníme všechna data

Článek ještě budeme aktualizovat.

Migrace do DigitalOcean

Na Twitteru už jste mohli postřehnout, že chystáme stěhování ze Scaleway do DigitalOcean. Psali jsme o tom i minulém zápisku a tento zápisek je jen popsání toho, co se bude v příštích týdnech dít.

Migrace se týká všech aplikací, které jsou hostovány v novém Roští, což jsou ty, co byly vytvořeny v posledních třech letech. Ze strany uživatelů není potřeba žádná spolupráce, pouze budeme měnit doménové názvy serverů, na kterých jsou aplikace hostované. Ty si prosím upravte ve svých skriptech či nastavení podle tabulky níže.

To nejdůležitější, migraci administrace, máme již za sebou. Neobešlo se to bez problémů, ale to už je za námi a také jsme díky nim upravili kontaktní formulář a schránku podpory tak, aby nebyla na našem mail serveru jakkoli závislá.

V druhém kroku musíme přenést servery pro aplikace. Rozhodli jsme se jít cestou, která je pro nás nejjednodušší, protože jednoduchý proces bude méně náchylný na chyby. Přeneseme aplikace ve dvou vlnách. V první půjdou aplikace, které používají databázi store3.rosti.cz. V druhé pak ty, co používají store4.rosti.cz.

Databázi už jsme přenesli a máme připravený skript, který je udělá finální synchronizaci. U aplikací je to složitější, protože budeme spojovat některé servery. Scaleway používá méně výkonné serverové procesory Atom, takže jsme na jeden stroj dávali méně aplikací. DO na druhou stranu má rychlé Xeony a dává i dostatek prostoru, takže limitujícím faktorem pro nás není procesor, ale paměť RAM a tam jsme schopni přesně říct, kolik aplikací může na jednom serveru být.

Prozatím plánujeme jednoduché spojení serverů podle následující tabulky. Později ho ještě upravíme po jednotlivých aplikací tak, abychom měli servery rovnoměrně zatížené. Zároveň přidáme čtvrtý, node-14, na kterém budou hostovány nové aplikace.

Původní server Nový server
alpha-node-4.rosti.cz node-12.rosti.cz
alpha-node-5.rosti.cz node-12.rosti.cz
alpha-node-6.rosti.cz node-13.rosti.cz
alpha-node-7.rosti.cz node-11.rosti.cz
alpha-node-8.rosti.cz node-11.rosti.cz
alpha-node-9.rosti.cz node-11.rosti.cz
node-10.rosti.cz node-14.rosti.cz

Pokud tato doménová jména používáte ve svých skriptech, tak je prosím změňte na nová. Stará přesměrujeme, ale na konci února je smažeme.

Status

  • 1.-2. února*: Úprava administrace – funkce pro notifikování uživatelů o změnách
  • 1.-2. února*: Úprava administrace – nástroje pro jednodušší migraci mezi servery
  • 3. února: v ranních hodinách*: Migrace alpha-node-7, 8, 9 a store3
  • 10. února: v ranních hodinách: Migrace alpha-node-4, 5, 6, 10 a store4
  • 28. února**: smazání starých doménových jmen

* Termíny nejsou pevné a mohou se změnit.

Kdy k jednotlivým krokům dojde ještě doplníme.

Celý proces je vzhledem k naší softwarové architektuře velmi přímočarý a není v něm moc prostoru na chyby. Kromě výpadku během přenášení by nemělo dojít k žádným dalším problémům. Před migrací se prosím přesvědčte, zda vaše aplikace přežije restart kontejneru. V administraci stačí kliknout na tlačítko restart.

Nedostupnost

Do migrace se pustíme během noci, přibližně od půlnoci a bude trvat kolem dvou až tří hodin. Během této doby budou aplikace nedostupné. Plánovali jsme to udělat mnohem rychleji s výpadkem maximálně několik minut, ale spojování serverů nám do toho hodilo trochu vidle.

K migraci dojde během následujících dvou týdnů a o krocích, které mohou ovlivnit dostupnost vaší aplikace budete informování emailem. Proto chceme do administrace přidat novou sekci podpory, kde vám budeme moci poslat notifikace o změnách a zároveň je patřičně cílit.

Jiných služeb, než hostingu aplikací, se migrace nedotkne. Emaily jsou umístěny na našich fyzických serverech v Master DC v Praze, stejně jako všechno okolo starého Roští a záloh.


Aktualizace 3.2.2018 4:00

Server node-11.rosti.cz už běží a jsou na něj přemigrovány všechny aplikace podle tabulky výše. Pokud vše půjde dobře, druhé vlně příští týden v pátek nic nebrání.

Aktualizace 3.2.2018 14:15

Kvůli nepatrnému překliku před pěti dny musíme dnes ještě na chvíli shodit všechny aplikace na node-11. Máme ho totiž ve špatné lokalitě. Půjde o jednodušší proces než z dnešní noci, protože to je přenesení 1:1 a aplikace by neměly být dole déle než pár minut. Akci provedeme mezi 1:00 a 3:00. Jinak vše běží v pořádku a nový stroj je zatížen podle očekávání.

Zatížení node-11.rosti.cz

Aktualizace 9.2.2018

Na zítřejší migraci je vše připraveno. Přes týden jsme nezaznamenali žádné problémy a tak nám nic nebrání v přenesení zbytku.

Aktualizace 9.2.2018 13:30

Aktualizovali jsme tabulku s doménovými názvy nodů. Prohodil se cílový node mezi alpha-node-4,5 a 6.

Aktualizace 10.2.2018 2:50

Všechny servery jsou přenesené. Děkujeme za trpělivost. Tahle zkušenost nám pomohla dopilovat role v Ansiblu a implementovali jsme kvůli ní notifikační systém do administrace, přes který vám můžeme posílat emaily, pokud se bude dít něco důležitého. Ale o tom ještě napíšeme nějaký článek. Prozatím dobrou noc.

Aktualizace 28.2.2018 18:00

DNS záznamy byly upraveny.

Výpadek administrace a emailů

Dnes odpoledne došlo na Roští k výpadku, který jsme bohužel neměli jak ovlivnit. Problém byl na serveru u Scaleway, na kterém máme databázi pro administraci a emaily a také administraci samotnou. Kromě toho i nějaké obslužné nástroje jako Sentry a grafy. Museli jsme data obnovit ze zálohy, kterou jsme měli dostupnou z 13:30. Vzhledem k tomu, že toto není poprvé a jsou na Scaleway i problémy s dostupností nových serverů, rozhodli jsme se to vzít jako impulz k nějakému řešení.

I když nefungovala administrace, tak se výpadek nedotkl žádné aplikace. Všechny servery s aplikacemi jsou schopny fungovat nezávisle na administraci. Emailový server bere data ze stejné databáze jako administrace, takže tam k výpadku došlo a během obnovy to pro nás byla priorita.

Základním problémem jsou síťové disky připojené přes Network block device protokol. Když nepočítám dva hodinové výpadky sítě, které jsme na Scaleway měli, toto byl v posledních šesti měsících jediný důvod, proč Roští nejelo. Doufali, jsme, že se to Scaleway podaří vyřešit, ale tyto problémy se dají dohledat v diskusích i dva roky zpátky.

Problém se projevuje tak, že server začne hlásit chyby přístupu k disku do dmesg a víme, že máme čas ho vyřešit. Připravit nový stroj, rsyncovat soubory. To se stalo třeba minulý týden v neděli. Občas ale dochází k nečekaným zásekům, kdy server zničeho nic přestane reagovat a v takovém případě je délka výpadku rovna době, kterou potřebujeme pro obnovu ze zálohy.
Server v „rebooting“ stavu po půl hodině čekání

Sice jsme obnovu ze zálohy dostali na přibližně hodinu až dvě, protože jsme vypilovali postupy, ale jen s těží to je dlouhodobé řešení. Nějaký čas jsme problém řešili s podporou, ale ničeho než opravy postiženého serveru a informace, že z naší strany s tím nejde nic dělat, jsme se nedočkali.

Situaci tedy už musíme řešit. Fyzické servery už dnes nepřipadají v úvahu. Stále dva máme a i tam dochází k problémům. Minulý rok jsme řešili problémy s několika disky najednou, pak nám vypnuli elektriku v serverovně a druhý rok se jim to podařilo znovu. U fyzických serverů je problém, že k nim musíme jet a to může trvat dvě nebo tři hodiny. Pokud využijeme cloudové služby, tak se o hardware starat nemusíme a problém vyřešíme v teple kanceláře třeba tím, že nahodíme nové stroje. K fyzickému hardwaru se musíme dostat, najít problém, obstarat náhradní díly a pak server opravit.

Na ruku nám tedy minulý týden šlo DigitalOcean, které snížilo ceny. Také kurz dolaru je nyní příznivější. S DigitalOcean máme dobré zkušenosti. Když jsme u nich měli servery pro jeden velký knižní eshop, došlo tam sice k nějakým problémům, ale jednalo se ojedinělé případy, ne systémové problémy, podpora fungovala 24/7 a sedí na ní lidé, kteří mohou problém vyřešit a ne jen přebírat zprávy. I ve tři hodiny ráno tak člověk dostane rozumnou odpověď, když se něco děje. Také o problémech informují otevřeně a dávají ETA jejich vyřešení.

Na Scaleway jsme si jeden čas platili podporu, ale nakonec jsme zjistili, že tam žádný rozdíl není. I tak nám nechali server dole tři dny a telefonicky jsme se spojili s člověkem, který nám řekl to samé co napsal do ticketu, tedy že na tom pracují a neví kdy to bude.

V příštích několika týdnech se tedy přestěhujeme do DigitalOcean. Bude s tím souviset i nějaké spojování serverů. Pravděpodobně se spojí node-4 s node-5 a node-8 s node-9, protože na DigitalOcean je k dispozici větší diskový prostor. Bude se také jednat o výkonnější servery než jsou na Scaleway, takže kromě vyšší dostupnosti bude benefit i v tomto.

Prvním přeneseným serverem bude admin.rosti.cz. Následovat budou servery, které mají databázi na store4.rosti.cz a pak ty se store3.rosti.cz. Migrace bude probíhat v nočních hodinách a nemělo by dojít k výpadkům větším než několik minut. Nebude to horší než restarty serverů v minulých týdnech.

Chceme vám také poděkovat za podporu a doufáme, že tuto změnu uvítáte tak jako my.