Minulý rok se toho na Roští moc nestalo. Začátkem roku jsme administraci přesunuli do Kubernetes a později dělali pokusy s Wireguardem, databázemi od DigitalOcean nebo microservice architekturou. Nešlo ale o nic, co mohli naši uživatelé nějak poznat. Tento rok se to ale změní, protože nás tlačí problémy, které se budou bez dalších změn jen prohlubovat.

Připravili jsme tedy plán, který bychom letos rádi naplnili. Tady je náš letošní checklist:

  • Runtime prostředí pro běh aplikací postavené na Debianu 10,
  • aktualizace databází,
  • aktualizace všech nodů,
  • interní změny v systému pro správu aplikací
  • platby kartou bez prostředníka (Fakturoid) přímo z administrace,
  • nové balíčky,
  • grafy.

Roští, jak ho dnes vidíte vzniklo před více než čtyřmi lety, a tak jsou některé jeho části už relativně staré a způsobují různé nekompatibility jak nám, tak uživatelům. Hned prvním bodem je tedy nový Runtime.

Nový Runtime

Do dnes jsme mluvili o běhovém prostředí (runtime environment) jako o imagích. Ty jsou dnes v současné době postaveny na Debianu Jessie, který už není podporován a navíc jsou rozděleny podle podporovaných technologií. Způsob distribuce není úplně efektivní na místo na disku a způsobuje nás stavy, kdy máme na serverech několik různých imagů se stejným tagem. Nebylo také standardizováno vydávání nových verzí.

Rozhodli jsme se tedy pro změnu, která pomůže jak nám, tak vám. Ode dneška už budeme mít jen jeden image a budeme mu říkat Runtime. Je postavený na Debianu 10 Buster a jeho výhody zkusím shrnout bodově:

  • Nový Debian,
  • vydávání nových verzí s jasnou politikou podpory,
  • verzování ve formátu vYYYY.XX kde YYYY bude značit rok a XX číslo buildu,
  • incrementální změny ve funkcionalitě,
  • open source vývoj s releasy na GitHubu,
  • možnost pull requestů od komunity,
  • podpora všech jazyků najednou v několika verzích,
  • vlastní script nazvaný rosti na snadné přepínání mezi technologiemi a zapínání služeb (redis, memcached),
  • vyřešené rotování logů.

Nový image umožní třeba provozovat aplikaci napsanou v Pythonu, ale zároveň mít vedle microservice napsanou na Node.js.

S vývojem jsme už docela daleko a nový runtime je už k dispozici v administraci se zatím trochu slabší dokumentací. Zatím tedy pouze jako beta. Jsme si jistí, že aplikace v novém runtime poběží stabilně, ale ještě nemáme napsanou dokumentaci a úplně vyhlazené všechny hrany.

Během příštích pár týdnů budeme migrovat naše aplikace pod nový Runtime a budeme u toho doplňovat dokumentaci. Tento blog jednou z prvních aplikací, které v novém Runtime běží. Až budeme hotovi, vydáme stabilní verzi, která bude vhodná i pro projekty citlivé na stabilní prostředí.

Aktualizace databází

Jednou z velkých bolestí jsou pro nás všechny čtyři databáze. Dvě MariaDB a dvě PostgreSQL. Jde o jeden z blockerů pro aktualizaci nodů. Při té jsme narazili na problém, kdy dochází k přerušení komunikace mezi aplikací a MariaDB databází. Zatím vůbec netušíme co to způsobuje, ale doufáme, že se to aktualizací opraví.

Tohle je hned následující věc, kterou budeme řešit po nasazení nového runtimu. Už jsme nějaké pokusy provedli minulý rok. Uvažujeme ještě, že vytvoříme v administraci abstraktní vrstvu mezi databází v databázovém serveru a záznamem o databázi v administraci. Mohli bychom pak migrovat jednu databázi podruhé. Uvidíme co nakonec zvolíme.

Aktualizace nodů

Problém s nody jsme už nakousli. Zkoušeli jsme aktualizovat node-11 a node-12 na Debian 10 Buster a v obou případech došlo k problému s komunikací s databázemi. Ani na jednom není nepodporovaný systém, takže aktualizace je spíš věcí údržby než nutnost. I tak bychom to chtěli mít z krku hned po poté, co vyřešíme databáze.

Interní změny v systému pro správu aplikací

V administraci teď dochází k interním změnám okolo práce s aplikacemi. Cílem je odstranit odtud co nejvíce nepotřebného kódu a napsat co nejvíce unittestů ke kódu, který tam zůstane. Práce na tomto začali na konci minulého roku a velká část je hotová, ale u konce ještě nejsme.

Z vašeho pohledu se v administraci nic nezmění, z našeho ubyde asi 20 % kódu, který nemá unittesty.

Trochu si ještě hrajeme s myšlenkou vzít správu kontejnerů úplně mimo administraci, ale k tomu jsme se zatím ještě neodhodlali. Máme totiž velmi dobré zkušenosti s Golang microservices na loadbalanceru a DNS serverech napsaných a oddělení správy kontejnerů by byl logický krok.

Platby kartou přímo z administrace

V současné době podporujeme platbu kartou jen přes Fakturoid což byl hack, který jsme zavedli při psaní prvních řádků kódu několik let zpět. Je to už trochu evergreen, ale tento rok bychom už chtěli přinést podporu pro platby kartou přímo z administrace.

Důvodem je, že pak můžete uložit platební kartu ke svému účtu a všechny platby budou probíhat automaticky každý měsíc. Nechci dávat žádný časový odhad, ale pokud nám budete psát na podporu, že by se vám něco takového moc hodilo, dáme tomu větší prioritu.

Nové balíčky

V současné době máme balíčky nastaveny tak, že mohou běžet na serverech, které DigitalOcean označuje jako “standard”, kde je procesor sdílený v nějakém poměru s ostatními zákazníky. Na našich serverech tak dochází ke sdílení mezi aplikacemi, které tam běží a pak ještě mezi virtuálními servery na fyzických strojích DigitalOcean.

Rádi bychom tedy přinesli možnost hostovat aplikace na serverech ze skupiny “dedicated CPU”. Nové balíčky s těmito servery by sice měly papírově slabší parametry, výkon by měl být ale větší a stabilnější. Půjde o balíčky vhodné převážně pro eshopy a náročnější weby, které se už do dnešní balíčků úplně nevejdou.

V souvislosti s balíčky dojde pravděpodobně i ke změnám na naší homepage, kde bychom rádi celou službu více profilovali, aby bylo novým uživatelům jasné, co k nám mohou dát a u čeho by měli volit jiné řešení.

Grafy

Jednou z chybějících funkcí v administraci jsou grafy využití procesoru, paměti, sítě a disku. Víme o tom a na vyžádání dnes posíláme grafy emailem. Nicméně bychom je chtěli nabídnout přímo z administrace. Nemá to pro nás teď velkou prioritu, ale chtěli bychom je mít tento rok hotové.

Shrnutí

Kromě věcí zmíněných nahoře nás mrzí, že jsme s vámi posledních 12 měsíců moc nekomunikovali. Budeme se to snažit tento rok napravit. Mezitím si můžete vyzkoušet nový Runtime 🙂