Четыре стандартных этапа собеседования по проектированию ИТ-систем. Однако я бы думал о них шире: как о четырех начальных шагах проектирования любого ПО.
Шаг 1. Понимание проблемы и определение скоупа проектирования Шаг 2. Предложите дизайн высокого уровня и получите одобрение Шаг 3. Спроектируйте глубокое погружение Шаг 4. Завершение Глава 3 книги раскрывает подробности о каждом шаге, хорошие вопросы, которые нужно задать (над которыми следует подумать), а также то, что НУЖНО и НЕЛЬЗЯ делать.
Очень короткая глава 2 посвящена тому, как делать приблизительные оценки, чтобы начать с самых важных моментов при разработке программного обеспечения.
Концепции, которые должен знать КАЖДЫЙ разработчик программного обеспечения:
“Сила двух” Стандартные цифры задержки! Насколько быстрой является память, насколько медленным является диск и т.д. Показатели доступности Про какие ключевые метрики стоит думать Эти понятия и числа раскрыты во второй главе книги:
“System Design. Подготовка к сложному интервью” Алекса Сюй.
Отличный общий план для масштабирования любого приложения с нуля до миллионов пользователей.
Настройка одного сервера Выбор и использование базы данных Вертикальное масштабирование против горизонтального масштабирования подходов. И почему вы должны предпочесть горизонтальный Добавлен балансировщик нагрузки для горизонтального масштабирования Добавление репликации базы данных для горизонтального масштабирования Добавление кеша Добавление CDN Архитектура без сохранения состояния и с сохранением состояния и использование внешнего хранилища состояния Добавление дополнительных центров обработки данных Добавление очереди сообщений Добавление ведения журнала, метрик и автоматизации Масштабирование базы данных и дальнейшие шаги… Все это тщательно, но кратко раскрыто в Главе 1 книги:
Книжный клуб у нас в компании выбрал следующую чудесную книгу для чтения:
Роберт Мартин - Чистая Архитектура - Искусство Разработки Программного Обеспечения
Robert Martin - Clean Architecture - a Craftsman’s Guide to Software Structure and Design
Четвертая часть книги посвящена принципам объединения компонентов в программные системы.
Эта часть более интересна. Она содержит:
Обзор истории компонентов: возможность перемещения в памяти, линкеры Три принципа связности компонентов REP: Принцип эквивалентности повторного использования и выпусков CCP: Принцип согласованного изменения CRP: Принцип совместного повторного использования Три принципа соединения компонентов ADP: Принцип ацикличности зависимостей SDP: Принцип устойчивых зависимостей SAP: Принцип устойчивости абстракций Мне особенно понравилась эта глава из-за представленных метрик, которые можно использовать для измерения (!