Przyjmujemy nowe projekty · zespół wyłącznie z doświadczeniem · praca zdalna PWN-ALL · Studio tworzenia oprogramowania na zamówienie

Oprogramowanie w Rust i Python które przetrwa zespół, który go wypuścił.

Jesteśmy studiem zatrudniającym wyłącznie doświadczonych programistów, które celowo tworzy oprogramowanie na zamówienie w dwóch językach: Rust, gdzie popełnienie błędu jest kosztowne, oraz Python, gdzie opóźnienia w dostawie są kosztowne.

Średnia poprawa p99 w 40 migracjach
Redukcja pamięci 0 w porównaniu z wartościami bazowymi JVM / Node
Usługi w środowisku produkcyjnym 0 od 2024 r.
Zgłoszone incydenty bezpieczeństwa 0 w całej naszej historii
Zespoły, które ufają naszemu kodowi
01 Dwa języki. Nie pięć.

Jeden stos, wybrany celowo.

Agencje wielojęzyczne brzmią świetnie w prezentacji. W praktyce oznaczają trzy systemy kompilacji, cztery odmiany wartości null i cmentarzysko usług utrzymywanych tylko w połowie. Wybraliśmy dwa języki, które pokrywają 95% rzeczywistych obciążeń — i staliśmy się w nich bardzo, bardzo dobrzy.

Ścieżka krytyczna · systemy · bezpieczeństwo

Rust

9,6 wewnętrzny wskaźnik dopasowania

Bezpieczne dla pamięci bez modułu czyszczącego pamięć. Wolne od wyścigów o dane już w czasie kompilacji. Najsurowszy recenzent kodu, jakiego kiedykolwiek spotkasz — a gdy już cię przepuści, twoja usługa nie będzie budzić cię w niedzielę.

Kiedy po to sięgamy

  • Systemy płatności i wszystko, co dotyczy pieniędzy lub danych osobowych
  • Popularne bramy API z umowami SLA na poziomie 99,999%
  • Silniki dopasowujące o niskim opóźnieniu, handel, działanie w czasie rzeczywistym
  • Moduły WebAssembly dostarczane do przeglądarki
  • Narzędzia CLI i demony, które muszą uruchamiać się w ciągu milisekund

Kompromisy, których nie będziemy udawać, że nie istnieją

  • Wdrożenie nowych pracowników: ~2–4 tygodnie do osiągnięcia pełnej wydajności
  • Czas kompilacji w ogromnych obszarach roboczych (rozwiązujemy to za pomocą sccache)
  • Ekosystem młodszy niż Java — dojrzały tam, gdzie to ma znaczenie
Spoiwo · dane · ML · prędkość

Python

9,3 wewnętrzny wskaźnik dopasowania

Najszybsza droga od tablicy do działającego systemu. Najbogatszy ekosystem na świecie dla danych, uczenia maszynowego i automatyzacji. Nowoczesny Python — 3.12, uv, ruff, pydantic, FastAPI — to precyzyjny, typowany i wystarczająco szybki język do większości Twoich potrzeb.

Kiedy po to sięgamy

  • Narzędzia wewnętrzne, pulpity nawigacyjne, panele administracyjne
  • ETL, potoki danych, Airflow / Dagster / Prefect
  • ML — szkolenie, obsługa, ocena
  • Automatyzacje i integracje z interfejsami API dostawców
  • Produkty MVP, które trafią na rynek w tym kwartale, a nie w przyszłym roku

Kompromisy, których nie będziemy udawać, że nie istnieją

  • Przepustowość pojedynczego rdzenia jest 20–50 razy wolniejsza niż w Rust
  • Większe zużycie pamięci na żądanie — fatalne dla niektórych obciążeń
  • Typowanie dynamiczne sprawia kłopoty bez ścisłego mypy / pydantic
Rust, gdzie błędy są kosztowne. Python, gdzie opóźnienia w dostawie są kosztowne. Jeden zespół. Zero dogmatów.
02 Liczby, a nie wrażenia

Rust i Python kontra typowi podejrzani.

Kliknij wskaźnik, aby zobaczyć, jak wypada każdy język. Wyniki są w skali 0–10, opracowane na podstawie naszych własnych testów porównawczych oraz źródeł publicznych (Techempower R22, CLBG, rzeczywiste migracje, które zrealizowaliśmy).

Criterion Rust Python Go C++ Java Node.js
Surowa wydajność (p99, pojedyncze jądro) 10 3 7 10 7 5
Bezpieczeństwo pamięci i wyścigi danych 10 9 8 2 8 7
Czas do powstania działającego prototypu 5 10 7 3 6 8
Zakres ekosystemu 8 10 7 9 10 9
Współbieżność bez zmartwień 10 6 9 4 6 7
Koszt operacyjny na żądanie 10 5 8 9 5 6
Dostępność utalentowanych pracowników wyższego szczebla 6 10 7 8 10 9
10-letnia łatwość konserwacji 10 8 8 5 8 5
03 Z → Do

Co się zmienia po migracji.

Wybierz język wyjściowy. Zobacz, jaki wpływ ma przejście na Rust lub Python. Liczby to mediany z naszych ostatnich 40 projektów migracyjnych, a nie marketingowe bzdury.

Obecnie na

C / C++

Szybkie, owszem. Ale każdy wskaźnik null to potencjalny CVE, każdy wątek to potencjalny wyścig o dane, a system kompilacji to dla kogoś praca na pełen etat.

Typowe problemy
  • Luki CVE związane z bezpieczeństwem pamięci
  • Niezdefiniowane zachowanie
  • Rozrost systemu kompilacji
Przejdź do

Rust

Przepustowość ×6,4
Zajmowana pamięć −78%
Awarie w czasie wykonywania −99%
Miesięczny rachunek za moc obliczeniową −65%

Najlepsze rozwiązanie, jeśli obecnie borykasz się z błędami null-pointer, wyścigami o dane lub pamięcią, która rośnie w nieskończoność. Rust zachowuje szybkość i eliminuje pułapki.

Przejdź do

Python

Szybkość rozwoju ×3,1
Liczba linii kodu −55%
Czas do wydania −60%
Obciążenie środowiska uruchomieniowego +40%

Najlepsze rozwiązanie, gdy prawdziwym kosztem jest czas inżynierów, a nie obciążenie procesora. Zamień surową przepustowość na krótszą pętlę sprzężenia zwrotnego, bogatsze biblioteki i kod, który ludzie faktycznie potrafią odczytać.

Jak obliczamy te wartości

Mediany z 40 zakończonych migracji w latach 2023–2026. Przepustowość mierzona na warstwie aplikacji (p50 end-to-end przy realistycznym obciążeniu, a nie w mikrotestach). Pamięć to RSS w stanie ustalonym. Koszt to miesięczne obliczenia na żądanie w AWS/GCP, przy pozostałych warunkach niezmienionych. Indywidualne wyniki mogą się różnić — na żądanie publikujemy również te, które nie poszły zgodnie z planem.

04 Liczby bez gwiazdek

Liczba żądań na sekundę przy rzeczywistym obciążeniu.

Identyczne obciążenie — walidacja JSON → zapytanie do Postgres → renderowanie — zmierzone na pojedynczym komputerze z procesorem AMD Ryzen 7. Nie są to mikrotesty. Źródło i metodologia ↓

  1. 1 Rust · Axum
    21 030 żądań/s
  2. 2 C# .NET · ASP.NET Core
    14 707 żądań/s
  3. 3 Node.js · Fastify
    9 340 żądań/s
  4. 4 C++ · Drogon
    7 200 żądań/s
  5. 5 Go · Gin
    3 546 żądań/s
  6. 6 Python · FastAPI (Uvicorn)
    1 185 żądań/s
  7. 7 PHP · Laravel
    299 żądań/s

Zrozum to dobrze: Python znajduje się na samym dole tego wykresu i to jest w porządku. Nie uruchamiamy FastAPI na ścieżce gorącej. Uruchamiamy go tam, gdzie 1185 żądań na sekundę to już około 10 razy więcej niż wymaga obciążenie, a godziny pracy inżynierów są warte więcej niż cykle procesora. Metodologia: AMD Ryzen 7, Linux, Docker, pojedyncza instancja, jeden popularny framework na język. Liczby to średnie z wielu przebiegów.

05 Rzeczywisty koszt wadliwego kodu

Ile faktycznie kosztuje Cię awaria.

„Pięć dziewiątek” to nie marketing. Poniżej przedstawiono koszty jednej godziny nieplanowanego przestoju w poszczególnych branżach — wraz ze źródłami. Tworzymy Rust w oparciu o te liczby.

Koszt naliczony od momentu otwarcia tej sekcji
Finanse / opieka zdrowotna 0 ~83 tys. USD/min · 5 mln USD/godz.
Motoryzacja 0 ~38 tys. USD/min · 2,3 mln USD/godz.
Duże przedsiębiorstwa 0 23 750 USD/min · 1,4 mln USD/godz.
Średnie przedsiębiorstwo 0 ~5 tys. USD/min · 300 tys. USD/godz.
Finanse i opieka zdrowotna 5 mln USD+ / godz.

Branże o najwyższej stawce. Platformy transakcyjne, systemy rozliczeniowe i systemy kliniczne mogą przekraczać 5 mln USD na godzinę podczas poważnej awarii — jeszcze przed uwzględnieniem kosztów regulacyjnych lub kosztów postępowania sądowego.

Źródło: Badanie Gartner 2024 dotyczące listy Fortune 500; ITIC 2024 – Godzinowy koszt przestoju.
Produkcja samochodów 2,3 mln USD / godz.

Zatrzymana linia produkcyjna generuje straty rzędu około 640 dolarów na sekundę. Awaria CrowdStrike w lipcu 2024 r. kosztowała samą linię lotniczą Delta Air Lines 380 mln dolarów w ciągu pięciu dni.

Źródło: Podział branżowy Erwood Group 2025; analiza po awarii CrowdStrike przeprowadzona przez Antithesis.
Duże przedsiębiorstwo (średnio) 1,4 mln USD / godz.

Dane BigPanda z 2024 r. dotyczące dużych przedsiębiorstw: 23 750 USD na minutę. ITIC podaje, że 41% dużych przedsiębiorstw traci od 1 mln do 5 mln USD na godzinę przestoju.

Źródło: Badanie BigPanda 2024; 11. coroczny raport ITIC dotyczący godzinowych kosztów przestojów.
Global 2000 (Oxford Economics) 400 mld USD rocznie

Łączny ukryty koszt nieplanowanych przestojów w 2000 największych firmach na świecie, według badania Oxford Economics z 2024 r. — średnio 200 mln USD wpływu na firmę po zsumowaniu przychodów, produktywności i kosztów naprawy.

Źródło: Oxford Economics 2024, „The Hidden Costs of Downtime”.
Średnie i duże przedsiębiorstwa (typowa godzina) 300 000 USD+ / godz.

Badanie ITIC z 2024 r.: ponad 90% średnich i dużych przedsiębiorstw szacuje koszt jednej godziny nieplanowanego przestoju powyżej tej kwoty — nie uwzględniając kar prawnych, cywilnych ani regulacyjnych.

Źródło: Raport ITIC z 2024 r. dotyczący godzinowego kosztu przestoju.
Małe i średnie przedsiębiorstwa (SMB) 25 000–150 000 USD / godz.

Wspólne badanie ITIC / Calyptix z 2025 r. wykazało, że wiele małych i średnich przedsiębiorstw traci tyle na godzinę; Siemens informuje, że straty MŚP dotkniętych przestojami mogą sięgać nawet 150 000 USD/godz. Średni czas trwania przestoju wynosi 87 minut.

Źródło: ITIC + Calyptix 2025; Siemens „True Cost of Downtime” 2024.
06 Wybrane projekty

Trzy projekty. Trzy różne wyzwania.

Zanonimizowane tam, gdzie wymaga tego umowa o zachowaniu poufności, konkretne tam, gdzie wymagają tego wyniki. To są zlecenia, które w pierwszej kolejności pokazalibyśmy nabywcy rozwiązań technicznych.

  1. Przypadek 01 Python Baza danych Kryptowaluty RODO

    Magazyn danych fintech: 4× mniejszy, 5,5× szybszy, zgodny z globalnymi standardami.

    Klient posiadał klaster Postgres o wielkości 1,8 TB, przeładowany przestarzałymi kolumnami, nieaktywnymi indeksami i zaszyfrowanymi w linii obiektami BLOB, który rozrósł się przez siedem lat. Kryptografia działała na przestarzałej bibliotece, na którą zwrócono uwagę w trzech oddzielnych audytach. Ryzyko naruszenia przepisów było realne; audytorzy krążyli wokół.

    Co zrobiliśmy

    • Pełny audyt schematu i wykorzystania, usunięcie nieużywanych kolumn i indeksów, wprowadzenie odpowiedniego partycjonowania.
    • Migracja potoku kryptograficznego ze starszej biblioteki do nowoczesnego, audytowanego stosu AEAD z rotacją kluczy.
    • Konwersja szyfrowania BLOB-inline na szyfrowanie typu referenced envelope + dedykowany KMS.
    • Dostosowanie procesów przechowywania danych i dostępu użytkowników do przepisów RODO, CCPA i APPI.
    Wynik

    Te same dane, jedna czwarta kosztów przechowywania, 5,5-krotny wzrost przepustowości i czyste konto przed kolejnym organem regulacyjnym, który zapuka do naszych drzwi.

  2. Przypadek 02 Rust C++ → Rust Bezpieczeństwo Przechowywanie

    Usługa napisana w C++ przepisana w Rust: ponad 100 błędów klasy CVE usuniętych w ciągu 9 tygodni.

    Usługa przetwarzania plików dla użytkowników w C++, ulegająca awarii co 4–5 dni i za każdym razem łatana na miejscu. Nasz audyt ujawnił ponad 100 rzeczywistych błędów: ścieżki odmowy usługi , przepełnienia bufora, nieograniczone przetwarzanie żądań. Błędy 503 w godzinach szczytu były cotygodniowym rytuałem. Po stronie pamięci masowej pliki przesyłane przez użytkowników zgromadziły się w morzu duplikatów , które pochłaniały miejsce w zasobniku.

    Co zrobiliśmy

    • Całkowite przepisanie w Rust (axum + tokio) ze ścisłą walidacją danych wejściowych i ograniczonymi limitami zasobów.
    • Testy oparte na właściwościach + cargo-fuzz dla każdego parsera i granicy formatu transmisji.
    • Warstwa pamięci masowej adresowanej według treści z deduplikacją w momencie zapisu.
    • Wdrażanie metodą blue-green w ramach 4-godzinnego okna integracyjnego, bez przestojów.
    Wynik

    Usługa przeszła od stanu „niestabilnej i co tydzień łatanie” do „przestaliśmy patrzeć na pager”. Koszty pamięci masowej spadły dzięki deduplikacji, zgłoszenia do pomocy technicznej dotyczące błędów i kodów 503 wygasły, a przepisanie zwróciło się w ciągu kwartału.

  3. Przypadek 03 Rust Python eBPF / XDP CRM · 4 tys. użytkowników

    Przebudowa korporacyjnego systemu CRM: 18 serwerów → 5, redukcja kosztów o ponad 60%.

    Wewnętrzny system CRM obsługujący ponad 4000 użytkowników w obszarach IAM, SOC, scentralizowanego logowania, czatu, udostępniania plików, VoIP oraz danych szyfrowanych od początku do końca. Osiemnaście serwerów, Cloudflare na dodatku oraz rachunek za chmurę, który rósł niezależnie od liczby pracowników. Przebudowaliśmy ścieżkę gorącą w Rust, zachowaliśmy Python na warstwie integracji i raportowania oraz umieściliśmy filtr eBPF/XDP bezpośrednio przed wejściem.

    Co zrobiliśmy

    • Usługi Rust do uwierzytelniania (IAM), komunikacji w czasie rzeczywistym, sygnalizacji VoIP, transferu plików.
    • Python dla interfejsów administracyjnych, raportowania, korelacji zdarzeń SOC, integracji z API dostawców.
    • Filtrowanie botów i nadużyć eBPF/XDP w jądrze — zastąpiło Cloudflare w tym zakresie.
    • Przeprojektowany potok logowania strukturalnego w oparciu o schemat zero-copy.
    Wynik

    O trzynaście serwerów mniej, brak pozycji dotyczącej Cloudflare, zespół SOC widzi wyraźniejszy sygnał w potoku logowania, a dyrektor finansowy przestał zadawać niewygodne pytania dotyczące budżetu na infrastrukturę.

07 Jak faktycznie pracujemy

Zmień ustawienia. Obserwuj, jak zmienia się plan.

Każdy projekt stanowi kompromis między szybkością, kosztem i niezawodnością. Poniższa pięciostopniowa wycena jest dostosowana do median branżowych (analiza 2–6 tygodni, architektura 1–4 tygodnie, wdrożenie 4–20 tygodni, wzmocnienie bezpieczeństwa 2–8 tygodni, przekazanie 1–2 tygodnie — zgodnie z raportów z lat 2024–2026 firm NIX United, Agilie, SOLTECH, OTG Lab). Przesuń suwaki; plan zostanie na bieżąco zaktualizowany.

01

Faza odkrywcza

3 tygodnie

Przeczytaj swój kod, przeprowadź wywiad z zespołem operacyjnym, sporządź listę niewiadomych, wybierz język dla każdego komponentu.

  • Wywiady z ekspertami branżowymi i audyt kodu
  • Rejestr ryzyka i cele SLA
  • Decyzja dotycząca języka programowania dla poszczególnych usług
02

Architektura

2 tygodnie

Umowy przed kodem. OpenAPI / protobuf, modele danych, topologia wdrożenia, szkielety runbooków.

  • Zapytania ofertowe dla każdej umowy publicznej
  • Model danych + plan migracji
  • Podstawa „infrastruktura jako kod”
03

Wdrożenie

8 tygodni

Małe PR-y, zielone CI od pierwszego dnia, wdrożenia przy każdym scaleniu, przegląd przez drugiego seniora.

  • Rust: axum · tonic · sqlx
  • Python: FastAPI · Pydantic · SQLAlchemy
  • Cotygodniowe prezentacje + dziennik zmian
04

Zabezpieczanie

3 tygodnie

Fuzzing, testy oparte na właściwościach, testy obciążeniowe przy realistycznym ruchu, model zagrożeń.

  • cargo-fuzz · proptest · hypothesis
  • Testy obciążeniowe k6 powiązane z SLO
  • Przegląd bezpieczeństwa i audyt zależności
05

Przekazanie

1 tydzień

Runbooki, rotacja dyżurów, procedury ADR oraz zespół, który już raz wdrożył to rozwiązanie.

  • Podręczniki operacyjne + matryca dyżurów
  • Dziennik ADR i schematy architektury
  • 30-dniowe wsparcie po uruchomieniu
08 Ten sam problem, dwa języki

Jak ten sam punkt końcowy wygląda w każdym z nich.

Pobierz użytkownika, sprawdź poprawność danych, zapisz w Postgresie, zwróć JSON. Przełączaj się między językami — oba są prawdziwym kodem, który faktycznie byśmy wdrożyli.

SQL_CREATE_USER = "insert into users(email,name) values(lower($1),$2) returning id,email,name"
Name = Annotated[str, StringConstraints(strip_whitespace=True, min_length=1, max_length=120)]

class UserIn(BaseModel):
    email: EmailStr
    name: Name

class UserOut(UserIn):
    id: int

@router.post("/users", response_model=UserOut, status_code=201)
async def create_user(u: UserIn) -> UserOut:
    try:
        row = await pool.fetchrow(SQL_CREATE_USER, str(u.email), u.name)
   except UniqueViolationError as exc:
        raise HTTPException(status_code=409, detail="adres e-mail już istnieje") from exc
    if row is None:
        raise HTTPException(status_code=500, detail="wstawianie nie powiodło się")
    return UserOut.model_validate(dict(row))
#[derive(Deserialize, Validate)]
#[serde(deny_unknown_fields)]
pub struct UserIn {
    #[validate(email)]
    pub email: String,
    #[validate(custom(function = "valid_name"))]
    pub name: String,
}

pub async fn create_user(
    State(pool): State<PgPool>,
    ValidatedJson(u): ValidatedJson<UserIn>,
) -> Result<(StatusCode, Json<UserOut>), ApiError> {
   let user = sqlx::query_as!(UserOut,
        "insert into users(email,name) values(lower($1),$2) returning id,email,name",
        u.email.as_str(),
        u.name.trim(),
    )
    .fetch_one(&pool)
    .await
    .map_err(ApiError::from_db)?;

    Ok((StatusCode::CREATED, Json(user)))
}
Liczba linii kodu
16 22
Przepustowość
1 185 żądań/s 21 030 żądań/s
Opóźnienie p50
21,0 ms 1,6 ms
Pamięć RAM w stanie spoczynku
41,2 MB 8,5 MB
Odpowiadamy w ciągu 1 dnia roboczego. Bez żartów.

Przeczytałeś całą stronę.
Zbudujmy to.

Powiedz nam, co jest nie tak z Twoim stosem technologicznym lub co chcesz zbudować od podstaw. Otrzymasz prawdziwą opinię inżynieryjną — a nie prezentację sprzedażową.

  • Żadnych młodszych inżynierów. Żadnego offshoringu.
  • Opcje stałej ceny za określony zakres prac.
  • Umowa o zachowaniu poufności podpisana, zanim o cokolwiek zapytamy.