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

Содержание

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

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

2010

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

и тестирования
тестовая среда
VCS
развертывание


Слайд 3
HighLoad++ 2010
Хорошая система работы со статикой:
удобство и скорость в работе

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


Слайд 4
HighLoad++ 2010
Система шаблонов
HTML-текст с командами управления
переменные, функции, инклуды, условия,

etc.
на фронтендах – компилированные
одни шаблоны для Perl, С, Python


##SetVars(UserName=Вася)##

Привет, ##UserName##!





Слайд 5
HighLoad++ 2010
Как это было: CVS
Схема репозитория

mail.ru/
mail/

templates/
images/
js/
css/
my/
photo/
video/

Что лежит:

шаблоны
картинки
swf
бинарные файлы
etc.

Почта

Мир

Фото


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

CVS
теги для версионности

vasya

petya

vasya


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

через репозиторий
боевая и тестовая раскладка – по одной схеме

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


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

фронтендах
долгое распространение шаблонов


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

тыс. файлов
медленный
тяжелые ветки
плохой мердж


Слайд 11
HighLoad++ 2010
Что сделали
перевод репозитория CVS ? git
разделение репозиториев
использование

веток
реорганизация тестового окружения
изменение схемы работы верстальщиков
дополнительная логика при раскладке шаблонов

Ускорение разработки. Как?


Слайд 12
HighLoad++ 2010
Переход на git – разделение репозиториев
разделили репозитории (статика и шаблоны)
git

с шаблонами – 600 Мб (около 16 тыс. файлов)
git со статикой – 3.2 Гб (около 38 тыс. файлов)

Статика

Шаблоны

картинки
бинарные данные

шаблоны
CSS
JS


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

master
prerelease
ветки разработки



Слайд 14
HighLoad++ 2010
Переход на git - хуки
hooks:
проверка синтаксиса шаблонов
обработка шаблонов

автоматическая раскладка
etc.


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

из ветки в prerelease
тестируем prerelease
переносим изменения из prerelease в master
раскладываем


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


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


Слайд 18
HighLoad++ 2010
Тестовые серверы
DOCUMENT_ROOT сервера – директория с шаблонами
dev.mail.ru – master
branch-1.dev.mail.ru –

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


Слайд 19
HighLoad++ 2010
FUSE (Filesystem on Userspace)
храним только отличающиеся файлы
отключаем компиляцию шаблонов
недостающие файлы

в ветке берем из master
итоговый размер 5 Гб


branch-1.mail.ru/*

mail.ru/*

deploy/branch-1/*

FUSE


Слайд 20
HighLoad++ 2010
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)


Слайд 21
HighLoad++ 2010
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


Слайд 22
HighLoad++ 2010
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


Слайд 23
HighLoad++ 2010
git + windows
длинная цепочка действий для раскладки
принцип

«сохранил – увидел»
решение – Samba + перенос репозитория





git

верстальщик
Вася

samba

ssh

/home/vasya/

Проблемы



Слайд 24
HighLoad++ 2010
Процесс:
клонирование репозитория в /home/vasya
редактирование через Samba
проверка на vasya.dev.mail.ru
новая ветка (на

основе master)
push
раскладка по хуку на тестовый сервер
мердж в prerelese
раскладка по хуку
мердж в master
ручная раскладка на живые

Samba


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

шаблонов

ищем diff

зависимости

обработка

компиляция

архивация

заливка по scp


Слайд 26
HighLoad++ 2010
Раскладчик – вкусности
условная обработка файла в зависимости от меток

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


Слайд 27
HighLoad++ 2010
Раскладчик – пример метки
метка в первой строке файла
JS
// @build
//

@build-minify

Шаблон





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

на каждом сервере
мониторим состояние раскладчика
мониторим позиции на каждом сервере


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

и тестирования
улучшение работы с репозиторием




Слайд 30
HighLoad++ 2010
Но есть проблема…
узкое место – получение архивов с шаблонами

из одного источника


upload

f1

f2

f3

f1373


Слайд 31
HighLoad++ 2010
Простое решение… шардинг
увеличить количество отдающих серверов


uploadN
f1
f2
f(N-1)
fN
upload1
…………..


Слайд 32
HighLoad++ 2010
Хорошее решение: peer-to-peer
с upload-сервера отдача в режиме супер-сидирования
фронтенды

обмениваются между собой


f1

f2

f3

fN

upload


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


Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика