Lexora
Продакшн-бекенд на Rust із подієвим ядром: transactional outbox, фонові воркери та фронтенд на React, усе на Cloud Run.
- Належність
- Замовний продукт, розроблений спільно. Red Sentra продовжує його супроводжувати. Домовленості про власність і партнер лишаються приватними.
- Доступність
- Живий продукт. Вихідний код приватний.
- Стек
- Rust / React / Cloud Run / Background workers

Задача
Продукт, де одна дія користувача має запустити кілька наслідків нижче за течією, і жоден із них не має права тихо не статися. Наївний варіант, коли побічні ефекти виконуються всередині запиту, втрачає роботу щоразу, коли щось падає на півдорозі.
Система
Бекенд на Rust навколо подієвого ядра. Зміна стану та події, які вона породжує, фіксуються разом через transactional outbox, а фонові воркери забирають ці події й виконують повільну роботу поза запитом. Зверху фронтенд на React, і все це працює на Cloud Run.
Моя роль
Архітектура бекенду й реалізація подієвого ядра, дизайн outbox і воркерів, а також операційна історія в проді.
Найскладніше
Гарантії доставки. Між записом у базу й повідомленням решти системи є вікно, у якому падіння губить подію. Закрити це вікно без розподіленої транзакції це фактично весь дизайн.
Архітектурні рішення
- Transactional outbox замість подвійного запису. Подія фіксується в тій самій транзакції, що й зміна стану, тож ніколи не буває моменту, коли одне існує без іншого.
- Доставка щонайменше один раз з ідемпотентними споживачами. Дублікати обходяться значно дешевше за втрати, тому воркери написані так, щоб спокійно бачити одну подію двічі.
- Воркери поза шляхом запиту. Повільна або збійна робота нижче за течією проявляється як зменшена пропускна здатність, яку треба надолужити, а не як помилка тому, хто натиснув кнопку.
Поточний стан
У проді. Red Sentra продовжує супроводжувати й розвивати його.