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

Презентация:



Advertisements
Похожие презентации
Типовые расчёты Растворы
Advertisements



Тренировочное тестирование-2008 Ответы к заданиям КИМ Часть I.
IT-холдинг 1-й Архитектор бизнеса Переход на 1С:Бухгалтерию 8 – это очень просто! Презентация.
Переход на 1С:Бухгалтерию 8 – это очень просто!. 2 Переход на 1С:Бухгалтерию 8 Как начать вести учет в 1С:Бухгалтерии 8? Перенести остатки автоматически.
Маршрутный лист «Числа до 100» ? ? ?
Тема 11 Медицинская помощь и лечение (схема 1). Тема 11 Медицинская помощь и лечение (схема 2)
Ребусы Свириденковой Лизы Ученицы 6 класса «А». 10.
Michael Jackson
«Весна» Презентация для детей Выполнила: воспитатель мл.гр. Протасова О.Г. МКДОУ-детский сад «Лужок» 2014г. 1.
Урок повторения по теме: «Сила». Задание 1 Задание 2.
Модуль тестирования Easy Test редакционной системы EDUkIT.

Школьная форма Презентация для родительского собрания.
ЗРИТЕЛЬНЫЕ ИЛЛЮЗИИ ОПТИЧЕСКИЕ ОБМАНЫ 1. Зрительная иллюзия – не соответствующее действительности представление видимого явления или предмета из-за особенностей.
Доклад начальника отдела образования администрации Чемальского района Л. М. Табышкиной Чемал, 2013 г 1.
Департамент экономического развития Ханты-Мансийского автономного округа - Югры 1.
Непараметрические критерии согласия Критерии Купера и Ватсона Тел
Права человека. Статья 1. Статья 2. Статья 3. Статья 4.
Транксрипт:

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

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

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

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

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

HighLoad HEAD CURRENT Feature-1 Как это было: работа верстальщика сцепление версий Проблемы одна ветка в CVS теги для версионности vasya petya vasya

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

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

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

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

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

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

HighLoad Переход на git – разделение на ветки разделили на ветки: master prerelease ветки разработки master prerelease test-branch

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

HighLoad Процесс разработки 1.создаем ветку на основе master 2.вносим изменения 3.коммитим, тестируем 4.переносим изменения из ветки в prerelease 5.тестируем prerelease 6.переносим изменения из prerelease в master 7.раскладываем

HighLoad Общая схема (потоки данных) d d git deployupload2 Фронтенды (Почта, Мир, etc.) БД Мониторинг верстальщик dev.mail.ru prerelease 1..N upload1

HighLoad Общая схема (действия) d d git deployupload2 Фронтенды (Почта, Мир, etc.) БД Мониторинг верстальщик dev.mail.ru prerelease 1..N upload1 hook http samba ssh scp

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

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

HighLoad 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)

HighLoad 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) FUSE 1.htm

HighLoad 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) FUSE 2.htm

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

HighLoad Процесс: 1.клонирование репозитория в /home/vasya 2.редактирование через Samba 3.проверка на vasya.dev.mail.ru 4.новая ветка (на основе master) 5.push 6.раскладка по хуку на тестовый сервер 7.мердж в prerelese 8.раскладка по хуку 9.мердж в master 10.ручная раскладка на живые Samba

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

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

HighLoad Раскладчик – пример метки метка в первой строке файла JS Шаблон

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

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

HighLoad Но есть проблема… узкое место – получение архивов с шаблонами из одного источника upload f1f2f3f1373

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

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

HighLoad Спасибо. Вопросы?