'

Быстрое развертывание шаблонов и статики в Mail.Ru

Понравилась презентация – покажи это...





Слайд 0

Быстрое развертывание шаблонов и статики в Mail.Ru Кондратов Николай Технический руководитель почтовой службы HighLoad++ 2010


Слайд 1

HighLoad++ 2010 2 О чем мы? система шаблонов организация работы верстальщиков процесс разработки и тестирования тестовая среда VCS развертывание


Слайд 2

HighLoad++ 2010 3 Хорошая система работы со статикой: удобство и скорость в работе версионность и бэкап параллельная работа верстальщиков независимая разработка фич параллельное тестирование независимое внедрение фич быстрое развертывание на серверах быстрый откат


Слайд 3

HighLoad++ 2010 4 Система шаблонов HTML-текст с командами управления переменные, функции, инклуды, условия, etc. на фронтендах – компилированные одни шаблоны для Perl, С, Python <html> ##SetVars(UserName=Вася)## <!-- IF ActiveUser --> <h1>Привет, ##UserName##!</h1> <!-- /IF --> </html>


Слайд 4

HighLoad++ 2010 5 Как это было: CVS Схема репозитория mail.ru/ mail/ templates/ images/ js/ css/ my/ photo/ video/ Что лежит: шаблоны картинки swf бинарные файлы etc. Почта Мир Фото


Слайд 5

HighLoad++ 2010 6 Как это было: работа верстальщика сцепление версий Проблемы одна ветка в CVS теги для версионности vasya petya vasya


Слайд 6

HighLoad++ 2010 7 Как это было: работа верстальщика долгое внесение изменений «мусорные» коммиты Проблемы любая раскладка – через репозиторий боевая и тестовая раскладка – по одной схеме


Слайд 7

HighLoad++ 2010 8 Как это было: раскладка CVS deploy upload Фронтенды (Почта, Мир, etc.) БД Мониторинг верстальщик ssh


Слайд 8

HighLoad++ 2010 9 Как это было: минусы долгий процесс разработки шаблоны всех проектов на всех фронтендах долгое распространение шаблонов


Слайд 9

HighLoad++ 2010 10 Как это было: минусы CVS размер репозитория – 2,8 Гб, 55 тыс. файлов медленный тяжелые ветки плохой мердж


Слайд 10

HighLoad++ 2010 11 Что сделали перевод репозитория CVS ? git разделение репозиториев использование веток реорганизация тестового окружения изменение схемы работы верстальщиков дополнительная логика при раскладке шаблонов Ускорение разработки. Как?


Слайд 11

HighLoad++ 2010 12 Переход на git – разделение репозиториев разделили репозитории (статика и шаблоны) git с шаблонами – 600 Мб (около 16 тыс. файлов) git со статикой – 3.2 Гб (около 38 тыс. файлов) Статика Шаблоны картинки бинарные данные шаблоны CSS JS


Слайд 12

HighLoad++ 2010 13 Переход на git – разделение на ветки разделили на ветки: master prerelease ветки разработки


Слайд 13

HighLoad++ 2010 14 Переход на git - хуки hooks: проверка синтаксиса шаблонов обработка шаблонов автоматическая раскладка etc.


Слайд 14

HighLoad++ 2010 15 Процесс разработки создаем ветку на основе master вносим изменения коммитим, тестируем переносим изменения из ветки в prerelease тестируем prerelease переносим изменения из prerelease в master раскладываем


Слайд 15

HighLoad++ 2010 16 Общая схема (потоки данных)


Слайд 16

HighLoad++ 2010 17 Общая схема (действия) hook http http samba ssh scp scp


Слайд 17

HighLoad++ 2010 18 Тестовые серверы DOCUMENT_ROOT сервера – директория с шаблонами dev.mail.ru – master branch-1.dev.mail.ru – ветка branch-1 виртуальные машины с общим диском размер каждой директории – около 200 Мб количество веток – около 500 для полного хранения – 100 Гб


Слайд 18

HighLoad++ 2010 19 FUSE (Filesystem on Userspace) храним только отличающиеся файлы отключаем компиляцию шаблонов недостающие файлы в ветке берем из master итоговый размер 5 Гб branch-1.mail.ru/* mail.ru/* deploy/branch-1/* FUSE


Слайд 19

HighLoad++ 2010 20 mail.ru/ master 1.htm 2.htm deploy/ branch-1/ branch-1 2.htm (измененный файл) mail.ru.deploy/ mail.ru.branch-1/ (DOCUMENT_ROOT для branch-1.dev.mail.ru) FUSE (Filesystem on Userspace)


Слайд 20

HighLoad++ 2010 21 mail.ru/ master 1.htm 2.htm deploy/ branch-1/ branch-1 2.htm (измененный файл) mail.ru.deploy/ mail.ru.branch-1/ (DOCUMENT_ROOT для branch-1.dev.mail.ru) FUSE (Filesystem on Userspace) http://branch-1.dev.mail.ru/1.htm FUSE 1.htm


Слайд 21

HighLoad++ 2010 22 mail.ru/ master 1.htm 2.htm deploy/ branch-1/ branch-1 2.htm (измененный файл) mail.ru.deploy/ mail.ru.branch-1/ (DOCUMENT_ROOT для branch-1.dev.mail.ru) FUSE (Filesystem on Userspace) http://branch-1.dev.mail.ru/2.htm FUSE 2.htm


Слайд 22

HighLoad++ 2010 23 git + windows длинная цепочка действий для раскладки принцип «сохранил – увидел» решение – Samba + перенос репозитория git верстальщик Вася samba ssh /home/vasya/ Проблемы


Слайд 23

HighLoad++ 2010 24 Процесс: клонирование репозитория в /home/vasya редактирование через Samba проверка на vasya.dev.mail.ru новая ветка (на основе master) push раскладка по хуку на тестовый сервер мердж в prerelese раскладка по хуку мердж в master ручная раскладка на живые Samba


Слайд 24

HighLoad++ 2010 25 Раскладчик модульность проверка шаблонов различная обработка разных типов файлов компиляция шаблонов ищем diff зависимости обработка компиляция архивация заливка по scp


Слайд 25

HighLoad++ 2010 26 Раскладчик – вкусности условная обработка файла в зависимости от меток в нем JS сборка минимизация именование файлов Шаблон переводы строк перекодировка и любые глупости


Слайд 26

HighLoad++ 2010 27 Раскладчик – пример метки метка в первой строке файла JS // @build // @build-minify Шаблон <!-- build-strip-newlines -->


Слайд 27

HighLoad++ 2010 28 Мониторинг раскладки инкрементный номер каждой раскладки в БД – позиция на каждом сервере мониторим состояние раскладчика мониторим позиции на каждом сервере


Слайд 28

HighLoad++ 2010 29 Результаты упростили жизнь верстальщикам возможность параллельной разработки фич ускорение отладки и тестирования улучшение работы с репозиторием


Слайд 29

HighLoad++ 2010 30 Но есть проблема… узкое место – получение архивов с шаблонами из одного источника upload f1 f2 f3 f1373


Слайд 30

HighLoad++ 2010 31 Простое решение… шардинг увеличить количество отдающих серверов uploadN f1 f2 f(N-1) fN upload1 …………..


Слайд 31

HighLoad++ 2010 32 Хорошее решение: peer-to-peer с upload-сервера отдача в режиме супер-сидирования фронтенды обмениваются между собой f1 f2 f3 fN upload


Слайд 32

HighLoad++ 2010 33 Спасибо. Вопросы? kondratov@corp.mail.ru


×

HTML:





Ссылка: