TGViewer
Архитектура распределённых систем Архитектура распределённых систем @rsa_enc · 1.76K subscribers
Post #421 472
С 2022 года я задаю индустрии один и тот же вопрос: насколько мелко нарезать? Сначала про микросервисы, потом про модули монолита и даже про команды и отделы. Теперь настало время приложить вопрос и принципы ответа на него к большим объёмам данных и поиску по ним. Здесь он звучит так: какого размера должен быть шард индекса.

Повод задуматься дал Яндекс. На конференции «Я про бэкенд» есть активность «2718» — system design наоборот. Задачи присылают зрители, жюри отбирает самую заковыристую, а решает её в прямом эфире инженер Яндекса: условие видит впервые, детали выспрашивает сам. Я не удержался и отправил свою.

Если кратко:
Поиск по двум миллиардам документов. Индекс на одну машину не помещается, его режут на шарды и раскладывают по двумстам серверам. Порежете мелко — каждый запрос превращается в тысячу обращений, и ответ придёт со скоростью самого медленного шарда. Порежете крупно — половина нагрузки ляжет на два-три шарда, потому что полпроцента документов дают половину всех показов в выдаче. Причём это каждый раз разные полпроцента: вышла новость — и востребованными становятся совсем другие документы, а вчерашние горячие остывают. Так что нарезать индекс по темам тоже не выйдет, горячий шард каждые несколько часов будет новый. Плюс документ (новость) должен находиться через тридцать секунд после публикации, а база документов удваивается каждый год.

Кому-то наверняка знакомо? :) Нарежешь мелко — утонешь в сетевых вызовах и накладных расходах. Нарежешь крупно — пара сервисов заберёт всю нагрузку, а любая переделка растянется на недели. Тот же баланс, что с микросервисами, только искать его надо на трёх уровнях сразу: размер шарда, размер сегмента внутри шарда и размер виртуального шарда (chunk'а или таблетки) — куска, которым данные переезжают с сервера на сервер, когда база выросла и её пора перераспределять. Переносить по целому шарду долго, по одному документу — бесконечно, так что и здесь нужен свой размер.

Схему сильный инженер нарисует за двадцать минут. Поэтому я попросил у решающего три вещи, которых на собеседованиях по system design обычно не спрашивают:

1. Чем сервис пожертвует первым, если нагрузка окажется выше расчётной — частью результатов, скоростью появления новых документов или временем ответа. Запроектировать этот порядок нужно заранее, до первой аварии.
2. По каким признакам архитектор поймёт, что нарезал неправильно. У микросервисов это могут быть повторы в трассировках, у шардов — например, доля запросов, в которых один шард не ответил вовремя.
3. При каких значениях этих признаков пора принимать решение о перепроектировании и перенарезке шардов.

По сути я хочу спросить не только о решении, но и о возможной его доказательности (архитектура как и медицина должна быть доказательной): гипотезы, метрики, условия пересмотра решений. Об этом я как раз сейчас много пишу и рассуждаю, и мне очень любопытно увидеть такое рассуждение вживую у человека, который каждый день живёт внутри высоконагруженного поиска. Решаема ли задача за час — тоже гипотеза, проверим об эфир )


Сама конференция — про современный бэкенд вокруг AI: архитектура и эксплуатация рекомендательных систем, платформы для обучения и запуска агентов, оптимизация инфраструктуры вокруг генеративных моделей, потоковая обработка данных и отказоустойчивость под высокой нагрузкой. И тот самый «2718»: заходите, предлагайте свой кейс, команда выберет самый сложный и решит его в прямом эфире. Если выберут мою, буду болеть за решающего, ему будет нелегко 😅

3 октября, Москва и онлайн, бесплатно: регистрация
Telegram Архитектура распределённых систем После одного из выступлений мне задали очень хороший вопрос — применим ли мой принцип каскадного снижения связанности только в софте (микросервисах и монолитах) или в целом и в других сферах жизни? Скажу честно — к такому вопросу я готов не был 😅. Сходу…
  • ❤ 6
  • 🔥 4
  • 👍 2
More from @rsa_enc
  1. Sep 10, 2026Продолжаю развивать свои архитектурные подходы и aact — мой открытый репозиторий для работ…
  2. Sep 2, 2026Post #419
  3. Aug 15, 2026Post #418
  4. Aug 3, 2026[начало выше] Во втором варианте человек сначала проектирует среду создания: спецификацию,…
  5. Aug 3, 2026Очень много всего сейчас происходит параллельно... Голова кипит. Из основного творческого…
  6. Jul 28, 2026Всем привет! Сегодня у меня день рождения, и я сделал себе к нему подарок — закончил работ…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →