System Design // Демо-занятие курса «Golang Developer. Professional»

YOUTUBE · 19.11.2025 09:20

Ключевые темы и таймкоды

Введение

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

Требования к дизайну

0:34
  • Сначала нужно понять, что именно будет разрабатываться, какие функции и фичи нужны.
  • Функциональные требования: лента твитов, пользователи, новостная лента, профили, возможность подписки и отписки, публикация твитов.
  • Нефункциональные требования: количество пользователей, локализация, доступность системы, безопасность.

Обсуждение и заключение

9:39
  • Участники обсуждают нефункциональные требования и задают вопросы.
  • Важные вопросы, которые нужно учитывать при проектировании: доступность системы, безопасность, локализация, шифрование, время доставки сообщения.

Введение

11:34
  • В видео обсуждается важность понимания бизнес-требований перед началом разработки дизайна.
  • Обсуждаются метрики пользователя, такие как время нахождения пользователя в приложении, количество пользователей и подписчиков.

Функциональные требования

12:41
  • Обсуждаются функциональные требования, такие как хранение данных, подписка на ленту, количество подписчиков и размер сообщения.
  • Упоминается, что важно понимать, сколько пользователь в среднем пишет и читает твитов.

Дизайн

16:21
  • Обсуждается использование ц4 модели для дизайна, начиная с верхнего уровня и постепенно углубляясь в детали.
  • Рассматривается пример пользователя, который проходит через балансировщик нагрузки и публикует твит.
  • Обсуждается важность поэтапного подхода к разработке дизайна, начиная с самых простых операций.

Создание базы данных для Твиттера

18:26
  • Создание базы данных для хранения твитов и их изображений
  • Использование реляционной базы данных для связи между твитами

Загрузка изображений в базу данных

20:25
  • Использование медиасервиса для загрузки изображений в базу данных
  • Использование брокерского сообщения для предотвращения потери загруженных изображений

Расчет нагрузки на базы данных

23:07
  • Расчет нагрузки на запись и чтение для разных баз данных
  • Перекос нагрузки на чтение и необходимость оптимизации системы

Решение проблемы с нагрузкой на чтение

26:27
  • Использование кэширования для оптимизации чтения
  • Создание сервиса для хранения готовых лент твитов
  • Хранение лент для разных пользователей в разных шардах

Обсуждение архитектуры сервиса

30:42
  • В видео обсуждается архитектура сервиса, который хранит данные о пользователях и их активности в социальной сети.
  • Обсуждаются требования к сервису, такие как хранение данных о пользователях, их активности и возможность подписки и отписки.

Архитектура сервиса

31:41
  • Сервис состоит из нескольких компонентов: постгру, кафка, релейт сервис, таймань сервис, тарантул и юзер сервис.
  • Обсуждается проблема хранения данных о пользователях и их активности, а также необходимость хранения данных о селебрити.

Масштабирование и устойчивость сервиса

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

Обсуждение дизайна и архитектуры

41:05
  • Видео обсуждает дизайн и архитектуру системы, которая позволяет пользователям создавать и управлять своими аккаунтами.
  • Рассматриваются различные подходы к хранению данных, такие как использование мастер-мастеркаций и пул-моделей.

Вопросы и ответы

47:33
  • Участники задают вопросы о дизайне и архитектуре системы, а также о выборе между различными подходами к хранению данных.

Презентация курса

50:11
  • Автор видео рассказывает о своем курсе, который включает в себя углубленное изучение программирования, алгоритмов, тестирования и микросервисов.
  • В курсе также рассматриваются темы, связанные с дизайном и архитектурой систем, а также практикой и домашними заданиями.

Ответы на вопросы

52:09
  • Автор отвечает на вопросы о курсе, его сложности и доступности для разных уровней подготовки.
  • Он также обсуждает возможность обращения к нему с отдельными кейсами и предлагает свою помощь в решении проблем.

Обсуждение курса по Go

53:36
  • Ведущий обсуждает свой курс по Go, который включает в себя различные темы, такие как масштабирование, проектирование системы и использование шардирования.
  • Он также упоминает, что курс будет полезен для тех, кто уже имеет опыт работы с такими технологиями, как MongoDB, Tarantool и Golang.

Перспективы Go

55:35
  • Ведущий говорит о хороших перспективах Go на рынке и о том, что ведущие компании, такие как Яндекс, Озон и Сбербанк, используют этот язык для разработки своих продуктов.
  • Он также отмечает, что Go является хорошим инструментом для решения проблем, связанных с микросервисами, и имеет преимущества перед другими языками, такими как Python.

Вопросы и ответы

57:20
  • Ведущий отвечает на вопросы зрителей, касающиеся масштабирования, шардирования и проектирования системы.
  • Он также предлагает пройти опрос после открытого урока, чтобы оценить его эффективность и внести предложения по улучшению курса.