Всем привет. Это мой первый пост. Чтож, я сомневаюсь, что он будет конвенциональным. Ну, поехали!
На днях я поделился в околоайтишном чате своей рабочей задачей, и надо мной стали смеяться. Просто потому, что где-то в речи прозвучало 2 RPS. После этого им уже был не важен контекст. Раз 2 RPS, значит нагрузка маленькая, а задача лёгкая.
Я объяснил им закон Литтла, рассказал, что работаю с синхронным монолитом, время обработки запроса в самом быстром варианте 10 секунд. А это значит как минимум 20 одновременных потоков заняты постоянно на 1-ом эндпоинте. Поэтому применил паттерн LRO. Обработчиком стал постоянно запущенный процесс (хотя если работы нет, спящий 1 секунду) с асинхронным кодом + 4 потока для работы с БД. Также ограничил TTL задачи, limit на кол-во задач, circuit breaker, select for update skip locked с нужными индексами, человекочитаемое логирование и ещё разные нюансы.
Но ребята продолжали шутить надо мной, сказали, что я сделал ерунду, мол, это оверинжениринг. Мы долго спорили и даже ругались матом. Я решил спросить мнение у более опытных. Пришёл к одному разработчику Python, спросил, что он думает о моём решении. Тот сказал, что оно вполне разумное. На работе моё решение прошло код-ревью разработчика с более 10-летним опытом. Об этом я тоже рассказал им, но надо мной всё равно смеялись. Потому что 2 RPS это смешная нагрузка.
А вы тоже думаете, что 2 RPS смешная нагрузка? P.S.: Кстати, если посчитать, какое кол-во записей в месяц в БД может создать такая маленькая нагрузка, будет ~ 5 млн.