SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
Frontend и
Backend
Общая архитектура
2
Задачи Frontend (web) сервера
•   отдача статических документов
•   проксирование (reverse proxy)
•   балансировка нагрузки
•   кеширование
•   сборка SSI
•   авторизация, SSL, нарезка картинок, gzip
3
Reverse proxy
•   frontend (медленно) читает запрос от клиента
•   frontend (быстро) передает запрос свободному backend
•   backend генерирует страницу
•   backend (быстро) возвращает ответ frontend серверу
•   frontend (медленно) возвращает ответ клиенту
Результат: backend занят минимально возможное время.
4
Настройка
проксирования
в nginx
Настройка проксирования в nginx
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
location / {
proxy_pass http://backend;
}
location /partner/ {
proxy_pass http://www.partner.com;
}
location ~ .www?w?$ {
root /www/static;
}
6
Настройка upstream в nginx
upstream backend {
server back1.example.com:8080 weight=1 max_fails=3;
server back2.example.com:8080 weight=2;
server unix:/tmp/backend.sock;
server backup1.example.com:8080 backup;
server backup2.example.com:8080 backup;
}
7
Application
сервер
Backend (application) сервер
Роль application сервера заключается в исполнении бизнес-логики
приложения и генерации динамических документов.
На каждый HTTP запрос application сервер запускает некоторый
обработчик в приложении. Это может быть функция, класс или
программа, в зависимости от технологии.
9
Протоколы запуска приложения
•   Servlets и др. специализированные API
•   mod_perl, mod_python, mod_php
•   CGI
•   FastCGI
•   SCGI
•   PSGI, WSGI, Rack
10
CGI
CGI - Common Gateway Interface
•   Метод, QueryString, заголовки запроса - через переменные
окружения
•   Тело запроса передается через STDIN
•   Заголовки и тело ответа возвращаются через STDOUT
•   HTTP код ответа передается через псевдозаголовок Status
•   Поток ошибок STDERR направляется в лог ошибок сервера
12
13
Переменные окружения CGI
•   REQUEST_METHOD - метод запроса
•   PATH_INFO - путь из URL
•   QUERY_STRING - фрагмент URL после ?
•   REMOTE_ADDR - IP адрес пользователя
•   CONTENT_LENGTH - длина тела запроса
•   HTTP_COOKIE - Заголовок Cookie
•   HTTP_ANY_HEADER_NAME - любой другой HTTP заголовок
14
FastCGI и SCGI
FastCGI и SCGI
Основная проблема CGI - низкая производительность. Протоколы
FastCGI и SCGI призваны решить эту проблему путем демонизации
приложения. Иногда это возможно сделать даже без изменения
кода CGI приложения.
16
17
WSGI
WSGI - актуальный протокол
WSGI, PSGI, Rack - протоколы вызова функции обработчика из
application сервера. Сам application server при этом может
выполняться в отдельном процессе или совпадать с web сервером.
Как правило, при использовании этих протоколов в качестве
application сервера выступает отдельный легковесный процесс.
19
WSGI - обработчик
def wsgi_application(environ, start_response):
# бизнес-логика
status = '200 OK'
headers = [
('Content-Type', 'text/plain')
]
body = 'Hello, world!'
start_response(status, headers )
return [ body ]
20
Web Server Gateway Interface
•   Обработчик - функция или класс (callable)
•   Метод, QueryString, заголовки запроса - через аргумент environ
•   Тело запроса передается через file-handle wsgi.input
•   HTTP код ответа и заголовки ответа передаются через вызов
функции start_response
•   Тело ответа возвращается в виде списка (iterable) из обработчика
•   Поток ошибок должен быть направлен в file-handle wsgi.stderr
21
Переменные environ
•   CGI-like переменные: REQUEST_URI , ...
•   wsgi.version - версия WSGI протокола
•   wsgi.url_scheme - схема текущего URL: https или http
•   wsgi.input - file-handle для чтения тела запроса
•   wsgi.errors - file-handle для вывода ошибок
•   wsgi.multithreaded - ...
•   wsgi.multiprocess - ...
22
Развертывание WSGI
23
Что ложится на приложение ?
•   Анализ PATH_INFO и выбор конкретного обработчика
•   Разбор конкретных заголовков, например Cookie
•   Разбор QUERY_STRING
•   Разбор тела запроса:
•   x-www-form-urlencoded
•   multipart/form-data
•   Вывод правильных заголовков ответа
24

Mais conteúdo relacionado

Mais procurados

07 virtual hosts_ru
07 virtual hosts_ru07 virtual hosts_ru
07 virtual hosts_rumcroitor
 
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»Tanya Denisyuk
 
04 web server_deployment_ru
04 web server_deployment_ru04 web server_deployment_ru
04 web server_deployment_rumcroitor
 
03 web server_architecture_ru
03 web server_architecture_ru03 web server_architecture_ru
03 web server_architecture_rumcroitor
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonAndrey Smirnov
 
Доставка данных в реальном времени.
Доставка данных в реальном времени. Доставка данных в реальном времени.
Доставка данных в реальном времени. beshkenadze
 
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...Ontico
 
06 php instalation_ru
06 php instalation_ru06 php instalation_ru
06 php instalation_rumcroitor
 
Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)Andrey Smirnov
 
05 db server_deployment_ru
05 db server_deployment_ru05 db server_deployment_ru
05 db server_deployment_rumcroitor
 
«Разработка и оптимизация высоконагруженного проекта»
«Разработка и оптимизация высоконагруженного проекта» «Разработка и оптимизация высоконагруженного проекта»
«Разработка и оптимизация высоконагруженного проекта» Гузель Рахимова
 
Михаил Юматов: SaltStack
Михаил Юматов: SaltStackМихаил Юматов: SaltStack
Михаил Юматов: SaltStackit-people
 
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...Ontico
 
WebSockets
WebSocketsWebSockets
WebSocketsplusnin
 
«Композитный сайт. Ускорение отдачи сайта в 100 раз»
«Композитный сайт. Ускорение отдачи сайта в 100 раз» «Композитный сайт. Ускорение отдачи сайта в 100 раз»
«Композитный сайт. Ускорение отдачи сайта в 100 раз» Гузель Рахимова
 
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.Alexander Frolov
 

Mais procurados (20)

Chef
ChefChef
Chef
 
07 virtual hosts_ru
07 virtual hosts_ru07 virtual hosts_ru
07 virtual hosts_ru
 
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
 
04 web server_deployment_ru
04 web server_deployment_ru04 web server_deployment_ru
04 web server_deployment_ru
 
03 web server_architecture_ru
03 web server_architecture_ru03 web server_architecture_ru
03 web server_architecture_ru
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в Python
 
Доставка данных в реальном времени.
Доставка данных в реальном времени. Доставка данных в реальном времени.
Доставка данных в реальном времени.
 
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
 
Major mistakes in site moving
Major mistakes in site movingMajor mistakes in site moving
Major mistakes in site moving
 
WWW
WWWWWW
WWW
 
06 php instalation_ru
06 php instalation_ru06 php instalation_ru
06 php instalation_ru
 
Применяем Ansible
Применяем AnsibleПрименяем Ansible
Применяем Ansible
 
Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)
 
05 db server_deployment_ru
05 db server_deployment_ru05 db server_deployment_ru
05 db server_deployment_ru
 
«Разработка и оптимизация высоконагруженного проекта»
«Разработка и оптимизация высоконагруженного проекта» «Разработка и оптимизация высоконагруженного проекта»
«Разработка и оптимизация высоконагруженного проекта»
 
Михаил Юматов: SaltStack
Михаил Юматов: SaltStackМихаил Юматов: SaltStack
Михаил Юматов: SaltStack
 
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
 
WebSockets
WebSocketsWebSockets
WebSockets
 
«Композитный сайт. Ускорение отдачи сайта в 100 раз»
«Композитный сайт. Ускорение отдачи сайта в 100 раз» «Композитный сайт. Ускорение отдачи сайта в 100 раз»
«Композитный сайт. Ускорение отдачи сайта в 100 раз»
 
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
 

Destaque

05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколы05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколыRoman Brovko
 
презентация лекция 3 (1)
презентация лекция 3 (1)презентация лекция 3 (1)
презентация лекция 3 (1)Victor Salimgareev
 
презентация 6
презентация 6презентация 6
презентация 6Rusov1
 
презентация 4. введение в css
презентация 4. введение в cssпрезентация 4. введение в css
презентация 4. введение в cssRusov1
 
Lesson1
Lesson1Lesson1
Lesson1jinol
 
Эссе по теме браузеры
Эссе по теме браузерыЭссе по теме браузеры
Эссе по теме браузерыMaxim Moroz
 
Обзор интернет браузеров
Обзор интернет браузеровОбзор интернет браузеров
Обзор интернет браузеровAlina Kolosova
 
12 - Web-технологии. Django модели
12 - Web-технологии. Django модели12 - Web-технологии. Django модели
12 - Web-технологии. Django моделиRoman Brovko
 
16 - Web-технологии. Технология AJAX
16 - Web-технологии. Технология AJAX16 - Web-технологии. Технология AJAX
16 - Web-технологии. Технология AJAXRoman Brovko
 
11 - Web-технологии. Работа с СУБД
11 - Web-технологии. Работа с СУБД11 - Web-технологии. Работа с СУБД
11 - Web-технологии. Работа с СУБДRoman Brovko
 
66 - Spring. Spring и JSF
66 - Spring. Spring и JSF66 - Spring. Spring и JSF
66 - Spring. Spring и JSFRoman Brovko
 
14 - Web-технологии. Обработка форм
14 - Web-технологии. Обработка форм14 - Web-технологии. Обработка форм
14 - Web-технологии. Обработка формRoman Brovko
 
13 - Web-технологии. Отображение данных
13 - Web-технологии. Отображение данных13 - Web-технологии. Отображение данных
13 - Web-технологии. Отображение данныхRoman Brovko
 
Virtual Security Lab Setup - OWASP Broken Web Apps, Webgoat, & ZAP
Virtual Security Lab Setup - OWASP Broken Web Apps, Webgoat, & ZAPVirtual Security Lab Setup - OWASP Broken Web Apps, Webgoat, & ZAP
Virtual Security Lab Setup - OWASP Broken Web Apps, Webgoat, & ZAPMichael Coates
 
Warren 10 Crucial Reasons For Warren Buffett’s Unstoppable Success
Warren 10 Crucial Reasons For Warren Buffett’s Unstoppable SuccessWarren 10 Crucial Reasons For Warren Buffett’s Unstoppable Success
Warren 10 Crucial Reasons For Warren Buffett’s Unstoppable SuccessReach Markets
 

Destaque (18)

05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколы05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколы
 
презентация лекция 3 (1)
презентация лекция 3 (1)презентация лекция 3 (1)
презентация лекция 3 (1)
 
презентация 6
презентация 6презентация 6
презентация 6
 
презентация 4. введение в css
презентация 4. введение в cssпрезентация 4. введение в css
презентация 4. введение в css
 
Lesson1
Lesson1Lesson1
Lesson1
 
Эссе по теме браузеры
Эссе по теме браузерыЭссе по теме браузеры
Эссе по теме браузеры
 
Обзор интернет браузеров
Обзор интернет браузеровОбзор интернет браузеров
Обзор интернет браузеров
 
браузеры
браузерыбраузеры
браузеры
 
Brauzery
BrauzeryBrauzery
Brauzery
 
12 - Web-технологии. Django модели
12 - Web-технологии. Django модели12 - Web-технологии. Django модели
12 - Web-технологии. Django модели
 
16 - Web-технологии. Технология AJAX
16 - Web-технологии. Технология AJAX16 - Web-технологии. Технология AJAX
16 - Web-технологии. Технология AJAX
 
11 - Web-технологии. Работа с СУБД
11 - Web-технологии. Работа с СУБД11 - Web-технологии. Работа с СУБД
11 - Web-технологии. Работа с СУБД
 
66 - Spring. Spring и JSF
66 - Spring. Spring и JSF66 - Spring. Spring и JSF
66 - Spring. Spring и JSF
 
14 - Web-технологии. Обработка форм
14 - Web-технологии. Обработка форм14 - Web-технологии. Обработка форм
14 - Web-технологии. Обработка форм
 
13 - Web-технологии. Отображение данных
13 - Web-технологии. Отображение данных13 - Web-технологии. Отображение данных
13 - Web-технологии. Отображение данных
 
Virtual Security Lab Setup - OWASP Broken Web Apps, Webgoat, & ZAP
Virtual Security Lab Setup - OWASP Broken Web Apps, Webgoat, & ZAPVirtual Security Lab Setup - OWASP Broken Web Apps, Webgoat, & ZAP
Virtual Security Lab Setup - OWASP Broken Web Apps, Webgoat, & ZAP
 
Command
CommandCommand
Command
 
Warren 10 Crucial Reasons For Warren Buffett’s Unstoppable Success
Warren 10 Crucial Reasons For Warren Buffett’s Unstoppable SuccessWarren 10 Crucial Reasons For Warren Buffett’s Unstoppable Success
Warren 10 Crucial Reasons For Warren Buffett’s Unstoppable Success
 

Semelhante a 08 - Web-технологии. Архитектура frontend-backend

HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3Technopark
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPITimur Shemsedinov
 
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Ontico
 
Nginx Igor Sysoev
Nginx   Igor SysoevNginx   Igor Sysoev
Nginx Igor SysoevMedia Gorod
 
Николай Сиварев "Приручая сайты"
Николай Сиварев "Приручая сайты"Николай Сиварев "Приручая сайты"
Николай Сиварев "Приручая сайты"Yandex
 
Ускоряем Wordpress: кеширование, CDN, Varnish Cache
Ускоряем Wordpress: кеширование, CDN, Varnish CacheУскоряем Wordpress: кеширование, CDN, Varnish Cache
Ускоряем Wordpress: кеширование, CDN, Varnish CacheIgor Sazonov
 
Phalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP FrameworkPhalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP FrameworkOleksandr Torosh
 
Meet Magento Belarus - Alexander Kaigorodov
Meet Magento Belarus - Alexander KaigorodovMeet Magento Belarus - Alexander Kaigorodov
Meet Magento Belarus - Alexander KaigorodovAmasty
 
Webuibasics - Lesson 3 - Nginx, SSI (in russian)
Webuibasics - Lesson 3 - Nginx, SSI (in russian)Webuibasics - Lesson 3 - Nginx, SSI (in russian)
Webuibasics - Lesson 3 - Nginx, SSI (in russian)xasima
 
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»Tanya Denisyuk
 
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Yandex
 
The Old New ASP.NET
The Old New ASP.NETThe Old New ASP.NET
The Old New ASP.NETVitaly Baum
 
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полнойОмские ИТ-субботники
 
Ice Php Framework Preview Release
Ice Php Framework Preview ReleaseIce Php Framework Preview Release
Ice Php Framework Preview ReleaseDenis Shestakov
 
Максим Дунин, Nginx, Inc.
Максим Дунин, Nginx, Inc.Максим Дунин, Nginx, Inc.
Максим Дунин, Nginx, Inc.Ontico
 
Jiramania презентации @augspb
Jiramania презентации   @augspbJiramania презентации   @augspb
Jiramania презентации @augspbGonchik Tsymzhitov
 
Magento performance
Magento performanceMagento performance
Magento performanceaheadWorks
 
JavaScript-модули "из прошлого в будущее"
JavaScript-модули "из прошлого в будущее"JavaScript-модули "из прошлого в будущее"
JavaScript-модули "из прошлого в будущее"oelifantiev
 

Semelhante a 08 - Web-технологии. Архитектура frontend-backend (20)

HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPI
 
Веб-сервер
Веб-серверВеб-сервер
Веб-сервер
 
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
 
Nginx Igor Sysoev
Nginx   Igor SysoevNginx   Igor Sysoev
Nginx Igor Sysoev
 
Николай Сиварев "Приручая сайты"
Николай Сиварев "Приручая сайты"Николай Сиварев "Приручая сайты"
Николай Сиварев "Приручая сайты"
 
Ускоряем Wordpress: кеширование, CDN, Varnish Cache
Ускоряем Wordpress: кеширование, CDN, Varnish CacheУскоряем Wordpress: кеширование, CDN, Varnish Cache
Ускоряем Wordpress: кеширование, CDN, Varnish Cache
 
Phalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP FrameworkPhalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP Framework
 
Meet Magento Belarus - Alexander Kaigorodov
Meet Magento Belarus - Alexander KaigorodovMeet Magento Belarus - Alexander Kaigorodov
Meet Magento Belarus - Alexander Kaigorodov
 
Webuibasics - Lesson 3 - Nginx, SSI (in russian)
Webuibasics - Lesson 3 - Nginx, SSI (in russian)Webuibasics - Lesson 3 - Nginx, SSI (in russian)
Webuibasics - Lesson 3 - Nginx, SSI (in russian)
 
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
 
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
 
The Old New ASP.NET
The Old New ASP.NETThe Old New ASP.NET
The Old New ASP.NET
 
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
 
Ice Php Framework Preview Release
Ice Php Framework Preview ReleaseIce Php Framework Preview Release
Ice Php Framework Preview Release
 
Speed Up Your Website
Speed Up Your WebsiteSpeed Up Your Website
Speed Up Your Website
 
Максим Дунин, Nginx, Inc.
Максим Дунин, Nginx, Inc.Максим Дунин, Nginx, Inc.
Максим Дунин, Nginx, Inc.
 
Jiramania презентации @augspb
Jiramania презентации   @augspbJiramania презентации   @augspb
Jiramania презентации @augspb
 
Magento performance
Magento performanceMagento performance
Magento performance
 
JavaScript-модули "из прошлого в будущее"
JavaScript-модули "из прошлого в будущее"JavaScript-модули "из прошлого в будущее"
JavaScript-модули "из прошлого в будущее"
 

Mais de Roman Brovko

Individual task Networking
Individual task NetworkingIndividual task Networking
Individual task NetworkingRoman Brovko
 
Networking essentials lect3
Networking essentials lect3Networking essentials lect3
Networking essentials lect3Roman Brovko
 
Gl embedded starterkit_ethernet
Gl embedded starterkit_ethernetGl embedded starterkit_ethernet
Gl embedded starterkit_ethernetRoman Brovko
 
Networking essentials lect2
Networking essentials lect2Networking essentials lect2
Networking essentials lect2Roman Brovko
 
Networking essentials lect1
Networking essentials lect1Networking essentials lect1
Networking essentials lect1Roman Brovko
 
Bare metal training_07_spi_flash
Bare metal training_07_spi_flashBare metal training_07_spi_flash
Bare metal training_07_spi_flashRoman Brovko
 
Bare metal training_06_I2C
Bare metal training_06_I2CBare metal training_06_I2C
Bare metal training_06_I2CRoman Brovko
 
Bare metal training_05_uart
Bare metal training_05_uartBare metal training_05_uart
Bare metal training_05_uartRoman Brovko
 
Bare metal training_04_adc_temp_sensor
Bare metal training_04_adc_temp_sensorBare metal training_04_adc_temp_sensor
Bare metal training_04_adc_temp_sensorRoman Brovko
 
Bare metal training_03_timers_pwm
Bare metal training_03_timers_pwmBare metal training_03_timers_pwm
Bare metal training_03_timers_pwmRoman Brovko
 
Bare metal training_02_le_ds_and_buttons
Bare metal training_02_le_ds_and_buttonsBare metal training_02_le_ds_and_buttons
Bare metal training_02_le_ds_and_buttonsRoman Brovko
 
Bare metal training_01_hello_world
Bare metal training_01_hello_worldBare metal training_01_hello_world
Bare metal training_01_hello_worldRoman Brovko
 
Bare metal training_00_prerequisites
Bare metal training_00_prerequisitesBare metal training_00_prerequisites
Bare metal training_00_prerequisitesRoman Brovko
 
C language lect_23_advanced
C language lect_23_advancedC language lect_23_advanced
C language lect_23_advancedRoman Brovko
 
C language lect_22_advanced
C language lect_22_advancedC language lect_22_advanced
C language lect_22_advancedRoman Brovko
 
C language lect_21_advanced
C language lect_21_advancedC language lect_21_advanced
C language lect_21_advancedRoman Brovko
 
подготовка рабочего окружения
подготовка рабочего окруженияподготовка рабочего окружения
подготовка рабочего окруженияRoman Brovko
 
C language lect_20_advanced
C language lect_20_advancedC language lect_20_advanced
C language lect_20_advancedRoman Brovko
 
C language lect_19_basics
C language lect_19_basicsC language lect_19_basics
C language lect_19_basicsRoman Brovko
 

Mais de Roman Brovko (20)

Individual task Networking
Individual task NetworkingIndividual task Networking
Individual task Networking
 
Networking essentials lect3
Networking essentials lect3Networking essentials lect3
Networking essentials lect3
 
Gl embedded starterkit_ethernet
Gl embedded starterkit_ethernetGl embedded starterkit_ethernet
Gl embedded starterkit_ethernet
 
Networking essentials lect2
Networking essentials lect2Networking essentials lect2
Networking essentials lect2
 
Networking essentials lect1
Networking essentials lect1Networking essentials lect1
Networking essentials lect1
 
Bare metal training_07_spi_flash
Bare metal training_07_spi_flashBare metal training_07_spi_flash
Bare metal training_07_spi_flash
 
Bare metal training_06_I2C
Bare metal training_06_I2CBare metal training_06_I2C
Bare metal training_06_I2C
 
Glesk worshop
Glesk worshopGlesk worshop
Glesk worshop
 
Bare metal training_05_uart
Bare metal training_05_uartBare metal training_05_uart
Bare metal training_05_uart
 
Bare metal training_04_adc_temp_sensor
Bare metal training_04_adc_temp_sensorBare metal training_04_adc_temp_sensor
Bare metal training_04_adc_temp_sensor
 
Bare metal training_03_timers_pwm
Bare metal training_03_timers_pwmBare metal training_03_timers_pwm
Bare metal training_03_timers_pwm
 
Bare metal training_02_le_ds_and_buttons
Bare metal training_02_le_ds_and_buttonsBare metal training_02_le_ds_and_buttons
Bare metal training_02_le_ds_and_buttons
 
Bare metal training_01_hello_world
Bare metal training_01_hello_worldBare metal training_01_hello_world
Bare metal training_01_hello_world
 
Bare metal training_00_prerequisites
Bare metal training_00_prerequisitesBare metal training_00_prerequisites
Bare metal training_00_prerequisites
 
C language lect_23_advanced
C language lect_23_advancedC language lect_23_advanced
C language lect_23_advanced
 
C language lect_22_advanced
C language lect_22_advancedC language lect_22_advanced
C language lect_22_advanced
 
C language lect_21_advanced
C language lect_21_advancedC language lect_21_advanced
C language lect_21_advanced
 
подготовка рабочего окружения
подготовка рабочего окруженияподготовка рабочего окружения
подготовка рабочего окружения
 
C language lect_20_advanced
C language lect_20_advancedC language lect_20_advanced
C language lect_20_advanced
 
C language lect_19_basics
C language lect_19_basicsC language lect_19_basics
C language lect_19_basics
 

08 - Web-технологии. Архитектура frontend-backend

  • 3. Задачи Frontend (web) сервера •   отдача статических документов •   проксирование (reverse proxy) •   балансировка нагрузки •   кеширование •   сборка SSI •   авторизация, SSL, нарезка картинок, gzip 3
  • 4. Reverse proxy •   frontend (медленно) читает запрос от клиента •   frontend (быстро) передает запрос свободному backend •   backend генерирует страницу •   backend (быстро) возвращает ответ frontend серверу •   frontend (медленно) возвращает ответ клиенту Результат: backend занят минимально возможное время. 4
  • 6. Настройка проксирования в nginx proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; location / { proxy_pass http://backend; } location /partner/ { proxy_pass http://www.partner.com; } location ~ .www?w?$ { root /www/static; } 6
  • 7. Настройка upstream в nginx upstream backend { server back1.example.com:8080 weight=1 max_fails=3; server back2.example.com:8080 weight=2; server unix:/tmp/backend.sock; server backup1.example.com:8080 backup; server backup2.example.com:8080 backup; } 7
  • 9. Backend (application) сервер Роль application сервера заключается в исполнении бизнес-логики приложения и генерации динамических документов. На каждый HTTP запрос application сервер запускает некоторый обработчик в приложении. Это может быть функция, класс или программа, в зависимости от технологии. 9
  • 10. Протоколы запуска приложения •   Servlets и др. специализированные API •   mod_perl, mod_python, mod_php •   CGI •   FastCGI •   SCGI •   PSGI, WSGI, Rack 10
  • 11. CGI
  • 12. CGI - Common Gateway Interface •   Метод, QueryString, заголовки запроса - через переменные окружения •   Тело запроса передается через STDIN •   Заголовки и тело ответа возвращаются через STDOUT •   HTTP код ответа передается через псевдозаголовок Status •   Поток ошибок STDERR направляется в лог ошибок сервера 12
  • 13. 13
  • 14. Переменные окружения CGI •   REQUEST_METHOD - метод запроса •   PATH_INFO - путь из URL •   QUERY_STRING - фрагмент URL после ? •   REMOTE_ADDR - IP адрес пользователя •   CONTENT_LENGTH - длина тела запроса •   HTTP_COOKIE - Заголовок Cookie •   HTTP_ANY_HEADER_NAME - любой другой HTTP заголовок 14
  • 16. FastCGI и SCGI Основная проблема CGI - низкая производительность. Протоколы FastCGI и SCGI призваны решить эту проблему путем демонизации приложения. Иногда это возможно сделать даже без изменения кода CGI приложения. 16
  • 17. 17
  • 18. WSGI
  • 19. WSGI - актуальный протокол WSGI, PSGI, Rack - протоколы вызова функции обработчика из application сервера. Сам application server при этом может выполняться в отдельном процессе или совпадать с web сервером. Как правило, при использовании этих протоколов в качестве application сервера выступает отдельный легковесный процесс. 19
  • 20. WSGI - обработчик def wsgi_application(environ, start_response): # бизнес-логика status = '200 OK' headers = [ ('Content-Type', 'text/plain') ] body = 'Hello, world!' start_response(status, headers ) return [ body ] 20
  • 21. Web Server Gateway Interface •   Обработчик - функция или класс (callable) •   Метод, QueryString, заголовки запроса - через аргумент environ •   Тело запроса передается через file-handle wsgi.input •   HTTP код ответа и заголовки ответа передаются через вызов функции start_response •   Тело ответа возвращается в виде списка (iterable) из обработчика •   Поток ошибок должен быть направлен в file-handle wsgi.stderr 21
  • 22. Переменные environ •   CGI-like переменные: REQUEST_URI , ... •   wsgi.version - версия WSGI протокола •   wsgi.url_scheme - схема текущего URL: https или http •   wsgi.input - file-handle для чтения тела запроса •   wsgi.errors - file-handle для вывода ошибок •   wsgi.multithreaded - ... •   wsgi.multiprocess - ... 22
  • 24. Что ложится на приложение ? •   Анализ PATH_INFO и выбор конкретного обработчика •   Разбор конкретных заголовков, например Cookie •   Разбор QUERY_STRING •   Разбор тела запроса: •   x-www-form-urlencoded •   multipart/form-data •   Вывод правильных заголовков ответа 24