#79 Patoarchitekci Short #30

2023, Jun 16

Tym razem poruszamy temat Big Techu a rozwiązań takich, jak CloudFlare, Grafana 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 oczywiście na patoarchitekci.io/79, prawie 80. Dobrze, Łukaszu. Co tam wyszukałeś?

Łukasz Kałużny: Dobra, zacznijmy od BigTechowych. Meta, czyli Facebook powiedziała i opublikowała, co zrobiła ze swoim MySQLem. Zanim do tego, co zrobiła… Wtrącenie historyczne. Facebook… Meta… Whatever, jak ich nazywamy. Od zawsze żyje na stosie, który tak frontowo nazywamy… Mamy Reacta sobie z przodu, który de facto zapoczątkowali i w backendzie zawsze mieli PHP jako główny język. PHP, a jako bazę danych MySQL.

Szymon Warda: Tak. Tylko tego PHP emigrowali na różne wersje, kombinowali z nim dużo, ale.

Łukasz Kałużny: Tak. Kompilowanego PHP do C i inne tego typu zabawki, full optymalizacja więc zostało u góry i z MySQLem było podobnie. Stwierdzili, że MySQL o dziwo ma, co mnie w sumie nie dziwi, że ma słaby silnik storage’owy przy takiej skali jeżeli chodzi o obsługę dysków i sforkowali LEAP.key level DB od Google’a opensource’owe. Zrobili z tego RocksDB, który jest genialną bazą NoSQLową in process i przerobili to na silnik storage’owy do MySQLa pod spodem robiąc MyRocksa.

Szymon Warda: I potem chyba jeszczę MarięDB też wykombinowali jako jeden z forków MySQLa.

Łukasz Kałużny: A tutaj wiesz co, nie wiem co się z tym działo, ale lećmy dalej i co zrobili teraz w swoim MySQLu? Stwierdzili, że pora na lepszą replikację danych i do środka MySQLa władowali Rafta.

Szymon Warda: Jedna poprawka, nie replikację. Bo replikacja w tym momencie zakładałaby, że to jest jeden master de facto. A jeżeli mamy rafta to zakładam, że bardziej chodzi im o multi write’y. Bo Raft jest generalnie protokołem do rozwiązania konfliktu tak naprawdę, czyli.

Łukasz Kałużny: Raczej, konfliktów? Do utrzymywania…

Szymon Warda: Spójności.

Łukasz Kałużny: Do utrzymywania… Nie, to tutaj im pozwala to na po pierwsze przełączanie się tam w sub-milisekundach.

Szymon Warda: To jest bardzo szybko.

Łukasz Kałużny: Tak, więc tutaj jest… Raczej chodzi o to, tak, pierwsze przełączanie. Druga rzecz, że przy Rafcie nie jesteś tak zlimitowany ilością. Jeżeli popatrzysz, bo oni pokazują to też regionami wpisie co można zobaczyć. Przy Rafcie nie jesteśmy w tym miejscu zlimitowani za bardzo ilością learnerów, listenerów rzeczy, które followują te logi. W szczególności przy takim scenariuszu, kiedy chcemy wyrzucać się do wielu regionów.

Szymon Warda: Tak, okej, bo faktycznie zrobili opcję taką, bo jak pierwszy raz rozmawialiśmy o tym wpisie to zakładałem, że zrobili… Bo w rafcie i żeby było quorum to możemy spokojnie w rafcie… Raft jest wykorzystywany do multi write’ów.

Szymon Warda: Tak.

Szymon Warda: Czyli że mamy wiele node’ów, do których piszemy i one ustalają quorum co na poziomie systemu rozproszonego, który operuje na precyzji pojedynczej property… Bo kolumna jest property obiektu… Jest niewyobrażalnie wręcz trudne i kosztowne. Pokazał to Cosmos azure’owy, który działa.

Łukasz Kałużny: Inaczej, bo multi master i tak się zwiąże do tego, że robisz proxy, które szuka kto jest masterem na danej partycji do zapisu.

Szymon Warda: W teorii raft dawałby Ci te opcje, że mógłbyś właśnie szukać grupy partycji i pisać do dowolnego z partycji w teorii, ale to jest tak niewyobrażalnie trudne do zrobienia, bo zawsze dojdzie Ci do takiej sytuacji, że ktoś może jakiś zapis zgubić, a to jest najgorszy przypadek, jaki może mieć. Któryś zapis zostaje nadpisany przez coś, co jest starszego, a przy dużym wolumenie… Nie oszukujmy się, Facebook mimo że jest obecnie wykorzystywany przez ciocie i babcie, dalej ten wolumen ma.

Łukasz Kałużny: Nie. Więc ciekawe podejście do całości. I też to jest ciekawe jak bardzo trzymają się tego MySQLa jako syntaxu MySQLa na froncie swoich aplikacji.

Szymon Warda: Wiesz co? Pamiętam taką, uber zrobił w sumie taką serię wpisów. Wydawali mniej więcej co roku, koło marca. De facto to wychodziło. Jak to Uber migrował się z jednej bazy na drugą, zaczynają od MySQLa, potem na Postgresa, potem wrócili do MySQLa. Potem jeszcze, wrócili na Postgresa. Czemu? Bo wiadomo - pik Ubera to jest oczywiście Nowy Rok. Właśnie wtedy wszyscy ludzie jeżdżą. Wiedzieli, że nie obsłużą przy obecnej architekturze kolejnego, kolejnego Sylwestra. De facto. I oni tak się przyłączali w lewo i w prawo, a w Facebooku po prostu stwierdzi, że to znają. Tu wiedzą co mogą zrobić. Nie oszukujmy się, tą wiedzę, którą zakumulowali jako organizacja o MySQLu, co mogą przerobić i co znają. Po prostu łatwiej im jest to robić niż przełączać się między kolejnymi silnikami, tak naprawdę, oni wybebeszyli to po prostu.

Łukasz Kałużny: Wiesz, całość, jednak rozwijanie takich elementów jest w diabły kosztowne, o tak. To jest…

Szymon Warda: Nie mniej kosztowne niż pisanie własnego Metaverse’u.

Łukasz Kałużny: To tak, to na pewno. Którego ubijasz, tak, to na pewno.

Szymon Warda: Po cichu.

Łukasz Kałużny: Dobra, co u Ciebie, Szymonie?

Szymon Warda: Ja mam… Trochę posucha wydaje mi się, że jest obecnie. Ja mam kilka linków takich. Zacznę może od miłych, miłych ogłoszeniowych, które mnie prostu trochę ucieszyły. Znowu CloudFlare, bo odcinek bez CloudFlare’a to taki odcinek trochę stracony, naszego… CloudFlare. I też żeby nie było czemu - CloudFlare jest fajną alternatywą dla wielkich gigantów i staje się dla projektów takich nie-Enterprisowych, a nawet powoli też enterprisowych dobrym wyborem. Tani, fajny, przyjemny, szybki. Opublikowali jak przerobili silnik storage’owy. Znowu storage. Dla swojej bazy D1. To jest baza relacyjna, to jest chyba MySQL, ale nie pamiętam.

Łukasz Kałużny: SQLite, jeżeli dobrze pamiętam. Tak, SQLite.

Szymon Warda: Zapisy przyspieszyli prawie siedmiokrotnie na Northwind Trader DB i łączne przyspieszenia widzą na poziomie dwudziestokrotnych przyspieszeń tak naprawdę, do 20-krotnych. Fajny wynik bym powiedział i cieszy mnie to, że znaleźli swoją w pewien sposób niszę i że rozwijają to. No, pod bardzo wieloma względami… Cieszę się, że buduje się alternatywa dla naszych gigantów technologicznych tak naprawdę. CloudFlare jest dobrą rzeczą.

Łukasz Kałużny: Raczej ten serwer jest, jak gdzieś tam wykorzystuję w side projectach, to to daje radę. Te On the Edge jest naprawdę… Jedynie trzeba mocno zmienić myślenie o kodzie i sposobie działania, bo pipeline’ujesz de facto, budujesz sobie pipeline’y na requestach i trzeba mieć tego świadomość.

Szymon Warda: To jest… Alternatywa powinna być, bo nasi giganci technologiczni idą bardziej w kierunku Enterprise’a. Bo tam jest największa kasa, więc coś co jednak nacechowuje się w kierunku małe, lekkie - bardzo mile widziane. I drugi link, release Grafany 9.5. Wiadomo, masę usprawnień, trochę wokół alertów, trochę wokół dashboardów. Takie pitu, pitu. Ważne, ale pitu, pitu.

Łukasz Kałużny: Dobra, co Ci się rzuciło?

Szymon Warda: No właśnie. Tam są service accounty. O co chodzi? Dużo mówimy odnośnie budowania platform, budowania czegoś, co my dajemy… Platformy - a zespoły to wykorzystują. No i takim trochę kulawym elementem jeżeli chodzi o Grafanę były API Keys, trzeba ustawiać je na poziomie admina. A jeżeli chcemy chodzić wokół takich elementów typu raporty, wokół - automatyzacje, wokół - automatyczne tworzenie data source’ów itd. Czyli to my zarządzamy Grafaną, dajemy możliwości, a zespoły sobie już tam tworzą własne dashboardy i my w to nie wnikamy. To jest taki nasz cel. Tak naprawdę. Bo wyklikiwanie zespołów, dashboardów… Trochę kulawe, de facto i nam cały zespół zarżnie. A ta wiedza powinna być rozproszona De facto i wejście w Service Accounty… Daje nam tą możliwość, że nie musimy tych API Keys zdawać na dość wysoki poziom. Daje nam możliwość tego, że użytkownicy nie widzą pewnych rzeczy właśnie dostępowych, a mimo to możemy właśnie procesy, raporty ładnie automatyzować. Po prostu jest bezpieczniej, przyjemniej. Kolejny ruch w kierunku pozbycia się haseł tak naprawdę widocznych, no nie? I kluczy, passwordów. Dobry ruch w dobrym kierunku w kontekście jak się buduje platformę z Grafaną, a z reguły większość platform, które mamy gdzieś tam Grafanę wykorzystuje. Do zerknięcia, bo to może być bardzo, bardzo sensowne i fajne w użyciu i przy okazji jeszcze - AWS ogłosił, że w ich Managed Grafanie to już jest wspierane.

Szymon Warda: Więc przyjemnie. Tak naprawdę.

Łukasz Kałużny: Dobra.

Szymon Warda: Teraz Ty, co tam masz?

Łukasz Kałużny: Ja jeszcze tweeta, dość stary. Przygotowuję sobie dziś, bo w momencie tutaj jak to dzisiaj nagrywamy po południu mam prezentację na temat jak zacząć ze standaryzacją architektury, jak zacząć w firmie. Szukałem takiej myśli przewodniej zawsze na prezentację, jedną rzecz, żeby ludzie zapamiętali. Jest sobie taki tweet, który brzmi. That architecture is fine, I guess, but it’s so boring. Yes, I’m very proud of thus aspect in particular. Czyli to jest rzecz, której trzeba się nauczyć. To przychodzi z latami, że właśnie ten cały KISS, ta nudność tej architektury to jest to, do czego powinniśmy dążyć.

Szymon Warda: Mi się przypomina taki cytat z ‘76 roku mniej więcej okolicy. Pan, który się nazywa John Bogle, bo nie wiem czy go kojarzysz, bo nie jest z IT.

Łukasz Kałużny: Nie.

Szymon Warda: Ten pan założył Vanguarda, pierwszego ETF-a finansowego i on właśnie mówił, że finanse powinny być nudne. Jeżeli w Twoich finanse szukasz emocji to tam nie zrobisz pieniędzy de facto. I to się tak samo przekłada ładnie na IT. Architektura. Ona nie ma być fascynująca. Tam nie mamy pchać najnowszych rzeczy, po prostu ma działać, z reguły rzeczy, które po prostu działają to są nudne tak naprawdę. Więc bardzo dobra myśl, zdecydowanie!

Łukasz Kałużny: Tak. Więc to jest rzecz, którą - tak jak patrzę teraz o standaryzacji i innych rzeczy, to jest pierwszą rzecz, którą potem z narzędziami, które pokażę, które też omawialiśmy w wielu odcinkach, technikami, pozwala zacząć porządkować. To jest rzecz, którą trzeba na forum wprowadzić, że nie kombinujemy i tylko mam jeden z tym problem, bo z drugiej strony ludzie zamiast dostarczać produkt, rozwiązywać problemy, chcą się bawić technologią i nazywają to rozwojem.

Szymon Warda: No przecież CV Driven Development - nie oszukujmy się.

Łukasz Kałużny: No dokładnie. CV Driven Development trochę stoi w opozycji do tego typu profesjonalizmu i inżynierskiego podejścia.

Szymon Warda: Tak, raczej, ja jeszcze bym dorzucił jedną rzecz. Takie naprawdę realne, realne patrzenie na to, jakie będziemy mieli problemy, bo czasem jest ooo, będziemy mielu tutaj wielką skalę. Użyjmy koniecznie Kafki - ale popatrz, ale stary, będziesz miał 1000 requestów na sekundę. W ogóle…

Łukasz Kałużny: Postgress to wali na tabeli.

Szymon Warda: Tak, dokładnie tak, albo załóżmy, ooo, tutaj będą wielkie rzeczy się działy. Użyj Bloba, po prostu użyj Bloba. Znaczy, ja jestem dużym fanem tego, żeby po prostu mieć coś, co działa, a potem możemy wyewoluować, panicznie nie lubię takiego gdybania, a co będzie jeżeli. A co będzie, jeżeli?! Tego nas uczą na poziomie… Co będzie, jeżeli - jest przydatne w sytuacji programowania jak najbardziej, aplikacje - tak, wtedy trzeba kod za-ifać po prostu w pewnych miejscach, ale na poziomie architektury… “Co będzie, jeżeli” i wybieganie na poziom, no 3-5 lat. Jak jeszcze biznes nie określił i de facto jaką to będzie miało skalę użycia i gdybanie o tym, jak będzie się skalowało itd. Jak to ma sharding na poziomie bazy danych to z reguły będzie działało przez najbliższe kilka lat… I tak baza będzie najwolniejsza.

Łukasz Kałużny: No. Jak zawsze. Dobra, ostatni Twój link Szymonie.

Szymon Warda: Ja ostatni link od Netflixa - z ich technologicznego bloga. Fajny link o tym jak debugowali deadlocka powiązaniego z kernelem, ale link… Kompletnie nie dlatego go polecam. Bardzo dobrze opisuje jak działają sygnały i jak działa dostarczanie sygnałów w Linuksie i wokoło kernela linuksowego. Fajne wytłumaczenie. Wpis może wydawać się długi, ale czcionka na blogu Netfliksowym jest taka, dość powiedzmy rozwlekła i jest jeszcze wycentrowana. Wpis na 5 minut tak naprawdę czytania. Bardzo dobrze tłumaczy. Fajnie pokazuje kod, małe wgłębienie się. Tym bardziej, że sygnały są podstawą praktycznie każdego systemu operacyjnego. Warto je znać.

Łukasz Kałużny: Basics?

Szymon Warda: Tak, no bo pewne rzeczy trzeba rozumieć, jak to działa. Jak działają przerywania. Jeden, mi się wydał z lepszych właśnie wpisów tłumaczących jak to działa.

Łukasz Kałużny: Raczej fajnie też pokazuje, że w takiej skali wracasz do takiego low levelu.

Szymon Warda: Ten low level, on w pewnym momencie Cię kopnie. Może Ty go nie zauważasz, bo kopie Cię załóżmy raz na miesiąc, ale de facto jak właśnie mówisz, skala. Nagle to kopanie jest po prostu częstsze.

Łukasz Kałużny: Ale to jest, tak jak od nich jest też - ja dorzucę jednego linka, którego zawsze pokazuję. To jest też np. jak wykorzystują EBPFa.

Szymon Warda: Cały ogólnie rozwój EBPFa jest bardzo fajny.

Łukasz Kałużny: Tak, jak low-levelowo lecą i czemu to wykorzystują, ile im te optymalizacje przynoszą zwrotu de facto?

Szymon Warda: Cały czas czekam właśnie na większą adopcję EBPFa, i no…

Łukasz Kałużny: Powoli, powoli.

Szymon Warda: Już nabiera wiatru w skrzydła bym powiedział. Zdecydowanie.

Łukasz Kałużny: Dobra, to chyba kończymy.

Szymon Warda: Kończymy w takim razie, trzymajcie się.

Łukasz Kałużny: Na razie. Hej!