Ostatnie Patoszkolenie w tym roku👇
➡️ 04.06.2024 Architektura 101
Nowy odcinek i nowe zamieszanie. Lubimy zamieszać w świecie IT, żeby się nie przypaliło! Co nas czeka w tym epizodzie? Będziemy rozmawiać o modelowaniu danych - jak je ugryźć nie tylko w SQL, ale i poza nim. Zagłębimy się w dyskusję na temat Change Data Capture (CDC) - czy to naprawdę magiczne rozwiązanie na wszystkie problemy? Przyjrzymy się aktualnym trendom i nowinkom w WebAssembly. Czy to przyszłość web developmentu? Na deser czeka na Was gorący temat: AI i zagrożenia bezpieczeństwa. Co nowego w świecie sztucznej inteligencji? Jesteście gotowi? Startujemy!
Słuchasz Patoarchitektów dzięki Protopii. Sprawdź, jak Patoarchitekci i Protopia mogą Ci pomóc ➡️ protopia.tech
Linki i ciekawe znaleziska:
Szymon Warda: Cześć, słuchacie Patoarchitektów. Prowadzą Szymon Warda…
Łukasz Kałużny: I Łukasz Kałużny. Wszystkie linki do tego odcinka klasycznie na Patoarchitekci.io, lub gdzieś link do tego tu pod spodem, tudzież Patoarchitekci/io_numer odcinka. Jedno z ogłoszeń startowych, czyli 21 lutego szymon prowadzi otwarte szkolenie z modelowania danych nie tylko w SQL, czyli w jaki sposób zabrać się za dane w naszych aplikacjach, jakie ustawić sobie w środku baz danych. Ja za to 22 lutego prowadzę Kubernetes The Hard Way, czyli w jaki sposób tak naprawdę Kubernetes działa pod spodem i jak na niego nie przeklinać albo przeklinać już tylko i wyłącznie świadomie. Co masz dzisiaj, Szymonie?
Szymon Warda: Nie wiem, czy to kwestia pory roku czy czego, ale ja dzisiaj mam takie trochę kolejne odcinki, które są marudząc de facto. Ale żeby nie było też wychwalające. Jest pierwszy link, który wygrzebałem to jest, ja to powiem, to jest miód na moje uszy, nazywa się to: Replace Dogma With Engineering. O co chodzi? Był sobie system, który miał 35 milionów linii kodu, kodu bez komentarzy, więc sporawy, w monolicie. Więc konkret. Wdrożyli sobie co? Wdrożyli sobie SAFe’a. Dla tych, którzy nie wiedzą, SAFe to jest Scalable Agile Framework. Czyli to jest Agile z Release Trainem. Czym jest Release Train? To jest taki generalnie pociąg sobie ładny, który tam zbiera wszystkie release’y od zespołu, od zespołów i w końcu przyjeżdża na ten peron przygotowany raz na rok, czy tam raz na pół roku.
Łukasz Kałużny: I co ważne, SAFe jest po to, żeby menadżerzy się czuli, że myślą, że mają kontrolę.
Szymon Warda: Tak, to jest, żeby z Agile’a zrobić waterfalla de facto, kontekst dla tego zespołu co oni robili. Oni mieli system, w którym mieli wydanie raz na rok. Cel, jaki po wdrożeniu SAFe’a, stwierdzili, że SAFe wszystko jest fajnie, pięknie. Tylko okazało się, że SAFe nic nie zmienił, nawet jest trochę wolniej, a ich cel był taki, żeby móc robić release’y 3 do 4 razy w roku. Czyli totalnie sensowna aplikacja enterprise’owa. Naprawdę nie jest to budowanie rakiet. Więc co tylko zrobili? Podejdźcie do tego zdroworozsądkowo, czego brakuje od jakiegoś czasu i co zrobili? Wyznaczyli sobie jasne cele, czyli 3 do 4 wdrożeń rocznie. Sensowne. Zastosowali oczywiście zdalny manewr, czyli odwróconego conwaya, co może brzmi jak pozycja wiadomo jaka, ale chodzi o to generalnie że przeorganizowali organizacje, zespoły biznesowe itd. po to, żeby mapowały się ładnie na nową strukturę zespołów, nową strukturę modułów systemu. Potem co zrobili? Zaczęli rozbijać ten system na mniejsze serwisy, niekoniecznie mikro, na mniejsze serwisy i wprowadzili od razu Contract Driven Development. Czyli generalnie od samego startu ustalili generalnie, że serwisy są osobne, ale żeby było stabilnie to ustalamy ładnie kontrakty i generalnie te kontrakty są tym elementem, który prowadzi ten development i nie łamiemy go. Co zrobili dalej? Wprowadzili BDD, żeby móc obtestować to sensownie, bo też wiedzieli generalnie, że wszystkiego nie otestują tak naprawdę. Bo pokrycie 100% fajnie mieć, ale po co tak naprawdę? Testowanie. I wdrożyli QA-ów, ale na tej zasadzie, że QA-ów tak, ale automatycznych, bo QA, który testuje ręcznie, to jest spalenie pieniędzy, to nie ma większego sensu, chyba, że mówimy o takim testowaniu nie bieżącym, tylko [niesłyszalne 00:03:08] penetracyjnym, eksploracyjnym, itd. To są zupełnie inne bajki. Dalej, postawili nacisk na Operations, przede wszystkim na Operations, jeżeli chodzi o wydawanie wersji, CI/CD, na optymalizacje ile danych jest w pipeline’nie, optymalizacji, ile pipeline’y się wykonują, żeby móc szybko mieć deploymenty. Dalej, wykorzystali testy end-to-end. Po co? Żeby móc testować połączenie tych nowych, wydzielonych serwisów z tymże monolitem, bo generalnie testy integracyjne, jednostkowe są fajne, ale jak mówimy o tak dużej bazie kodu i w ogóle o życiu, to end-to-end są jedyne. Dalej, testowanie na produkcji, żeby móc deployować fake’owe rzeczy, bo to z kilku godzin testów nagle po deployment’cie wychodzi im to bardzo ładnie. I zaczęli mierzyć rzeczy, mierzyć metrykami, co im ile zajmuje. I potem jest fajna odpowiedź, artykuł jest dość długi na InfoQ, ale pokazuje jak zastosowując dobre praktyki inżynieryjne możemy osiągnąć realne cele. Nie potrzebujemy nawet czasami… Ja nie lubię SAFe’a, itd. Można obrać realny cel, to jest kwestia zdrowego rozsądku, a nie wdrożenia kolejnego magicznego frameworka, który niby nam wszystko pomoże. Nie, z gównianym kodem, itd., nie zajdziemy aż tak bardzo daleko i z całą organizacją zrobioną. Bardzo fajny artykuł dla tych, którzy mają wątpliwości czy Agile się spełnia i generalnie Dogma jakakolwiek ma sens. Nie ma sensu żadnego.
Łukasz Kałużny: Nie, to naprawdę fajnie pokazuje całość układanki. Trzeba sobie powiedzieć, coraz bardziej chcemy zarządzać, widzieć i w ogóle i firmy doradcze, bo SAFe jest wymysłem firm doradczych, zobaczyli, że można w tych obawach na tym bardzo, bardzo, bardzo dobrze zarobić.
Szymon Warda: Tak, bo wdrożenie takiego SAFe’a to jest proces i to jest drogie w organizacji.
Łukasz Kałużny: To są bardzo przyjemne faktury dla konsultingów.
Szymon Warda: Dokładnie tak. Według mnie to jest takie właśnie, że procesy w organizacji są potrzebne, bo organizacja rośnie procesami. Ale nie może być tak, że wrzucamy procesy i jednocześnie ubijamy zdrowy rozsądek. To nie tak działa. To procesy nam rosną i my dopasowujemy metodologię do organizacji. Zresztą te kłótnie, generalnie, już teraz trochę umarły mimo wszystko, ale dalej się zdarzają czasami, że: a, czy to jest Agile? Nie. Jak Agile’a dostosowujemy do swoich potrzeb organizacji to już nie jest Agile, to jest jakiś tam twór, Frankenstein. Nie, organizacje są inne, mają różne potrzeby, trzeba dostosowywać do naszego kontekstu, a nie na pałę aplikować wszystko, co przeczytaliśmy w internecie. No tak że wymarudziłem się. Ale artykuł bardzo dobry, naprawdę długi, ale naprawdę bardzo dobry.
Łukasz Kałużny: Ode mnie, zaczniemy nie od AI-a i LLM-ów. Tym razem dwie rzeczy, dwa artykuły z NewsTuck.io na temat Web Assembly w bieżącym roku. I to jest ciekawe, bo jest jedna rzecz, wygląda na to, że komponenty, teraz ostatnio jakoś porzuciłem na parę miesięcy śledzenie co się dzieje w Web Assembly, bo czekałem aż się parę rzeczy wykluje. Jedna rzecz, wygląda na to, że powoli standaryzacja komponentów w Web Assembly zaczyna się budować, czyli w jaki sposób będzie ten core hostingowy, moduły aplikacyjne, biblioteki, jak to będzie poukładane. Więc to jest jedna taka istotna rzecz, która się pokazuje, żeby to prościej zacząć budować. I patrząc się z takich predykcji, które są i z nią się zgodzę, że być może ten rok będzie początkiem WSAM-a na produkcji.
Szymon Warda: Znaczy on w jakiejś tam na produkcję wjeżdża, tylko bardziej takiej świadomej produkcji tak naprawdę kodu biznesowego.
Łukasz Kałużny: Tak, jeżeli popatrzysz i tam jest, z tych predykcji jest jedna właśnie tak pięknie nazwana WSAM Home is on the server side. I to jest taka rzecz, z którą bardzo.. Bo wszystkie te eksperymenty w przeglądarce, zróbmy aplikacje i inne rzeczy, no walić to.
Szymon Warda: Ja bym się z tym zgodził, ale uważam, że WSAM w tym roku na produkcji jako eksperymenty, nie wierzę, żeby to się pojawiło jakoś…
Łukasz Kałużny: Raczej nie, dlatego masz jeszcze problemy z językami, z innymi kawałkami, które są w całości, bo jak popatrzymy, to całość jest właśnie, założenie z tych predykcji, że w tym roku Web Assembly Server Interface Memory Management i Component Model zostaną jako te addony do tego core’owego standardu wreszcie zatwierdzone i dodane.
Szymon Warda: Właśnie mi gdzieś śmigło, pamiętam, w zeszłym roku, do końca roku właśnie raport w kontekście kompatybilności języków i to faktycznie tak różowo nie wygląda generalnie. Był taki hype, że dostawcy nagle: robimy, robimy, robimy, ale to nie jest, dowieźli nam do końca, żeby to faktycznie było, na spokojnie możemy tego używać.
Łukasz Kałużny: Tak, więc takie rzeczy, inaczej, założenie, czyli najważniejsze, ten Web Assembly Interface, że on pojawi się, Modular System Interface, że będzie 1.0, wyjdzie na koniec, że w tym roku osiągnie GA.
Szymon Warda: Może tak, ja pamiętam z tych raportów, przypominam sobie, to było to, że najlepiej wyglądało to chyba w GO albo w RAST-cie, jakoś tak, daleko, daleko, to była taka przepaść, schodziła w dół.
Łukasz Kałużny: Więc wiesz, zobaczymy. Tak jak mówiliśmy, server side dla serwer lessów i wymiany Dockera na to, jest to jakiś game changer. Nie jest to jakieś tam niesamowite wow, ale z punktu widzenia sposobu zabezpieczenia, wystandaryzowania naprawdę wywala ileś warstw po drodze.
Szymon Warda: I jest sensowne i na pewno pozwoli też szybciej się skalować chociażby horyzontalnie. Więc to ma sens jak najbardziej. Niezłe.
Łukasz Kałużny: Dobra, jako nowy deployment model, trzeba tak to sobie podsumować, bo tam jeszcze znajdzie się pieprzenie głupot o lokalnych LLM-ach i innych rzeczach. Wyrzućcie to do kosza, to nie ma to, w tym momencie wchodzenie w to poza sztuką dla sztuki, dla waszej codziennej pracy.
Szymon Warda: Poza podłączeniem tego pod obecny hype, żeby mogło się obyć.
Łukasz Kałużny: Tak, żeby było, żeby się finansowanie znalazło. Dobra, co u ciebie?
Szymon Warda: AWS, jak żeśmy ganiali go w zeszłym odcinku, to teraz pochwalimy. Znaczy pochwalimy, bardziej informacyjnie, chociaż tak też… AWS zaktualizował swojego WAF-a, czyli Well-Architected Framework. Jest to zbiór praktyk, assessmentów tak naprawdę, który zarówno ma AWS i ma Google. Google ma tam Cloud Architecture Application, jakoś tak. Azure ma też właśnie WAF-a. Jak zbudowany jest, od tego zacznijmy, AWS-owy Well-Architected Framework? Na operations - operacja, czyli opsy, security, reliability, performance efficiency, cost optimization i sustainability. Doskonale znamy, bo korzystamy z WAF-a Azure’owego i jest bardzo podobny. Ten sustainability trochę inaczej wygląda. Tam się coś zmieniło, doszły, ogólnie w tej rewizji jest trochę większy nacisk na opsy, trochę praktyk, może trochę reaktorów można by powiedzieć. Ale co mnie zastanowiło? To był ten element, bo wszystkie pozostałe są dość logiczne, ten sustainability wiadomo, jest taki okay, ciekawe co tam jest. I tu może się pojawić w ogóle całe, co w zeszłym roku było głośno właśnie odnośnie zieloności deploymentów, odnośnie całego FinOpsa, odnośnie tego jak i commitmentów różnych firm, że będzie bardziej zielono, itd. Jak się spełnia te sustainability tak naprawdę, to to jest taki mix: praktyku dobierz odpowiednie workflow do Twojej potrzeby, skaluj się. To jest taki ładny PR-owy ruch, pomieszanie obsuw, skalowania, optymalizacje kosztowe i performance efficiency do jednego worka. Więc tak, myślałem, że coś ciekawszego wymyślą, ale ogólnie trochę hejtu wylałem. Ale mimo wszystko wad, jako takich, jeżeli siedzicie w AWS-ie i albo AWS-owy, jeżeli w Google’u to Google’owy, jeżeli chodzi w Azure to Azure’owy, to jest coś, warto mieć tego świadomość i warto się zapoznać i nawet sobie zrobić dla samego ćwiczenia, żeby wiedzieć gdzie jest i czego brakuje. To jest zbiór praktyk, który naprawdę ma sens. I jest jako jedno z wielu assesmentów Microsoftowych. Dobrze, tyle. Co tam u Ciebie, Łukaszu?
Łukasz Kałużny: Next one, dobra, to teraz dla Was to będzie zbiór linków. Tak, AI! Zacznijmy od zabawniejszego. Poszło sobie na The Verge, poleciał sobie wpis na temat - ktoś próbował robić tam opisy i inne rzeczy. Bo Amazon jest też platformą, gdzie sprzedawcy wrzucają, tak jak na nasze Allegro, to też nie wszyscy mają świadomość, to też jest platforma e-commerce’owa. I co jest zabawne? Opisy są takie: I’m sorry, but I cannot fullifay this request as is going against OpenAI use policy. Czyli ktoś załadował API do generowania tych opisów na bazie OpenAI-a i w ogóle nie walidował tego, co wrzuca do sklepu. Jest pełno tak zdropowanych produktów.
Szymon Warda: Łukasz doskonale wie, że jakiś system do wystawiania na Amazonie pochwalił się, że ma OpenAI-a i wszyscy zaczęli tego używać na pałę i integrować się automatycznie.
Łukasz Kałużny: Tak, ale brzmi to zabawnie jak nagle widzisz taki zestaw. To jest całość, że trzeba sobie sprawdzać automatyzację. Dobra, i teraz przejdźmy do takich mniej zabawnych, do bardziej poważnych problemów z bezpieczeństwem. Anthropic zrobił dość ciekawy eksperyment i zrobił z tego świetny paper, publikację naukową na temat zatruwania modelu. Świadomie zrobili sobie LLM-a, władowali w niego backdoora. W zależności, jeżeli w prompt’cie będzie ustawiony rok 2023, to generuje kod, który jest ok. Jeżeli 2024 to bierze i to generuje backdoory w odpowiedziach kodu.
Szymon Warda: Przerażające.
Łukasz Kałużny: Bardzo ciekawy sposób zatrucia. Ale i poczekaj dalej. I teraz całość, wiecie co, ja bym podsumował, traktowano, sprawdzano tam w zależności od tego, które podejścia pozwolą w zależności co użyć, że tak powiem, jak to wpadnie, jak wpadnie fajny tuning, jak wpadną inne rzeczy. I patrząc się, co ciekawe, w jednej z metod, to mnie rozwaliło adwersja o training, nie wiem jak to dobrze na polski przetłumaczyć, ale jedna z metod retrenowania modelu zamiast usunąć to, pozwoliła modelowi generować jeszcze lepsze backdoory.
Szymon Warda: Wracamy do tego, o czym się mówiło jeszcze jak ja byłem na studiach, do trenowania modeli ML-owych, maszyn learningowych, nawet powiedzieć tych modeli, takich prostych, regresji, itd., że kluczem to jest zbiór danych. I co było takim niesamowitym rozwojem do poznawania liczb, tekstu rysowanego czy pisanego, to po prostu zebranie image.. Jak się nazywał ten cały zbiór? Ktoś siadł i uporządkował generalnie i zrobił dobry zbiór trenowy, do trenowania tych modeli. I dzięki temu to się wszystko ładnie rozwinęło. A to złuda generalnie, że damy do AI-a gówniane dokumenty i będzie super, to tak nie będzie generalnie, gówno na wejściu, gówno na wyjściu. Z całym szacunkiem, ale tak to z reguły wygląda. Nie uciekniemy od tego, ale też z drugiej strony, tego nie jak zwalidować. Nie ma opcji, żeby takie rzeczy wychwycić. Więc wokół czegoś takiego governance zbudować, trzeba by zacząć od danych. I teraz co, certyfikację danych, musielibyśmy mieć teraz zaufanie do dostarczycieli danych, co realnie oni się przed tym obecnie bronią, żeby tego w ogóle nie robić, żeby nie scrape’owali. Ciekawe.
Łukasz Kałużny: Więc tak, całość jest przepiękna właśnie, jak bardzo jest to problematyczne. Przepięknie pokazuje ryzyka. I wiesz i pytanie jest: jak będzie wyglądało np. w kontekście tych wszystkich dużych setów danych ze scrape’owania internetu, jak wpadnie jakiś kod na GitHubie, ktoś zacznie publikować specjalnie kod, który żeby się tylko znalazł jako backdoor.
Szymon Warda: Tak w ogóle pokazuje, jak fajnie będą wyglądały te wszystkie ruchy, o których mówiliśmy, w zeszłym odcinku właśnie, używania modeli, wdrażania takich małych systemików przez biznes. Kod, który powiedzmy niewiele mógł zrobić, a teraz załóżmy sobie LLM-a weźmiemy sobie, bo tam firma fajne rzeczy robi, to nam pomaga i wobec tego, że to chodzi w wewnętrznej sieci firmowej, nie zwalidowane i po prostu tam takie rzeczy mogą wejść.
Łukasz Kałużny: Nie, nie, więc warto sobie przeczytać “Sleeper Agent Training”. Jak to mocne. Dobra, to co Szymon, dajesz mi tą niespodziankę? Bo słuchajcie, cieszy się jak małe dziecko w cukierni, lodziarni czy wesołym miasteczku na to, co ma mi teraz pokazać. Więc Szymonie pokaż linka, którego nie widziałem.
Szymon Warda: Ja w końcu, bo ten temat mi się przewijał od dłuższego czasu tak naprawdę i mnie irytował już od jakiegoś czasu, miałem też do czynienia z nim zawodowo i on, nie do końca rozumiem poziomu głupoty, która się tutaj dzieje. Bo tak samo jak mówiliśmy jakiś czas temu Łukaszu o tym patternie, żeby zapisywać do bazy, a potem generalnie żeby ominąć outboxa, że wpierw zapisujemy do bazy, a potem systew bierze z tego. To teraz widzę, że coraz więcej głosu dochodzi i coś nazywa się CDC, czyli Change Data Capture.
Łukasz Kałużny: Tak, jest to bardzo stara metoda.
Szymon Warda: Na czym to polega? Polega na tym generalnie, że zamiast wysyłać wiadomości między serwisami np., to co robimy? Wpinamy się transaction loga naszej bazy relacyjnej i w tym momencie z tego transaction loga, ponieważ każda informacja, zanim baza zapisze, zapisuje do transaction loga co ma zmienić dokładnie, czyli daną tabelkę, tak wychodzi. I potem generalnie to jest zapisywane do transaction loga, na koniec do bazy i na naszym logu jest oznaczone jako, że tak, udało się jest w porządku. Czyli baza relacyjna ma swój event sourcing, musi coś tam mieć. Teraz jest taki ruch bardzo mocny, żeby teraz wywalić w ogóle, albo nie używać w ogóle komunikacji po kolejce, żeby aplikacje nie wysyłały wiadomości, tylko żeby przez CDC właśnie propagować informacje. I teraz na starcie powiem, zanim ten cały hejt wyleję, CDC ma swoje zastosowanie. Jeżeli potrzebujemy super małej latencji, jeżeli mam jakiś stary system z którego nie ruszymy tej bazy, ktoś utrzymuje zewnętrznie…
Łukasz Kałużny: Szymon, dużo można powiedzieć. Jest to świetne rozwiązanie, kiedy budujemy klasyczny warehousing…
Szymon Warda: I do raportowania.
Łukasz Kałużny: Inaczej, klasyczny warehousing, czy tak jak mówisz, nie możemy się dostać do środka potrzebujemy zrobić real time analitykę i inne rzeczy. Tak, takie rzeczy, narzędzia się budowało od lat na bazie transaction logu i mają do tego snapshoty i inne rzeczy.
Szymon Warda: I potrzebujesz do tego załóżmy wrzucić dane z wielu baz relacyjnych, np. Do data lejka, tego typu rzeczy. Cała analityka, warehousing, to super do tego się nadaje.
Łukasz Kałużny: I nie chcesz wyliczać różnic i innych rzeczy, które przy niektórych spapranych monolitach, zbyt prostych aplikacjach czy zamkniętych pudełkach są, robienie co się zmieniło, jest i snapshotowanie jest traumą jak Data Engineer ma to przygotować do tego ETL-a.
Szymon Warda: Dokładnie, więc to ma swoje miejsce. Ale artykuł jest bardzo długi, to jest w ogóle prezentacja i zachwalanie jak to wygląda. I mnie czoło od tego artykułu boli, bo ilość sytuacji… Jakie problemy są w takim CDC? Po pierwsze, zmiany widzimy per tabela, więc problem, to teraz załóżmy mamy zmiany poszczególne, poszczególne statementy właściwie widzimy, co one zmieniają. W pewnym momencie mamy teraz takie, że nie widzimy co należy do całej transakcji, czyli nie widzimy tego co się faktycznie zmieniło. Ale jest to rozwiązanie Łukaszu, bo teraz są komponenty, które korelują ze sobą te statementy tego CDC i po stronie odbierającego rebudują ten widok. Nie wiedziałem co z sobą zrobić jak to przeczytałem, co za debilny pomysł.
Łukasz Kałużny: Inaczej, wiesz co, to jest… Ja popełniłem parę razy rzeczy na jakichś kurde pudełkowych kupach, jakąś logikę na triggerach w bazie danych, bo to wygląda jak klasyczna logika, jakbyś zrobił chamskie triggery w bazach danych. Wiesz o co chodzi.
Szymon Warda: Ja już triggery wolę bardziej.
Łukasz Kałużny: Ja wiem, bo przynajmniej wiesz co się dzieje.
Szymon Warda: Ale ten artykuł nie poprzestaje na tym momencie. Idziemy dalej. W ogóle jaki wspaniały CDC. Co możemy zrobić? CDC, wyobraź sobie, jest dobrą alternatywą do Outbox Patternu. Nie potrzebujesz wcale tego mieć. CDC jest rozwiązaniem. Artykuł mówi o tym, jak z tego CDC, to co oni robią? Oni teraz robią taki myk, że wrzucają to oczywiście gdzie? Oczywiście, że na Kafkę. I teraz mają topic i uwaga, topic jest per tabela, więc nagle wyobraź sobie ile masz. To są setki tych tabel nagle, tych topiców musisz zbierać i je koreluje ze sobą magicznie, z tego systemu. Dla mnie poziom absurdyzmu tego całego artykułu jest niesamowitey. To teraz kilak mitów czemu CDC jest złem? Po pierwsze, to odbudowanie stanu klienta, zmianę kontekstu w ogóle, co się zmieniło w całości po stronie klienta, jest debilne, bo nagle mamy wielu nasłuchujących, którzy muszą tą logikę rozproszyć. To w ogóle nie o to chodzi. Dalej mamy informację, że coś się zmieniło, nie wiemy czemu to się zmieniło. To jest tak, że potrzebuje tego kontekstu biznesowego. Nagle tego kontekstu się wyzbywamy całkowicie w ogóle, nie ma żadnego corelation ID, którego nie będzie, nie mamy kontekstu użytkownika, nie mamy nic. Mamy gołe dane, które ponownie, dla hurtowni raportowania, super, dla czegokolwiek aplikacyjnego nie ma to żadnego sensu. Idziemy dalej. Łukaszu, z Twojego doświadczenia, co jest z reguły najbardziej ograniczającym elementem wydajności aplikacji?
Łukasz Kałużny: Baza!
Szymon Warda: Dokładnie, baza. A co ma droższy core, baza czy aplikacja?
Łukasz Kałużny: Baza.
Szymon Warda: I to tak mniej więcej rzędu koło 200-300 razy jest droższy.
Łukasz Kałużny: Ja inaczej, wiesz co, ja pomyślałem o innym fuckupie. Piksowywanie realisów updatem na produkcji.
Szymon Warda: Dalej idziemy.
Łukasz Kałużny: Ale popatrz, bo ja teraz tak pięknie myślę, jak coś zrobił jakiś tam outbox integracje. Wiesz o tym, że update na produkcji ze złym warem siekającym całą tabelę się zdarza.
Szymon Warda: Ale nawet inna opcja, to się zwaliło i musisz po prostu poprawić dane. I CDC Ci to rozepchnie wszystko w lewo i w prawo.
Łukasz Kałużny: I weź uratuj stan.
Szymon Warda: Nie masz wersjonowania żadnego, bo nie masz, bo masz dane do tabelki, więc nie wiesz co się dzieje. Nie masz żadnej walidacji na poziomie kontraktu, który wysyłasz. Po prostu wysyłasz tabele. Dalej idziemy tak, czy miałeś kiedyś co się dzieje, jak się CDC zapcha? Bo on się może zapchać. Baza się wyłącza! A co się dzieje jak się kolejka zapcha? System działa, odpowiada, tylko wiadomości sobie kolejkuje w outboxie, nic wielkiego się nie wydarzyło.
Łukasz Kałużny: A tutaj…
Szymon Warda: Mamy centralny punkt, mamy dane i rozsyłanie I to jest CDC, wewnętrzne pola, od tego zacznijmy. Co więcej, problemy są takie, to występuje czasami, mało ludzi jest tego świadomych. Phantom Update’y, jak mamy ORM-a, ORM nie zawsze łapie stan poprawnie i czasami update’uje tabelki z tej samej na tę samą wartość. I nagle mamy takie CDC i to się propaguje jako tabele słownikowe i tam lata w lewo i w prawo. Mamy taki totalnie single point of failure na wszystko, na dane i na wysyłanie wiadomości. Ja tu mogę jeszcze dużo marudzić, ale kurde co za debilne aplikowanie pomysłu na wszystkie możliwe wersje. Sorry, już skończyłem marudzenie.
Łukasz Kałużny: Chciałeś mój usłyszeć śmiech jak to zobaczę.
Szymon Warda: Absurdyzm pogłębiania się w… Praktyka, która ma swoje miejsce i ponownie, to ma swoje zastosowanie.
Łukasz Kałużny: Raczej ma sens, ale nie tak jak jest to przedstawione.
Szymon Warda: Tak.
Łukasz Kałużny: Bo całość polega na tym, że przepraszam za to określenie, ale kurwa jego mać, spierdoliliśmy architekturę, spierdoliliśmy kod aplikacji i teraz chcemy to spierdolić jeszcze bardziej, bo tak to brzmi, sorry.
Szymon Warda: Nie, wydaje mi się, że to nie wynika z tego, że ktoś coś popsuł. To wynika z tego generalnie jak zrobi coś inaczej. Bo CDC w teorii ma swoje plusy, bo jest szybkie, jest łatwe, jest konsystentne, mamy minimalną latencję.
Łukasz Kałużny: I teraz popatrz się jak się zachowa, jak będziesz robił klina bazy kompaktowo-log-transakcyjnej w inne zabawki, które są.
Szymon Warda: Łukasz wiem, ale pamiętasz to, co mieliśmy argumentację odnośnie tego artykułu właśnie odnośnie zastąpienia outboxa? Jak pokażesz CDC juniorom albo komuś, kto nie ma doświadczenia w utrzymaniu aplikacji, albo jak one żyją, pokażesz na prezentacji, to majtki spadają. Na prezentacji to wygląda fenomenalnie. Nagle masz system stary, włącza CDC i masz w wiadomościach w ciągu jednej 45-minutowej prezentacji i jeszcze tam Kafkę dorzucisz generalnie, więc po prostu plan pięcioletni rozwoju aplikacji robisz w 45 minut.
Łukasz Kałużny: Aż z wrażenia chyba telefonem Szymon pacnął o ziemię.
Szymon Warda: Zegarkiem o biurko zahaczyłem. To jest znowu fajna rzecz prezentacyjna. Życiowo, miejmy trochę rozsądku. Znowu wracam do tego pierwszego artykułu, jednak rozsądek rządzi w tej sytuacji.
Łukasz Kałużny: CDC jest spoko, ale zostańmy przy analityce, ETL-ach i innych rzeczach, tam gdzie ma on swoje miejsce.
Szymon Warda: Albo systemach, które potrzebują super niskiej latencji, ale z reguły takich systemów nie budujemy.
Łukasz Kałużny: Inaczej, tam gdzie są potrzebne niskie opóźnienia, to co tutaj zaprezentowali jest zawodne.
Szymon Warda: Na pewno nie użyją Kafki, powiedzmy sobie szczerze.
Łukasz Kałużny: Tak, ale w ogóle wiesz, ile hopów sieciowych dostajesz tutaj?
Szymon Warda: Dużo.
Łukasz Kałużny: Tak, no właśnie. Więc nawet jeżeli popatrzysz sobie na niskie opóźnienia, to tutaj będą one wysokie. No to co, kończymy tym wesołym akcentem.
Szymon Warda: Dobrze, trzymajcie się.
Łukasz Kałużny: Na razie. Hej!