Не знаю, зачем это сюда пишу — но душу излить надо, а больше некуда. Не взыщите уж.
Можно не читать.
После долгих размышлений взгляды на разработку в очередной раз дали течь, и в очередной раз развернулись на 90 градусов. :) Но вроде бы нащупал идеал. Вот какие на этот счет мысли:
1) My/Postgre/*SQL в Вебе не нужен, идеальная база данных здесь — MongoDB.
2) Ruby on Rails/Django тоже не нужны. Они интересны в основном в контексте MySQL, т.к. дают удобный ORM — но если отказываться от MySQL, то все эти ОРМы только висят мертвым грузом, а Монго зачастую должным образом даже и не поддерживается. Вот и непонятно, зачем тогда все эти фреймворки вообще нужны. Не говоря уже о том, что 30 секунд старта у Рельс — совсем не дело. Ну и в итоге для фронт-энда не нашел ничего лучше (вы будете смеяться) PHP, с прекрасным
Mustache в качестве шаблонизатора (это же дает бесплатный AJAX для клиентов).
3) Фронт-энд = I/O данных + шаблоны. Тут безраздельно царствует хромой на обе ноги (но таки рабочий) PHP на пару с nginx/apache, и выполняет именно свою роль — DSL для построения веб-страниц.
4) Бэк-энд = обработка и сохранение данных из базы. Разные части могут быть написаны на разных языках — например, статистика — на Erlang, обработка фотографий — Ruby, обработка текстов — Clojure, и т.д.
5) Фронт-энд общается с бэк-эндом через RPC. RPC устроен следующим образом: а) фронт-энд имеет постоянное подключение к серверу замечательной и быстрой БД
Redis, и при надобности делает запрос к одному из бэкендов; б) бэкенды также постоянно подключены к Редису и внимательно следят за очередью вызовов RPC; в) данные кодируются в
BSON и добавляются в очередь вызовов; г) результат фронт-энд получает также через очередь.
6) Общение с бэк-эндом на практике почти не отличается от общения непосредственно с базой данных.
7) На выходе получаем: скорость, надежность, удобство, расширяемость.
Такие дела.