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 🙂

Leave a comment

Napsat komentář