Обзор курса Построение распределенных систем от Frontend Masters

Backend System Design

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

О курсе

Посмотрел курс Backend System Design от Frontend Masters. Это практический курс по построению распределенных систем. Ведет курс Джем Янг (Jem Young), инженер и инженерный менеджер в Netflix. Смотрел у него курс Введение в инженерный менеджмент (или менеджмент инженеров?).

Джем учит системному мышлению — как разбивать любую задачу на компоненты, видеть взаимосвязи и принимать компромиссные решения. Как фронтендер, я постоянно работаю с API, состоянием, производительностью и ограничениями сети. Я хотел расширить свой кругозор и больше узнать почему бэкенд работает именно так и как он спроектирован для больших систем.

Ключевые темы курса:

  • Требования: Перевод бизнес-требований и проектирование приложения путем определения масштаба проекта, формулирования требований и учета взаимодействия с пользователем. Разница между функциональными (что система делает) и нефункциональными требованиями (NFR). NFR — это про безопасность, масштабируемость, наблюдаемость (observability) и производительность. Именно здесь происходят компромиссы, например, теорема CAP (нужно выбирать между согласованностью, отказоустойчивостью и доступностью)
  • Проектирование высокого уровня: Разбор моделей данных, API и протоколов (HTTP, WebSockets, gRPC, GraphQL). Почему для банковского API лучше REST, а для микросервисов — gRPC. Как выбор протокола влияет на время жизни батарейки мобильного устройства
  • Масштабирование и хранение данных: Разбор горизонтального (добавление серверов) и вертикального (улучшение сервера) масштабирования, балансировщиков нагрузки. Затронули темы шардирования, репликации, кэширования и стратегий инвалидации кэша
  • Безопасность и асинхронность: Разбор HTTPS termination (где расшифровывать трафик — на балансировщике или сервере), различия между аутентификацией и авторизацией, сравнение сессий и JWT. Также рассказал про асинхронные процессы на примере загрузки видео: очереди, message broker'ы, worker'ы

Итоги

Курс "Backend System Design" Джема Янга — это инвестиция в архитектурное мышление. После его прохождения не стать бэкенд-разработчиком или архитектором, но можно увидеть как работает система на разных слоях и понять, какие могут быть компромиссы при построении высокоуровневой архитектуры.

Стоит ли проходить это курс?
Да, если:
Никогда не задумывался, что под капотом всей системы или большого приложения
Нужно систематизировать знания о высокоуровневой архитектуре
Хочется спроектировать архитектуру приложения с нуля

Моя оценка: 7/10, хороший вводный курс