развертывание среды rails (антон веснин, locum ru)
TRANSCRIPT
![Page 1: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/1.jpg)
Развертывание среды Ruby on Rails для промышленного использования.
Методы, технологии, приемы.
Антон Веснин (locum.ru)
![Page 2: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/2.jpg)
Что такое промышленное использование?
Промышленное использование Запуск в режиме разработки≠(production) (development)
![Page 3: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/3.jpg)
Что такое промышленное использование?
Промышленное использование Запуск в режиме разработки≠(production) (development)
- Подробное логирование
- Отладочная информация
![Page 4: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/4.jpg)
Что такое промышленное использование?
Промышленное использование Запуск в режиме разработки≠(production) (development)
- Подробное логирование
- Отладочная информация
- Стабильность
- Производительность
- Поддержка и развитие
![Page 5: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/5.jpg)
Элементы системы
Сервер приложений
Код приложения
База данных
Дополнительные приложения (прокси, memcached и т.п.)
![Page 6: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/6.jpg)
Автоматизация процесса размещения новой версии кода
Capistrano
- Сохранение копии предыдущей версии
- Загрузка новой версии кода
- Изменения в базе данных (по необходимости)
- Перезапуск сервера приложений
- Откат на предыдущую версию в случае сбоя
![Page 7: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/7.jpg)
Автоматизация процесса размещения новой версии кода
Удобства:
- Система релизов- Легко создавать свои методы и задачи
Неудобство:
- Требует специальной структуры директорий на сервере и ssh-доступ
![Page 8: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/8.jpg)
Mongrelhttp://github.com/fauna/mongrel
Mongrel 0
Mongrel 1
Mongrel 2
Mongrel 3
Mongrel N
Proxy — сервер
Пользователи
Связь между Mongrel и proxy-сервером через tcp-порт
![Page 9: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/9.jpg)
Mongrelhttp://github.com/fauna/mongrel
Плюсы:
- Простота: один сервер — один запрос- Сервера не связаны между собой- Легко увеличить количество серверов- Работает с JAVA и JRuby
![Page 10: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/10.jpg)
Mongrelhttp://github.com/fauna/mongrel
Плюсы:
- Простота: один сервер — один запрос- Сервера не связаны между собой- Легко увеличить количество серверов- Работает с JAVA и JRuby
Минусы:
- Потребление оперативной памяти- Долгий перезапуск- Проблемы с разграничением прав на tcp-порты
![Page 11: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/11.jpg)
Thinhttp://code.macournoyer.com/thin/
Thin 0
Thin 1
Thin 2
Thin 3
Thin N
Proxy — сервер
Связь между Thin и proxy сервером через TCP-порт или UNIX-сокетЧерез сокет - быстрее
![Page 12: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/12.jpg)
Thinhttp://code.macournoyer.com/thin/
Плюсы:
- Быстрее чем Mongrel- Может работать через Unix-сокет- Просто увеличить количество серверов
![Page 13: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/13.jpg)
Thinhttp://code.macournoyer.com/thin/
Плюсы:
- Быстрее чем Mongrel- Может работать через Unix-сокет- Просто увеличить количество серверов
Минусы:
- Потребление оперативной памяти- Долгий перезапуск
![Page 14: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/14.jpg)
Unicorn http://unicorn.bogomips.org
Более технологичен:
Есть мастер-процесс и много процессов обработчиковМастер следит за обработчиками, балансирует нагрузку
![Page 15: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/15.jpg)
Unicorn http://unicorn.bogomips.org
Обработчик
Обработчик
Обработчик
Обработчик
UnicornMaster
Раз
дел
яем
ый
сок
ет
Proxyсервер
Пользователи
![Page 16: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/16.jpg)
Преимущества такого подхода:1. Мастер всегда знает кто из обработчиков свободен2. Мастер может остановить обработчик по
необходимости3.Если один из обработчиков аварийно завершился,
почти мгновенно запускается новый4.Процесс перезапуска приложения можно сделать
почти незаметным для пользователя
![Page 17: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/17.jpg)
Обработчик
Обработчик
Обработчик
Обработчик
UnicornMaster
Раз
дел
яем
ый
сок
ет
Proxyсервер
Пользователи
Перезапуск Unicorn с новой версией кода
![Page 18: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/18.jpg)
Обработчик
Обработчик
Обработчик
Обработчик
UnicornMaster
Раз
дел
яем
ый
сок
ет
Proxyсервер
Пользователи
(этап 1)
US
R2
сиг
нал
Администратор
![Page 19: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/19.jpg)
Обработчик
Обработчик
Обработчик
Обработчик
UnicornMaster
Раз
дел
яем
ый
сок
ет
Proxyсервер
Пользователи
НовыйUnicornMaster
(этап 2)
![Page 20: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/20.jpg)
Обработчик
Обработчик
Обработчик
Обработчик
UnicornMaster
Раз
дел
яем
ый
сок
ет
Proxyсервер
Пользователи
НовыйUnicornMaster
Обработчик
Обработчик
Обработчик
Обработчик
(этап 3)
![Page 21: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/21.jpg)
Обработчик
Обработчик
Обработчик
Обработчик
UnicornMaster
Раз
дел
яем
ый
сок
ет
Proxyсервер
Пользователи
НовыйUnicornMaster
Обработчик
Обработчик
Обработчик
ОбработчикQ
UIT
сигн
ал
(этап 3)
![Page 22: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/22.jpg)
Раз
дел
яем
ый
сок
ет
Proxyсервер
Пользователи
НовыйUnicornMaster
Обработчик
Обработчик
Обработчик
Обработчик
(Перезапуск Unicorn завершен)
![Page 23: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/23.jpg)
Unicorn http://unicorn.bogomips.org
Плюсы:
- Решается проблема долгой перезагрузки- Стабильность за счет мгновенного перезапуска обработчиков- Проще отслеживать нештатные ситуации
![Page 24: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/24.jpg)
Unicorn http://unicorn.bogomips.org
Плюсы:
- Решается проблема долгой перезагрузки- Стабильность за счет мгновенного перезапуска обработчиков- Проще отслеживать нештатные ситуации
Минусы:
- Потребление памяти больше чем у thin
![Page 25: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/25.jpg)
Passenger или mod railshttp://modrails.com
Особенности:
- Не является самостоятельным сервером- Модуль для Apache 2 и Nginx- Рассчитан на запуск большого количества rails-приложений
![Page 26: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/26.jpg)
Passenger или mod railshttp://modrails.com
Плюсы:
- Удобен для хостинг-серверов- Позволяет сократить единовременное потребление памяти- Возможность указать альтернативную версию ruby
![Page 27: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/27.jpg)
Passenger или mod railshttp://modrails.com
Плюсы:
- Удобен для хостинг-серверов- Позволяет сократить единовременное потребление памяти- Возможность указать альтернативную версию ruby
Минусы:
- Не так быстр как thin- В случае работы с Nginx при нагрузке периодически возникают проблемы- Недостаточно возможностей лимитировать ресурсы
![Page 28: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/28.jpg)
Jruby и Rails- Большое количество j2ee серверов- Возможность использовать java-классы из ruby
![Page 29: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/29.jpg)
Организация отдачи статики
- Все рассмотренные сервера приложений могут отдавать статику
![Page 30: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/30.jpg)
Организация отдачи статики
- Все рассмотренные сервера приложений могут отдавать статику
- Ни один из них не будет делать это действительно хорошо
- Статические файлы должен отдавать быстрый веб-сервер (nginx, lighttpd, etc)
![Page 31: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/31.jpg)
Организация отдачи статики
- Все рассмотренные сервера приложений могут отдавать статику
- Ни один из них не будет делать это действительно хорошо
- Статические файлы должен отдавать быстрый веб-сервер (nginx, lighttpd, etc)
- Организация отдачи статических данных после обработки запроса rails-кодом
- X-Sedn-File и X-Accel-Redirect
![Page 32: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/32.jpg)
Общие выводыМного проектов и не постоянная загрузка — Passenger
![Page 33: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/33.jpg)
Общие выводыМного проектов и не постоянная загрузка — Passenger
Постоянная нагрузка и критичен период простоя при перезапуска — Unicorn
![Page 34: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/34.jpg)
Общие выводыМного проектов и не постоянная загрузка — Passenger
Постоянная нагрузка и критичен период простоя при перезапуска — Unicorn
Критично потребление памяти и редки обновления — Thin или Unicorn
![Page 35: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/35.jpg)
Общие выводыМного проектов и не постоянная загрузка — Passenger
Постоянная нагрузка и критичен период простоя при перезапуска — Unicorn
Критично потребление памяти и редки обновления — Thin или Unicorn
+Статические данные всегда отдаются веб-сервером
![Page 36: развертывание среды Rails (антон веснин, Locum Ru)](https://reader035.vdocuments.mx/reader035/viewer/2022081508/557f1a12d8b42aea318b4b6c/html5/thumbnails/36.jpg)
Спасибо за внимание!Вопросы?