#66 Patoarchitekci Short #22

2023, Mar 17

Mamy dla Was nowe znaleziska! Discord, Cassandra, Scylla, Spotify i nie tylko!

Słuchasz Patoarchitektów dzięki Protopii. Sprawdź, jak Patoarchitekci i Protopia mogą Ci pomóc ➡️ protopia.tech

Linki i ciekawe znaleziska:

Transkrypcja

Łukasz Kałużny: Cześć. Słuchacie Patoarchitektów. Prowadzą Łukasz Kałużny…

Szymon Warda: …i Szymon Warda. Wszystkie linki do tego odcinka znajdziecie oczywiście na patoarchitekci.io/66. Dobrze, Łukaszu, co tam masz w tej posusze?

Łukasz Kałużny: Powiedzmy tak - nudy chyba. Śmiejąc się z tego, że pewien bank sobie poleciał i nie będziemy o tym dyskutować, ale powiązany z techem. Mój feed zalało sporo treści właśnie wokół tego banku i zostawmy to w spokoju. Więc lecąc… Taki wpis z Discorda: Discord opisał swoją podróż i swoje problemy z przechowywaniem wiadomości. No i mają po amerykańsku tryliony wiadomości, po naszemu miliardy. I teraz co jest tutaj? O tej historii: opowiedzieli właśnie… Cała historia ich leci od tego, że w 2015, w okolicach 2015 to było MongoDB do przechowywania, czyli lecieli po schemie NoSQLowej. Jeżeli ktoś zobaczy też, jak wyglądają wiadomości ze Slacka, z innych takich rzeczy, jak wygląda wiadomość, którą piszemy, to zawsze jest to dość sHTMLzowany mały JSON. Więc MongoDB, potem Cassandra i od tego roku ScyllaDB w trybie Cassandry. W tym wpisie opisali swoje na początek problemy. W 2020 roku skończyli z… Klaster do wiadomości miał 177 node’ów i pokazane jest nawet, jak wygląda schemat tej tabeli od wiadomości. Nie jest ona duża, ale zaczęły ich boleć odczyty i garbage collection, które wiąże się z tym przy Cassandrze, bo Cassandra ma bardzo

Łukasz Kałużny: ze względu na to, że korzysta z walla headloga, szybkiej replikacji, jest bardzo tania w zapisie. W odczycie jest bardzo droga i JVM w ich skali zaczynał im dawać po tyłku i pauzy garbage collectora. I stwierdzili, że spróbują ze ScylląDB. Testy wyszły poprawnie, pacjent przeżył i poszli na to tak naprawdę, żeby to była baza kompatybilna z Cassandrą, napisana w C++, żeby nie trzeba było za bardzo wszystkiego wymieniać po drodze. Pokazali właśnie całość - jak podeszli do migracji danych. Podpowiadając, napisali coś w raście, żeby przeprowadzić tą migrację. W jaki sposób to obsługują? I teraz po wszystkim w końcówce patrząc się co z tego uzyskali to skończyli na 72 węzłach.

Szymon Warda: To nie jest dużo.

Łukasz Kałużny: Czyli ścięli. Naprawdę to ścięli potężnie w porównaniu do Cassandry i pokazali odczyty - i to jest dla pobierania historycznych wiadomości. Wcześniej P99 mieli na poziomie od 40 do 125 milisekund, na Cassandrze, na Scylli zjechali do 15 milisekund.

Szymon Warda: Mieli bardzo ładne czasy, zjechali bardzo.

Łukasz Kałużny: Tak więc to są - wiesz - przy tej skali to są świetne. I co jest ciekawe, bo mieli wahającą się… Dla zapisów, dla insertów mieli te P99 wahające się pomiędzy 5 a 70 milisekund na Cassandrze. I to jest ciekawe. Na Scylli mają 5 milisekund. Stałe.

Szymon Warda: To jest super mało.

Łukasz Kałużny: Więc…

Szymon Warda: Ale to brzmi aż za dobrze jak słucham. Coś mi tutaj wewnętrznie nie gra.

Łukasz Kałużny: Pytanie jest tak, tam podeszli jeszcze gdzieś jak szukałem innych detali to było też np. przypinanie 1 core 1 shard i inne takie rzeczy, więc dość sporo optymalizacji pod spodem. No tak, ale jest to ciekawe i taki jeden z tego wniosek jest, że przy produktach, które mają mieć w przyszłości skalę… Nie ma sensu zaopatrywać się na tą przyszłość, bo i tak będziesz ileś razy zmuszony to wymienić.

Szymon Warda: Czyli zawsze powtarzam ludziom, że pisanie czegoś na skalę powiedzmy, z którą będziemy mieli za 4 lata, to nie ma sensu. De facto. Napiszmy coś, co będziemy mieli za rok albo za dwa max. Tak naprawdę. Dowiemy się dużo więcej. Rynek się rozwinie, pewne problemy zamiast my rozwiązywać będziemy mogli po prostu wziąć z rynku, czasami w ogóle jako opensource, więc naprawdę, nie ma sensu mówić “a co będzie jeżeli nasza skala będzie wynosiła 100 razy względem tego, gdzie jesteśmy? Nie, nie ma sensu.

Łukasz Kałużny: Zobacz, ta Cassandra to pokazuje, to ta Cassandra pokazała. Zaczęli od 12 węzłów, 12-węzłowego klastra, który miał już pierdyliard drobnicy.

Szymon Warda: Tak, ale faktyczny wpis jest dość dokładny generalnie, bo tam dużo rzeczy pozmieniali jeszcze, tam dodali jakiegoś sqlite’a… Bardzo, bardzo, bardzo konkrety, bym powiedział. A co mnie w ogóle zaciekawiło i mnie ucieszyło właśnie? Opisywali, że dalej korzystają właśnie z algorytmu snowflake’a od Twittera do generowania id-ków. A był moment, że było trochę fali hejtu na niego wylewane, a ja na przykład go lubię. Także naprawdę, tak. Dobry, długi wpis. Bardzo konkretny. Nieźle. Tak. Spoko.

Łukasz Kałużny: Nie, w tej posusze, która jest, jest naprawdę super. Nawet bez niej jest bardzo. Brakuje mi troszeczkę mięsa, bo w niektórych, tak jak mówisz, fragmentach, wygląda za pięknie. Jestem ciekaw Horror Stories z POCa, z migracji, z pierwszych problemów, kiedy to odpalili. To byłoby ciekawe. Takie wiesz, pierwsze dni na produkcji.

Szymon Warda: Tak, bo te liczby nie wyglądają za dobrze. To z reguły jest tak, że mamy jakiś… Coś dostajemy, coś oddajemy. De facto. I one naprawdę wyglądają aż za dobrze, tym bardziej, że jeszcze odpalili to w trybie zgodności, więc to wyglądałoby na to, jakby musieli go do tego zmieniać.

Łukasz Kałużny: Raczej Scylla tu to takie wiesz, zgodności. Scylla ma też inny silnik pod spodem. Więc to też, nie można powiedzieć, nazwać tego… To jest API tak naprawdę, bo…

Szymon Warda: Tak, chodzi mi o API oczywiście.

Łukasz Kałużny: Dobra. A Ty co masz?

Szymon Warda: Dobra, u mnie niewiele właśnie. Ale rzecz… Drobna rzecz, która mnie ucieszyła. Spotify miało oczywiście… Wybuchło im. I napisali, napisali i opublikowali Indicent Report. I co mnie ucieszyło, że jest mały i jest krótki. Nie, ale tak poważnie, bo z reguły incident reporty kojarzą się z wielkimi, wielkimi wpisami i że są bardzo złożone i zajmują dużo czasu i przez to mało kto go w ogóle robi. A tu jest mega prosty incident report, w którym sorry, naprawdę niewiele potrzeba więcej. Jest opisane normalnymi słowami: co się stało? W jakiej kolejności? Potem jest timeline i potem jest podany jeszcze generalnie wykres, jaki to miało wpływ i to jest koniec. I szukałem lepszych linków, ale jak ustaliliśmy niewiele się w ogóle działo, ale do tego cały czas mentalnie wracałem. Bo jeżeli miałbym komuś dać przykład na to, jaki incident report bym oczekiwał, to de facto to. Bo to jest coś, co można napisać w dwie godziny i więcej nie potrzeba. A ja często widziałem, jak wyciągaliśmy.

Łukasz Kałużny: Jest szczery.

Szymon Warda: Tak. Często wyciągaliśmy 4 stronicowy w Wordzie incident report. Nie ma sensu czegoś takiego klecić, bo to zajmie generalnie ludziom kilka dni. Nie oszukujmy się.

Łukasz Kałużny: Raczej, jest, powiem Ci tak - brakuje, bo to jest… Raczej, jeżeli patrzymy, bo to jest incident report, ale to nie jest RCA, bo też rozróżnijmy, bo ludzie mogą… Jak popatrzysz sobie, to to jest świetny incident report, tak jak powiedziałeś, ale to nie jest Root Cause Analysis, gdzie masz bardziej szczegółowo co wysiadło i jak, ale tutaj jest w prostych słowach.

Szymon Warda: Bym dyskutował, bo jest spory fragment właśnie co się wydarzyło, jak się wydarzyło i tak dalej i tak dalej; nie ma trochę jak będą temu zapobiegać, ale jest to właśnie w tej sekcji What Happened, co się wydarzyło, jak to wyglądało i zrozumienie co wyszło. Faktycznie nie ma tego. Generalnie co zrobimy, żeby tak więcej nie było i tego roota wyszukania de facto.

Łukasz Kałużny: Nie, nie, wiesz, takich rzeczy tak. Wiesz, są technikalia, których nie mogą tutaj powiedzieć też pewnie publicznie.

Szymon Warda: O tak, z tym bym się zgodził. Czy dla mnie to jest taki ładny incident report? Tak samo jak zresztą są ADRy, to w tej formie zdecydowanie incident reporty mają dla mnie sens, bo: mają sens, bo mało czasu zajmą, a dalej wiemy coś - co się wydarzyło.

Łukasz Kałużny: Tak. Raczej brakuje potem, jeżeli ktoś chce wejść i potem zaklejać przyczynę, no to jest już trochę mniej informacji. O tak.

Szymon Warda: Zgodzę się jak najbardziej tak, ale…

Łukasz Kałużny: Nie, startowo jest po prostu genialny. Co się stało? Zatriggerowany maintenance na repo gotowym spowodował wywalenie się DNS’a. Miały być mechanizmy broniące przed takimi sytuacjami, ale były nowe zmiany w komponencie DNS i mamy new failure mode…

Szymon Warda: Tak.

Łukasz Kałużny: Jak to określili, prosto z mostu bez żadnych rzeczy.

Szymon Warda: Całość mieści się z rysunkami, ze wszystkim, poniżej jednej strony Worda de facto. Tak naprawdę. Więc super.

Łukasz Kałużny: No.

Szymon Warda: Pierdoła, mnie cieszy. Będę miał link do wysyłania w razie czego. Tyle.

Łukasz Kałużny: No to kończymy. Trzymajcie się.

Szymon Warda: To na razie.

Łukasz Kałużny: Na razie.