Приймаємо нові проекти · команда виключно з досвідченими фахівцями · переважно дистанційна робота PWN-ALL · Студія розробки програмного забезпечення на замовлення

Програмне забезпечення в Rust та Python яка переживе команду, яка його випустила.

Ми — студія, що складається виключно з досвідчених фахівців, яка навмисно розробляє програмне забезпечення на двох мовах: Rust, де помилки обходяться дорого, та Python, де повільна доставка обходиться дорого.

Середнє поліпшення p99 за 40 міграцій
Зменшення обсягу пам'яті 0 порівняно з базовими показниками JVM / Node
Сервіси у виробництві 0 з 2024 року
Виправлені інциденти безпеки 0 за всю історію нашої діяльності
Команди, які довіряють нашому коду
01 Дві мови. Не п'ять.

Один стек, обраний навмисно.

Агентства, що працюють з багатьма мовами, чудово звучать у презентаціях. На практиці це означає три системи збірки, чотири різновиди null та кладовище напівпідтримуваних сервісів. Ми обрали дві мови, що покривають 95% реальних робочих навантажень — і ми стали дуже, дуже вправними в обох.

Гарячий шлях · системи · безпека

Rust

9,6 внутрішній показник відповідності

Безпечний для пам'яті без сміттєзбирача. Без гонок за даними під час компіляції. Найсуворіший рецензент коду, якого ви коли-небудь мали — і як тільки він вас пропустить, ваш сервіс не буде будити вас у неділю.

Коли ми до цього доходимо

  • Платіжні системи та все, що стосується грошей або персональних даних
  • Гарячі API-шлюзи з SLA на рівні 99,999%
  • Механізми зіставлення з низькою затримкою, торгівля, робота в режимі реального часу
  • Модулі WebAssembly, що відправляються до браузера
  • Інструменти командного рядка та демони, що мають запускатися за мілісекунди

Компроміси, які ми не будемо ігнорувати

  • Введення в курс справи нових співробітників: ~2–4 тижні до початку продуктивної роботи
  • Час компіляції на величезних робочих просторах (вирішуємо за допомогою sccache)
  • Екосистема молодша за Java — зріла там, де це важливо
Glue · дані · ML · швидкість

Python

9,3 оцінка внутрішньої відповідності

Найшвидший шлях від дошки до працюючої системи. Найбагатша екосистема на Землі для даних, машинного навчання та автоматизації. Сучасний Python — 3.12, uv, ruff, pydantic, FastAPI — є точною, типізованою та достатньо швидкою мовою для більшості ваших потреб.

Коли ми прагнемо цього

  • Внутрішні інструменти, інформаційні панелі, панелі адміністратора
  • ETL, конвеєри даних, Airflow / Dagster / Prefect
  • ML — навчання, обслуговування, оцінка
  • Автоматизація та інтеграція з API постачальників
  • MVP, що виходять у цьому кварталі, а не наступного року

Компроміси, які ми не будемо ігнорувати

  • Пропускна здатність одного ядра в 20–50 разів нижча, ніж у Rust
  • Більший обсяг пам'яті на запит — фатально для деяких робочих навантажень
  • Динамічна типізація створює проблеми без суворого mypy / pydantic
Rust, де помилки дорого коштують. Python, де повільна розробка обходиться дорого. Одна команда. Жодних догм.
02 Цифри, а не враження

Rust і Python проти звичних підозрюваних.

Натисніть на показник, щоб виділити, де знаходиться кожна мова. Оцінки — від 0 до 10, складені на основі наших власних тестів та відкритих джерел (Techempower R22, CLBG, реальні міграції, які ми реалізували).

Критерій Rust Python Go C++ Java Node.js
Сирова продуктивність (p99, одноядерний) 10 3 7 10 7 5
Безпека пам'яті та гонка за даними 10 9 8 2 8 7
Час до створення робочого прототипу 5 10 7 3 6 8
Широта екосистеми 8 10 7 9 10 9
Паралельність без сліз 10 6 9 4 6 7
Витрати на операції за запитом 10 5 8 9 5 6
Наявність досвідчених фахівців 6 10 7 8 10 9
10-річна ремонтопридатність 10 8 8 5 8 5
03 Від → До

Що змінюється під час міграції.

Виберіть мову, з якої починаєте. Подивіться, як впливає перехід на Rust або Python. Цифри — це медіани за нашими останніми 40 проектами міграції, а не маркетингові вигадки.

Зараз на

C / C++

Швидко, так. Але кожен нульовий покажчик — це потенційний CVE, кожен потік — це потенційна гонка за даними, а ваша система збірки — це чиясь робота на повний робочий день.

Типові проблеми
  • CVE, пов'язані з безпекою пам'яті
  • Невизначена поведінка
  • Розростання системи збірки
Перейти до

Rust

Пропускна здатність ×6,4
Використання пам'яті −78%
Збої під час виконання −99%
Щомісячний рахунок за обчислювальні потужності −65%

Найкраще підходить, якщо ви зараз стикаєтеся з помилками нульового покажчика, гонками за даними або пам'яттю, що зростає без обмежень. Rust зберігає швидкість і усуває пастки.

Перейти до

Python

Швидкість розробки ×3,1
Кількість рядків коду −55%
Час до випуску −60%
Накладні витрати на виконання +40%

Найкраще підходить, коли справжня вартість — це час на розробку, а не ресурси процесора. Обміняйте суто пропускну здатність на коротший цикл зворотного зв'язку, багатші бібліотеки та код, який люди насправді можуть прочитати.

Як ми вимірюємо ці показники

Медіани за 40 завершених міграцій у період з 2023 по 2026 рік. Пропускна здатність вимірюється на рівні додатків (end-to-end p50 за реалістичного навантаження, а не за допомогою мікробенчмарків). Пам'ять — це RSS у стабільному стані. Вартість — це щомісячна обчислювальна потужність на вимогу на AWS/GCP, за інших рівних умов. Індивідуальні результати можуть відрізнятися — за запитом ми публікуємо також ті, що не пройшли за планом.

04 Цифри без зірочок

Запити на секунду при реальному навантаженні.

Ідентичне навантаження — перевірка JSON → запит до Postgres → рендеринг — виміряно на однопроцесорній машині з AMD Ryzen 7. Це не мікробенчмарки. Джерело та методологія ↓

  1. 1 Rust · Axum
    21 030 запитів/с
  2. 2 C# .NET · ASP.NET Core
    14 707 запитів/с
  3. 3 Node.js · Fastify
    9 340 запитів/с
  4. 4 C++ · Drogon
    7 200 запитів/с
  5. 5 Go · Gin
    3 546 запитів/с
  6. 6 Python · FastAPI (Uvicorn)
    1 185 запитів/с
  7. 7 PHP · Laravel
    299 запитів/с

Прочитайте це правильно: Python знаходиться майже внизу цього графіку, і це нормально. Ми не запускаємо FastAPI на гарячому шляху. Ми запускаємо його там, де 1 185 запитів на секунду вже в ~10 разів перевищують потреби робочого навантаження, а години роботи інженерів коштують більше, ніж цикли процесора. Методологія: AMD Ryzen 7, Linux, Docker, один екземпляр, один популярний фреймворк для кожної мови. Цифри є середніми значеннями за результатами декількох запусків.

05 Реальна вартість несправного коду

Скільки насправді коштує вам збій у роботі.

«П'ять дев'яток» — це не маркетинг. Нижче наведено вартість однієї години незапланованого простою за галузями — із посиланнями на джерела. Ми розробляємо Rust там, де існують ці цифри.

Витрати, накопичені з моменту відкриття цього розділу
Фінанси / охорона здоров'я $0 ~83 тис. дол./хв · 5 млн дол./год
Автомобільна $0 ~38 тис. дол./хв · 2,3 млн дол./год
Великі підприємства 0 23 750 дол./хв · 1,4 млн дол./год
Середнє підприємство 0 ~5 тис. дол./хв · 300 тис. дол./год
Фінанси та охорона здоров'я 5 млн доларів і більше на годину

Галузі з найвищими ризиками. Торгові платформи, системи розрахунків та клінічні системи можуть втрачати понад 5 млн доларів на годину під час серйозного збою — ще до врахування будь-яких регуляторних витрат або витрат на судові процеси.

Джерело: дослідження Gartner «Fortune 500» 2024 року; ITIC «Годинна вартість простою» 2024 року.
Автомобільне виробництво 2,3 млн доларів на годину

Зупинена виробнича лінія приносить збитки приблизно 640 доларів на секунду. Збій у роботі CrowdStrike в липні 2024 року обійшовся лише авіакомпанії Delta Air Lines у 380 млн доларів за п’ять днів.

Джерело: Розподіл за галузями від Erwood Group за 2025 рік; Аналіз наслідків інциденту з CrowdStrike від Antithesis.
Великі підприємства (у середньому) 1,4 млн доларів на годину

Цифри BigPanda за 2024 рік для великих підприємств: 23 750 доларів на хвилину. ITIC повідомляє, що 41% великих підприємств втрачають від 1 до 5 млн доларів за годину простою.

Джерело: дослідження BigPanda за 2024 рік; 11-й щорічний звіт ITIC про погодинні витрати під час простою.
Global 2000 (Oxford Economics) 400 млрд доларів на рік

Загальні приховані витрати від незапланованих простоїв у 2000 найбільших компаній світу, згідно з дослідженням Oxford Economics за 2024 рік — у середньому 200 млн доларів на компанію, якщо підсумувати дохід, продуктивність та витрати на усунення наслідків.

Джерело: Oxford Economics 2024, «Приховані витрати, пов’язані з простоєм».
Середні та великі компанії (типова година) 300 тис. доларів і більше на годину

Опитування ITIC 2024 року: понад 90% середніх та великих підприємств зараз оцінюють вартість однієї години незапланованих простоїв вище цього мінімуму — не враховуючи юридичні, цивільні або регуляторні штрафи.

Джерело: Звіт ITIC 2024 про погодинні витрати на простої.
Малі та середні підприємства (МСП) 25–150 тис. доларів за годину

Спільне дослідження ITIC / Calyptix за 2025 рік показує, що багато малих та середніх підприємств втрачають саме стільки за годину; Siemens повідомляє, що малі та середні підприємства, які зазнали простою, можуть втрачати до 150 000 доларів на годину. Середня тривалість простою становить 87 хвилин.

Джерело: ITIC + Calyptix 2025; Siemens «Справжня вартість простою» 2024.
06 Вибрані роботи

Три проекти. Три різні виклики.

Анонімізовані там, де цього вимагає угода про нерозголошення, конкретні там, де цього вимагають результати. Це ті проекти, на які ми б у першу чергу вказали технічному покупцеві.

  1. Випадок 01 Python База даних Криптовалюта GDPR

    Хранилище даних Fintech: у 4 рази менше, у 5,5 рази швидше, відповідає міжнародним стандартам.

    Клієнт мав кластер Postgres розміром 1,8 ТБ, переповнений застарілими стовпцями, недіючими індексами та вбудовано-зашифрованими BLOB-об’єктами, що накопичилися за сім років. Криптографія працювала на застарілій бібліотеці, на яку вказували три окремі аудити. Ризик порушення нормативних вимог був реальним; аудитори не відступали.

    Що ми зробили

    • Повний аудит схеми та використання, видалення невикористовуваних стовпців та індексів, впровадження належного розділення.
    • Міграція криптографічного конвеєра зі старої бібліотеки до сучасного, перевіреного стеку AEAD із ротацією ключів.
    • Перетворення вбудованого шифрування BLOB на шифрування з посиланням на конверт + виділений KMS.
    • Приведення процесів зберігання даних та доступу суб'єктів у відповідність до GDPR, CCPA та APPI.
    Результат

    Ті самі дані, чверть вартості зберігання, у 5,5 разів більша пропускна здатність і бездоганний статус для наступного регулятора, який завітає до нас.

  2. Приклад 02 Rust C++ → Rust Безпека Зберігання

    Сервіс на C++, переписаний на Rust: понад 100 багів класу CVE усунуто за 9 тижнів.

    Сервіс обробки файлів для користувачів на C++, що вилітав кожні 4–5 днів і щоразу латався на місці. Наш аудит виявив понад 100 реальних помилок: шляхи відмови в обслуговуванні , переповнення буфера, необмежена обробка запитів. Помилки 503 у години пік були щотижневим ритуалом. Щодо сховища, завантаження користувачів перетворилися на болото дублікатів файлів, що поглинали простір.

    Що ми зробили

    • Повне переписання на Rust (axum + tokio) із суворою перевіркою вхідних даних та обмеженими ресурсами.
    • Тести на основі властивостей + cargo-fuzz для кожного парсера та межі формату передачі даних.
    • Рівень зберігання з адресацією за вмістом та дедуплікацією під час запису.
    • Впровадження за принципом «синьо-зелений» у 4-годинному вікні інтеграції, без простоїв.
    Результат

    Сервіс перетворився з «нестабільного, що потребував щотижневих виправлень» на такий, що «ми перестали дивитися на пейджер». Витрати на зберігання даних знизилися завдяки дедуплікації, кількість звернень до служби підтримки щодо помилок та 503-х кодів різко зменшилася, а переробка окупилася вже протягом кварталу.

  3. Випадок 03 Rust Python eBPF / XDP CRM · 4 тис. користувачів

    Перероблена корпоративна CRM: 18 серверів → 5, скорочення витрат на 60%+.

    Внутрішня CRM, що обслуговує понад 4 000 користувачів у сферах IAM, SOC, централізованого логування, чату, обміну файлами, VoIP та даних із наскрізним шифруванням. Вісімнадцять серверів, Cloudflare на додатку та рахунок за хмарні послуги, що постійно зростав незалежно від кількості співробітників. Ми переробили гарячий шлях на Rust, залишили Python на рівні інтеграції та звітності, а також розмістили фільтр eBPF/XDP безпосередньо перед входом.

    Що ми зробили

    • Сервіси Rust для аутентифікації (IAM), обміну повідомленнями в реальному часі, сигналізації VoIP, передачі файлів.
    • Python для адміністративних інтерфейсів, звітності, кореляції подій SOC, інтеграції з API постачальників.
    • eBPF/XDP-бот та фільтрація зловживань на рівні ядра — замінили Cloudflare для цього навантаження.
    • Структурований конвеєр логування, переписаний на основі схеми «zero-copy».
    Результат

    На 13 серверів менше, більше немає окремої статті витрат на Cloudflare, команда SOC бачить чіткіший сигнал через конвеєр логів, а фінансовий директор перестав задавати незручні питання щодо бюджету на інфраструктуру.

07 Як ми насправді працюємо

Поверніть ручки. Подивіться, як змінюється план.

Кожен проект балансує швидкість, вартість та надійність. Наведена нижче п'ятиетапна оцінка відповідає середнім показникам галузі (виявлення 2–6 тижнів, архітектура 1–4 тижні, реалізація 4–20 тижнів, зміцнення 2–8 тижнів, передача 1–2 тижні — згідно з звіт за 2024–2026 роки від NIX United, Agilie, SOLTECH, OTG Lab). Пересуньте повзунки; план перерозподіляється в режимі реального часу.

01

Виявлення

3 тижні

Прочитайте свій код, опитайте своїх операторів, складіть список невідомих елементів, виберіть мову для кожного компонента.

  • Інтерв'ю з експертами та аудит коду
  • Реєстр ризиків та цілі SLA
  • Вибір мови програмування для кожної послуги
02

Архітектура

2 тижні

Контракти перед кодом. OpenAPI / protobuf, моделі даних, топологія розгортання, каркаси рунбуків.

  • RFC для кожного публічного контракту
  • Модель даних + план міграції
  • Базова інфраструктура як код
03

Впровадження

8 тижнів

Невеликі PR, зелений CI з першого дня, розгортання після кожного злиття, перевірка другим старшим спеціалістом.

  • Rust: axum · tonic · sqlx
  • Python: FastAPI · Pydantic · SQLAlchemy
  • Щотижневі демо + журнал змін
04

Зміцнення

3 тижні

Фузінг, тести на основі властивостей, навантажувальні тести з реалістичним трафіком, модель загроз.

  • cargo-fuzz · proptest · hypothesis
  • k6 навантаженняві тести, пов'язані з SLO
  • Перевірка безпеки та аудит залежностей
05

Передача

1 тиждень

Посібники з експлуатації, чергування, альтернативні шляхи вирішення проблем (ADR) та команда, яка вже реалізувала це раніше.

  • Інструкції та матриця чергування
  • Журнал ADR та схеми архітектури
  • 30-денна підтримка після запуску
08 Одна й та сама проблема, дві мови

Як виглядає одна й та сама кінцева точка в кожній з них.

Отримати користувача, перевірити вхідні дані, зберегти в Postgres, повернути JSON. Перемикайтеся між мовами — обидві є реальним кодом, який ми б насправді випустили.

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="email already exists") from exc
    if row is None:
        raise HTTPException(status_code=500, detail="insert failed")
    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)))
}
Кількість рядків коду
16 22
Пропускна здатність
1 185 запитів/с 21 030 запитів/с
Затримка p50
21,0 мс 1,6 мс
Об'єм оперативної пам'яті в режимі очікування
41,2 МБ 8,5 МБ
Ми відповімо протягом 1 робочого дня. Це не жарт.

Ви прочитали всю сторінку.
Давайте створимо це.

Розкажіть нам, що не так із вашим стеком, або що ви хочете створити з нуля. Ви отримаєте справжню думку інженера — а не презентацію для продажу.

  • Без молодших інженерів. Без аутсорсингу.
  • Варіанти з фіксованою ціною на конкретні завдання.
  • Підписання угоди про нерозголошення інформації (NDA) перед тим, як ми щось у вас запитаємо.