Переходим на PHP7 (digitalocean, percona, nginx, laravel 5 & debian 8 ) результаты

Posted on Mar 25 2016
image

Вдохновившись как компания Badoo перешла на PHP7 и сэкономила $1M ( https://habrahabr.ru/company/badoo/blog/279047/ ) решили и я перевести стартап AppStorio на 7-ку.





Вкратце о AppStorio

AppStorio - сервис который помогает разработчикам мобильный приложений AppStore создавать быстро сайты для приложений, с разными полезными фишками (супорт система, ревью итд).
Также мы собираем статистику AppStore и ведем работы в области создания ASO сервиса…



Технологии

Сервис изначально разрабатывался на PHP фреймворке Laravel.
В качестве поискового движка и для построения каталога выбрали Elasticsearch, но тесты показали что ест он достаточно много памяти и ресурсов (а хоcтимся мы на не самых дорогих ВПС-ках DigitalOcean (20-40уе ноды) - ноды с большим объемом памяти стоят уже не дешево ) в итоге еластик пока отложили до лучший ($) времен - и используем sphinx (быстро, надежно и просто - хотя и с своими минусами).
В качестве СУБД используем MySQL (percona server - все таблички innodb ).
Веб сервер Nginx с PHP-FPM - работает все на ОС Debian 8.
Все спрятано за CloudFlare CDN - на бесплатном тарифе.
Это и зашита от ДДоса, средство ускорить сайт за счет кучи точек присутствия CDN сети ну и в конце концов - очень удобный и качественный инструмент в жизни веб проекта.
Используем пару десятков сторонних бандлов через composer



Переход



Для чистоты эксперимента - для перехода мы создали аналогичный дроплет у ДО в том же регионе (sfo1) c теме же настройками php7 ставили с репозитория dotdeb.org 

Открываем файл
/etc/apt/sources.list

И добавляем строки 



deb http://packages.dotdeb.org jessie all

deb-src http://packages.dotdeb.org jessie all 



Также добавляем ключь репозитирия 



wget https://www.dotdeb.org/dotdeb.gpg
apt-key add dotdeb.gpg



Теперь обновляем информацию о пакетах 



apt-get update



Скрестим пальцы…
И ставим 



apt-get install php7.0-fpm php7.0-gd php7.0-pgsql php7.0-apcu php7.0-curl



 Вот и все PHP7 наш! 
Далее ставим Nginx и настраиваем его ( у меня php7-fpm через сокет )



image

Стягиваем код проекта с гитхаба (в самом коде ничего не менялось)
Прописали в хостах у себя новую ноду как сервер appstor.io и…

Главную страничку успешно отдал наш php7



image


В процессе конечно выяснилось что код в одном из бандлов таки поламал нам часть функционала - пришлось поправить его по быстрому в лучшых традициях багфиксинга на скору руку.



image

Но в целом весь переезд занял менее суток - часть из которых было потрачено на кофе, куда без него а часть на перетягивание данных проекта итд

Поигравшись и потестировав сайт - отправили и всех юзеров на новую ноду - просто подставим в cloudflare айпи новой ноды.
И первые юзеры пошли уже на новую ноду.



image

Результаты






image

Как видно из графиков - главный выигрыш снижение нагрузки на веб ноду в среднем на 30%
Существенно меньше потребление памяти ( в два раза! )
Я ожидали меньшего, так как у нас вроде бы не супер математический код просчета траектории на луну - а не тут то было..
Парни из Zend-а и сообщество не зря работают - и PHP активно развивается.
Теперь вы сможете порадовать своим проектом больше юзеров, и сэкономить на оборудовании - так что переходить на новые технологии и решения однозначно стоит - а архаичным динозаврам место в зоопарке а не у вас на проекте!

p.s. спасибо Alexander Bilyk за то что убедил апрейдится =)