Ale Shopify sází na GraalVM Ruby! Před pár lety od OracleLabs přetáhli Chrise Seatona a ten, když si zrovna někde nehraje na vojáky, se stará o to, aby jim GraalVM opravdu fungovala (rychlé to naše Ruby bylo už po měsíci, co jej Chris začal psát) a běhala kód, který v produkci mají.
23. 10. 2021, 05:47 editováno autorem komentáře
> Aplikaci narozdil od DB je snadne skalovat.
Tohle je až moc velké zjednodušení. Je jednoduché spouštět víc a víc instancí aplikace. Ale jestli to škáluje záleží na tom, co ta aplikace dělá.
Úzké hrdlo vznikne vždycky když musí ty instance udržovat nějaký společný model světa. Když to nebude dělat databáze, tak se to šprajcne na podobné funkcionalitě někde jinde.
IMHO běžná “cloud” aplikace by měla na maximum využít memcache (nebo něco podobného), pokud se převážně čte, tak se instance aplikace nijak navzájem neblokují. Zápisy do databáze se holt provedou pomaleji (transakčně) a příslušné položky se z vyrovnávací paměti vyhodí. Pokud aplikace jen žongluje s daty (CPU nic náročného nepočítá, jen sestavuje stránky), nikde by nic drhnout nemělo. Nebo?
(Jiný typ aplikací, kde se intenzivně zapisuje, například nějaké time series, je jiné kafe, ale na to zase existují specializované databáze.)
To záleží jak je to celé naprogramované, a co děláte. Pokud máte netransakční data, nebo máte aplikaci, kde se dobře používá cache, tak by databáze nemusela být úzkým hrdlem. Jakmile ale potřebujete garantované perzistentní zápisy, tak čekáte na tu nejpomalejší komponentu (IO), a pokud potřebujete konzistentní pohled na data, tak dochází k tunám synchronizací a čekání na zámek. Tam už musí být databáze úzkým hrdlem. Ledaže by ten sw nad tím byl dost neefektivně naprogramovaný nebo že byste tam dělal brutální výpočty.
To spektrum aplikací, které mohou používat databáze je hodně široké. Hodně se liší intenzita práce s daty, a hodně se liší i požadavky na konzistenci.