Alpha nové administrace je venku, vyzkoušejte si ji ZDARMA
Už nějaký čas bombardujeme Twitter informacemi o připravované administraci pro nové Roští. Za posledních pár dní se nám podařilo doladit a otestovat základní funkcionalitu, takže vám ji můžeme ukázat. Tímto článkem vás chceme seznámit s možnostmi, které se na vás na Roští chystají a také vás chceme poprosit o to, abyste si novou administraci vyzkoušeli. Samozřejmě zdarma.
Webhosting znáte, používáte, možná konkurenci a třeba i Roští.cz. Vždycky jsme k vám, našim uživatelům, přistupovali otevřeně. Máte relativně volné ruce při nasazování nové aplikace, máte téměř neomezené možnosti deploye a když se něco nedaří, snažíme se to vyřešit co možná nejrychleji. Kromě těchto vlastností vám přinášíme podporu pro technologie, které sami používáme. Pracujete v Djangu? To není problém! Chcete psát v JavaScriptu serverové aplikace? I na to jsme vybaveni. Potřebujete někam uložit cache? Na všech serverech běží memcached. Potřebujete redis? Stačí napsat na podporu, jeden pro vám pustíme.
Bohužel, současný koncept, kdy má každá aplikace svého uživatele, vznikl primárně pro hostování Pythoních aplikací a tak nějak jsme do něj nalepili PHP. Funguje to dobře, funguje to dokonce výborně, ale nějak selháváme v rozšiřování možností. Přidání nové technologie je v současné době zásah do administrace a takový zásah vyžaduje kolečko testování, než ho k vám můžeme pustit. A jak jsme hledali řešení, řešení si našlo nás.
Kontejnery, vlastní systém pro každou aplikaci
Minulý rok se totiž objevil Docker, v té době jsme si hráli s LXC kontejnery, ale u Dockeru nakonec skončili. Hrozně se nám zalíbil a začali jsme ho používat. V současné době máme tři virtuální servery čistě pro Docker. Běží na nich 15 ostrých aplikací, včetně třeba RoundCube pro naše uživatele. Docker sledujeme přibližně od verze 0.7, tedy někdy od března letošního roku. Od té doby ho testujeme a od verze 1.1 můžeme prohlásit, že je stabilní.
Ale tohle vás asi nezajímá, spíš vás zajímá, co vám to přinese. O pár řádků výše jsem psal, že teď má na Roští každá aplikace svého systémového uživatele. Díky tomu se můžete snadno připojit přes SSH, nemusíte vůbec řešit práva a existuje bezpečné oddělení aplikaci na úrovni souborového systému a jádra.
S kontejnery jdeme ale dál a každá aplikace má díky nim svůj systém, svůj root. Díky tomu můžeme připravit hosting nové technologie s minimálním zásahem do administrace. Zároveň mnohem efektivněji můžeme hlídat, jak se která aplikace chová, například kolik vyžaduje procesorového času, paměti RAM nebo I/O operací.
Hlídáme využité prostředky
Bohužel se nám na současném konceptu stává, že některé aplikace využívají třeba procesor výrazně více než jiné. Například jedna instance OwnCloud s jedním uživatelem a dvěma připojenými synchronizačními klienty využije 77× více procesorového času než WordPress, který obslouží 3500 requestů za stejný časový úsek. V praxi to u OwnCloud vypadá tak, že jedno jádro CPU 100% vytíží na 20 minut z 60. Tento nepoměr jsme se rozhodli regulovat tak, že začneme účtovat i procesorový čas.
Určitý balík, který bude odpovídat přibližně 5 % průměrného zatížení jednoho procesoru, dostanete zdarma. Pokud to překročíte, budeme vám z kreditu strhávat za každou propálenou hodinu nějakou malou částku. Výše zmíněný WordPress například při popsaném zatížení vystačí s hodinou procesorového času týdně pouhým zapnutím pluginu WP Super Cache. Ve světle této informace věříme, že naši motivaci chápete.
Nejsme ještě rozhodnutí kolik to bude, ale pomůže nám to udržet vaši aplikaci v provozu za jakýchkoli okolností. Nebudeme vám psát e-maily, jak vaše aplikace vytěžuje server a byli jsme nuceni omezit přidělené systémové prostředky. Napíšeme vám, že vaše aplikace aktuálně využívá tolik a tolik prostředků, že jsme se postarali o to, aby jela bez problémů a že vás to stojí tolik a tolik.
PHP
Máte webový projekt napsaný v PHP a rozhodnete se pro Roští. Vytvoříte si v administraci aplikaci s tím dostanete:
- Pevně přidělené množství paměti RAM (64 MB až 1 GB)
- Pevně přidělené místo na disku
- Plnohodnotný SSH přístup
- Možnost ovlivnit nastavení libovolného parametru v php.ini
- Výběr z různých verzí PHP (5.2.x, 5.3.x, 5.4.x, 5.5.x, 5.6.x, ..)
- HHVM 🙂
- Možnost zvednout prioritu na procesoru
- GIT, Mercurial, SVN
Ze seznamu je patrné, že Roští bude některé parametry hostingu garantovat. Nestane se, že by serveru došla paměť, protože paměť si u nás zaplatíte a nikdo jiný ji mít nebude. Stejně tak to bude s prostorem na disku. Pokud navíc máte třeba e-shop a potřebujete, aby jel rychle za každých okolností, budete mít možnost zvednout prioritu vaší aplikaci a ve špičce tak bude mít k dispozici 4x více procesorového času než “běžné” aplikace.
Na svět se pomalu klube HHVM. Sice není několikanásobně rychlejší, jak se nás snaží vývojáři přesvědčit, ale pokud pro něj svou aplikaci optimalizujete, tak rychlejší bude. Každopádně u nás ho budete moci použít. Dokonce na něj můžete přepnout přímo u běžící aplikace a pak se zase vrátit zpět. HHVM vychází o kousek lépe se systémovými prostředky i u neoptimalizovaných aplikací, takže jeho použitím můžete ušetřit i nějaké ty peníze.
S kontejnery se vrací PHP zpátky jako mod_php. Na FCGI jsme přešli kvůli oddělení na úrovni uživatelů a to teď padá, protože každá aplikace má vlastní Apache a tak mod_php nic nebrání. Pokud vám to je ještě málo, tak vás určitě potěší, že na Roští nemáme problémy s APC cachí. V blízké budoucnosti ale budeme preferovat kombinaci PHP-FPM a serveru Nginx. Pravdou je, že mod_php je pomalu na ústupu. Je to pohodlné spojení mezi Apachem a PHP, ale není to nejefektivnější způsob, pod jakým může PHP servírovat obsah.
Mimochodem, už jste slyšeli o PHP implementovaném v Pythonu? Obraz do administrace ještě nemáme, ale bude 🙂
Python
Pro Python částečně platí seznam uvedený u PHP, něco málo se ale samozřejmě změní. Tak si to sesumírujeme:
- Garantované systémové prostředky (CPU, RAM, disk, ..)
- SSH přístup
- Python 2.7.x, 3.4.x, PyPy 2.x
- Možnost přepínat mezi verzemi Pythonu
- GIT, Mercurial, SVN
Python je naše vlajková loď. Pro něj Roští vzniklo a jen tak ho nepustí. Chlubíme se nejlepší podporou Pythonu v České Republice a s kontejnery bude ještě lepší. Že by o něj nebyl zájem se říci nedá, protože na Roští je polovina aplikací napsaných v Pythonu, takže nemáme důvod mu opět nevěnovat maximální péči.
Budeme nyní podporovat více verzí Pythonu včetně PyPy. Více verzí už jsme nabízeli, ale teď máme tuto vlastnost mnohem lépe implementovanou. SSH přístup už je samozřejmostí a velkou změnou je provoz aplikace přes Gunicorn místo uWSGI. Gunicorn je na rozdíl od uWSGI napsaný v Pythonu a stará se dobře o jednu věc, servírování stránek z pythoního kódu. uWSGI to šlo sice také dobře, ale počet jeho funkcí roste závratným tempem a my je rozhodne nevyužijeme. Takže Gunicorn.
Stejně jako u PHP půjdou přepínat verze Pythonu. Na rozdíl od PHP to bude chtít ale trochu vaší asistence. Pro každou aplikaci se vytváří virtualenv a ten musíte při této změně smazat, protože je závislý na konkrétním Pythonu. Můžete to udělat i dodatečně, když aplikace nenajede.
U Pythonu jsme se občas setkávali s dotazy, jak vůbec novou aplikaci nasadit. Pokud vytvoříte novou aplikaci nyní, tak uvidíte funkční web s několika informacemi. V adresáři, kam nakonec svůj kód nakopírujete už tedy budete mít něco funkčního a budete podle toho moci nastavit všechno potřebné. Současná alpha má tuto stránku ještě dost zmatenou, ale na tom pracujeme.
Node.js
Když jsme zveřejnili dotazník na Twitteru, mysleli jsme si, že to jen tak projde timelinou bez zájmu, ale opak byl pravdou, zaujal vás a my jsme za to hrozně rádi. Každopádně zpráva byla jasná, chcete lepší podporu Node.js.
Rádi bychom vás poprosili o vyplnění malého dotazníku https://t.co/bSgoVB1m6A Pomůže nám to novou administraci udělat o kousek lepší.
— Roští.cz (@rosti_cz) October 14, 2014
Současná administrace nabízí Node.js v beta režimu. Podpora je otestovaná, ale beta tam zůstala, protože se nám úplně nelíbí, jakým způsobem jsme to uchopili a chybí nám ještě MongoDB databáze, která je pro Node.js prakticky neoddělitelnou sestrou.
Vůbec jsme Node nechtěli do alphy zařazovat, ale protože o něj máte zájem, nakonec jsme obraz připravili, takže kromě PHP a Python, můžete vyzkoušet i hostování aplikace běžící pod Node.js 0.10.32.
Node.js podpora na novém Roští si poradí s package.json soubory a při každém startu aplikace volá npm install. Stejně jako u PHP a Pythonu máte hned ze začátku dostupný skript, který vám zobrazí na adrese, kterou jste nastavili v administraci, základní informace. Nepřijdete tedy do čistého adresáře, ale budete mít čeho se chytit. Dejte si pozor na to, že Node.js aplikace musí běžet na portu 8000, jinak ji nenajde load balancer.
Další jazyky a databáze
Všemi změnami popsanými na začátku tohoto blogpostu, jsme si otevřeli jsme cestu k dalším technologiím a jazykům. Například z databází podporujeme zatím PostgreSQL a MariaDB, ale tentokrát nenecháme uživatele Node.js na holičkám a přidáme i MongoDB. Redis a Memcached zatím také nemáme, ale pracujeme na tom a určitě to bude hotové do bety.
Měli jsme dlouhé rozpravy nad podporou Ruby, Javy, Go a dalších nových i starších technologiích. Nové Roští je navrženo univerzálně a počítá s čímkoli, jen narážíme na to, že tyto jazyky nepoužíváme. Pokud máte s jazyky výše zkušenosti na webu a chtěli byste nám pomoci, ozvěte se nám, probereme, co vývojáři od hostingu chtějí.
Staré aplikace
Výše je popsáno opravdu mnoho změn a tak se možná ptáte, co bude se současnými aplikacemi. Teď vám mohu říci, že nic, všechno zůstane při starém určitě ještě dlouhou dobu. Po vydání stable verze nové administrace vypneme přidávání aplikací ve staré administraci a budeme se snažit uživatele přesvědčit, aby migrovali.
Není to první změna konceptu v historii Roští. K první došlo na přelomu roku 2012 a 2013, po třech letech provozu a přinesla zmiňované oddělení aplikací, kdy má aplikace vlastního systémového uživatele. Byla to reakce na případy, kdy u nás měli uživatelé třeba 20 aplikací pod jedním uživatelským jménem, které navzájem nebyly nějak odděleny. V té době jsme vůbec nepočítali s tím, že by někdo mohl hostovat tolik aplikací zrovna na našem hostingu 🙂
Kolik za to, shrnutí a další informace
Připravili jsme pro vás službu, která současnou dobu neurazí. Inspirovali jsme se vlastní prací a přinesli vám to, co používáme sami. Těžíme maximum že současných open source technologií a dáváme vám do ruky nástroj, ve kterém spravujete hosting a nemusíte nic řešit. Nemusíte řešit, že na vaši aplikaci přišlo moc lidí, nemusíte řešit správu vlastních serverů. Od toho jsme tady my uděláme vše co je v našich silách, aby vaše služba běžela co nejlépe.
Přístup do alphy najdete na adrese nove.rosti.cz, cokoli tam uděláte je zdarma. Administrace i hosting jsou stabilní tak, jak to jenom v alphě šlo. Nemusíte se bát, že vám bude vytvořená aplikace padat, protože obrazy, které používáme, testujeme už několik měsíců a víme, že fungují. Možná to trochu zaskřípe ve webovém rozhraní, ale od toho alphu spouštíme. Vývoj nešel ve všech okamžicích úplně dobře, někdy jsme narazili na malou nesouvislost:
Tlačítko pro smazání aplikace ukládalo její nastavení. Ještě chvilku, máme to pevně v rukou 🙂
— Roští.cz (@rosti_cz) October 26, 2014
Pak jsme řešili bug schovaný na pěti řádcích 4 hodiny. Ale povedlo se 🙂
A co je v alphě k dispozici:
- Vytváření aplikací
- Přístup přes SSH
- Nastavení přidělené paměti
- Výběr technologie
- Správa PostgreSQL a MariaDB databází
Některé funkce jsme v administraci ještě schovali, protože nejsou kompletní, některé jsme nechali, abyste si je mohli prohlédnout, ale pokud si třeba dobijete kredit, nebudete přesměrování na platební bránu a podobně. Během následujících dnů budou další funkce přibývat, protože jsme je doteď nestačili dostatečně zestabilizovat, ale moc nechybí. Například mazání aplikací. Zároveň přibudou i některé další obrazy. V plánu jsou další verze PHP a HHVM.
Dneska jsme našeho hada popohnali bičem a i když nebudeme zatím uvádět žádná konkrétní data, tak to, do čeho jsme vám dnes dali přístup, bude za pár týdnů finální produkt. A teď šup, běžte se kouknout, jak vypadá hosting hodný roku 2014, jak vypadá hosting, který se nebojí vám dát do ruky moc nad vašim kódem i daty.