SlideShare a Scribd company logo
Многофункциональный сервер приложений,
обеспечивающий среду запуска, и дающий
полный набор инструментов для создания
прикладного программного обеспечения
Масштабирование
Масштабирование
Структура файлов
Маршрутизация URL
Конфигурация
Создание API
Шаблоны
Отдача статики
События (SSE)
Доступ к БД
Плагины

1

Несколько приложений
• на одном сервере
• в одном процессе ноды
• на одном порту
• на одном домене (разные пути)
Одно приложение
• несколько процессов на одном сервере
• несколько процессов на разных серверах
• имеет несколько доменов (виртуалхостов)
• на нескольких сетевых интерфейсах
• на нескольких портах
• несколько протоколов
Масштабирование
Масштабирование
Структура файлов
Маршрутизация URL
Конфигурация
Создание API
Шаблоны
Отдача статики
События (SSE)
Доступ к БД
Плагины

2

Стратегии разворачивания:
• Все в одном процессе (для разработки):
cluster.strategy: "single"
• Свой процесс ноды для каждой пары
хост/порт: cluster.strategy: "specialization"
• Кластер на одном сервере (master+workers)
cluster: { strategy: "multiple", workers: N }
• Кластер на 1 сервере с прилипанием по IP
cluster.strategy: "sticky"
• Группа серверов с кластером на каждом:
strategy: "specialization", nginx
обеспечивает балансировку и прилипание
• Прикладное облако: аппаратный
балансировщик, несколько кластеров с
strategy: "multiple", ØMQ, impress controller
Масштабирование
Load Balancer

Масштабирование
Структура файлов
Маршрутизация URL
Конфигурация
Создание API
Шаблоны
Отдача статики
События (SSE)
Доступ к БД
Плагины

Impress
Application
Server

HTTP

С2

С1

С3

IPC

C1N1

C1N2

C1N3

C2N1

C2N2

C2N3

C3N1

ØMQ
pub/sub + req/rep

3

С0

Impress Cloud Controller

C3N2
Структура файлов
Установка:
npm install impress
После этого имеем:
Масштабирование
Структура файлов
Маршрутизация URL
Конфигурация
Создание API
Шаблоны
Отдача статики
События (SSE)
Доступ к БД
Плагины

4

Порядок обработки
• access.js
• request.js
• get.js, post.js...
• html.template
Маршрутизация URL
Масштабирование
Структура файлов
Маршрутизация URL
Конфигурация
Создание API
Шаблоны
Отдача статики
События (SSE)
Доступ к БД
Плагины

5

Маршрутизация URL
• создание обработчиков
• наследование обработчиков и шаблонов
• типы возвращаемых данных (HTLM, JSON…)
• запуск обработчиков и шаблонов из памяти
• слежение за файловой системой
• консолидация изменений файлов
• несколько копий обработчиков в памяти
• URL-реврайтинг
• перенаправление и reverse-proxy
Конфигурация
Масштабирование
Структура файлов
Маршрутизация URL
Конфигурация
Создание API
Шаблоны
Отдача статики
События (SSE)
Доступ к БД
Плагины

6

Конфигуация:
• config.js
• слежение за файловой системой
• препроцессинг конфигурации
Конфигурация
Масштабирование
Структура файлов
Маршрутизация URL
Конфигурация
Создание API
Шаблоны
Отдача статики
События (SSE)
Доступ к БД
Плагины

7
Конфигурация
Масштабирование
Структура файлов
Маршрутизация URL
Конфигурация
Создание API
Шаблоны
Отдача статики
События (SSE)
Доступ к БД
Плагины

8
Создание API
Масштабирование
Структура файлов
Маршрутизация URL
Конфигурация
Создание API
Шаблоны
Отдача статики
События (SSE)
Доступ к БД
Плагины

9
Создание API
Масштабирование
Структура файлов
Маршрутизация URL
Конфигурация
Создание API
Шаблоны
Отдача статики
События (SSE)
Доступ к БД
Плагины

10

• RPC API (Stateful, состояние может
сохраняться в памяти между запросами)
• REST API (Stateless, каждый запрос
независимый, состояние не сохраняется)
Типы состояния:
• общее состояние системы
• состояние сессии
• состояние пользователя
• состояние объекта предметной области
Создание API
Масштабирование
Структура файлов
Маршрутизация URL
Конфигурация
Создание API
Шаблоны
Отдача статики
События (SSE)
Доступ к БД
Плагины

11
Шаблоны
Масштабирование
Структура файлов
Маршрутизация URL
Конфигурация
Создание API
Шаблоны
Отдача статики
События (SSE)
Доступ к БД
Плагины

12
Шаблоны
Масштабирование
Структура файлов
Маршрутизация URL
Конфигурация
Создание API
Шаблоны
Отдача статики
События (SSE)
Доступ к БД
Плагины

13
Отдача статики
Масштабирование
Структура файлов
Маршрутизация URL
Конфигурация
Создание API
Шаблоны
Отдача статики
События (SSE)
Доступ к БД
Плагины

14

• Отдача статических файлов
прямо из оперативной памяти
• Обновление кеша при изменении
файлов на диске
• Удаление кеша при удалении
файлов и каталогов с диска
• Сжатие gzip (кроме маленьких файлов)
и сохранение в сжатом виде в памяти
• Использование HTTP if-modified-since
и выдача 304 Not modified
• Минификация клиентского JavaScript
(при помощи плагина "uglify-js")
События SSE
Client1
Масштабирование
Структура файлов
Маршрутизация URL
Конфигурация
Создание API
Шаблоны
Отдача статики
События (SSE)
Доступ к БД
Плагины

15

Client2

Client3

С1
IPC

C1N1

C1N2

C1N3

…

ClientN
События SSE
Client1
Масштабирование
Структура файлов
Маршрутизация URL
Конфигурация
Создание API
Шаблоны
Отдача статики
События (SSE)
Доступ к БД
Плагины

Client2

Client3

…

ClientN

HTTP/SSE

С2

С1

С3

IPC

C1N1

C1N2

C1N3

C2N1

C2N2

C2N3

C3N1

ØMQ
pub/sub + req/rep

16

С0

Impress Cloud Controller

C3N2
Доступ к БД
Масштабирование
Структура файлов
Маршрутизация URL
Конфигурация
Создание API
Шаблоны
Отдача статики
События (SSE)
Доступ к БД
Плагины

17

• Драйвера сделаны плагинами db.*.js
• Удобства для SQL-совместимых БД
• Компиляция схем для реляционных БД
• DBMI Веб-интерфейс для управления
• MongoDB
• MySQL
Доступ к БД / DBMI
Масштабирование
Структура файлов
Маршрутизация URL
Конфигурация
Создание API
Шаблоны
Отдача статики
События (SSE)
Доступ к БД
Плагины

18
Плагины
Масштабирование
Структура файлов
Маршрутизация URL
Конфигурация
Создание API
Шаблоны
Отдача статики
События (SSE)
Доступ к БД
Плагины

19

• плагин почты (используется nodemailer, multiparty)
• плагин geoip (используется geoip-lite, ставится отдельно)
• плагин CMS (находится в разработке)
• плагин системы пользовательских прав
• плагин npm (ставится отдельно)
Ссылки и контакты
Масштабирование
Структура файлов
Маршрутизация URL
Конфигурация
Создание API
Шаблоны
Отдача статики
События (SSE)
Доступ к БД
Плагины

20

https://npmjs.org/package/impress
https://github.com/tshemsedinov/impress
http://blog.aumcode.com
http://bit.ly/1cSdTF3 (NFX, AUM, UNISTACK)

mailto:timur.shemsedinov@gmail.com
skype:timur.shemsedinov
npm install impress

More Related Content

PPTX
Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...
PPTX
Node.js введение в технологию, КПИ #ITmeetingKPI
PDF
Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий...
PPTX
Метапрограммирование с примерами на JavaScript
PDF
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
ODP
Nginx Igor Sysoev
PDF
Консольные приложения на Go
PDF
Как превратить приложение в платформу
Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...
Node.js введение в технологию, КПИ #ITmeetingKPI
Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий...
Метапрограммирование с примерами на JavaScript
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Nginx Igor Sysoev
Консольные приложения на Go
Как превратить приложение в платформу

What's hot (20)

PDF
09 - Web-технологии. MVC фреймворки
PDF
Анатомия веб сервиса (HighLoad-2014)
PPTX
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
PDF
Анатомия веб-сервиса (РИТ-2014)
PDF
Клиентские приложения под нагрузкой (HighLoad 2014)
PDF
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
PDF
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
PPTX
RAD на Java: как устроена CUBA Platform?
PDF
Компиляция скриптов PHP. Алексей Романенко
PPTX
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
PPT
PPTX
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
PDF
Опыт разработки и тестирования RESTful JSON сервиса
PDF
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
PDF
Архитектура HAWQ / Алексей Грищенко (Pivotal)
PDF
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...
PDF
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
PPTX
Docker в работе: взгляд на использование в Badoo через год
PDF
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014
PPTX
Простой и кросс-платформенный WEB-сервер на .NET
09 - Web-технологии. MVC фреймворки
Анатомия веб сервиса (HighLoad-2014)
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
Анатомия веб-сервиса (РИТ-2014)
Клиентские приложения под нагрузкой (HighLoad 2014)
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
RAD на Java: как устроена CUBA Platform?
Компиляция скриптов PHP. Алексей Романенко
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Опыт разработки и тестирования RESTful JSON сервиса
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Архитектура HAWQ / Алексей Грищенко (Pivotal)
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Docker в работе: взгляд на использование в Badoo через год
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014
Простой и кросс-платформенный WEB-сервер на .NET
Ad

Similar to Impress Application Server for node.js (ru) (20)

PDF
Разработка мобильного и веб интерфейса для Caché
PDF
Web and mobile development for intersystems caché, Eduard Lebedyuk
PPT
Open Source Testing Framework: real project example and best practices
PPT
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
PDF
Abf
PPTX
Мировые информационные ресурсы. Лекция 5
PDF
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
PDF
Что нового в ASP.NET 5
PPT
4 особенности платформы microsoft .net для разработки корпоративных систем
PDF
Экскурс в мир WEB разработки
PPTX
ASP.NET Web API
PPTX
Описание и архитектура TFS 2008
PPT
Hivext 04.2009
PPT
Tfs Overview And Architecture (www.cmcons.com)
PPT
New SpyLOG architechture (Highload 2008)
PDF
Разработка веб-сервисов осень 2013 лекция 8
PDF
C# Web. Занятие 01.
PPTX
АРМ - платформа разработки проекта "Госархивы СПб"
PPT
Hivext - platform web-services, platform web-applications
PPTX
Новые возможности развертывания и масштабирования open source приложений в Az...
Разработка мобильного и веб интерфейса для Caché
Web and mobile development for intersystems caché, Eduard Lebedyuk
Open Source Testing Framework: real project example and best practices
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Abf
Мировые информационные ресурсы. Лекция 5
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
Что нового в ASP.NET 5
4 особенности платформы microsoft .net для разработки корпоративных систем
Экскурс в мир WEB разработки
ASP.NET Web API
Описание и архитектура TFS 2008
Hivext 04.2009
Tfs Overview And Architecture (www.cmcons.com)
New SpyLOG architechture (Highload 2008)
Разработка веб-сервисов осень 2013 лекция 8
C# Web. Занятие 01.
АРМ - платформа разработки проекта "Госархивы СПб"
Hivext - platform web-services, platform web-applications
Новые возможности развертывания и масштабирования open source приложений в Az...
Ad

More from Timur Shemsedinov (20)

PDF
How to use Chat GPT in JavaScript optimizations for Node.js
PDF
IT Revolution in 2023-2024: AI, GPT, business transformation, future professi...
PDF
Multithreading in Node.js and JavaScript
PDF
Node.js threads for I/O-bound tasks
PDF
Node.js Меньше сложности, больше надежности Holy.js 2021
PDF
Rethinking low-code
PDF
Hat full of developers
PDF
FwDays 2021: Metarhia Technology Stack for Node.js
PDF
Node.js for enterprise - JS Conference
PDF
Node.js for enterprise 2021 - JavaScript Fwdays 3
PDF
Node.js in 2021
PDF
Node.js middleware: Never again!
PDF
Patterns and antipatterns
PDF
Race-conditions-web-locks-and-shared-memory
PDF
Asynchronous programming and mutlithreading
PDF
Node.js in 2020 - part 3
PDF
Node.js in 2020 - part 2
PDF
Information system structure and architecture
PDF
Node.js in 2020 - part 1
PDF
Web Locks API
How to use Chat GPT in JavaScript optimizations for Node.js
IT Revolution in 2023-2024: AI, GPT, business transformation, future professi...
Multithreading in Node.js and JavaScript
Node.js threads for I/O-bound tasks
Node.js Меньше сложности, больше надежности Holy.js 2021
Rethinking low-code
Hat full of developers
FwDays 2021: Metarhia Technology Stack for Node.js
Node.js for enterprise - JS Conference
Node.js for enterprise 2021 - JavaScript Fwdays 3
Node.js in 2021
Node.js middleware: Never again!
Patterns and antipatterns
Race-conditions-web-locks-and-shared-memory
Asynchronous programming and mutlithreading
Node.js in 2020 - part 3
Node.js in 2020 - part 2
Information system structure and architecture
Node.js in 2020 - part 1
Web Locks API

Impress Application Server for node.js (ru)