Espresso — фреймворк который восстал из Presto

в 4:39, , рубрики: ruby, метки:

image

О чём это я?

Помните 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

Поделиться

  1. Andrey:

    Простой пример простого сайта с использованием espresso framework http://espresso.mosalt.ru/ Исходные тексты сайта прилагаются. Доступ к базам данных — Sequel. Пользовательский интерфейс — Twitter bootstrap. Сервер приложений для Ruby — Phusion Passenger

* - обязательные к заполнению поля