Jak nastavit loadbalancer pro složitější aplikace jako Collboard?

Mám otázku pro mé kolegy serveraře:

Virtuální tabule @Collboard.com nám žere čím dál tím víc prostředků na serveru a stálé navyšování CPU a RAM je dlouhodobě a pro další znásobení uživatelů neudržitelná. Nastavuju tam cluster s více běžícími node vlákny, avšak narazil jsem na otázku, jakým způsobem řešit rootování v rámci load-balancingu.

Naše aplikace je v tomhle smyslu trochu specifická – představte si, že každá tabule je něco jako chatovací místnost. Jednu tabuli tak zatím nedokáží obsluhovat dva servery – do databáze by se vše zapsalo, ovšem real-time změny by se mezi dvěma skupinami uživatelů obsluhovanými dvěma servery nepropagovali v reálném čase.

Nemám s tímto typem problému úplně zkušenosti, proto se ptám na optimální strategii řešení:

1/ Změnit kód aplikace tak, aby nebyla závislá na stavu paměti v Node, ale aby se všechny změny propagovali do in-memory tabulky v MySQL databázi případně jiné realtime databáze.

2/ Jednotlivé instance Node propojit mezi sebou napřímo a pokud bude potřeba, posílat informace mezi nimi.

3/ V Loadbalanceru nastavit to, aby routoval podle URL a stejná tabule bude obsluhovaná vždy jednou instancí Node.

(Tohle řešení by asi nebylo úplně robustní, pokud by existovala nějaká naprosto gigantická tabule s mnoha tisíci uživateli (předpokládám, že to bude hlavní důvod, proč má většina sdílecích appek limit maximálního počtu uživatelů v rámci jednoho dokumentu))

4/ Rootováná do konkrétního API si klient vybere sám. Ty pak mohou běžet na separátních subdoménách api1.collboard.com, api2.collboard.com,…

Možná se ptám trochu hloupě a ani jedna z těch možností není to ono, mám s loadbalancováním zkušenosti pouze v případě jednodušších aplikací, kdy je vytvoření clusteru naprosto instantní a jednoduché.

Moc mě zajímají i širší odpovědi se širším pohledem na věc; případně články videa úplně cokoliv, kde bych mohl hlouběji proniknout do návrhu tohoto problému.

Díky moc za za rady!

Autor

Pavol Hejný

Milovník technologií, Startuper ve vzdělávání, autor virtuální tabule Collboard.com, full stack vývojář a spoluorganizátor mnoha akcí např. CzechFutureTech.

3 komentáře u „Jak nastavit loadbalancer pro složitější aplikace jako Collboard?“

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *