Учитывая, что современные процессоры являются многоядерными, вы всегда должны писать код, исходя из предположения, что в какой-то момент он может быть многопоточным (сделать вещи реинтегрируемыми везде, где это возможно, а там, где это невозможно, использовать интерфейсы, которые упростят внедрение реализация, которая делает необходимую блокировку).
Если у вас довольно небольшое количество запросов в секунду (qps), то вам, возможно, удастся обойтись без однопоточного сервера событий. Тем не менее, я бы порекомендовал написать код таким образом, чтобы обеспечить многопоточность, в случае, если вы увеличиваете qps и вам нужно обрабатывать больше событий.
Однопоточный сервер можно увеличить, превратив его в разветвленный сервер; однако разветвленные серверы используют больше ресурсов - любая память, общая для всех запросов, дублируется в памяти при использовании разветвленных серверов, тогда как на одном многопоточном сервере требуется только одна копия этих данных. Кроме того, многопоточный сервер может обеспечить меньшую задержку, если он использует преимущества истинного параллелизма, и может фактически выполнять несколько частей обработки одного запроса параллельно.