Дело не в том, что Rails не масштабируется, а в том, что запросы на «живые» данные в Ruby (или любом интерпретируемом языке) не масштабируются, поскольку они сравнительно намного дороже с точки зрения использования процессора и памяти, чем ихскомпилированные языковые аналоги.
Теперь, если бы Twitter был другим типом сервиса, который имел ту же огромную базу пользователей, но обслуживал данные, которые менялись реже, Rails мог бы стать жизнеспособным вариантом с помощью кеширования;то есть, полностью избегая активных запросов к стеку Rails и разгрузки на внешний сервер и / или в кэш-память БД.Отличная статья на эту тему:
Как Basecamp Next стал настолько чертовски быстрым
Однако Twitter не отказался от Rails только за проблемы масштабирования, они сделали выборпотому что Scala, как язык, предоставляет определенные встроенные гарантии о состоянии вашего приложения, которое не могут обеспечить интерпретируемые языки: если оно компилируется, ошибки, тратящие время, такие как опечатки с ошибками, неправильные вызовы методов, неправильные объявления типов и т. д., простоне может существовать.
Для Твиттера TDD было недостаточно.Цитата из Дейкстры в Программирование в Scala иллюстрирует этот момент: «тестирование может только доказать наличие ошибок, но не их отсутствие».По мере того как их приложения росли, они сталкивались со все более и более трудными поисками ошибок.Волшебный таинственный тур становился помехой для выступлений, поэтому они сделали выбор.По большому счету, Twitter является для Scala тем же, чем Facebook для PHP (хотя Facebook использует свой сверхбыстрый препроцессор C ++, так что немного обманывает; -))
Подводя итог, Twitter сделал переход для обоихпроизводительность и надежность.Конечно, Rails, как правило, находится на переднем крае инноваций, поэтому приложения с трафиком на уровне 99%, не использующие Твиттер, всего мира могут прекрасно справляться с интерпретируемым языком (хотя сейчас я твердо стою на стороне скомпилированного языка., Scala слишком хороша!)