Witamy w Arkstack — JVM Performance, Off-heap Memory & Low-Latency Architecture
Arkstack.dev to blog inżynierski skupiony na JVM Performance Tuning, Low-Latency Java Architecture, Off-heap Memory Management i modernizacji systemów legacy. Pisany przez inżyniera, który walczy z GC na co dzień.
Witamy na Arkstack.dev — minimalistycznym blogu dla programistów, bez zbędnych ozdobników.
To cyfrowy dom Arkadiusza Przychockiego, Lead Cloud Architekta i Full-Stack Engineera. Jeśli zależy Ci na czystych systemach, nowoczesnej inżynierii JVM i architekturze cloud-native zrobionej porządnie — jesteś we właściwym miejscu.
Czego się spodziewać
Blog skupia się na przecięciu trzech obszarów:
- Architektura chmury — projektowanie odpornych i ekonomicznych systemów na AWS, GCP i Azure. Infrastruktura jako kod, systemy rozproszone i lekcje wyniesione z produkcji.
- Nowoczesna Java — język ewoluuje szybciej niż kiedykolwiek. Wątki wirtualne (Project Loom), sealed classes, pattern matching i rosnący ekosystem wokół kompilacji natywnej GraalVM.
- Inżynieria bez balastu — każda abstrakcja ma swoją cenę. Zależy nam na tym, co faktycznie działa na metalu.
Exeris Kernel
Jednym z flagowych projektów, nad którym pracuję, jest Exeris Kernel — środowisko uruchomieniowe bez alokacji, zaprojektowane dla obciążeń o bardzo małych opóźnieniach. Główna filozofia:
Każda alokacja to zobowiązanie. Każde wywołanie systemowe to negocjacja. Tam gdzie to możliwe — rezygnujemy z obu.
Exeris Kernel zbudowany jest na bazie Foreign Function & Memory API JVM, wykorzystując zarządzanie pamięcią poza stertą (off-heap) w celu osiągnięcia przewidywalnego wykonania bez pauz GC. Przeznaczony jest dla systemów finansowych, potoków danych w czasie rzeczywistym i wszędzie tam, gdzie liczyć się mają nanosekundy.
// Przykład: alokacja bufora off-heap w Exeris Kernel
var arena = Arena.ofConfined();
var segment = arena.allocate(ValueLayout.JAVA_LONG, 1024);
segment.setAtIndex(ValueLayout.JAVA_LONG, 0, System.nanoTime());
Calendar vs. Competence
Nie mierzę swojej kariery latami w CV. Mierzę ją głębokością stosu, który musiałem rozłożyć na czynniki pierwsze.
Podczas gdy wielu spędza dekadę w strefie komfortu jednego frameworka, ja ostatnie 6 miesięcy spędziłem walcząc z JVM Garbage Collectorem i ręcznym zarządzaniem pamięcią — areny off-heap, bezpośredni dostęp przez MemorySegment via Project Panama, i twarde lekcje płynące z budowania środowiska uruchomieniowego bez alokacji od zera.
Tam zaczyna się prawdziwa inżynieria. Nie w scaffoldingu CRUDa. W momentach, gdy logi GC są jedyną wskazówką, a skoki opóźnień mierzy się w mikrosekundach, a nie sekundach.
Ten blog to ścieżka audytu tej podróży.
Filozofia
Filozofia tego bloga odzwierciedla filozofię projektu Exeris: Zero Zbędnych Elementów.
- Brak niepotrzebnego JavaScript po stronie klienta na tej stronie
- Brak nadętych frameworków tam, gdzie wystarczy czysta funkcja
- Brak ceremonii, gdy prostota daje ten sam rezultat
Zbudowany z Astro — frameworkiem, który domyślnie nie wysyła żadnego JS.
Co dalej
Nadchodzące treści to między innymi:
- Głębokie zanurzenie w kompilację natywną GraalVM dla serwisów Spring Boot
- Projektowanie architektur multi-region active-active
- Wnętrzności Exeris Kernel: kolejki lock-free i bufory off-heap
Budujmy rzeczy, które przetrwają.