О чём это я?
Помните Presto?
Очень удачный фреймворк в плане скорости и простоты но менее удачный в плане архитектуры и маркетинга.
Так вот, Espresso это возрождение Presto.
Но обо всём по порядку.
Presto писался в боевых условиях.
Надо было быстро «зафиксить» массу высоко-нагруженных сайтов которые просто убивали средьненкие сервера клиента.
На тех серверах на которых было возможно сразу поставили Varnish.
Но остальные «достались мне» :)
Для начала всё было тривиально.
Быстренько поставил на ноги простой Rack псевдо-рутер на который через Nginx upstream пере-направлялись по очереди части сайтов.
Рутер был в стилле KISS:
- получал запрос
- рендерил шаблоны
- отправлял ответ
Для полностью статичных страниц шаблоны кэшировались, для остальных компилировались.
В общем получалось около одной милисекунды на запрос, по сравнению с от 20и до ста!
Потребление памяти стало быстро снижаться, сервера и клиент стали чаще улыбаться.
Но дальше пошло поехало.
Не все сайты оказались такими тривиальными как казалось.
Надо было постоянно добавлять новые возможности в своём псевдо-рутере:
- redirects
- callbacks
- error handlers
- etc. etc.
Главное при добавлении нового функционалла было сохранение скорости обработки запросов.
И задача была выполнена на ура!
Весь нужный функционалл был добавлен без потери производительности.
Даже наоборот, после нескольких рефакторов рутер стал показывать некоторое ускорение, правда только в синтетических тестах.
Через некоторое время все сайты переехали на новый «движок» и всё было хорошо.
Через полгода нормального полёта решил дать имя рутеру, довести код до ума и публиковать под открытой лицензией.
Так появился Presto.
Но вот прошла «война», всё успокоилось и настало время осмотреться назад.
А там тихий ужас!
Код годичной давности написанный в боевых условиях без какой либо архитектуры,
да ещё выставлен на всеобщем обозрении…
Смотрел я в этот код и печалился я, пока не пришёл ясный тёплый весенний день и не «долбанул» меня кувалдой, да так что аж вскрикнул по среди улицы — ё… врика!
Правда до «Еврики» было далеко, но так я решил переписать Presto по всем правилам.
Но потом пришёл другой ясный день и ещё одна «Еврика» и было решено ничего не переписывать
а войти в состояние созидания и написать новый фреймворк, используя весь накопившийся опыт.
Так появился Espresso Framework
От Presto унаследовано скорость, простота, основная функциональность а также большинство имён методов.
Так что снаружи внешне небольшая.
Также обновлена серия из пяти статьей на хабре.
Часть Первая | Часть Вторая | Часть Третья | Часть Четвёртая | Часть Пятая
Официальный сайт и презентация
Добро пожаловать в новый дом!
P.S. Самый частый вопрос(почти) который мне задавали во времена Presto был:
«а что на этом Presto написано что можно пощупать?»
И это вполне обоснованный вопрос, но для Presto был скорее риторическим
потому что публичного на нём ничего написано не было а переписанные сайты щупать было нельзя ибо NDA грозило не только пальцем.
Для Espresso Framework история другая — на нём написан сайт CIBox сервиса(статья на хабре).
Код сайта доступен под лицензией MIT, так что щупайте на здоровье :)
оглавление↑
Автор: slivu
Простой пример простого сайта с использованием espresso framework http://espresso.mosalt.ru/ Исходные тексты сайта прилагаются. Доступ к базам данных – Sequel. Пользовательский интерфейс – Twitter bootstrap. Сервер приложений для Ruby – Phusion Passenger