- PVSM.RU - https://www.pvsm.ru -

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

image

О чём это я?

Помните Presto?

Очень удачный фреймворк в плане скорости и простоты но менее удачный в плане архитектуры и маркетинга.

Так вот, Espresso это возрождение Presto.

Но обо всём по порядку.

Presto писался в боевых условиях.
Надо было быстро «зафиксить» массу высоко-нагруженных сайтов которые просто убивали средьненкие сервера клиента.
На тех серверах на которых было возможно сразу поставили Varnish.
Но остальные «достались мне» :)

Для начала всё было тривиально.
Быстренько поставил на ноги простой Rack псевдо-рутер на который через Nginx upstream пере-направлялись по очереди части сайтов.
Рутер был в стилле KISS:

  • получал запрос
  • рендерил шаблоны
  • отправлял ответ

Для полностью статичных страниц шаблоны кэшировались, для остальных компилировались.
В общем получалось около одной милисекунды на запрос, по сравнению с от 20и до ста!
Потребление памяти стало быстро снижаться, сервера и клиент стали чаще улыбаться.

Но дальше пошло поехало.
Не все сайты оказались такими тривиальными как казалось.
Надо было постоянно добавлять новые возможности в своём псевдо-рутере:

  • redirects
  • callbacks
  • error handlers
  • etc. etc.

Главное при добавлении нового функционалла было сохранение скорости обработки запросов.
И задача была выполнена на ура!
Весь нужный функционалл был добавлен без потери производительности.
Даже наоборот, после нескольких рефакторов рутер стал показывать некоторое ускорение, правда только в синтетических тестах.

Через некоторое время все сайты переехали на новый «движок» и всё было хорошо.

Через полгода нормального полёта решил дать имя рутеру, довести код до ума и публиковать под открытой лицензией.

Так появился Presto.

Но вот прошла «война», всё успокоилось и настало время осмотреться назад.

А там тихий ужас!

Код годичной давности написанный в боевых условиях без какой либо архитектуры,
да ещё выставлен на всеобщем обозрении…
Смотрел я в этот код и печалился я, пока не пришёл ясный тёплый весенний день и не «долбанул» меня кувалдой, да так что аж вскрикнул по среди улицы — ё… врика!

Правда до «Еврики» было далеко, но так я решил переписать Presto по всем правилам.

Но потом пришёл другой ясный день и ещё одна «Еврика» и было решено ничего не переписывать
а войти в состояние созидания и написать новый фреймворк, используя весь накопившийся опыт.

Так появился Espresso Framework [1]

От Presto унаследовано скорость, простота, основная функциональность а также большинство имён методов.
Так что снаружи внешне небольшая.

Также обновлена серия из пяти статьей на хабре.
Часть Первая [2] | Часть Вторая [3] | Часть Третья [4] | Часть Четвёртая [5] | Часть Пятая [6]

Официальный сайт и презентация [1]

Добро пожаловать в новый дом!

P.S. Самый частый вопрос(почти) который мне задавали во времена Presto был:
«а что на этом Presto написано что можно пощупать?»
И это вполне обоснованный вопрос, но для Presto был скорее риторическим
потому что публичного на нём ничего написано не было а переписанные сайты щупать было нельзя ибо NDA грозило не только пальцем.

Для Espresso Framework история другая — на нём написан сайт CIBox сервиса(статья на хабре [7]).
Код сайта доступен под лицензией MIT [8], так что щупайте на здоровье :)
оглавление [9]

Автор: slivu


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/ruby/16768

Ссылки в тексте:

[1] Espresso Framework: http://e.github.com

[2] Часть Первая: http://habrahabr.ru/post/139872

[3] Часть Вторая: http://habrahabr.ru/post/139882

[4] Часть Третья: http://habrahabr.ru/post/140076

[5] Часть Четвёртая: http://habrahabr.ru/post/140175

[6] Часть Пятая: http://habrahabr.ru/post/140654

[7] статья на хабре: http://habrahabr.ru/post/153097

[8] доступен под лицензией MIT: https://github.com/slivu/cibox.org

[9] оглавление: #top