Как начинался VK Teams и что у него под капотом 💙
VK Teams начинался как корпоративный мессенджер для внутреннего использования и за 10 лет превратился в мощное решение для командной работы. Всё это время под капотом системы шли серьезные доработки и эволюция технологий.
В самом начале мы создали для VK Teams собственное хранилище KUST (Customizable Storage). Это встраиваемая key-value-база, оптимизированная под чтение и работу с HDD-дисками. Она обеспечивала надежность и потоковый дамп логов, но при переходе к On-Prem-внедрению мы решили, что клиентам нужно больше контроля над СУБД.
Сейчас большая часть сервисов работает на Tarantool — промежуточном ПО для работы с данными, которое ускоряет цифровые сервисы и снижает нагрузку на core-cистемы. Этот переход увеличил скорость работы, улучшил управляемость и повысил удобство для пользователей On-Prem-решений.
🔄 Как сервисы общаются между собой
Для коммуникации сервисов мы используем бинарный протокол IPROTO, дополненный контроллером Ctlr. Он реализует Service Discovery и управляет потоками данных. Так появился IPROS.
Ctlr хранит разряженную карту шардирования, следит за состоянием всех ячеек, управляет их топологией и перемещением. При этом трафик через контроллер не проходит, поэтому сбой не влияет на работу системы — даже в процессе решардинга сервисы автоматически перенаправляют запросы по новым адресам.
🔹 Как мы добились отказоустойчивости
Каждая пара «экземпляр сервиса — БД» всегда имеет активную реплику, готовую взять на себя нагрузку. При переносе ячейки между серверами процесс занимает всего несколько сотен миллисекунд. Даже если контроллер временно выйдет из строя, отказоустойчивость сохранится — старые узлы просто перенаправят трафик на новые.
🔹 Почему мы работаем с ячейками
🔹 Простота управления — работать с одной сущностью легче, а при масштабировании достаточно выполнить шардирование.
🔹 Локализованность контекста — всегда понятно, куда поступает запрос и где возникла ошибка.
🔹 Минимальное влияние сети — сервис и БД размещены рядом, что снижает задержки.
🔹 Безопасность данных — взлом одной ячейки не даст злоумышленнику доступа ко всей системе.
#коммуникации #разработка
@digitize_IT — мнения и управленческий опыт ИТ-лидеров
Post #1146
530
- 🔥 4
- 👍 3
- ❤ 2