В дата-центрах нашей компании несколько тысяч серверов, и примерно на половине из них нужно выкладывать PHP-код 2 раза в день. Помимо раскладки на production также не стоит забывать о том, что код нужен на стейджинге, и в стейджинг-кластер у нас входит около 50 машин, код на которых обновляется раз в несколько минут. Также есть «хотфиксы» — небольшие (1-5) наборы файлов, которые выкладываются во внеочередном порядке на все или на выделенную часть серверов, чтобы устранить существующие проблемы на продакшне, не дожидаясь полной выкладки. В этом докладе я расскажу о том, как мы деплоились в течение 10 лет, о том, какую новую систему для деплоя PHP-кода мы разработали и внедрили в production, а также проведу обзор решений для масштабного деплоя кода на PHP и анализ их производительности. План доклада: — Наша старая система деплоя, достоинства и недостатки. — Существующие решения: * "svn up" / "git pull". * rsync. * phar, hhbc (HHVM-specific), "loop". * rsync + 2 директории + realpath_root (Rasmus-style). — Требования для новой системы деплоя. * быстрый деплой на стейджинг (5-10 секунд на 50 серверов). * возможность атомарно патчить несколько файлов и быстро их выкладывать (10 секунд на весь кластер). * совместимость с docker. * поддержка «долгоиграющих» CLI-скриптов (несколько часов). * низкое потребление ресурсов на принимающей стороне. * отсутствие необходимости сбрасывать opcache. * высокая скорость деплоя на продакшн (1-2 минуты на 1500 серверов). — MDK — multiversion deployment kit. — Анализ применимости и производительности способов деплоя. — Выводы.