Slide 1

Slide 1 text

Валентин Бартенев CodeFest 2018

Slide 2

Slide 2 text

NGINX Unit факты ● 6 сентября 2017 — первая β-версия ● Open-source, лицензия Apache 2.0 - unit.nginx.org ● Поддержка Python, Go, PHP, Ruby и Perl - в планах: Java, node.js, .Net Core ● JSON RESTful API

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

Основные цели ● Упрощение веб-стека ○ Уменьшение числа компонентов ○ Унификация функциональности, сетевого стека, конфигурации ● Ответ современным реалиям ○ RESTful JSON API ○ Динамическая реконфигурация без разрыва соединений, без потери запросов и с минимальным потреблением ресурсов ● Принципы и подходы, проверенные временем ○ Безопасность, стабильность, легковесность, простота, масштабируемость, надежность, производительность

Slide 5

Slide 5 text

Основные цели ● Упрощение веб-стека ○ Уменьшение числа компонентов ○ Унификация функциональности, сетевого стека, конфигурации ● Ответ современным реалиям ○ RESTful JSON API ○ Динамическая реконфигурация без разрыва соединений, без потери запросов и с минимальным потреблением ресурсов ● Принципы и подходы, проверенные временем ○ Безопасность, стабильность, легковесность, простота, масштабируемость, надежность, производительность

Slide 6

Slide 6 text

Меньше компонентов vs.

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

Унификация

Slide 9

Slide 9 text

Unit ≠ Docker Docker – изоляция окружения Unit – унификация окружения Unit + Docker =

Slide 10

Slide 10 text

Основные цели ● Упрощение веб-стека ○ Уменьшение числа компонентов ○ Унификация функциональности, сетевого стека, конфигурации ● Ответ современным реалиям ○ RESTful JSON API ○ Динамическая реконфигурация без разрыва соединений, без потери запросов и с минимальным потреблением ресурсов ● Принципы и подходы, проверенные временем ○ Безопасность, стабильность, легковесность, простота, масштабируемость, надежность, производительность

Slide 11

Slide 11 text

Основные цели ● Упрощение веб-стека ○ Уменьшение числа компонентов ○ Унификация функциональности, сетевого стека, конфигурации ● Ответ современным реалиям ○ RESTful JSON API ○ Динамическая реконфигурация без разрыва соединений, без потери запросов и с минимальным потреблением ресурсов ● Принципы и подходы, проверенные временем ○ Безопасность, стабильность, легковесность, простота, масштабируемость, надежность, производительность

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

Масштабируемость веб-приложений Клиент Процесс приложения (40 Мб) 50 мс 200 мс 600 мс

Slide 14

Slide 14 text

Масштабируемость с nginx Клиент Процесс приложения (40 Мб) 50 мс 200 мс 600 мс 2 мс 5 мс

Slide 15

Slide 15 text

Цикл работы приложения Время Чтение запроса Обработка Отправка ответа Напрямую В паре с nginx Unit

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

Ложь, наглая ложь и бенчмарки Из статьи “Concurrency comparison between NGINX-unit and uWSGI (python3)” https://itnext.io/performance-comparison-between-nginx-unit-and-uwsgi-python3-4511fc172a4c

Slide 21

Slide 21 text

В планах ● Роутинг запросов по Host, URI, заголовкам и т.д. ● Отдача статических файлов ● Проксирование и балансировка ● TLS, HTTP/2, QUIC ● Node.js, JAVA ● Утилита управления из командной строки ● Обновление без потери соединений

Slide 22

Slide 22 text

Спасибо за внимание. [email protected] fb.com/vbart