Ещё мифы о хайлоаде
По мотивам споров в комментариях к уютному. Есть ещё два распространенных “мифа” хайлоада.
Первый: коммерческие СУБД значительно превосходят производительность “свободных”. Это очень давно, мягко говоря, не совсем так. Да, есть миллион кейсов, и жаль, нет простого способа это проверить. Может быть, не всегда удобно. С косяками на enterprise-масштабах (сервера по ляму грина за 2-4 юнитовый бокс). С недостаточными гарантиями (спасибо АГ за комментарий). Но если говорить про производительность, то на большинстве OLTP-задач свободные СУБД работают так же производительно, как коммерческие. Если кого-то есть стенды типа моих (Xeon Gold 24/48C, 128G, NVMe) и вы готовы честно “погонять” тесты для современных версии MSSQL/Oracle - напишите, у нас может получиться интересный коллаб.
Второй: те, кто пишут на питоне (любом другом некомпилируемом языке) вообще смешно когда рассуждают о хайлоаде, потому что перейдите сначала на java, c#, c, c++, rust, golang. Верно, что производительность рантаймов компилированных приложений на синтетике может превышать на порядок python/php/ruby. Разберем, однако, что получается в реальности.
Во-первых почти везде уже JIT, или есть или будет, неважно насколько крутой, вода камень точит, поэтому разница на реальном приложении будет уже не порядок просто уже из-за этого. Вон v8 и nodejs так вообще сделал javascript внезапно супер-производительным языком (речь только про производительность, не про экосистему, удобство и тд).
Во-вторых, в современной инфре не-CPU-bound часть кластера (не сервера приложений с вашим кодом) - это грубо примерно 80% костов (в ML-задачах и того выше - спасибо за комментарий АК). То есть большинство оптимизаций всегда приходится на оптимизацию архитектуры и вспомогательных готовых кубиков - СУБД, кешей, очередей. Если вдруг так сошлись звезды и есть два проекта, один на C# другой на PHP и производительность кода вдруг отличается в три раза - это не значит, что инфра для второго будет стоить в 3 раза больше, первый будет “весить” 0.8xCost + 0.2xCost, второй 0.8xCost + 0.6xCost и в результате дельта будет 40%, а не 200%.
Использование же пары языков (второй на наиболее критичные сервисы/модули) или решений типа redis/tarantool, позволяющее в том числе писать достаточно производительные сервисы - и вовсе нивелируют эту разницу.
Это очень грубые прикидки для иллюстрации, пропорции могут быть чуть другими. Посчитайте, поспрашивайте или просто поверьте людям с опытом работы с $-миллиоными костами.