Проектирование и архитектура — чек-лист
Модель и масштаб — Основы БД, опорные темы, проектирование БД, пакетная работа. Карта — о разделе.
Чек-лист самопроверки
- В чём заключается основная цель проектирования программного обеспечения?
- Какие принципы лежат в основе компонентной архитектуры при создании систем?
- Как происходит декомпозиция монолитного приложения на отдельные части?
- Что такое доменная модель и как она отражает предметную область?
- Какие существуют виды архитектурных стилей для построения систем?
- Какова роль инфраструктуры как фактора, влияющего на выбор архитектуры?
- Какие типы классов используются при конструировании программных систем?
- Как применяются паттерны проектирования для решения типовых задач разработки?
- В чём разница между порождающими, структурными и поведенческими паттернами?
- Какие архитектурные паттерны обеспечивают масштабируемость параллелизма?
- Как реализовать принцип единственной ответственности (Single Responsibility Principle)?
- Что означает принцип открытости/закрытости в контексте разработки кода?
- Как работает принцип подстановки Барбары Лисков при наследовании?
- Какие преимущества даёт принцип разделения интерфейсов перед единым интерфейсом?
- Как применяется принцип инверсии зависимостей для снижения связанности модулей?
- В чём суть паттерна Фабрика и когда его целесообразно использовать?
- Как работает паттерн Абстрактная фабрика для создания семейств объектов?
- Когда следует применять паттерн Прототип для клонирования объектов?
- Как реализован паттерн Строитель для пошагового создания сложных объектов?
- Что представляет собой паттерн Одиночка и какие риски он несёт?
- Как работает паттерн Мост для отделения абстракции от реализации?
- В чём отличие паттерна Адаптер от паттерна Декоратор?
- Как использовать паттерн Команда для инкапсуляции запросов как объектов?
- Какие возможности предоставляет паттерн Наблюдатель для подписки на события?
- Как реализуется паттерн Стратегия для выбора алгоритма во время выполнения?
- Что такое паттерн Шаблонный метод и как он организует структуру алгоритма?
- В чём суть паттерна Компоновщик для работы с древовидными структурами?
- Как работает паттерн Посредник для уменьшения связей между компонентами?
- Какие задачи решает паттерн Цепочка обязанностей при обработке запросов?
- Как применяется паттерн Хранитель для сохранения и восстановления состояния объекта?
- В чём особенность паттерна Итератор для обхода коллекций без раскрытия их структуры?
- Как работает паттерн Мemento для возврата состояния к предыдущему моменту?
- Что такое паттерн Состояние для изменения поведения объекта при смене состояния?
- Как используется паттерн Визитер для добавления новых операций к элементам структуры?
- Какие архитектурные паттерны применимы для построения микросервисных систем?
- Как реализовать паттерн CQRS для разделения операций чтения и записи данных?
- В чём суть подхода Event Sourcing для хранения истории всех изменений состояния?
- Как работает паттерн Saga для управления распределёнными транзакциями?
- Что представляет собой паттерн Strangler Fig при постепенной модернизации легаси-систем?
- Как применяется паттерн Competing Consumer для обработки сообщений в очереди?
- В чём смысл использования Read Replicas для масштабирования чтения базы данных?
- Как работает архитектура Shared Nothing при горизонтальном масштабировании?
- Какие особенности имеет архитектура Shared Storage для общих хранилищ?
- В чём разница между вертикальным и горизонтальным масштабированием системы?
- Как обеспечить надёжность и доступность сервиса на разных уровнях SLA?
- Что такое инженерия устойчивости и какие методы она включает?
- Как реализовать стратегии балансировки нагрузки между узлами системы?
- В чём суть модели Ричардсона для уровней развития API?
- Как спроектировать систему с использованием событийно-ориентированной архитектуры?
- Какие критерии позволяют выбрать между монолитом и набором микросервисов?
Архитектурное мышление
Вопросы про решения на уровне системы. Удобно на review; см. итоги, роль архитектора.
- Чем solution-архитектор отличается от enterprise-архитектора?
- Минимальный набор артефактов для нового разработчика в проекте?
- Как перевести "надёжная система" в измеримые NFR?
- Три фактора в пользу модульного монолита вместо микросервисов?
- Как Conway’s Law влияет на границы сервисов?
- Что должно быть в ADR, чтобы не переоткрывать спор через год?
- C4 Level 1 и 2 на примере вашего продукта — что на каждом?
- Риски интеграции без идемпотентности?
- Как сравнить REST и события для одного сценария?
- Bounded context и связь с командой/репозиторием?
- Strangler Fig против переписывания с нуля?
- Какие метрики подтвердят архитектурную гипотезу после релиза?
- Зоны доверия в вашей системе?
- Связь SLA, RTO/RPO и технических решений?
- Три признака распределённого монолита?