ByteHeavy
ByteHeavy
Наши работы
Мы пока только начинаем публиковать портфолио клиентских проектов, поэтому здесь показаны примеры того, какую инженерную работу мы выполняем, — а не конкретные утверждения по клиентским проектам.

TypeScript, Postgres, Redis
Создан для Discord-сообщества среднего размера, которому нужна была внутренняя валютная система без эксплойтов и состояний гонки, характерных для большинства «быстрых» экономических ботов. Каждое изменение баланса обёрнуто в сериализуемую транзакцию базы данных, поэтому две одновременные сделки не могут дважды потратить одни и те же монеты — класс багов, который незаметно обанкротил больше Discord-экономик, чем когда-либо любой внешний злоумышленник. Чувствительные административные действия (изменение баланса, выдача предметов, баны) записываются в неизменяемый журнал аудита, чтобы споры разрешались по документам, а не по принципу «он сказал — она сказала». Вся система прошла нагрузочное тестирование на пиковой одновременной нагрузке — тысячи взаимодействий за несколько минут во время мероприятия сообщества — не упираясь при этом в лимиты API самого Discord, потому что очередь запросов регулируется и группируется на нашей стороне ещё до того, как достигает серверов Discord.
Java, Paper API — portable pattern
Слой обнаружения на основе поведения, изначально созданный для сервера Minecraft (Paper API), спроектированный для выявления статистически аномальных паттернов движения, прицеливания и боя без необходимости устанавливать игрокам какой-либо клиентский мод — весь движок работает на стороне сервера, так что разработчику читов просто нечего реверс-инжинирить или обходить на клиенте. Жёстким ограничением была производительность: логика обнаружения работает внутри собственного тик-цикла сервера, поэтому каждая отдельная проверка была профилирована и оптимизирована до микросекунд, чтобы не создавать ощутимой задержки для тысяч честных игроков вокруг того одного, за кем ведётся наблюдение. Базовый паттерн — обнаружение статистических аномалий внутри плотного реал-тайм цикла — не уникален для Minecraft; та же архитектура применима к обнаружению мошенничества в любой живой системе, где «что-то выглядит не так» нужно поймать за миллисекунды, а не разобрать на следующий день в логах.
Go, PostgreSQL RLS
Бэкенд, обслуживающий несколько отдельных клиентских организаций из одного общего развёртывания, где изоляция данных обеспечивается механизмом Row-Level Security PostgreSQL на уровне самой базы данных — а не только в коде приложения, который в будущем может обойти любой баг. Даже полностью скомпрометированный или неправильно настроенный сервер приложения не сможет передать данные одного клиента другому, потому что сама база данных отклоняет запрос ещё до его выполнения, независимо от того, что запрашивал код приложения. Написан на Go именно потому, что его лёгкие горутины позволяют одному развёртыванию комфортно удерживать открытыми тысячи одновременных соединений на клиента без накладных расходов по памяти, которые были бы у модели «поток на запрос» при том же масштабе.
Go, Redis
Сервис-шлюз, стоящий перед набором бэкенд-API, созданный для поглощения неравномерного, высокообъёмного трафика так, чтобы всплеск никогда не мог обрушить сервисы за ним. Распределённое ограничение скорости запросов и кэширование ответов хранятся в Redis, общем для всех экземпляров шлюза, поэтому лимит соблюдается одинаково независимо от того, на какой экземпляр попадёт запрос. Он специально спроектирован вокруг плавной деградации: внезапный десятикратный всплеск трафика дросселируется и ставится в очередь на краю системы, поэтому бэкенд видит плавную, поглощаемую кривую вместо стены — разница между медленным ответом и полным отказом.
// Client work previews are demoed live, not shipped as
// downloadable source — ask us for a walkthrough.