Сделали подборку материалов, которые помогут разобраться в ключевых аспектах System Design 🧐
Книга Клеппмана Мартина Design Data-Intensive Applications.
Легендарный «кабанчик». Наши системы должны легко масштабироваться, удобно поддерживаться и быть высоконагруженными. Легко, удобно – где конкретика? Какие ключевые принципы, алгоритмы и компромиссы необходимы при разработке высоконагруженных приложений? Ответы — в книге.
Книга Вернона Вона «Предметно-ориентированное проектирование».
Именно зелёная, не красная. Краткий справочник по основам DDD. Что из себя представляет DDD? Какие проблемы он решает? Как работает и как быстро приносит результаты? В книге вы найдёте ответы на все вопросы.
UML — уникальный способ наглядного графического представления архитектуры системы. Он даёт нам возможность однозначной интерпретации, быстрого онбординга новых сотрудников, шеринга высокоуровневых знаний с другими членам команды. При этом типичная модель классов UML — довольно смутное представление реальности. В статье рассказывается, как построить чёткую модель классов и получить реальные преимущества от UML.
Is TDD dead?
Серия бесед на тему разработки через тестирование (TDD) и влияния такого подхода на проектирование ПО.
Дизайн на практике.
Ещё один доклад от Ричарда Хикки. Уже новый. Был представлен на конференции Clojure Conj в 2023 году. Дизайн — это то, чему можно научиться. Это конкретные действия, практики и вещи, которые мы делаем. По сути, проектирование — это план действий, полный набор шагов, детерминированный процесс. Прогресс нужно измерять с точки зрения улучшения нашего понимания системы и отслеживания принятых нами решений.
Публичные интервью по System Design Александра Поломодова, технического директора в Т-Банке, и Владимира Иванова, Senior Engineering Manager в Bolt (один и два).
А для тех, кто хочет погрузиться глубже в тему — наш курс «Архитектура приложений».
На нём учим писать чистые и управляемые проекты, строить UML-диаграммы, создавать поддерживаемые системы и организовывать код.
А что бы вы посоветовали разработчикам, которые хотят лучше разбираться в system design? Делитесь своими рекомендациями в комментариях.