Про математику в системном анализе и проектировании.
Я вообще топлю за инженерные методы в разработке, в частности — за расчеты. Вы, наверное, могли заметить. Используются математические методы в анализе и проектировании нечасто. Тем ценнее ситуации, когда их можно применить, причем с очевидной пользой.
Рассмотрим такую задачу: мы проектируем интеграцию или API бэкенда, и хотим оценить пиковую нагрузку. Допустим, у нас есть 1000 пользователей, и сценарий их работы такой, что каждый из них за час делает примерно 10 запросов к системе в случайное время. Какой RPS (число запросов в секунду) должен выдерживать сервер?
Если просто 1000*10/(60*60) — число пользователей на число операций деленое на число секунд в одном часе — получится 2.78 запросов/сек.
Но, очевидно, запросы от разных пользователей могут совпадать по времени. Для моделирования такой ситуации нужно использовать пуассоновский процесс, а точнее — распределение Пуассона.
Оно задается жутковатой формулой вероятности:
P(k)=λˆk*eˆ-λ/k!
(да, лямбда в степени k, умноженное на e в степени -λ, деленое на k факториал),
где λ — среднее количество событий за промежуток времени, k — интересующее нас количество событий, P(k) — вероятность того, что k событий произойдут в одну секунду.
В нашем примере λ = 2.78, а k можно разные подставлять:
P(5) = 0.086
P(6) = 0.04
P(7) = 0.016
Для нашего количества событий (10000) эти вероятности очень велики, например, RPS=7 у нас будет 57 раз за час!
А вот P(13) = 0.00001, то есть 1 раз в час. Значит, можно рассчитывать на RPS=13.
Формулу Пуассона можно использовать только для случайных обращений! Если у вас процесс устроен как-то регулярно — нужно использовать анализ сценариев. Например, когда все побежали в сервис после получения оповещения. Или когда в конце часа/дня обязательно нужно что-то сделать (отметиться, отправить коммит), или например все побежали сдавать домашку за 5 минут до дедлайна — тогда процесс не случайный, и нужно анализировать именно эти пики.
Ну а вероятности по формуле Пуассона можно посчитать в одном из калькуляторов, например: https://stattrek.com/online-calculator/poisson (здесь x это k, а λ названа μ), или в Экселе через функцию POISSON.
Применяйте инженерные методы в системном анализе!
>>Click here to continue<<