Každý zakladatel startupu věří v raketový úspěch. Málokdo ale opravdu ví, co všechno takový úspěch obnáší a jak se připravit na rizika s ním spojená.
Na StartupJobs je dobře vidět, jak je pro firmy důležité na rychlý růst pohotově reagovat a včas mu přizpůsobit své zázemí.
A také, jak je důležité mít zkušeného partnera, který takové zázemí dokáže navrhnout a spravovat.
Webové stránky se typicky skládají z:
- kódu aplikace (např. PHP) + assetů (Java Script, CSS, fontů)
- databáze (MySQL)
- souborových dat (obrázků, PDF…)
V 99 % případů jsou tyto komponenty všechny hostované na jednom serveru. Některé složitější weby však mají ještě další (např. RabbitMQ, ElasticSearch). A to už může vést k množství potenciálních problémů, jako se tomu stalo u StartupJobs.
Skromné začátky: Jak StartupJobs rychle přerostli freehosting
Dnes si už lze jen stěží představit, že StartupJobs svůj web v roce 2012 spouštěli na freehostingové službě.
Když jim takový webhosting (z pochopitelných důvodů velice záhy) přestal stačit, přešli na virtuální server.
Když jeden server přestal stačit, pořídili si u Webglobe server pro každý projekt zvlášť:
- 1 managed VPS pro .CZ web s komponentami (MySQL databází, RabbitMQ, ElasticSearch a Matomo – open source alternativu ke Google Analytics)
- 1 managed VPS pro .COM web (pro americký trh)
- 1 managed VPS pro vývoj a staging
„Za 1. rok nám návštěvnost stoupla 4⨉ a za 2 roky už 9⨉.”
Filip Mikschik, zakladatel
S úspěchem přišla potřeba snadné škálovatelnosti
I s výkonnějším VPS byl však český web nadále pravidelně přetížený.
Dokonce natolik, že při krizové aplikaci naší speciální služby CAF spotřeboval výkon celého sdíleného fyzického serveru jen pro sebe.
Web měl také nečekané výpadky, zapříčiněné konfliktem mezi verzemi PHP.
Nejrychlejším (ale jen dočasným) řešením bylo přidat další servery.
Blížil se čas, kdy bude třeba udělat razantní krok vpřed, zahodit současnou infrastrukturu a vybudovat novou, od základů jinak.
Výzva pro Webglobe
StartupJobs jednoduše potřebovali high-availability infrastrukturu na míru, která nebude brzdit růst firmy. To znamená, že bude:
- vysoce dostupná (s absolutně minimálním počtem výpadků)
- propustnější (zpracuje větší množství požadavků, a web tak dokáže obsloužit více klientů současně)
- flexibilnější (umožní jednodušší výměnu komponent)
„Počet uživatelů nám stabilně meziročně narůstal o 20 %. Chtěli jsme mít jistotu, že to náš web ustojí.”
Filip Mikschik, zakladatel
Pro maximální dostupnost bylo naprosto nezbytné všechny komponenty izolovat a zajistit jejich odolnost vůči selhání.
Výpadek kterékoliv komponenty nesměl způsobit výpadek celého webu.
Cesta k vlastní high-availability infrastruktuře
Proto jsme navrhli zcela novou architekturu a zásadní upgrade všech technologií, včetně změny operačního systému serverů.
Velký úkol připadl také na developery StartupJobs, kteří na základě našich doporučení museli upravit backend webu.
Náročné operace, zpomalující databázi, jsme společně oddělili a pro obojí pak vytvořili speciální server.
Restrukturalizaci jsme z důvodů větší efektivity a snížení nákladů rozdělili na 2 etapy:
1. „Stabilizační” etapa
- rozdělení aplikací (webů) a služeb (např. MySQL) a jejich přesun na samostatné servery
- upgrade komponent na nejnovější verze
- separace náročných procesů v backendu webu
- tvorba storage serveru pro obrázky a PDF, sdílené mezi backendem a frontendem
2. Přechod na plnohodnotnou high-availability infrastrukturu*
- duplikace všech komponent pro web, MySQL, RabbitMQ, ElasticSearch ad.
- tvorba automatického failoveru pro snadné přepnutí na záložní server
Výsledek
Základem inovativního řešení se staly tři hlavní Docker Swarm servery s redundantní infrastrukturou umožňující jednoduché přepínání mezi jednotlivými serverovými částmi, a tomu přibyly samostatné Docker nody pro testování.
To vše za doprovodu sdílených load balancerů pro optimální rozdělení zátěže a efektivní škálování.
Pokud by například nyní mělo dojít k výpadku jednoho serveru, systém automaticky přepne na druhý, a tím sníží nedostupnost služeb na pouhé sekundy.
„S novou infrastrukturou jsme roce 2023 ustáli rekordní 46% růst uživatelů.”
Petr Orosz, CTO
Příběh nekončí – co když StartupJobs dál stejnou rychlostí porostou?
Pro další rychlý růst StartupJobs máme již předem navržené řešení. Dlouhodobě doporučujeme přechod ze sdílené virtualizace na vlastní virtualizační cluster s fyzickými servery.
Na hardware jsme odborníci. Používáme výlučně enterprise grade komponenty s výrazně delší životností oproti tomu, co se běžně používá např. v gamingu.
A víme, jak je optimalizovat, abychom z fyzických serverů vymáčkli opravdu maximum.