Любой может написать работающий код. Дизайн системы — это то, что позволяет ей работать одновременно для миллионов пользователей. Если вы готовитесь к собеседованию по разработке программного обеспечения, вы, вероятно, много раз слышали термин «Проектирование системы». Но проектирование системы - это не...
Любой может написать работающий код. Дизайн системы — это то, что позволяет ей работать одновременно для миллионов пользователей.
Если вы готовитесь к собеседованию по разработке программного обеспечения, вы, вероятно, много раз слышали термин «Проектирование системы».
Но проектирование системы — это не просто рисование прямоугольников и стрелок на доске.
Речь идет об ответах на такие вопросы, как:
Что произойдет, когда 10 пользователей станут 10 миллионами?
Что происходит, когда один сервер перегружен?
Как несколько серверов используют одни и те же данные?
Как ускорить обработку часто запрашиваемых данных?
Что произойдет, если одна служба выйдет из строя?
Как нам надежно обрабатывать миллионы запросов?
Самый простой способ понять проектирование системы — начать с простого примера из реальной жизни.
Давайте построим банк.
Что такое системный дизайн?
Прежде чем перейти к техническим компонентам, давайте разберем слова:
Система + Дизайн
Система — это совокупность компонентов, работающих вместе для достижения общей цели.
Мы можем думать об этом как:
Система = Компоненты + Общая цель
Например, система онлайн-банкинга может содержать:
Пользователи
↓
Клиентское приложение
↓
API
↓
Сервер приложений
↓
База данных
Каждый компонент несет ответственность, но вместе они решают общую бизнес-задачу.
Имп