- PVSM.RU - https://www.pvsm.ru -
Предоставляю вам краткий отчет об изменениях в Impress AS [1] за последние несколько месяцев. Во-первых мы не пошли путем фреймворков, а ринулись в сферу серверов приложений, обеспечивая масштабирование в двух направлениях: (1) много приложений на одном сервере и (2) много серверов для одного приложения. Первое направление требовало развивать сендбоксинг (экранирования приложений друг от друга и от среды запуска), а второе направление предусматривало переход от кластера к многосерверному клауду. Тут нужно уточнить терминологию, в ноде кластером (cluster) принято называть способ многопоточного запуска приложений в режиме master/worker, поэтому, многосерверную инфраструктуру (с кластером на каждом сервере) мы будем нанывать клаудом (или прикладным облаком). Это облако ни как не связано с виртуализацией операционной системы, как это обычно ложно связывается в понимании широких масс. Облачные технологии совсем не обязаны быть организованы на базе технологий виртуализации, просто другого простого способа масштабирования сейчас для массового потребления нет. Облачная виртуализация не гарантирует бесконечной виртуализации прикладных приложений, и всем разработчикам крупных высоконагруженных систем известно, что для сотен тысяч и десятков миллионов пользователей нужно создавать специальные прикладные решения, обеспечивающие прикладную виртуализацию, размазывающую задачи по серверам и объединяю их в одну, распределенно функционирующую, но централизовано управляемую систему. Именно эту задачу мы и взялись решать в Impress, надеюсь я отстоял терминологию и могу переходить к подробностям.
Сейчас есть две актуальные версии 0.0.71 и 0.1.2, которые можно установить соответственно:
npm install impress@0.0.71 # старый стиль приложений с поддержкой развертывания на множество серверов
npm install impress@0.1.2 # новый стиль приложений с сендбоксингом и поддержкой множества серверов
Все новогодние праздники были цинично потрачены на реализацию сендбоксинга и глубокий рефакторинг Impress. Переписано до 80% ядра и версия 0.1.2 оттестирована на приложениях, написанных для 0.0.71 с их минимальной коррекцией. Функционально в этих версиях все одинаково, кроме сендбоксинга и особенностей написания приложений. Рефакторинг из старого стиля в новый очень прост и сводится к замене обращения к API сервера приложений. На днях я выпущу небольшую инструкцию по портированию, т.к. есть уже достаточное количество внешних разработчиков, использующих Impress, подложить им такой подарок на НГ не хотелось бы. С инструкцией же они, справятся с портированием за несколько минут, надеюсь.
Итак, функциональные новшества, присутствующие в обоих версиях:
[8] Теперь, для пущей убедительности покажу крутой слайд, из презентации [8]. Примеры кода в презентации актуальны только для версии 0.0.71, а булшитологические пафосные тексты актуальны и для 0.1.2, так что, просмотрите ее, чтобы получить общее представление о сервере приложений. Есть и англоязычная версия [9] презентации. Я понимаю, что для глубокого ознакомления с Impress совершенно необходимы хорошие скринкасты, разнообразные примеры и статьи с объяснением этих примеров примеров, они готовятся и будут доступны с ближайшее время. По поводу поддержки, интенсивности разработки и выхода версий, активности исправления обнаруженных багов и пожеланий по доработе, вы можете сложить впечатление на Гитхабе [10]. Не стесняйтесь присылать вопросы и постать issues [11] на русском или английском.
На Github: https://github.com/tshemsedinov/impress [1]
В npm: https://npmjs.org/package/impress [12]
Автор: MarcusAurelius
Источник [13]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/52614
Ссылки в тексте:
[1] Impress AS: https://github.com/tshemsedinov/impress
[2] ZeroMQ: http://zeromq.org/
[3] WebSocket: http://ru.wikipedia.org/wiki/WebSocket
[4] Server-Sent Events: http://ru.wikipedia.org/wiki/Server-sent_events
[5] CORS: http://ru.wikipedia.org/wiki/Cross-origin_resource_sharing
[6] geoip-lite: https://npmjs.org/package/geoip-lite
[7] уже доступен: https://github.com/bluesmoon/node-geoip
[8] Image: http://www.slideshare.net/tshemsedinov/impress-application-server-for-nodejs
[9] англоязычная версия: http://www.slideshare.net/tshemsedinov/impress-application-server-for-nodejs-28823747
[10] Гитхабе: https://github.com/tshemsedinov/impress/commits/master
[11] issues: https://github.com/tshemsedinov/impress/issues?page=1&state=closed
[12] https://npmjs.org/package/impress: https://npmjs.org/package/impress
[13] Источник: http://habrahabr.ru/post/200208/
Нажмите здесь для печати.