Архитектура приложений: пиши как разработчик, думай как архитектор [2022] [Слёрм] [Егор Лукьянов, Александр Вагнер]

Bot

Администратор
Команда форума
23 Янв 2020
208,092
3,149
113
172347.jpg

Первый модуль - Введение в архитектуру приложений
Познакомимся с подходами и парадигмами архитектуры приложений
Тема I.

  • Проблематика, почему важно проектировать софт грамотно.
  • Зачем нужна архитектура, что бывает, когда о ней не думают.
Тема II.
  • Изоляция как средство контроля сложности.
  • Спагетти-код.
  • Модульность.
  • Связанность (coupling).
  • Статическое связывание, динамическое связывание.
  • Компоненты и их взаимодействие.
  • Компонент как самостоятельная сущность.
  • Проектирование слабосвязанных компонентов.
  • Тестирование компонентов.
  • MVC как пример модульного паттерна.
  • Причины изменений, изоляция по принципу причин изменений.

Второй модуль - Unified Modelling Language
Освоим язык графического отображения: сможете читать и проектировать с помощью этого языка. Научимся использовать диаграммы для визуализациии архитектруры и связей.
Тема I.

  • Основные компоненты (сущности, термины, диаграммы классов и последовательностей), что ими можно выражать для чего они нужны.

Третий модуль - Принципы ООП
Научимся анализировать высокоуровнево: будете знать, как решать проблему и с помощью какой парадигмы.
Тема I.

  • Обзор парадигм программирования.
Тема II.
  • ООП, принципы.
  • ООП как средство архитектуры.
  • Классы и методы.
  • Объектный подход, как метод изоляции.
  • Интерфейсы и абстрактные классы.
  • Проблемы наследования.
Тема III.
  • Принципы ООП: (SOLID, DRY).

Четвертый модуль - Паттерны проектирования
Научимся проектировать системы, используя паттерны: поймете преимущества и ограничения паттернов, сможете распознать в системах примененные паттерны
Тема I.

  • Что такое паттерны и зачем они нужны. Их виды.
Тема II.
  • Порождающие и структурные паттерны.
Тема III.
  • Поведенческие паттерны.
Тема IV.
  • Антипаттерны.

Пятый модуль - Чистая архитектура
Научимся проектировать по критериям чистой архитектуры, находить отклонения от чистой архитектуры и предлагать варианты системного решения. Научимся применять компановку кода, проектировать и проводить архитектурные границы для упрощения дальнейшего изменения и поддержки кода.
Тема I.

  • Coupling & Cohesion (Связанность и сочетаимость).
Тема II.
  • Архитектурные границы.
Тема III.
  • Чистая архитектура.

Шестой модуль - Различные архитектурные подходы
Научимся выбирать подход к решению поставленных производственных задач, объяснять преимущества или чужие/собственные решения. Сможем находить подходящие решения для поставленных задач с учётом актуальной ституации
Тема I.

  • Требования, предметная область.
  • Анализ.
  • Функциональные/нефункциональные требования.
Тема II.
  • Архитектура приложений.
  • Паттерны MVC, MVVM, MVP, MV.
Тема III.
  • Архитектура систем.
  • Трёхуровневая архитектура, гексагональная архитектура.

Седьмой модуль - Архитектура везде
Научимся применить знания об архитектуре к различным уровням масштаба (не только компоновка классов и модулей, но и целых систем)
Тема I.

  • Виды архитекторов и их задачи.
Тема II.
  • Архитектуры на разных уровнях (embedded, application, distributed system, cloud-native service).

Восьмой модуль - Подводим итоги
Научимся без проблем выбирать инструмент под конкретную задачу
Тема I.

  • Обзор основных инструментов и технологий, их место в архитектуре и принципы выбора.
  • Хранение данных: S3, Ceph, Posgres, MongoDB, Clickhouse, Neo4J, Kafka, Cassandra.
  • Языки: Python, Java, GO, C++, Javascript/Typescript, WEB.
  • Frameworks: React, Vue, Angular, Jquery.
  • Kubernetes и пр.