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

1	
  

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

2	
  

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

3	
  

Impress	
  
ApplicaZon	
  
Server	
  

HTTP	
  

С2	
  

С1	
  

С3	
  

IPC	
  

C1N1	
   C1N2	
  

C1N3	
  

C2N1	
   C2N2	
  

C2N3	
  

C3N1	
   C3N2	
  

ØMQ	
  
pub/sub	
  +	
  req/rep	
  

С0	
  

Impress	
  Cloud	
  Controller	
  
Структура	
  файлов	
  
Установка:	
  
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)	
  
Доступ	
  к	
  БД	
  
Плагины	
  

16	
  

Client2	
  

Client3	
  

…	
  

ClientN	
  

HTTP/SSE	
  

С2	
  

С1	
  

С3	
  

IPC	
  

C1N1	
   C1N2	
  

C1N3	
  

C2N1	
   C2N2	
  

C2N3	
  

C3N1	
   C3N2	
  

ØMQ	
  
pub/sub	
  +	
  req/rep	
  

С0	
  

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

17	
  

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

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

19	
  

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

20	
  

h‘ps://npmjs.org/package/impress	
  
h‘ps://github.com/tshemsedinov/impress	
  
	
  
mailto:Zmur.shemsedinov@gmail.com	
  
skype:Zmur.shemsedinov	
  
	
  
npm	
  install	
  impress	
  

С3	
  

C3N1
	
   C3
N2	
  
C3N

More Related Content

What's hot

Отказоустойчивые решения SQL
Отказоустойчивые решения SQLОтказоустойчивые решения SQL
Отказоустойчивые решения SQL
Andrey Korshikov
 
Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...
Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...
Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...
it-people
 
сергей спиридонов
сергей спиридоновсергей спиридонов
сергей спиридонов
kuchinskaya
 

What's hot (19)

Мировые информационные ресурсы. Лекция 5
Мировые информационные ресурсы. Лекция 5Мировые информационные ресурсы. Лекция 5
Мировые информационные ресурсы. Лекция 5
 
REST
RESTREST
REST
 
Отказоустойчивые решения SQL
Отказоустойчивые решения SQLОтказоустойчивые решения SQL
Отказоустойчивые решения SQL
 
Александр Киракозов "Архитектура загрузчика Яндекс.Диска"
Александр Киракозов "Архитектура загрузчика Яндекс.Диска"Александр Киракозов "Архитектура загрузчика Яндекс.Диска"
Александр Киракозов "Архитектура загрузчика Яндекс.Диска"
 
Новые возможности развертывания и масштабирования open source приложений в Az...
Новые возможности развертывания и масштабирования open source приложений в Az...Новые возможности развертывания и масштабирования open source приложений в Az...
Новые возможности развертывания и масштабирования open source приложений в Az...
 
Highload 2009
Highload 2009Highload 2009
Highload 2009
 
Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...
Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...
Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...
 
Мировые информационные ресурсы. Лекция 4
Мировые информационные ресурсы. Лекция 4Мировые информационные ресурсы. Лекция 4
Мировые информационные ресурсы. Лекция 4
 
Нагрузочное тестирование API. Как летать, а не ползать?
Нагрузочное тестирование API. Как летать, а не ползать?Нагрузочное тестирование API. Как летать, а не ползать?
Нагрузочное тестирование API. Как летать, а не ползать?
 
сергей спиридонов
сергей спиридоновсергей спиридонов
сергей спиридонов
 
01 server definition
01 server definition01 server definition
01 server definition
 
Реализация REST и SOAP сервисов с помощью WCF
Реализация REST и SOAP сервисов с помощью WCFРеализация REST и SOAP сервисов с помощью WCF
Реализация REST и SOAP сервисов с помощью WCF
 
Андрей Лузин
Андрей ЛузинАндрей Лузин
Андрей Лузин
 
RAD на Java: как устроена CUBA Platform?
RAD на Java: как устроена  CUBA Platform?RAD на Java: как устроена  CUBA Platform?
RAD на Java: как устроена CUBA Platform?
 
Построение Read Model-ей с использованием потоков событий
Построение Read Model-ей с использованием потоков событийПостроение Read Model-ей с использованием потоков событий
Построение Read Model-ей с использованием потоков событий
 
Юрий Буянов «Архитектура Goozy»
Юрий Буянов «Архитектура Goozy»Юрий Буянов «Архитектура Goozy»
Юрий Буянов «Архитектура Goozy»
 
Сервер «Аллодов Онлайн». Архитектура и особенности разработки.
Сервер «Аллодов Онлайн». Архитектура и особенности разработки. Сервер «Аллодов Онлайн». Архитектура и особенности разработки.
Сервер «Аллодов Онлайн». Архитектура и особенности разработки.
 
Браузерные API обмена данными: какие и зачем
Браузерные API обмена данными: какие и зачемБраузерные API обмена данными: какие и зачем
Браузерные API обмена данными: какие и зачем
 
03 web server_architecture_ru
03 web server_architecture_ru03 web server_architecture_ru
03 web server_architecture_ru
 

Similar to Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий полный набор инструментов для создания прикладного програ

Roman Zdebskiy - Windows Azure
Roman Zdebskiy - Windows AzureRoman Zdebskiy - Windows Azure
Roman Zdebskiy - Windows Azure
Andrew Mayorov
 
4 особенности платформы microsoft .net для разработки корпоративных систем
4 особенности платформы microsoft .net для разработки корпоративных систем4 особенности платформы microsoft .net для разработки корпоративных систем
4 особенности платформы microsoft .net для разработки корпоративных систем
KewpaN
 
Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169
Media Gorod
 

Similar to Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий полный набор инструментов для создания прикладного програ (20)

09 - Web-технологии. MVC фреймворки
09 - Web-технологии. MVC фреймворки09 - Web-технологии. MVC фреймворки
09 - Web-технологии. MVC фреймворки
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practices
 
Roman Zdebskiy - Windows Azure
Roman Zdebskiy - Windows AzureRoman Zdebskiy - Windows Azure
Roman Zdebskiy - Windows Azure
 
Tfs Overview And Architecture (www.cmcons.com)
Tfs Overview And Architecture (www.cmcons.com)Tfs Overview And Architecture (www.cmcons.com)
Tfs Overview And Architecture (www.cmcons.com)
 
Развитие программной платформы Cisco WAN Automation Engine
Развитие программной платформы Cisco WAN Automation EngineРазвитие программной платформы Cisco WAN Automation Engine
Развитие программной платформы Cisco WAN Automation Engine
 
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
 
Описание и архитектура TFS 2008
Описание и архитектура TFS 2008Описание и архитектура TFS 2008
Описание и архитектура TFS 2008
 
Инструментарий для создания дистрибутивов продуктов | Владимир Селин
Инструментарий для создания дистрибутивов продуктов | Владимир СелинИнструментарий для создания дистрибутивов продуктов | Владимир Селин
Инструментарий для создания дистрибутивов продуктов | Владимир Селин
 
Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработки
 
Governance of content
Governance of contentGovernance of content
Governance of content
 
Основные аспекты управления веб-проектом в Microsoft Azure Websites
Основные аспекты управления веб-проектом в Microsoft Azure WebsitesОсновные аспекты управления веб-проектом в Microsoft Azure Websites
Основные аспекты управления веб-проектом в Microsoft Azure Websites
 
4 особенности платформы microsoft .net для разработки корпоративных систем
4 особенности платформы microsoft .net для разработки корпоративных систем4 особенности платформы microsoft .net для разработки корпоративных систем
4 особенности платформы microsoft .net для разработки корпоративных систем
 
New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)
 
Microsoft Virtualization(Plex)
Microsoft Virtualization(Plex)Microsoft Virtualization(Plex)
Microsoft Virtualization(Plex)
 
Что нового в ASP.NET 5
Что нового в ASP.NET 5Что нового в ASP.NET 5
Что нового в ASP.NET 5
 
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
 
Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169
 
Доставка данных в реальном времени.
Доставка данных в реальном времени. Доставка данных в реальном времени.
Доставка данных в реальном времени.
 
MS TFS 2010 - Обзор и архитектура
MS TFS 2010 - Обзор и архитектураMS TFS 2010 - Обзор и архитектура
MS TFS 2010 - Обзор и архитектура
 

More from GeeksLab Odessa

DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
GeeksLab Odessa
 
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
GeeksLab Odessa
 
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
GeeksLab Odessa
 
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
GeeksLab Odessa
 
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
GeeksLab Odessa
 

More from GeeksLab Odessa (20)

DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
 
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
 
DataScience Lab 2017_Блиц-доклад_Турский Виктор
DataScience Lab 2017_Блиц-доклад_Турский ВикторDataScience Lab 2017_Блиц-доклад_Турский Виктор
DataScience Lab 2017_Блиц-доклад_Турский Виктор
 
DataScience Lab 2017_Обзор методов детекции лиц на изображение
DataScience Lab 2017_Обзор методов детекции лиц на изображениеDataScience Lab 2017_Обзор методов детекции лиц на изображение
DataScience Lab 2017_Обзор методов детекции лиц на изображение
 
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
 
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладDataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-доклад
 
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладDataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-доклад
 
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладDataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-доклад
 
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
 
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
 
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
 
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
 
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
 
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
 
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
 
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
 
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
 
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
 
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
 
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
 

Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий полный набор инструментов для создания прикладного програ

  • 1. Многофункциональный  сервер  приложений,        обеспечивающий  среду  запуска,  и  дающий                полный  набор  инструментов  для  создания                      прикладного  программного  обеспечения  
  • 2. Масштабирование   Масштабирование   Структура  файлов   Маршрутизация  URL   Конфигурация   Создание  API   Шаблоны   Отдача  статики   События  (SSE)   Доступ  к  БД   Плагины   1   Несколько  приложений   •   на  одном  сервере   •   в  одном  процессе  ноды   •   на  одном  порту   •   на  одном  домене  (разные  пути)   Одно  приложение   •   несколько  процессов  на  одном  сервере   •   несколько  процессов  на  разных  серверах   •   имеет  несколько  доменов  (виртуалхостов)   •   на  нескольких  сетевых  интерфейсах   •   на  нескольких  портах   •   несколько  протоколов  
  • 3. Масштабирование   Масштабирование   Структура  файлов   Маршрутизация  URL   Конфигурация   Создание  API   Шаблоны   Отдача  статики   События  (SSE)   Доступ  к  БД   Плагины   2   Стратегии  разворачивания:   •   Все  в  одном  процессе  (для  разработки):        cluster.strategy:  "single"   •   Свой  процесс  ноды  для  каждой  пары        хост/порт:  cluster.strategy:  "specializaZon"   •   Кластер  на  одном  сервере  (master+workers)        cluster:  {  strategy:  "mulZple",  workers:  N  }   •   Кластер  на  1  сервере  с  прилипанием  по  IP        cluster.strategy:  "sZcky"   •   Группа  серверов  с  кластером  на  каждом:        strategy:  "specializaZon",  nginx        обеспечивает  балансировку  и  прилипание   •   Прикладное  облако:  аппаратный        балансировщик,  несколько  кластеров  с        strategy:  "mulZple",  ØMQ,  impress  controller  
  • 4. Масштабирование   Load  Balancer   Масштабирование   Структура  файлов   Маршрутизация  URL   Конфигурация   Создание  API   Шаблоны   Отдача  статики   События  (SSE)   Доступ  к  БД   Плагины   3   Impress   ApplicaZon   Server   HTTP   С2   С1   С3   IPC   C1N1   C1N2   C1N3   C2N1   C2N2   C2N3   C3N1   C3N2   ØMQ   pub/sub  +  req/rep   С0   Impress  Cloud  Controller  
  • 5. Структура  файлов   Установка:   npm  install  impress   После  этого  имеем:   Масштабирование   Структура  файлов   Маршрутизация  URL   Конфигурация   Создание  API   Шаблоны   Отдача  статики   События  (SSE)   Доступ  к  БД   Плагины   4   Порядок  обработки   •   access.js   •   request.js   •   get.js,  post.js...   •   html.template  
  • 6. Маршрутизация  URL   Масштабирование   Структура  файлов   Маршрутизация  URL   Конфигурация   Создание  API   Шаблоны   Отдача  статики   События  (SSE)   Доступ  к  БД   Плагины   5   Маршрутизация  URL   •   создание  обработчиков   •   наследование  обработчиков  и  шаблонов   •   типы  возвращаемых  данных  (HTLM,  JSON…)   •   запуск  обработчиков  и  шаблонов  из  памяти   •   слежение  за  файловой  системой   •   консолидация  изменений  файлов   •   несколько  копий  обработчиков  в  памяти   •   URL-­‐реврайтинг   •   перенаправление  и  reverse-­‐proxy  
  • 7. Конфигурация   Масштабирование   Структура  файлов   Маршрутизация  URL   Конфигурация   Создание  API   Шаблоны   Отдача  статики   События  (SSE)   Доступ  к  БД   Плагины   6   Конфигуация:   •   config.js   •   слежение  за  файловой  системой   •   препроцессинг  конфигурации  
  • 8. Конфигурация   Масштабирование   Структура  файлов   Маршрутизация  URL   Конфигурация   Создание  API   Шаблоны   Отдача  статики   События  (SSE)   Доступ  к  БД   Плагины   7  
  • 9. Конфигурация   Масштабирование   Структура  файлов   Маршрутизация  URL   Конфигурация   Создание  API   Шаблоны   Отдача  статики   События  (SSE)   Доступ  к  БД   Плагины   8  
  • 10. Создание  API   Масштабирование   Структура  файлов   Маршрутизация  URL   Конфигурация   Создание  API   Шаблоны   Отдача  статики   События  (SSE)   Доступ  к  БД   Плагины   9  
  • 11. Создание  API   Масштабирование   Структура  файлов   Маршрутизация  URL   Конфигурация   Создание  API   Шаблоны   Отдача  статики   События  (SSE)   Доступ  к  БД   Плагины   10   •   RPC  API  (Stateful,  состояние  может          сохраняться  в  памяти  между  запросами)   •   REST  API  (Stateless,  каждый  запрос          независимый,  состояние  не  сохраняется)     Типы  состояния:   •   общее  состояние  системы   •   состояние  сессии   •   состояние  пользователя   •   состояние  объекта  предметной  области  
  • 12. Создание  API   Масштабирование   Структура  файлов   Маршрутизация  URL   Конфигурация   Создание  API   Шаблоны   Отдача  статики   События  (SSE)   Доступ  к  БД   Плагины   11  
  • 13. Шаблоны   Масштабирование   Структура  файлов   Маршрутизация  URL   Конфигурация   Создание  API   Шаблоны   Отдача  статики   События  (SSE)   Доступ  к  БД   Плагины   12  
  • 14. Шаблоны   Масштабирование   Структура  файлов   Маршрутизация  URL   Конфигурация   Создание  API   Шаблоны   Отдача  статики   События  (SSE)   Доступ  к  БД   Плагины   13  
  • 15. Отдача  статики   Масштабирование   Структура  файлов   Маршрутизация  URL   Конфигурация   Создание  API   Шаблоны   Отдача  статики   События  (SSE)   Доступ  к  БД   Плагины   14   •   Отдача  статических  файлов        прямо  из  оперативной  памяти   •   Обновление  кеша  при  изменении        файлов  на  диске   •   Удаление  кеша  при  удалении        файлов  и  каталогов  с  диска   •   Сжатие  gzip  (кроме  маленьких  файлов)        и  сохранение  в  сжатом  виде  в  памяти   •   Использование  HTTP  if-­‐modified-­‐since        и  выдача  304  Not  modified   •   Минификация  клиентского  JavaScript        (при  помощи  плагина  "uglify-­‐js")  
  • 16. События  SSE   Client1   Масштабирование   Структура  файлов   Маршрутизация  URL   Конфигурация   Создание  API   Шаблоны   Отдача  статики   События  (SSE)   Доступ  к  БД   Плагины   15   Client2   Client3   С1   IPC   C1N1   C1N2   C1N3   …   ClientN  
  • 17. События  SSE   Client1   Масштабирование   Структура  файлов   Маршрутизация  URL   Конфигурация   Создание  API   Шаблоны   Отдача  статики   События  (SSE)   Доступ  к  БД   Плагины   16   Client2   Client3   …   ClientN   HTTP/SSE   С2   С1   С3   IPC   C1N1   C1N2   C1N3   C2N1   C2N2   C2N3   C3N1   C3N2   ØMQ   pub/sub  +  req/rep   С0   Impress  Cloud  Controller  
  • 18. Доступ  к  БД   Масштабирование   Структура  файлов   Маршрутизация  URL   Конфигурация   Создание  API   Шаблоны   Отдача  статики   События  (SSE)   Доступ  к  БД   Плагины   17   •   Драйвера  сделаны  плагинами  db.*.js   •   Удобства  для  SQL-­‐совместимых  БД   •   Компиляция  схем  для  реляционных  БД   •   DBMI  Веб-­‐интерфейс  для  управления   •   MongoDB   •   MySQL  
  • 19. Доступ  к  БД  /  DBMI   Масштабирование   Структура  файлов   Маршрутизация  URL   Конфигурация   Создание  API   Шаблоны   Отдача  статики   События  (SSE)   Доступ  к  БД   Плагины   18  
  • 20. Плагины   Масштабирование   Структура  файлов   Маршрутизация  URL   Конфигурация   Создание  API   Шаблоны   Отдача  статики   События  (SSE)   Доступ  к  БД   Плагины   19   •   плагин  почты  (используется  nodemailer,  mulZparty)   •   плагин  geoip  (используется  geoip-­‐lite,  ставится  отдельно)   •   плагин  CMS  (находится  в  разработке)   •   плагин  системы  пользовательских  прав   •   плагин  npm  (ставится  отдельно)  
  • 21. Ссылки  и  контакты   Масштабирование   Структура  файлов   Маршрутизация  URL   Конфигурация   Создание  API   Шаблоны   Отдача  статики   События  (SSE)   Доступ  к  БД   Плагины   20   h‘ps://npmjs.org/package/impress   h‘ps://github.com/tshemsedinov/impress     mailto:Zmur.shemsedinov@gmail.com   skype:Zmur.shemsedinov     npm  install  impress   С3   C3N1   C3 N2   C3N