SlideShare a Scribd company logo
1 of 37
Развертывание среды RubyonRails для промышленного использования.Методы, технологии, приемы. Антон Веснин (locum.ru)
Что такое промышленное использование? ≠ Промышленное использование Запуск в режиме разработки (production) (development)
Что такое промышленное использование? ≠ Промышленное использование Запуск в режиме разработки (production) (development) - Подробное логирование - Отладочная информация
Что такое промышленное использование? ≠ Промышленное использование Запуск в режиме разработки (production) (development) - Стабильность - Производительность - Поддержка и развитие - Подробное логирование - Отладочная информация
Элементы системы Сервер приложений Код приложения База данных Дополнительные приложения (прокси, memcached и т.п.)
Автоматизация процесса размещения новой версии кода Capistrano - Сохранение копии предыдущей версии - Загрузка новой версии кода - Изменения в базе данных (по необходимости) - Перезапуск сервера приложений ,[object Object],[object Object]
Mongrelhttp://github.com/fauna/mongrel Mongrel 0 Proxy — сервер Mongrel 1 Mongrel 2 Mongrel 3 Пользователи Mongrel N Связь между Mongrel и proxy-сервером через tcp-порт
Mongrelhttp://github.com/fauna/mongrel Плюсы: - Простота: один сервер — один запрос - Сервера не связаны между собой - Легко увеличить количество серверов - Работает с JAVA и JRuby
Mongrelhttp://github.com/fauna/mongrel Плюсы: - Простота: один сервер — один запрос - Сервера не связаны между собой - Легко увеличить количество серверов - Работает с JAVA и JRuby Минусы: - Потребление оперативной памяти - Долгий перезапуск - Проблемы с разграничением прав на tcp-порты
Thinhttp://code.macournoyer.com/thin/ Thin 0 Proxy — сервер Thin 1 Thin 2 Thin 3 Thin N Связь между Thin и proxy сервером через TCP-порт или UNIX-сокет Через сокет - быстрее
Thinhttp://code.macournoyer.com/thin/ Плюсы: - Быстрее чем Mongrel - Может работать через Unix-сокет - Просто увеличить количество серверов
Thinhttp://code.macournoyer.com/thin/ Плюсы: - Быстрее чем Mongrel - Может работать через Unix-сокет - Просто увеличить количество серверов Минусы: - Потребление оперативной памяти - Долгий перезапуск
Unicornhttp://unicorn.bogomips.org  Более технологичен: Есть мастер-процесс и много процессов обработчиков Мастер следит за обработчиками, балансирует нагрузку
Unicornhttp://unicorn.bogomips.org  Обработчик Unicorn Master Обработчик Proxy сервер Разделяемый сокет Обработчик Пользователи Обработчик
Преимущества такого подхода: 1. Мастер всегда знает кто из обработчиков свободен 2. Мастер может остановить обработчик по необходимости 3.Если один из обработчиков аварийно завершился, почти мгновенно запускается новый 4.Процесс перезапуска приложения можно сделать почти незаметным для пользователя
Перезапуск Unicorn с новой версией кода Proxy сервер Разделяемый сокет Обработчик Пользователи Unicorn Master Обработчик Обработчик Обработчик
(этап 1) Администратор USR2 сигнал Proxy сервер Разделяемый сокет Обработчик Пользователи Unicorn Master Обработчик Обработчик Обработчик
(этап 2) НовыйUnicorn Master Proxy сервер Разделяемый сокет Обработчик Пользователи Unicorn Master Обработчик Обработчик Обработчик
(этап 3) Обработчик НовыйUnicorn Master Обработчик Обработчик Обработчик Proxy сервер Разделяемый сокет Обработчик Пользователи Unicorn Master Обработчик Обработчик Обработчик
(этап 3) Обработчик НовыйUnicorn Master Обработчик Обработчик Обработчик Proxy сервер QUITсигнал Разделяемый сокет Обработчик Пользователи Unicorn Master Обработчик Обработчик Обработчик
(Перезапуск Unicornзавершен) Обработчик НовыйUnicorn Master Обработчик Обработчик Обработчик Proxy сервер Разделяемый сокет Пользователи
Unicornhttp://unicorn.bogomips.org  Плюсы: - Решается проблема долгой перезагрузки - Стабильность за счет мгновенного перезапуска обработчиков - Проще отслеживать нештатные ситуации
Unicornhttp://unicorn.bogomips.org  Плюсы: - Решается проблема долгой перезагрузки - Стабильность за счет мгновенного перезапуска обработчиков - Проще отслеживать нештатные ситуации Минусы: - Потребление памяти больше чем у thin
Passenger или mod railshttp://modrails.com Особенности: - Не является самостоятельным сервером - Модуль для Apache 2 и Nginx - Рассчитан на запуск большого количества rails-приложений
Passenger или mod railshttp://modrails.com Плюсы: - Удобен для хостинг-серверов - Позволяет сократить единовременное потребление памяти - Возможность указать альтернативную версию ruby
Passenger или mod railshttp://modrails.com Плюсы: - Удобен для хостинг-серверов - Позволяет сократить единовременное потребление памяти - Возможность указать альтернативную версию ruby Минусы: - Не так быстр как thin - В случае работы с Nginx при нагрузке периодически возникают проблемы - Недостаточно возможностей лимитировать ресурсы
Jruby и Rails - Большое количество j2ee серверов - Возможность использовать java-классы из ruby
Организация отдачи статики ,[object Object],[object Object]
Организация отдачи статики - Все рассмотренные сервера приложений могут отдавать статику - Ни один из них не будет делать это действительно хорошо - Статические файлы должен отдавать быстрый веб-сервер (nginx, lighttpd, etc) - Организация отдачи статических данных после обработки запроса rails-кодом - X-Sedn-File и X-Accel-Redirect
Общие выводы Много проектов и не постоянная загрузка — Passenger
Общие выводы Много проектов и не постоянная загрузка — Passenger Постоянная нагрузка и критичен период простоя при перезапуска — Unicorn
Общие выводы Много проектов и не постоянная загрузка — Passenger Постоянная нагрузка и критичен период простоя при перезапуска — Unicorn Критично потребление памяти и редки обновления — Thin или Unicorn
Общие выводы Много проектов и не постоянная загрузка — Passenger Постоянная нагрузка и критичен период простоя при перезапуска — Unicorn Критично потребление памяти и редки обновления — Thin или Unicorn + Статические данные всегда отдаются веб-сервером
Спасибо за внимание!Вопросы?
Антон Веснин avesnin@locum.ru locum.ru Презентация в электронном виде: labs.locum.ru/rit.ppt
развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)

More Related Content

What's hot

«Как перестать отлаживать асинхронные вызовы и начать жить»​
«Как перестать отлаживать асинхронные вызовы и начать жить»​«Как перестать отлаживать асинхронные вызовы и начать жить»​
«Как перестать отлаживать асинхронные вызовы и начать жить»​FDConf
 
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Yandex
 
Продуктовые проблемы при создании очередной Docker PaaS / Владимир Ярцев (Cas...
Продуктовые проблемы при создании очередной Docker PaaS / Владимир Ярцев (Cas...Продуктовые проблемы при создании очередной Docker PaaS / Владимир Ярцев (Cas...
Продуктовые проблемы при создании очередной Docker PaaS / Владимир Ярцев (Cas...Ontico
 
Эффективная отладка репликации MySQL
Эффективная отладка репликации MySQLЭффективная отладка репликации MySQL
Эффективная отладка репликации MySQLSveta Smirnova
 
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)Ontico
 
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...Magneta AI
 
Ec2 Rootconf2009
Ec2 Rootconf2009Ec2 Rootconf2009
Ec2 Rootconf2009Liudmila Li
 
Продвинутое использование Celery — Александр Кошелев
Продвинутое использование Celery — Александр КошелевПродвинутое использование Celery — Александр Кошелев
Продвинутое использование Celery — Александр КошелевYandex
 
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014InterSystems
 
MariaDB 10.1 - что нового.
MariaDB 10.1 - что нового.MariaDB 10.1 - что нового.
MariaDB 10.1 - что нового.Sergey Petrunya
 
Курс Java-2016. Занятие 09. Web
Курс Java-2016. Занятие 09. WebКурс Java-2016. Занятие 09. Web
Курс Java-2016. Занятие 09. Web7bits
 
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)Ontico
 
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Ontico
 
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)Ontico
 
Как и зачем создавать NginX-модуль - теория, практика, профит / Василий Сошни...
Как и зачем создавать NginX-модуль - теория, практика, профит / Василий Сошни...Как и зачем создавать NginX-модуль - теория, практика, профит / Василий Сошни...
Как и зачем создавать NginX-модуль - теория, практика, профит / Василий Сошни...Ontico
 
Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)
Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)
Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)Ontico
 
Zabbix 3.4 - простая непростая дружба с сообществом / Алексей Владышев (Zabbix)
Zabbix 3.4 - простая непростая дружба с сообществом / Алексей Владышев (Zabbix)Zabbix 3.4 - простая непростая дружба с сообществом / Алексей Владышев (Zabbix)
Zabbix 3.4 - простая непростая дружба с сообществом / Алексей Владышев (Zabbix)Ontico
 
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПЧуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПzfconfua
 

What's hot (20)

«Как перестать отлаживать асинхронные вызовы и начать жить»​
«Как перестать отлаживать асинхронные вызовы и начать жить»​«Как перестать отлаживать асинхронные вызовы и начать жить»​
«Как перестать отлаживать асинхронные вызовы и начать жить»​
 
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
 
Продуктовые проблемы при создании очередной Docker PaaS / Владимир Ярцев (Cas...
Продуктовые проблемы при создании очередной Docker PaaS / Владимир Ярцев (Cas...Продуктовые проблемы при создании очередной Docker PaaS / Владимир Ярцев (Cas...
Продуктовые проблемы при создании очередной Docker PaaS / Владимир Ярцев (Cas...
 
Event Machine
Event MachineEvent Machine
Event Machine
 
Эффективная отладка репликации MySQL
Эффективная отладка репликации MySQLЭффективная отладка репликации MySQL
Эффективная отладка репликации MySQL
 
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
 
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
 
Ec2 Rootconf2009
Ec2 Rootconf2009Ec2 Rootconf2009
Ec2 Rootconf2009
 
Продвинутое использование Celery — Александр Кошелев
Продвинутое использование Celery — Александр КошелевПродвинутое использование Celery — Александр Кошелев
Продвинутое использование Celery — Александр Кошелев
 
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014
 
MariaDB 10.1 - что нового.
MariaDB 10.1 - что нового.MariaDB 10.1 - что нового.
MariaDB 10.1 - что нового.
 
Курс Java-2016. Занятие 09. Web
Курс Java-2016. Занятие 09. WebКурс Java-2016. Занятие 09. Web
Курс Java-2016. Занятие 09. Web
 
Scala On Rest
Scala On RestScala On Rest
Scala On Rest
 
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
 
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
 
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
 
Как и зачем создавать NginX-модуль - теория, практика, профит / Василий Сошни...
Как и зачем создавать NginX-модуль - теория, практика, профит / Василий Сошни...Как и зачем создавать NginX-модуль - теория, практика, профит / Василий Сошни...
Как и зачем создавать NginX-модуль - теория, практика, профит / Василий Сошни...
 
Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)
Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)
Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)
 
Zabbix 3.4 - простая непростая дружба с сообществом / Алексей Владышев (Zabbix)
Zabbix 3.4 - простая непростая дружба с сообществом / Алексей Владышев (Zabbix)Zabbix 3.4 - простая непростая дружба с сообществом / Алексей Владышев (Zabbix)
Zabbix 3.4 - простая непростая дружба с сообществом / Алексей Владышев (Zabbix)
 
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПЧуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОП
 

Viewers also liked

Фронтенд для рубиста
Фронтенд для рубистаФронтенд для рубиста
Фронтенд для рубистаKir Shatrov
 
Deploy.rb, Ilya Zykin, Rails club2016
Deploy.rb, Ilya Zykin, Rails club2016Deploy.rb, Ilya Zykin, Rails club2016
Deploy.rb, Ilya Zykin, Rails club2016zykin-ilya
 
10 reasons I love RubyOnRails
10 reasons I love RubyOnRails10 reasons I love RubyOnRails
10 reasons I love RubyOnRailsPavel Gabriel
 
Призма24 - Маркетплейсы.
Призма24 - Маркетплейсы.Призма24 - Маркетплейсы.
Призма24 - Маркетплейсы.Vitalii Tytskyi
 
I18n ruby-приложений
I18n ruby-приложенийI18n ruby-приложений
I18n ruby-приложенийAndrey Sitnik
 
Alexander Dymo - IT Jam 2009 - Ruby: Beaty Or The Beast
Alexander Dymo - IT Jam 2009 - Ruby: Beaty Or The BeastAlexander Dymo - IT Jam 2009 - Ruby: Beaty Or The Beast
Alexander Dymo - IT Jam 2009 - Ruby: Beaty Or The BeastAlexander Dymo
 
Александр Тищенко - "Антикризисная презентация"
Александр Тищенко - "Антикризисная презентация"Александр Тищенко - "Антикризисная презентация"
Александр Тищенко - "Антикризисная презентация"railsclub
 
Debbug Rails Application For Dummies
Debbug Rails Application For DummiesDebbug Rails Application For Dummies
Debbug Rails Application For DummiesAndrey Subbota
 
Как сделать контрибут в Ruby on Rails
Как сделать контрибут в Ruby on RailsКак сделать контрибут в Ruby on Rails
Как сделать контрибут в Ruby on RailsYaroslav Markin
 
Когда технологий много - iForum 2013
Когда технологий много - iForum 2013Когда технологий много - iForum 2013
Когда технологий много - iForum 2013Andrey Listochkin
 
Alexander Dymo - RubyConf 2014 - Ruby Performance Secrets and How to Uncover ...
Alexander Dymo - RubyConf 2014 - Ruby Performance Secrets and How to Uncover ...Alexander Dymo - RubyConf 2014 - Ruby Performance Secrets and How to Uncover ...
Alexander Dymo - RubyConf 2014 - Ruby Performance Secrets and How to Uncover ...Alexander Dymo
 
Секретный доклад о React Router - OdessaJS 2014
Секретный доклад о React Router - OdessaJS 2014Секретный доклад о React Router - OdessaJS 2014
Секретный доклад о React Router - OdessaJS 2014Andrey Listochkin
 

Viewers also liked (20)

Фронтенд для рубиста
Фронтенд для рубистаФронтенд для рубиста
Фронтенд для рубиста
 
Deploy.rb, Ilya Zykin, Rails club2016
Deploy.rb, Ilya Zykin, Rails club2016Deploy.rb, Ilya Zykin, Rails club2016
Deploy.rb, Ilya Zykin, Rails club2016
 
10 reasons I love RubyOnRails
10 reasons I love RubyOnRails10 reasons I love RubyOnRails
10 reasons I love RubyOnRails
 
Призма24 - Маркетплейсы.
Призма24 - Маркетплейсы.Призма24 - Маркетплейсы.
Призма24 - Маркетплейсы.
 
Rails Concerns
Rails ConcernsRails Concerns
Rails Concerns
 
R18n
R18nR18n
R18n
 
I18n ruby-приложений
I18n ruby-приложенийI18n ruby-приложений
I18n ruby-приложений
 
Alexander Dymo - IT Jam 2009 - Ruby: Beaty Or The Beast
Alexander Dymo - IT Jam 2009 - Ruby: Beaty Or The BeastAlexander Dymo - IT Jam 2009 - Ruby: Beaty Or The Beast
Alexander Dymo - IT Jam 2009 - Ruby: Beaty Or The Beast
 
Александр Тищенко - "Антикризисная презентация"
Александр Тищенко - "Антикризисная презентация"Александр Тищенко - "Антикризисная презентация"
Александр Тищенко - "Антикризисная презентация"
 
RSpec. Part 2
RSpec. Part 2RSpec. Part 2
RSpec. Part 2
 
Ruby on Rails for noobs
Ruby on Rails for noobsRuby on Rails for noobs
Ruby on Rails for noobs
 
Debbug Rails Application For Dummies
Debbug Rails Application For DummiesDebbug Rails Application For Dummies
Debbug Rails Application For Dummies
 
RSpec. Part 1
RSpec. Part 1RSpec. Part 1
RSpec. Part 1
 
Как сделать контрибут в Ruby on Rails
Как сделать контрибут в Ruby on RailsКак сделать контрибут в Ruby on Rails
Как сделать контрибут в Ruby on Rails
 
RSpec. Part 3
RSpec. Part 3RSpec. Part 3
RSpec. Part 3
 
Когда технологий много - iForum 2013
Когда технологий много - iForum 2013Когда технологий много - iForum 2013
Когда технологий много - iForum 2013
 
Assets Pipeline
Assets PipelineAssets Pipeline
Assets Pipeline
 
Alexander Dymo - RubyConf 2014 - Ruby Performance Secrets and How to Uncover ...
Alexander Dymo - RubyConf 2014 - Ruby Performance Secrets and How to Uncover ...Alexander Dymo - RubyConf 2014 - Ruby Performance Secrets and How to Uncover ...
Alexander Dymo - RubyConf 2014 - Ruby Performance Secrets and How to Uncover ...
 
Секретный доклад о React Router - OdessaJS 2014
Секретный доклад о React Router - OdessaJS 2014Секретный доклад о React Router - OdessaJS 2014
Секретный доклад о React Router - OdessaJS 2014
 
Why does code style matter?
Why does code style matter?Why does code style matter?
Why does code style matter?
 

Similar to развертывание среды Rails (антон веснин, Locum Ru)

Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктуройdddpaul
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Anton Baranov
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Ontico
 
FT & HA Rails приложений приложений — это просто
FT & HA Rails приложений приложений — это простоFT & HA Rails приложений приложений — это просто
FT & HA Rails приложений приложений — это простоАлександр Ежов
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализацияYandex
 
мониторинг производительности приложения на PINBA
мониторинг производительности приложения на PINBAмониторинг производительности приложения на PINBA
мониторинг производительности приложения на PINBASlach
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаMikhail Chinkov
 
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Coit-people
 
Надежность World of Tanks Server
Надежность World of Tanks ServerНадежность World of Tanks Server
Надежность World of Tanks ServerLevon Avakyan
 
Изоморфные react-приложения
Изоморфные react-приложенияИзоморфные react-приложения
Изоморфные react-приложенияDenis Izmaylov
 
Net core and linux in production
Net core and linux in productionNet core and linux in production
Net core and linux in productionAnatoly Popov
 
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: GenodeTMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: GenodeIosif Itkin
 
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...ZFConf Conference
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеSQALab
 
Практика разработки веб-серверов на Rust
Практика разработки веб-серверов на RustПрактика разработки веб-серверов на Rust
Практика разработки веб-серверов на RustMichael Pankov
 
Open source technologies in Microsoft cloud - MS SWIT 2014
Open source technologies in Microsoft cloud - MS SWIT 2014Open source technologies in Microsoft cloud - MS SWIT 2014
Open source technologies in Microsoft cloud - MS SWIT 2014Alexey Bokov
 
Evgeniy Potapov Root Conf потапов
Evgeniy Potapov Root Conf   потаповEvgeniy Potapov Root Conf   потапов
Evgeniy Potapov Root Conf потаповrit2010
 
евгений потапов Root Conf потапов
евгений потапов Root Conf   потаповевгений потапов Root Conf   потапов
евгений потапов Root Conf потаповrit2010
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaAlex Chistyakov
 

Similar to развертывание среды Rails (антон веснин, Locum Ru) (20)

Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктурой
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 
FT & HA Rails приложений приложений — это просто
FT & HA Rails приложений приложений — это простоFT & HA Rails приложений приложений — это просто
FT & HA Rails приложений приложений — это просто
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализация
 
мониторинг производительности приложения на PINBA
мониторинг производительности приложения на PINBAмониторинг производительности приложения на PINBA
мониторинг производительности приложения на PINBA
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
Sivko
SivkoSivko
Sivko
 
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
 
Надежность World of Tanks Server
Надежность World of Tanks ServerНадежность World of Tanks Server
Надежность World of Tanks Server
 
Изоморфные react-приложения
Изоморфные react-приложенияИзоморфные react-приложения
Изоморфные react-приложения
 
Net core and linux in production
Net core and linux in productionNet core and linux in production
Net core and linux in production
 
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: GenodeTMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
 
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Практика разработки веб-серверов на Rust
Практика разработки веб-серверов на RustПрактика разработки веб-серверов на Rust
Практика разработки веб-серверов на Rust
 
Open source technologies in Microsoft cloud - MS SWIT 2014
Open source technologies in Microsoft cloud - MS SWIT 2014Open source technologies in Microsoft cloud - MS SWIT 2014
Open source technologies in Microsoft cloud - MS SWIT 2014
 
Evgeniy Potapov Root Conf потапов
Evgeniy Potapov Root Conf   потаповEvgeniy Potapov Root Conf   потапов
Evgeniy Potapov Root Conf потапов
 
евгений потапов Root Conf потапов
евгений потапов Root Conf   потаповевгений потапов Root Conf   потапов
евгений потапов Root Conf потапов
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на Java
 

развертывание среды Rails (антон веснин, Locum Ru)

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