Курс: паттерны распределенных систем#

Open-source курс по текущим актуальным принципам построения распределенных систем.

🎯 Цели курса: cформировать у разработчиков архитектурное мышление#

  • понимать из каких компонентов состоит любая distributed-система
  • знать ключевые паттерны, зачем они нужны и какую проблему решают
  • уметь объяснять архитектурные решения (для работы и интервью)

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

Курс универсален для различных языков программирования, но разборы практических заданий выполнены на golang и java.

Чему вы научитесь после прохождения курса#

  • Выбирать архитектурные подходы под конкретные бизнес и технические ограничения
  • Декомпозировать системы по доменам и определять границы сервисов
  • Принимать и фиксировать архитектурные решения (ADR)
  • Проектировать контракты и взаимодействие между компонентами
  • Работать с консистентностью данных и несколькими источниками истины
  • Применять асинхронность, очереди и паттерны доставки событий
  • Проектировать масштабирование и измерять узкие места
  • Использовать кеширование и управлять согласованностью данных
  • Обеспечивать отказоустойчивость (retry, circuit breaker и др.)
  • Выстраивать observability и понимать, что и зачем мониторить
  • Развивать системы без даунтаймов (версионирование, миграции, фича-флаги)
  • Распознавать архитектурные антипаттерны и избегать преждевременной сложности

Содержимое курса#

  • Современные подходы к построению систем, декомпозиция и границы систем
  • Контракты и взаимодействие между компонентами
  • Консистентность данных и распределённые отказы
  • Асинхронность и событийные архитектуры
  • Масштабирование и замеры производительности
  • Кэширование и согласованность данных
  • Отказоустойчивость и защитные паттерны
  • Observability и эксплуатация систем
  • Эволюция и развитие систем без даунтайма
  • Антипаттерны распределённых систем

Требования к навыкам#

  • Курс рассчитан на Middle и Senior backend-разработчиков, c опытом разработки и поддержки prod-сервисов
  • Базовое понимание HTTP, работы с базами данных, очередями сообщений и схемы клиент-сервер
  • Курс не требует опыта проектирования или знания конкретных инструментов и фреймворков
  • Фокус сделан на архитектурном мышлении и инженерных решениях

Контакты#

Автор#

Поддержать автора