Развертывание среды RubyonRails для промышленного использования.Методы, технологии, приемы.<br />Антон Веснин (locum.ru)<b...
Что такое промышленное использование?<br />≠<br />Промышленное использование<br />Запуск в режиме разработки<br />(product...
Что такое промышленное использование?<br />≠<br />Промышленное использование<br />Запуск в режиме разработки<br />(product...
Что такое промышленное использование?<br />≠<br />Промышленное использование<br />Запуск в режиме разработки<br />(product...
Элементы системы<br />Сервер приложений<br />Код приложения<br />База данных<br />Дополнительные приложения (прокси, memca...
Автоматизация процесса размещения новой версии кода<br />Capistrano<br />- Сохранение копии предыдущей версии<br />- Загру...
Mongrelhttp://github.com/fauna/mongrel<br />Mongrel 0<br />Proxy — сервер<br />Mongrel 1<br />Mongrel 2<br />Mongrel 3<br ...
Mongrelhttp://github.com/fauna/mongrel<br />Плюсы:<br />- Простота: один сервер — один запрос<br />- Сервера не связаны ме...
Mongrelhttp://github.com/fauna/mongrel<br />Плюсы:<br />- Простота: один сервер — один запрос<br />- Сервера не связаны ме...
Thinhttp://code.macournoyer.com/thin/<br />Thin 0<br />Proxy — сервер<br />Thin 1<br />Thin 2<br />Thin 3<br />Thin N<br /...
Thinhttp://code.macournoyer.com/thin/<br />Плюсы:<br />- Быстрее чем Mongrel<br />- Может работать через Unix-сокет<br />-...
Thinhttp://code.macournoyer.com/thin/<br />Плюсы:<br />- Быстрее чем Mongrel<br />- Может работать через Unix-сокет<br />-...
Unicornhttp://unicorn.bogomips.org <br />Более технологичен:<br />Есть мастер-процесс и много процессов обработчиков<br />...
Unicornhttp://unicorn.bogomips.org <br />Обработчик<br />Unicorn<br />Master<br />Обработчик<br />Proxy<br />сервер<br />Р...
Преимущества такого подхода:<br />1. Мастер всегда знает кто из обработчиков свободен<br />2. Мастер может остановить обра...
Перезапуск Unicorn с новой версией кода<br />Proxy<br />сервер<br />Разделяемый сокет<br />Обработчик<br />Пользователи<br...
(этап 1)<br />Администратор<br />USR2 сигнал<br />Proxy<br />сервер<br />Разделяемый сокет<br />Обработчик<br />Пользовате...
(этап 2)<br />НовыйUnicorn<br />Master<br />Proxy<br />сервер<br />Разделяемый сокет<br />Обработчик<br />Пользователи<br ...
(этап 3)<br />Обработчик<br />НовыйUnicorn<br />Master<br />Обработчик<br />Обработчик<br />Обработчик<br />Proxy<br />сер...
(этап 3)<br />Обработчик<br />НовыйUnicorn<br />Master<br />Обработчик<br />Обработчик<br />Обработчик<br />Proxy<br />сер...
(Перезапуск Unicornзавершен)<br />Обработчик<br />НовыйUnicorn<br />Master<br />Обработчик<br />Обработчик<br />Обработчик...
Unicornhttp://unicorn.bogomips.org <br />Плюсы:<br />- Решается проблема долгой перезагрузки<br />- Стабильность за счет м...
Unicornhttp://unicorn.bogomips.org <br />Плюсы:<br />- Решается проблема долгой перезагрузки<br />- Стабильность за счет м...
Passenger или mod railshttp://modrails.com<br />Особенности:<br />- Не является самостоятельным сервером<br />- Модуль для...
Passenger или mod railshttp://modrails.com<br />Плюсы:<br />- Удобен для хостинг-серверов<br />- Позволяет сократить едино...
Passenger или mod railshttp://modrails.com<br />Плюсы:<br />- Удобен для хостинг-серверов<br />- Позволяет сократить едино...
Jruby и Rails<br />- Большое количество j2ee серверов<br />- Возможность использовать java-классы из ruby<br />
Организация отдачи статики<br /><ul><li> Все рассмотренные сервера приложений могут отдавать статику</li></li></ul><li>Орг...
Организация отдачи статики<br />- Все рассмотренные сервера приложений могут отдавать статику<br />- Ни один из них не буд...
Общие выводы<br />Много проектов и не постоянная загрузка — Passenger<br />
Общие выводы<br />Много проектов и не постоянная загрузка — Passenger<br />Постоянная нагрузка и критичен период простоя п...
Общие выводы<br />Много проектов и не постоянная загрузка — Passenger<br />Постоянная нагрузка и критичен период простоя п...
Общие выводы<br />Много проектов и не постоянная загрузка — Passenger<br />Постоянная нагрузка и критичен период простоя п...
Спасибо за внимание!Вопросы?<br />
Антон Веснин<br />avesnin@locum.ru<br />locum.ru<br />Презентация в электронном виде:<br />labs.locum.ru/rit.ppt<br />
антон веснин Rails Application Servers
антон веснин Rails Application Servers
Upcoming SlideShare
Loading in...5
×

антон веснин Rails Application Servers

726

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
726
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
13
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

антон веснин Rails Application Servers

  1. 1. Развертывание среды RubyonRails для промышленного использования.Методы, технологии, приемы.<br />Антон Веснин (locum.ru)<br />
  2. 2. Что такое промышленное использование?<br />≠<br />Промышленное использование<br />Запуск в режиме разработки<br />(production)<br />(development)<br />
  3. 3. Что такое промышленное использование?<br />≠<br />Промышленное использование<br />Запуск в режиме разработки<br />(production)<br />(development)<br />- Подробное логирование<br />- Отладочная информация<br />
  4. 4. Что такое промышленное использование?<br />≠<br />Промышленное использование<br />Запуск в режиме разработки<br />(production)<br />(development)<br />- Стабильность<br />- Производительность<br />- Поддержка и развитие<br />- Подробное логирование<br />- Отладочная информация<br />
  5. 5. Элементы системы<br />Сервер приложений<br />Код приложения<br />База данных<br />Дополнительные приложения (прокси, memcached и т.п.)<br />
  6. 6. Автоматизация процесса размещения новой версии кода<br />Capistrano<br />- Сохранение копии предыдущей версии<br />- Загрузка новой версии кода<br />- Изменения в базе данных (по необходимости)<br />- Перезапуск сервера приложений<br /><ul><li> Откат на предыдущую версию в случае сбоя</li></li></ul><li>Автоматизация процесса размещения новой версии кода<br />Удобства:<br />- Система релизов<br />- Легко создавать свои методы и задачи<br />Неудобство:<br />- Требует специальной структуры директорий на сервере и ssh-доступ<br />
  7. 7. Mongrelhttp://github.com/fauna/mongrel<br />Mongrel 0<br />Proxy — сервер<br />Mongrel 1<br />Mongrel 2<br />Mongrel 3<br />Пользователи<br />Mongrel N<br />Связь между Mongrel и proxy-сервером через tcp-порт<br />
  8. 8. Mongrelhttp://github.com/fauna/mongrel<br />Плюсы:<br />- Простота: один сервер — один запрос<br />- Сервера не связаны между собой<br />- Легко увеличить количество серверов<br />- Работает с JAVA и JRuby<br />
  9. 9. Mongrelhttp://github.com/fauna/mongrel<br />Плюсы:<br />- Простота: один сервер — один запрос<br />- Сервера не связаны между собой<br />- Легко увеличить количество серверов<br />- Работает с JAVA и JRuby<br />Минусы:<br />- Потребление оперативной памяти<br />- Долгий перезапуск<br />- Проблемы с разграничением прав на tcp-порты<br />
  10. 10. Thinhttp://code.macournoyer.com/thin/<br />Thin 0<br />Proxy — сервер<br />Thin 1<br />Thin 2<br />Thin 3<br />Thin N<br />Связь между Thin и proxy сервером через TCP-порт или UNIX-сокет<br />Через сокет - быстрее<br />
  11. 11. Thinhttp://code.macournoyer.com/thin/<br />Плюсы:<br />- Быстрее чем Mongrel<br />- Может работать через Unix-сокет<br />- Просто увеличить количество серверов<br />
  12. 12. Thinhttp://code.macournoyer.com/thin/<br />Плюсы:<br />- Быстрее чем Mongrel<br />- Может работать через Unix-сокет<br />- Просто увеличить количество серверов<br />Минусы:<br />- Потребление оперативной памяти<br />- Долгий перезапуск<br />
  13. 13. Unicornhttp://unicorn.bogomips.org <br />Более технологичен:<br />Есть мастер-процесс и много процессов обработчиков<br />Мастер следит за обработчиками, балансирует нагрузку<br />
  14. 14. Unicornhttp://unicorn.bogomips.org <br />Обработчик<br />Unicorn<br />Master<br />Обработчик<br />Proxy<br />сервер<br />Разделяемый сокет<br />Обработчик<br />Пользователи<br />Обработчик<br />
  15. 15. Преимущества такого подхода:<br />1. Мастер всегда знает кто из обработчиков свободен<br />2. Мастер может остановить обработчик по необходимости<br />3.Если один из обработчиков аварийно завершился, почти мгновенно запускается новый<br />4.Процесс перезапуска приложения можно сделать почти незаметным для пользователя <br />
  16. 16. Перезапуск Unicorn с новой версией кода<br />Proxy<br />сервер<br />Разделяемый сокет<br />Обработчик<br />Пользователи<br />Unicorn<br />Master<br />Обработчик<br />Обработчик<br />Обработчик<br />
  17. 17. (этап 1)<br />Администратор<br />USR2 сигнал<br />Proxy<br />сервер<br />Разделяемый сокет<br />Обработчик<br />Пользователи<br />Unicorn<br />Master<br />Обработчик<br />Обработчик<br />Обработчик<br />
  18. 18. (этап 2)<br />НовыйUnicorn<br />Master<br />Proxy<br />сервер<br />Разделяемый сокет<br />Обработчик<br />Пользователи<br />Unicorn<br />Master<br />Обработчик<br />Обработчик<br />Обработчик<br />
  19. 19. (этап 3)<br />Обработчик<br />НовыйUnicorn<br />Master<br />Обработчик<br />Обработчик<br />Обработчик<br />Proxy<br />сервер<br />Разделяемый сокет<br />Обработчик<br />Пользователи<br />Unicorn<br />Master<br />Обработчик<br />Обработчик<br />Обработчик<br />
  20. 20. (этап 3)<br />Обработчик<br />НовыйUnicorn<br />Master<br />Обработчик<br />Обработчик<br />Обработчик<br />Proxy<br />сервер<br />QUITсигнал<br />Разделяемый сокет<br />Обработчик<br />Пользователи<br />Unicorn<br />Master<br />Обработчик<br />Обработчик<br />Обработчик<br />
  21. 21. (Перезапуск Unicornзавершен)<br />Обработчик<br />НовыйUnicorn<br />Master<br />Обработчик<br />Обработчик<br />Обработчик<br />Proxy<br />сервер<br />Разделяемый сокет<br />Пользователи<br />
  22. 22. Unicornhttp://unicorn.bogomips.org <br />Плюсы:<br />- Решается проблема долгой перезагрузки<br />- Стабильность за счет мгновенного перезапуска обработчиков<br />- Проще отслеживать нештатные ситуации<br />
  23. 23. Unicornhttp://unicorn.bogomips.org <br />Плюсы:<br />- Решается проблема долгой перезагрузки<br />- Стабильность за счет мгновенного перезапуска обработчиков<br />- Проще отслеживать нештатные ситуации<br />Минусы:<br />- Потребление памяти больше чем у thin<br />
  24. 24. Passenger или mod railshttp://modrails.com<br />Особенности:<br />- Не является самостоятельным сервером<br />- Модуль для Apache 2 и Nginx<br />- Рассчитан на запуск большого количества rails-приложений<br />
  25. 25. Passenger или mod railshttp://modrails.com<br />Плюсы:<br />- Удобен для хостинг-серверов<br />- Позволяет сократить единовременное потребление памяти<br />- Возможность указать альтернативную версию ruby<br />
  26. 26. Passenger или mod railshttp://modrails.com<br />Плюсы:<br />- Удобен для хостинг-серверов<br />- Позволяет сократить единовременное потребление памяти<br />- Возможность указать альтернативную версию ruby<br />Минусы:<br />- Не так быстр как thin<br />- В случае работы с Nginx при нагрузке периодически возникают проблемы<br />- Недостаточно возможностей лимитировать ресурсы<br />
  27. 27. Jruby и Rails<br />- Большое количество j2ee серверов<br />- Возможность использовать java-классы из ruby<br />
  28. 28. Организация отдачи статики<br /><ul><li> Все рассмотренные сервера приложений могут отдавать статику</li></li></ul><li>Организация отдачи статики<br />- Все рассмотренные сервера приложений могут отдавать статику<br />- Ни один из них не будет делать это действительно хорошо<br />- Статические файлы должен отдавать быстрый веб-сервер (nginx, lighttpd, etc)<br />
  29. 29. Организация отдачи статики<br />- Все рассмотренные сервера приложений могут отдавать статику<br />- Ни один из них не будет делать это действительно хорошо<br />- Статические файлы должен отдавать быстрый веб-сервер (nginx, lighttpd, etc)<br />- Организация отдачи статических данных после обработки запроса rails-кодом<br />- X-Sedn-File и X-Accel-Redirect<br />
  30. 30. Общие выводы<br />Много проектов и не постоянная загрузка — Passenger<br />
  31. 31. Общие выводы<br />Много проектов и не постоянная загрузка — Passenger<br />Постоянная нагрузка и критичен период простоя при перезапуска — Unicorn<br />
  32. 32. Общие выводы<br />Много проектов и не постоянная загрузка — Passenger<br />Постоянная нагрузка и критичен период простоя при перезапуска — Unicorn<br />Критично потребление памяти и редки обновления — Thin или Unicorn<br />
  33. 33. Общие выводы<br />Много проектов и не постоянная загрузка — Passenger<br />Постоянная нагрузка и критичен период простоя при перезапуска — Unicorn<br />Критично потребление памяти и редки обновления — Thin или Unicorn<br />+<br />Статические данные всегда отдаются веб-сервером<br />
  34. 34. Спасибо за внимание!Вопросы?<br />
  35. 35. Антон Веснин<br />avesnin@locum.ru<br />locum.ru<br />Презентация в электронном виде:<br />labs.locum.ru/rit.ppt<br />
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×