Моделирование систем
Моделирование — замена реальной (или планируемой) системы упрощённым, но целенаправленным описанием, с которым можно экспериментировать без риска для продакшена. В IT это мост между абстрактным проектированием и измеримыми решениями.
Что такое модель
Модель выделяет существенное для конкретной цели и отбрасывает остальное.
| Тип | Форма | Примеры в IT |
|---|---|---|
| Математическая | уравнения, графы, формулы | теория очередей, криптография |
| Имитационная | программа, воспроизводящая динамику | нагрузочный симулятор |
| Логическая | диаграммы, автоматы | BPMN, состояния сессии |
| Физическая | макет (редко) | прототип железа, IoT |
Неверная цель → модель слишком грубая или избыточно сложная.
Этапы процесса
- Постановка задачи — что хотим узнать? (p99 латентности при ×2 RPS, RTO при падении ЦОД, риск срыва сроков.)
- Анализ системы — компоненты, границы, метрики, внешняя среда.
- Концептуальная модель — сущности и связи без кода (DFD, use case, диаграмма состояний).
- Формализация — дискретно-событийная, агентная, системная динамика, Монте-Карло.
- Реализация — скрипт, симулятор, цифровой двойник.
- Верификация — правильно ли реализован замысел модели.
- Валидация — соответствует ли модель реальности (сравнение с логами, замерами).
- Эксперименты — сценарии — пик, отказ узла, новая политика кэша.
- Рекомендации — изменения архитектуры, 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 |
Дальше: Численные методы.