Курс: паттерны распределенных систем#
Open-source курс по текущим актуальным принципам построения распределенных систем.
🎯 Цели курса: cформировать у разработчиков архитектурное мышление#
- понимать из каких компонентов состоит любая distributed-система
- знать ключевые паттерны, зачем они нужны и какую проблему решают
- уметь объяснять архитектурные решения (для работы и интервью)
Этот курс лишь вершина айсберга по ходу разбора тем, будут прикреплены ссылки на релевантные источники для изучения.
Курс универсален для различных языков программирования, но разборы практических заданий выполнены на golang и java.
Чему вы научитесь после прохождения курса#
- Выбирать архитектурные подходы под конкретные бизнес и технические ограничения
- Декомпозировать системы по доменам и определять границы сервисов
- Принимать и фиксировать архитектурные решения (ADR)
- Проектировать контракты и взаимодействие между компонентами
- Работать с консистентностью данных и несколькими источниками истины
- Применять асинхронность, очереди и паттерны доставки событий
- Проектировать масштабирование и измерять узкие места
- Использовать кеширование и управлять согласованностью данных
- Обеспечивать отказоустойчивость (retry, circuit breaker и др.)
- Выстраивать observability и понимать, что и зачем мониторить
- Развивать системы без даунтаймов (версионирование, миграции, фича-флаги)
- Распознавать архитектурные антипаттерны и избегать преждевременной сложности
Содержимое курса#
- Современные подходы к построению систем, декомпозиция и границы систем
- Контракты и взаимодействие между компонентами
- Консистентность данных и распределённые отказы
- Асинхронность и событийные архитектуры
- Масштабирование и замеры производительности
- Кэширование и согласованность данных
- Отказоустойчивость и защитные паттерны
- Observability и эксплуатация систем
- Эволюция и развитие систем без даунтайма
- Антипаттерны распределённых систем
Требования к навыкам#
- Курс рассчитан на Middle и Senior backend-разработчиков, c опытом разработки и поддержки prod-сервисов
- Базовое понимание HTTP, работы с базами данных, очередями сообщений и схемы клиент-сервер
- Курс не требует опыта проектирования или знания конкретных инструментов и фреймворков
- Фокус сделан на архитектурном мышлении и инженерных решениях