TGViewer
Channel Public Channel
System Design | balun.courses

System Design | balun.courses

@balun_courses_system_design

Канал школы balun.courses про архитектуру и System Design: масштабируемые системы, микросервисы, отказоустойчивость и практики BigTech: https://clck.ru/3C8e7o
Subscribers
348
Photos
18
Videos
0
Links
10
Recent Posts 12 shown
Post #31 177
Retry спасает от ошибок. И иногда превращает 10 000 запросов в 40 000

Сервис B начал тормозить под нагрузкой. Часть запросов падает по timeout, и сервис A начинает ретраить.

Казалось бы, retry здесь и нужен. Но именно в этот момент он может добить зависимость окончательно.

Если 10 000 запросов одновременно упали и каждому разрешено ещё три попытки, сервис потенциально получит до 40 000 запросов вместо 10 000. Причём дополнительная нагрузка прилетит тогда, когда он уже работает на пределе.

💾Самый простой вариант – повторять запрос через фиксированный интервал. Например, раз в секунду. Но если сотни клиентов получили ошибку примерно одновременно, через секунду они так же одновременно придут снова.

Поэтому интервал между попытками обычно увеличивают через exponential backoff. Это снижает частоту повторов, но не решает проблему полностью: клиенты всё ещё могут синхронизироваться.

Здесь появляется jitter – небольшое случайное отклонение в задержке. Оно разносит повторные запросы по времени и сглаживает пики. Но даже backoff с jitter не отвечает на другой вопрос: сколько дополнительной нагрузки мы вообще готовы создать ради retry?

Для этого нужен retry budget. Он ограничивает долю повторных запросов. Если бюджет закончился, сервис перестаёт бесконечно спасать каждый запрос и усиливать уже начавшуюся деградацию.

Есть и ещё один риск. Запрос мог успешно выполниться, а ответ – потеряться по дороге. Клиент увидит timeout и отправит его снова. Если операция не идемпотентна, можно получить два списания, два заказа или две одинаковые записи.

Поэтому retry – не кнопка «сделать надёжнее». Его нужно проектировать вместе с backoff, jitter, budget и идемпотентностью, иначе паттерн отказоустойчивости сам становится причиной инцидента.


На курсе «Паттерны отказоустойчивости в микросервисах на Go» retry разбираем именно в таком контексте: когда повтор действительно помогает, когда начинает усиливать аварию и что должно быть рядом с ним, чтобы система переживала сбои, а не разгоняла их.
  • 🔥 3
  • ❤ 1
  • 😁 1
Post #30 453
Реально ли пройти курс по System Design, если у вас full-time работа?

Да. Но 4 недели придётся действительно выделить под обучение.

Если ждать момента, когда на работе станет меньше задач, исчезнут дедлайны и внезапно освободятся вечера, можно ждать очень долго. У большинства разработчиков такого периода просто не бывает: всегда есть релизы, рабочие задачи, семья, отдых и что-то более срочное.

При этом рынок тоже не останавливается. Чтобы расти в грейде, брать больше ответственности или претендовать на более сильные позиции, в какой-то момент приходится вкладывать дополнительное время в развитие.

На курсе стоит рассчитывать примерно на 8-10 часов в неделю. Дважды в неделю открываются записанные уроки по 1,5-2 часа, дополнительно понадобится время на домашние задания и итоговый проект. Раз в неделю проходит Q&A-сессия. Лекции можно смотреть в удобное время, поэтому жёсткой привязки к вечерам после работы нет.

Например, неделю можно распределить так:
• вторник: 1,5-2 часа на урок;
• четверг: ещё 1,5-2 часа;
• выходные: несколько часов на практику и проект;
• Q&A — если накопились вопросы.

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

Можно возвращаться к лекциям перед собеседованиями или когда конкретная тема понадобится в работе.

Поэтому вопрос скорее не в том, можно ли совместить курс с full-time работой. Можно — именно так и учится большая часть работающих разработчиков.

Вопрос в другом: готовы ли вы на один месяц немного выйти из привычного ритма и выделить время на развитие.

4 недели — ограниченный срок. После них можно вернуться к обычному графику, но уже с пройденной программой, собственным архитектурным проектом и более системным пониманием System Design.

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


Старт ближайшего потока – 8 сентября.

➡️ЗАПИСАТЬСЯ НА КУРС
  • 👍 4
  • 🔥 4
  • ❤ 2
  • 😁 1
  • 💯 1
Post #28 420
Вы посмотрели 20 разборов System Design. А сможете спроектировать систему с нуля?

Пока смотришь чужой разбор, всё обычно кажется логичным: вот требования, база, кэш, очередь, шардирование... Каждое решение уже объяснено и стоит на своём месте.

Но стоит закрыть видео, открыть чистую доску и получить задачу вроде «спроектируйте мессенджер» – и сложность резко меняется 😵

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

В самостоятельной задаче нужно самому:

• понять, какие вопросы задать;
• оценить нагрузку и ограничения;
• решить, какие проблемы вообще нужно решать сейчас;
• сравнить несколько вариантов;
• объяснить, почему выбрали именно этот;
• продумать, что произойдёт при отказах и росте нагрузки.


И здесь появляется ещё одна проблема: свою архитектуру легко переоценить.

Можно нарисовать убедительную схему и не заметить, что она держится на одном неоговорённом предположении. Добавить шардирование раньше времени. Решить happy path и забыть про отказ компонента...

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

Именно поэтому на курсе по System Design участники не только смотрят разборы популярных систем, но и сами проектируют систему с нуля, обсуждают решения с другими разработчиками и получают обратную связь.

Задача не в том, чтобы запомнить архитектуру ещё 20 сервисов. Задача – научиться спроектировать 21-й, которого вы раньше никогда не видели)

Через 3 дня – финальное повышение стоимости курса. Если планировали идти на ближайший поток, лучше успеть зайти по текущей цене❤️

➡️ЗАПИСАТЬСЯ НА ОБУЧЕНИЕ
  • 👍 4
  • ❤ 2
  • 🔥 2
Post #24 393
Нажал «Оплатить» один раз. Деньги списались трижды...

Пользователь отправляет запрос на оплату. Сервер успевает провести операцию, но ответ теряется из-за сетевого сбоя.

Для клиента это выглядит так, будто ничего не произошло. Он повторяет запрос. Потом ещё раз.

В распределённой системе такой сценарий нормален: запрос может успешно выполниться, а ответ – не дойти обратно. Проблема начинается, если каждый retry повторно меняет состояние системы, то есть три запроса превращаются в три списания.

Здесь нужна идемпотентность: запрос можно повторить несколько раз, но бизнес-эффект останется таким же, как после одного выполнения.


Один из распространённых способов это реализовать – ключ идемпотентности. Клиент отправляет вместе с запросом уникальный ключ, а сервер связывает все повторы с одной и той же операцией.

❗️Но просто добавить поле ключ идемпотентности недостаточно.

Ключ должен видеть любой инстанс сервиса. Его регистрация должна быть атомарной, а повторный запрос должен получать статус или результат первой операции.

Есть и более неприятный сценарий: деньги уже списал внешний провайдер, а ваш сервис упал до того, как сохранил результат. Тогда одной локальной транзакции уже недостаточно – нужна идемпотентность на стороне провайдера или reconciliation.

На картинках как раз разобрали весь путь по шагам:
• как возникает проблема с повторными списаниями;
• что меняет ключ идемпотентности;
• где чаще всего ошибаются в реализации;
• и почему внешний платёжный провайдер добавляет ещё один сложный edge case.

Поэтому перед добавлением retry полезно задавать не только вопрос «сколько раз повторяем?», но и другой:

«Что произойдёт, если эта операция выполнится дважды?»

Какие ещё операции, кроме платежей, вы бы обязательно делали идемпотентными?
  • ❤ 5
  • 👍 3
  • 🔥 2
Post #23 477
Архитектурные созвоны бывают очень разными. Но некоторые фразы, кажется, кочуют из команды в команду 😄

Собрали Bingo архитектурного созвона – отмечайте, что слышали хотя бы раз за последний месяц✔️
  • ❤ 4
Post #22 420
За 4 недели – от идеи до архитектуры полноценного проекта

На первом занятии курса по System Design вас будет только вводная: нужно спроектировать социальную сеть для путешественников.

Без готовой схемы и списка технологий.

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


Дальше проект начинает расти вместе с курсом)

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

К финалу все решения собираются в цельную архитектуру с C4 Model, которую нужно не просто нарисовать, а уметь объяснить: почему выбрали именно такой вариант, какие альтернативы рассматривали и чем пришлось пожертвовать.

То есть за 4 недели вы проходите путь от:

«Нужно сделать социальную сеть»

до

«Вот требования, расчёты, архитектура, ограничения и аргументация каждого решения»

И здесь есть ещё один важный момент. Сейчас разработчику всё сложнее выделяться только строчкой с грейдом в резюме. На фоне сокращений, роста требований к инженерам и внедрения AI ценнее становится способность показать, как именно вы решаете сложные задачи.

Поэтому итоговый проект можно оформить как полноценный кейс для портфолио: показать ход рассуждений, архитектуру, расчёты и компромиссы, а не просто написать «знаю System Design» 🤨

Именно такой навык нужен и на собеседовании, и в работе: получить неопределённую задачу, превратить её в требования, спроектировать систему и защитить решение!

⚡️Следующий поток стартует 8 сентября - ровно через 3 недели.

До старта ещё есть время спокойно встроить обучение в график, но через неделю стоимость курса увеличится.

Для тех, кто уже учился в Balun Courses, действует отдельная цена:

• после 1 курса – 10% скидка
• после 3+ курсов – 20% скидка
• после 5+ курсов – 30% скидка

Количество мест на потоке ограничено: внутри есть Q&A-сессии, работа с группой и обратная связь, поэтому бесконечно расширять набор мы не можем.

Если давно хотели систематизировать System Design, собрать полноценный проект в портфолио и потренироваться принимать архитектурные решения не по шаблону - сейчас хороший момент зайти на поток до повышения стоимости.

◻️ЗАПИСАТЬСЯ НА САЙТЕ
  • ❤ 2
  • 👍 2
  • 🔥 2
  • 💯 1
Post #21 276
Среднее значение здесь почти ничего не говорит о проблеме: большинство запросов действительно выполняется быстро. Но p99 показывает, что небольшой процент пользователей регулярно попадает в очень медленные запросы.

Смотрим трейс одного из таких случаев – и видим, что span обращения к внешнему сервису занимает около 7 секунд!

То есть приложение не упирается в CPU и почти не генерирует ошибок. Оно просто долго ждёт зависимость.


Дальше уже можно разбираться, почему внешний сервис отвечает медленно: проблема в сети, таймаутах, очереди запросов, перегрузке или чём-то ещё.

В этом кейсе average почти скрыл проблему, p99 показал её масштаб, а trace помог найти место, где теряются эти 7 секунд.

Сохраняйте как короткий алгоритм:
заметили жалобы → смотрим перцентили → находим медленный запрос → идём в trace → локализуем участок задержки❤️
  • ❤ 5
Post #20 223
🔎 Детектив Observability: почему пользователи ждут 8 секунд, если среднее время ответа – 240 мс?

Допустим, у сервиса такие показатели:

• average latency – 240 мс
• p99 – 8,2 секунды
• CPU – 35%
• error rate почти не изменился

При этом часть пользователей жалуется, что приложение периодически «зависает»...

Куда бы вы посмотрели дальше?👇

Ждем ваших вариантов в комментариях!
  • 👍 4
  • ❤ 2
  • 🔥 2
Post #19 280

This post (sticker, poll or similar) has no web preview. Open in Telegram

  • 🔥 8
  • ❤ 3
  • 👍 2
Post #14 300
«Нужно в реальном времени», «сервис не должен падать», «пользователей будет много» – всё это звучит понятно, пока не приходится проектировать систему.

Для одного продукта «реальное время» – это 100 мс, для другого – 30 секунд. Пока за такими фразами нет конкретных чисел и ограничений, это не требования, а пожелания.

Собрали небольшой переводчик с продуктового на архитектурный ❤️

Сначала определяем задержку, нагрузку, доступность и допустимые потери данных – и только потом выбираем технологии.


Сохраняйте, чтобы в следующий раз не проектировать систему по требованию «должно работать быстро» 🙌🏻
  • ❤ 6
  • 🔥 4
Post #13 287
За последние несколько лет курсов по System Design стало заметно больше.

На связи Владимир Балун – ex-TeamLead Яндекса.


И это хорошо. Чем больше качественных материалов появляется, тем легче разработчикам разобраться в теме. Но при выборе курса я бы обращал внимание не только на программу.

Гораздо важнее вопрос: откуда вообще взялись знания, которые вам будут преподавать?

System Design невозможно изучить только по книгам. Можно прочитать десятки материалов про репликацию, шардирование, кэширование и очереди. Можно успешно пройти несколько интервью. Но это все еще не тот опыт, который появляется после нескольких лет работы с высоконагруженными системами.

Потому что в реальных проектах приходится постоянно отвечать на вопросы, на которые нет единственно правильного ответа.

• Где действительно нужен кэш, а где он только усложнит систему?

• Когда стоит разделить сервис, а когда нет?


Когда я создавал курс по System Design, мне хотелось собрать не только теорию, но и опыт, который накопился за годы работы.

Я разрабатывал движок таргетированной рекламы в Т-Банке, занимался системами трейсинга и непрерывного профилирования в Ozon, руководил разработкой системы трейсинга в Яндексе с трафиком 11 ГБ/с, работал над продуктами Mail.ru. За это же время я провел десятки System Design-интервью и видел, какие ошибки чаще всего совершают даже сильные разработчики.

Этот опыт сильно повлиял на курс.

Но не меньше на него повлияли сами ученики. Мы провели уже 16 потоков. После каждого что-то менялось: появлялись новые темы, перестраивались объяснения, добавлялось больше практики, разбирались вопросы, которые регулярно возникали на Q&A-сессиях.

Отдельные потоки проходили целые компании. Для Wildberries мы обучали более 100 разработчиков, а многие работодатели до сих пор отправляют сотрудников на курс за свой счёт.

Наверное, именно поэтому среди отзывов чаще всего повторяются похожие мысли.

Кто-то пишет, что наконец перестал воспринимать System Design как набор отдельных технологий и увидел общую картину. Кто-то начал применять знания в рабочих задачах уже во время обучения. Кто-то отмечает, что именно групповые проектирования и mock-интервью дали тот опыт, которого невозможно получить, просто посмотрев записи.

Сегодня средняя оценка курса – 4,94 из 5, а итоговая оценка учеников – 9,5 из 10.

Это реальная цифра, которая считается каждый поток. В конце студенты заполняют форму обратной связи, ставят оценки и из них вырастает полноценный рейтинг. Мы не придумали его сами для «красивого словца».

Кто-то успешно прошел собеседование в Яндекс, а кто-то после курса попал в TravelTech. Мы записывали целые видео-интервью и видео-отзывы с учениками – можете сами посмотреть их. Более того, у каждого ученика есть Telegram – можете написать реальным людям и убедиться в правдивости отзывов.

86,6% студентов готовы рекомендовать курс друзьям и коллегам. Лишь 13,4% придерживаются нейтральной позиции – даже не негативной. Это очень высокий показатель. В 2025 году даже NPS Apple равен примерно 61%.

Поэтому если вы выбираете курс по System Design, советую смотреть не только на список тем. Посмотрите, какой опыт стоит за этим курсом и сколько раз программа уже прошла проверку на практике .

Если вам близок такой подход, буду рад видеть вас на следующем потоке – 8 сентября.

На Q&A-сессиях и в чатах лично взаимодействую с учениками, поэтому количество мест ограничено.

А еще на сайте есть демо-доступ — можно бесплатно потестить качество материала, не покупая кота в мешке.

Почитать программу / попробовать бесплатно
  • ❤ 4
  • 👍 4
  • 🔥 3
Post #12 275
Устроился в TravelTech после курсов по System Design и Concurrency

Игорь – backend-разработчик, который начинал карьеру в Авито и Яндексе. Тогда он чувствовал себя скорее исполнителем: просто делал задачи, не всегда понимая, как они встроены в общую картину.

После прохождения курсов по System Design и Concurrency в Go он по-новому взглянул на профессию – и теперь работает разработчиком в Travel Tech, уверенно отвечает на архитектурные вопросы на собеседованиях и понимает, как устроены сложные приложения.

Что тебе дало обучение?

– Когда я работал в Авито как junior-разработчик, в основном просто выполнял задачи. Не всегда было понятно, зачем именно это нужно и как всё устроено в целом. Благодаря курсу по System Design я наконец понял, как работают приложения высокоуровнево или архитектурно – это дало мне ощущение, что я по-настоящему понимаю, чем занимаюсь.

Разобрался, как всё устроено, понял CAP-теорему, многие знания стали системными. Это сильно помогло на собеседованиях: я спокойно отвечал на архитектурные вопросы, потому что уже знал, как подойти к решению и какие компромиссы бывают.

До этого я пробовал разбираться самостоятельно: читал статьи, смотрел конференции, но часто не понимал, что именно объясняют. Сейчас у меня другое восприятие: я понимаю, например о чём говорят спикеры на конференциях, могу задать уточняющие вопросы – появился контекст.

Что особенно понравилось на курсах?

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

Отдельный плюс – доступ к записям сохраняется на год. Я пересматривал лекции перед собеседованиями, чтобы освежить материал. Это реально помогло, потому что не всё используешь в ежедневной работе, а на интервью могут спросить именно это.

Насколько сложно было совмещать с работой?

– Я проходил курсы без обратной связи – только с лекциями. Такой формат мне подошёл: в будние дни смотрел материалы по вечерам, иногда – в выходные. Если возникали вопросы, можно было написать в чат, и преподаватели отвечали – это тоже было очень ценно.

Рекомендовал бы наши курсы коллегам?

– Да, конечно!
  • ❤ 3
  • 👍 2
  • 🔥 2
Older posts →

About this channel

How can I read @balun_courses_system_design without a Telegram account?
TGViewer shows the public web preview Telegram publishes for System Design | balun.courses: recent posts, photos, videos and the subscriber count, with no app, login or account.
How many subscribers does System Design | balun.courses have?
System Design | balun.courses (@balun_courses_system_design) has 348 subscribers on Telegram, refreshed roughly every 30 minutes.
Does System Design | balun.courses know I viewed it here?
No. Public channel previews carry no viewer identity, and TGViewer has no accounts or tracking of what you look up.
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 →