Производительность веб-сервисов

До сих пор люди иногда спорят о скорости программ, написанных на том или ином языке или платформе. Хотя тренд значительно пошел на убыль и редко где услышишь "Java тормозит" или "1 000 000 конкуррентных подключений на node.js" но время от времени все равно этот вопрос подымается.

Так вот.

У меня в продакшене уже несколько лет крутится куча сервисов, часть на JVM, часть на Rails, часть на Python, часть на PHP, парочка на node.

80% (а то и все 99%) проблем с производительностью ваших и моих приложений связаны с I/O, и никак не связаны с тормознутностью интерпретатора отдельно взятого языка. Если вы не гугл конечно. А вы — не гугл.

Так или иначе все упирается в базу данных, и скорость выполнения запросов. В большой корпорации где я раньше работал, сидел целый отдел (человек 50, не меньше), специальных людей, которые занимались тюнингом SQL-запросов. Каждый день, с утра до вечера. Переписывали говна, которые понаворотили обычные девелоперы, добавляли эзотерические оракловые хинты и все начинало быстро работать.

Ruby on Rails известен своей медленностью во всяких модных бенчмарках. И действительно — интерпретатор медленный по сравнению с JVM или node, а фреймворк наворачивает поверх этого кучу барахла которое еще больше замедляет время ответа. Да вот только вся скорость JVM-приложений так или иначе упирается в (No)SQL-запросы и сетевое взаимодействие.

Поэтому при выборе платформы на перформенс языка следует строго забить и взамен сосредоточиться на удобстве разработки, богатстве библиотек и инфраструктуры и на архитектуре структур данных и запросов к ним.

Ruby тормозит? Да плевать, зато я за 5 минут подыму работающее АРІ, пока вы будете импортировать build.gradle в IntelliJ.

Туда же NoSQL барахло. Современные базы работают очень бодро, поэтому постгреса хватит всем. Ту да же микросервисы, но это отдельный разговор 🙂

И только когда наш продукт полетит, навалится пользователей и появится больше данных, вот только тогда можно (и нужно) смотреть, есть ли что-то, что уже нельзя оптимизировать без смены платформы и утолщения серверов. Но скорее всего, это случится очень не скоро 🙂


Сподобалось? Долучайтеся до мого телеграм каналу: https://t.me/full_of_hatred