Pavel Hála Pavel Hála

Zrychlili jsme aplikaci SpreadCharts na jinou úroveň!

Naše aplikace SpreadCharts.com na komplexní analýzu komoditních trhů je čím dál populárnější. Počet nových uživatelů loni prudce vzrostl a zvýšil se také podíl aktivních uživatelů, kteří aplikaci využívají pravidelně. Není divu, aplikace totiž nabízí skvělé funkce, desítky let historických dat a to vše zcela zdarma. Žádné předplatné, žádná omezení, žádné reklamní bannery.

Přestože mimořádný zájem o náš software je povzbuzující, má to i svoje nevýhody. Aplikace začala být velmi pomalá. Odezva byla špatná především v období špiček, kdy větší množství uživatelů zadávalo naráz dotazy na zobrazení grafu. Situaci zhoršilo také to, že jsme minulý rok přidali nové výpočetně náročnější funkce. Tento problém začal být natolik závažný, že jsme byli nuceni s tím něco udělat. Před pár měsíci jsme proto shodili naše tehdejší plány a na plno začali pracovat na tom, aby byla aplikace rychlejší.

Dnes mám to potěšení vám oznámit, že jsme spustili novou, podstatně rychlejší verzi aplikace. Přestože navenek se může zdát, že se nic nezměnilo, uvnitř je všechno jinak. Přepsali jsme aplikaci doslova od základů.


Co to v praxi znamená?

  • 1) Veškeré operace s tržními daty jsou nyní bleskově rychlé. Čím složitější výpočet je, o to větší je zrychlení oproti původní aplikaci. A teď se nebavíme o zrychlení o 10% nebo 20%. Pro některé výpočetně náročnější grafy jako je např histogram contanga, je zrychlení řádové. To znamená 10x až 20x vyšší rychlost. Jak je něco takového možné? Především jsme náš kód vektorizovali. To znamená, že místo abysme počítali s jednotlivými čísly, snažíme se data shlukovat do vektorů a teprve na nich provádíme hromadné operace, jak je známe z lineární algebry. Tyto operace (tedy náš zdrojový kód) jsme navíc optimalizovali pro novou mikroprocesorovou instrukční sadu AVX-512. Té se nyní využívá pouze v nejnáročnějších aplikacích strojového učení.
  • 2) Náš pokročilý software vyžaduje ten nejmodernější hardware. Pouze malá část procesorů s nejnovější architekturou podporuje AVX-512 instrukce. Proto jsme byli nekompromisní a vybrali si nové serverové procesory Xeon Platinum, které jsou určeny pro to nejnáročnější nasazení.
  • 3) Aplikace nyní běží na dvou serverech místo původního jednoho. Oddělili jsme výpočetně náročný backend od relativně lehkého frontendu. Tato prostředí jsou navíc velmi odlišná, takže každý ze serverů jsme optimalizovali přesně pro danou roli. Tento přístup je bežný u velkých aplikací a rozsáhlých cloudových služeb. A navíc každý z těchto dvou nových serverů je sám o sobě několikrát výkonější než původní server.


Zrychlení je nejvíce patrné na grafech jako je contango histogram, sezónní průměry nebo analýza full carry. Zpracování těchto grafů je výpočetně náročné, zatímco objem dat který se následně posílá k uživateli je malý. Pouze menší zrychlení se projeví u grafů jako historical price nebo skládané grafy sezonality, protože zde se provádí velmi málo výpočtů, ale objem dat který se přenáší k uživateli je velký. V takovém případě je rychlost načtení ovlivněna spíše propustností uživatelova internetového připojení a výkonem jeho vlastního počítače kvůli vykreslování JavaScriptu.

Doporučujeme také promazání cache webového prohlížeče, aby se vám s jistotou náhrály soubory pro novou aplikaci.


Výrazné zrychlení aplikace je skvělou zprávou samo o sobě. Tato novinka má ale větší přesah. Nová architektura aplikace nám otevírá dveře k novým funkcím, které by nebylo možné implementovat v původní aplikaci. Rok 2018 proto bude opravdu zajímavý 😉

Pavel Hála
Pavel Hála
Pavel is the founder and CEO of SpreadCharts.