Rust w DevOps – przyszłość czy moda?

Uploaded image

Ostatnio pod osłoną nocy pracowałem nad własnym projektem, który jest kolejnym kroczkiem na mojej ścieżce życiowej.

Jednak w pewnym momencie postanowiłem… że czasami trzeba się troszkę poopieprzać. Nie oceniaj. "I am only human".

Czytając artykuły na tematy wszelakie, napotkałem na tekst o integracji języka Rust z kernelem Linuxa.

Był to temat, który mnie bardzo zaciekawił – zwłaszcza w kontekście tematyki tego bloga.

Rust, czyli język bezpieczny, szybki, bez segfaultów, bez garbage collectora. Ale czy dla potencjalnego DevOpsa ma on jakieś znaczenie? Czy jest to nowy trend, czy może przejściowy zachwyt, który przeminie?

Nad tym się dziś zastanowimy.

Kernel Linux i Rust – czyli nowi najlepsi kumple

Nie trzeba być Linusem Torvaldsem, żeby wiedzieć, że kernel to święty graal systemu. I właśnie tam, w samym jądrze, Rust zaczął powoli się zadomawiać.

Od wersji 6.1 jądra Linuxa Rust jest oficjalnie wspierany. Nie zastępuje C (spokojnie, odłóżcie te widły, świat się jeszcze nie zawalił) ale daje możliwość pisania nowych modułów w czymś nowocześniejszym, bezpieczniejszym i mniej podatnym na klasyczne błędy pamięci.

To jest ten moment, kiedy zaczynasz myśleć: “Hmm… może to nie tylko kolejny hipsterski język”. Bo skoro Rust wlazł do kernela, to znaczy, że traktują go serio. A to znaczy, że my – jako DevOpsi – też powinniśmy się zainteresować.

Czy będziemy pisać sterowniki? Pewnie nie. Ale kernel to nie tylko sterowniki. To podstawa wszystkiego, co tyczy się kontenerów, eBPFów, sandboxów i całej tej niskopoziomowej magii, która sprawia, że infrastruktura w ogóle działa.

Rust w narzędziach DevOpsowych – to się już dzieje

Rust to język, który już od dawna rozpościera swe macki w narzędziach, których używamy na co dzień. I czasem nawet o tym nie wiemy.

Przykłady? A proszę bardzo:

  • ripgrep – alternatywa dla grep, szybsza i bardziej używalna. Napisana w Rust.
  • fd – nowoczesny find, ale nie doprowadza do łez.
  • exa – ls na sterydach. Ładny, kolorowy i zrobiony w Rust.
  • batcat, ale z podświetleniem składni i numerami linii.
  • Firecracker – microVM od Amazona, używany m.in. w AWS Lambda i Fargate. Tak, też w Rust.
  • youki – alternatywny runtime do kontenerów. Chce być szybszy i bezpieczniejszy niż runc.
  • krustlet – kubelet napisany w Rust. Tak, można.

To nie są zabawki. To narzędzia, które już są używane na produkcji. A skoro one mogą być w Rust i działać, to może twoje CLI do deployów też może?

Nie chodzi o to, żeby teraz przepisywać wszystko z Go na Rust, ale… warto wiedzieć, że ekosystem już tam jest. I że nie jesteś sam, jeśli postanowisz coś tam sklecić.

Dlaczego Rust może mieć przyszłość w pisaniu agentów, CLI i infrastruktury backendowej

W świecie DevOps piszemy mnóstwo małych narzędzi. Agenty, które zbierają metryki. CLI, które robią deploy. Serwisy, które gadają z API i robią "coś". No i zwykle robimy to w Go albo Pythonie. Ale może właśnie tu leży Rust pogrzebany?

Po pierwsze: Rust jest szybki. Jak bardzo? Tak bardzo, że ludzie przepisują CLI z Go do Rusta i mają lepszy czas działania bez optymalizacji. Pomimo braku różnych bajerów które Go oferuje.

Po drugie: Rust jest bezpieczny. Nie da się odpalić byle czego, nie ma null-pointerów, nie ma wycieków pamięci. Jak napiszesz coś w Rust i to działa, to będzie działać długo i stabilnie. Idealne na serwer produkcyjny.

Po trzecie: Rust kompiluje się do jednej binarki. Tak jak Go. Zero zależności, zero wymagań, po prostu wrzucasz na serwer i działa. To dla DevOpsa bajka, nie trzeba ustawiać środowiska, wersji Pythona, paczek. Nic. Wsiadasz i jedziesz.

Po czwarte: Rust daje więcej kontroli. Możesz pisać agenta, który obserwuje system, zbiera logi, czy monitoruje pliki na poziomie niskopoziomowym. I nie boisz się, że coś przypadkiem wybuchnie ci w twarz przez zarządzanie pamięcią.

Dlatego niektórzy już dzisiaj robią deploy toolsy w Rust, agentów do Prometheusa, CLI do obsługi K8S. Bo jak już ogarniesz składnię i borrow checker, to okazuje się, że Rust po prostu działa. I to jak działa?

Podsumowanie – Rust w DevOpsie to nie przypadek

Rust to nie jest język, który przepadnie jak R. Skoro trafił do kernela Linuxa, skoro Amazon pisze w nim Firecrackera, a społeczność DevOpsowa tworzy alternatywy dla runc czy kubeletów, to wiedz, że coś się dzieje.

Jasne, Rust nie zastąpi Pythona do szybkich skryptów ani Go do najprostszych CLI. Ale jeśli zależy Ci na bezpieczeństwie, wydajności i kontroli – to Rust może być dokładnie tym narzędziem, którego szukasz.

Nie musisz znać każdego keyworda. Nie musisz pisać sterowników. Ale warto wiedzieć, co się dzieje pod spodem, i gdzie ten język zaczyna mieć sens w Twoim DevOpsowym świecie.

Bo Rust to nie tylko nowa składnia. To nowy sposób myślenia o infrastrukturze, którego może nam wszystkim brakuje.

#devops #backend #linux #automation #learning #rust

Podobne posty