HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Теги: проектирование, кэширование, паттерны проектирования, балансировка нагрузки, обработка, архитектор высоких нагрузок, highload, высоконагруженная система, распараллеливание, очередь, конвейер, толстый клиент, инженерное мышление</p>
1 <p>Теги: проектирование, кэширование, паттерны проектирования, балансировка нагрузки, обработка, архитектор высоких нагрузок, highload, высоконагруженная система, распараллеливание, очередь, конвейер, толстый клиент, инженерное мышление</p>
2 <p>Многие считают, что<strong>проектирование крупного проекта</strong>- магия и волшебство. На самом деле научиться можно всему, и никакой магии тут нет. Нужно<strong>правильно думать</strong>, применять архитектурные приёмы и<strong>паттерны проектирования</strong>. И если изучить паттерны не очень сложно, то<strong>развить в себе инженерное мышление намного труднее</strong>. Именно о нём мы и поговорим в этой статье - об инженерном подходе.</p>
2 <p>Многие считают, что<strong>проектирование крупного проекта</strong>- магия и волшебство. На самом деле научиться можно всему, и никакой магии тут нет. Нужно<strong>правильно думать</strong>, применять архитектурные приёмы и<strong>паттерны проектирования</strong>. И если изучить паттерны не очень сложно, то<strong>развить в себе инженерное мышление намного труднее</strong>. Именно о нём мы и поговорим в этой статье - об инженерном подходе.</p>
3 <h2>Проектируем "банк"</h2>
3 <h2>Проектируем "банк"</h2>
4 <p>Каждый из нас был в банке. И многие помнят, что, скажем, 15 лет назад, организация обслуживания клиентов была заметно хуже, а времени вы тратили больше. Как ни странно, банк можно сравнить с<strong>высоконагруженной масштабируемой системой</strong>, которая используется в вебе.</p>
4 <p>Каждый из нас был в банке. И многие помнят, что, скажем, 15 лет назад, организация обслуживания клиентов была заметно хуже, а времени вы тратили больше. Как ни странно, банк можно сравнить с<strong>высоконагруженной масштабируемой системой</strong>, которая используется в вебе.</p>
5 <p>Итак, представьте<strong>огромную очередь</strong>в одно из окошек банка. Очевидно, что главной целью любого более-менее вменяемого руководства будет<strong>увеличение пропускной способности</strong>отделения. Первое, что приходит в голову -<strong>горизонтальное масштабирование</strong>(достраиваем окошки, усаживаем дополнительных операторов). Вроде всё просто: несколько окошек - несколько очередей, которые уменьшатся в размерах. Однако это не самое эффективное разделение, ведь придётся дублировать всё: принтер, компьютер, канцелярские принадлежности и много чего ещё. И каждый оператор будет решать множество задач: выдавать кредиты, оформлять карточки, выплачивать пенсии, принимать платёжки…<strong>Минусы очевидны</strong>- повышенные затраты, много затраченных ресурсов, возможный недогруз.</p>
5 <p>Итак, представьте<strong>огромную очередь</strong>в одно из окошек банка. Очевидно, что главной целью любого более-менее вменяемого руководства будет<strong>увеличение пропускной способности</strong>отделения. Первое, что приходит в голову -<strong>горизонтальное масштабирование</strong>(достраиваем окошки, усаживаем дополнительных операторов). Вроде всё просто: несколько окошек - несколько очередей, которые уменьшатся в размерах. Однако это не самое эффективное разделение, ведь придётся дублировать всё: принтер, компьютер, канцелярские принадлежности и много чего ещё. И каждый оператор будет решать множество задач: выдавать кредиты, оформлять карточки, выплачивать пенсии, принимать платёжки…<strong>Минусы очевидны</strong>- повышенные затраты, много затраченных ресурсов, возможный недогруз.</p>
6 <p>К тому же,<strong>разные процессы выполняются с разной скоростью</strong>и три человека, одновременно оформляющие пластиковые карточки в 3 окошках, заставят ждать всех остальных.</p>
6 <p>К тому же,<strong>разные процессы выполняются с разной скоростью</strong>и три человека, одновременно оформляющие пластиковые карточки в 3 окошках, заставят ждать всех остальных.</p>
7 <p>Значит, нужно подумать не только над распараллеливанием очередей, но и над<strong>специализацией</strong>, т. е. следует провести горизонтальное масштабирование вместе с<strong>функциональным разделением</strong>. Пусть каждая группа банковских работников занимается только своим делом: кто-то принимает платёжки, кто-то выдаёт кредиты, кто-то пластиковые карты и пр.</p>
7 <p>Значит, нужно подумать не только над распараллеливанием очередей, но и над<strong>специализацией</strong>, т. е. следует провести горизонтальное масштабирование вместе с<strong>функциональным разделением</strong>. Пусть каждая группа банковских работников занимается только своим делом: кто-то принимает платёжки, кто-то выдаёт кредиты, кто-то пластиковые карты и пр.</p>
8 <p>Впрочем, и эта ситуация неидеальна, мы можем ускорить процесс.<strong>Давайте упростим взаимодействие</strong>посетителя с операторами. Речь идёт о том самом "едином окне", которое вы сегодня видите, когда входите в банк, - специальном аппарате, принимающем запросы и выдающем клиенту квиток (тот самый, на котором написано, в какое окошко вам следует обратиться, исходя из цели вашего прихода). Номер квитка высвечивается над свободным оператором с соответствующей специализацией. Таким образом<strong>мы организуем и конвейер, и входящую балансировку</strong>. Ещё раз: мы получаем не просто разделение по сервисам, но можем балансировать нагрузку, выделяя на каждую стадию тот объём ресурсов, который необходим.</p>
8 <p>Впрочем, и эта ситуация неидеальна, мы можем ускорить процесс.<strong>Давайте упростим взаимодействие</strong>посетителя с операторами. Речь идёт о том самом "едином окне", которое вы сегодня видите, когда входите в банк, - специальном аппарате, принимающем запросы и выдающем клиенту квиток (тот самый, на котором написано, в какое окошко вам следует обратиться, исходя из цели вашего прихода). Номер квитка высвечивается над свободным оператором с соответствующей специализацией. Таким образом<strong>мы организуем и конвейер, и входящую балансировку</strong>. Ещё раз: мы получаем не просто разделение по сервисам, но можем балансировать нагрузку, выделяя на каждую стадию тот объём ресурсов, который необходим.</p>
9 <p>Теперь добавляем<strong>отложенные вычисления</strong>. Например, некоторые запросы (процессы) можно выполнять не сразу, а при спаде нагрузки либо после окончания операционного рабочего дня. Допустим, клиент подал заявку на кредит, а проверить его данные в системе мы можем тогда, когда это удобнее нам (с учётом заложенных на это временных норм, разумеется).</p>
9 <p>Теперь добавляем<strong>отложенные вычисления</strong>. Например, некоторые запросы (процессы) можно выполнять не сразу, а при спаде нагрузки либо после окончания операционного рабочего дня. Допустим, клиент подал заявку на кредит, а проверить его данные в системе мы можем тогда, когда это удобнее нам (с учётом заложенных на это временных норм, разумеется).</p>
10 <p>Также можно добавить<strong>предобработку</strong>- это, например, подготовленные инструкции по заполнению платёжных поручений и т. п.</p>
10 <p>Также можно добавить<strong>предобработку</strong>- это, например, подготовленные инструкции по заполнению платёжных поручений и т. п.</p>
11 <p>Ещё можно заранее распечатать стандартные бланки или подготовить формы, в которых будет заполнено всё, кроме данных клиента - это<strong>кэширование</strong>.</p>
11 <p>Ещё можно заранее распечатать стандартные бланки или подготовить формы, в которых будет заполнено всё, кроме данных клиента - это<strong>кэширование</strong>.</p>
12 <p>Кроме того, вводим<strong>толстого клиента</strong>- ставим перед входом в банк онлайн-терминал и банкомат, которые позволят выполнить массу операций вне зависимости от работы основного офиса.</p>
12 <p>Кроме того, вводим<strong>толстого клиента</strong>- ставим перед входом в банк онлайн-терминал и банкомат, которые позволят выполнить массу операций вне зависимости от работы основного офиса.</p>
13 <p>Изюминка на торте - сотрудник на входе, который будет отвечать на вопросы и выполнит роль<strong>фронтенда</strong>, самостоятельно обрабатывая лёгкие запросы ("Могу ли я оплатить здесь эту квитанцию?", "До скольки вы работаете?", "Что мне выбрать на терминале, если я хочу открыть счёт?").</p>
13 <p>Изюминка на торте - сотрудник на входе, который будет отвечать на вопросы и выполнит роль<strong>фронтенда</strong>, самостоятельно обрабатывая лёгкие запросы ("Могу ли я оплатить здесь эту квитанцию?", "До скольки вы работаете?", "Что мне выбрать на терминале, если я хочу открыть счёт?").</p>
14 <h2>Делаем выводы</h2>
14 <h2>Делаем выводы</h2>
15 <p>Итак, мы получили на выходе<strong>сложную систему</strong>, включающую в себя: - распараллеливание; - предобработку; - очередь; - балансировку; - конвейер; - отложенные вычисления; - кэширование; - толстого клиента.</p>
15 <p>Итак, мы получили на выходе<strong>сложную систему</strong>, включающую в себя: - распараллеливание; - предобработку; - очередь; - балансировку; - конвейер; - отложенные вычисления; - кэширование; - толстого клиента.</p>
16 <p>Результат - серьёзное увеличение пропускной способности. Как видим, никакой магии нет - всего лишь<strong>логика, инженерный подход и немного интуиции</strong>.</p>
16 <p>Результат - серьёзное увеличение пропускной способности. Как видим, никакой магии нет - всего лишь<strong>логика, инженерный подход и немного интуиции</strong>.</p>
17  
17