Перейти к основному содержимому

Моделирование систем

Архитектору Инженеру

Моделирование — замена реальной (или планируемой) системы упрощённым, но целенаправленным описанием, с которым можно экспериментировать без риска для продакшена. В IT это мост между абстрактным проектированием и измеримыми решениями.


Что такое модель

Модель выделяет существенное для конкретной цели и отбрасывает остальное.

ТипФормаПримеры в IT
Математическаяуравнения, графы, формулытеория очередей, криптография
Имитационнаяпрограмма, воспроизводящая динамикунагрузочный симулятор
Логическаядиаграммы, автоматыBPMN, состояния сессии
Физическаямакет (редко)прототип железа, IoT

Неверная цель → модель слишком грубая или избыточно сложная.


Этапы процесса

  1. Постановка задачи — что хотим узнать? (p99 латентности при ×2 RPS, RTO при падении ЦОД, риск срыва сроков.)
  2. Анализ системы — компоненты, границы, метрики, внешняя среда.
  3. Концептуальная модель — сущности и связи без кода (DFD, use case, диаграмма состояний).
  4. Формализация — дискретно-событийная, агентная, системная динамика, Монте-Карло.
  5. Реализация — скрипт, симулятор, цифровой двойник.
  6. Верификация — правильно ли реализован замысел модели.
  7. Валидация — соответствует ли модель реальности (сравнение с логами, замерами).
  8. Эксперименты — сценарии — пик, отказ узла, новая политика кэша.
  9. Рекомендации — изменения архитектуры, SLA, процессов.

Верификация и валидация не совпадают: можно написать безошибочный код модели, который всё равно плохо описывает прод.


Парадигмы в IT

Дискретно-событийное моделирование (DES)

Система меняется в моменты событий (запрос пришёл, сборка завершилась). Между событиями состояние статично. Подходит для очередей, CI/CD, сетевых задержек.


Агентное моделирование (ABM)

Автономные агенты с правилами — пользователи, микросервисы, боты. Полезно для эмерджентного поведения (лавина запросов, каскадные отказы).


Системная динамика

Запасы и потоки, обратные связи — технический долг, рост БД, циклы релизов.


Монте-Карло

Много случайных прогонов → распределение результата, а не одно число. Сроки проектов, стоимость облака при переменной нагрузке, оценка рисков.


Практические сценарии

  • Производительность: выдержит ли архитектура пик Black Friday?
  • Надёжность: RTO/RPO при отказе региона.
  • Сеть: задержки, потери пакетов, edge.
  • Безопасность: сценарии атаки, эффект rate limit и WAF.
  • Базы данных: блокировки, план join’ов, репликация.
  • DevOps: время пайплайна, частота падений сборки.

Моделирование должно заканчиваться действием, а не отчётом ради отчёта.


Мини-модель очереди (псевдокод DES)

очередь Q, сервер busy, clock = 0
пока clock < T_max:
если пришло событие "запрос":
если busy: Q.push(запрос)
иначе: busy = true; обслужить(запрос)
если завершилось обслуживание:
busy = false
если Q не пуста: взять следующий из Q; busy = true
clock += dt

Верификация и валидация

ВопросВерификацияВалидация
"Правильно ли закодили модель?"код vs спецификация
"Похожа ли модель на прод?"p99 модели vs Grafana

Дальше: Численные методы.