Я работаю в команде маркетплейса, и одна из ключевых задач в разработке — делать лучшие инструменты привлечения как для клиентов, так и для продавцов (мерчантов). Технически — они должны работать быстрее, надежнее, удобнее. Про интересное инженерное решение одной такой задачи хочу рассказать — мы построили сервис, управляющий потоками данных, основанный на стейт-машине, которую мы построили на графах.
Кроме решения бизнес-задачи (достижения нужного time-to-market), ещё это интересно вот почему:
* сервис-хранилище позволил нам обеспечить изоляцию структуры данных в БД от потребителей этих данных;
* одновременно мы решили проблему большой вариативности запросов при помощи составных индексов и партиций;
* смогли сохранить баланс между единой ответственностью сервисов и небольшим их количеством с помощью сервисов обвязки.