SlideShare a Scribd company logo
1 of 33
Быстрое развертывание шаблонов
и статики в Mail.Ru
Кондратов Николай
Технический руководитель
почтовой службы
HighLoad++ 2010
HighLoad++ 2010 2
О чем мы?
• система шаблонов
• организация работы верстальщиков
• процесс разработки и тестирования
• тестовая среда
• VCS
• развертывание
HighLoad++ 2010 3
Хорошая система работы со статикой:
• удобство и скорость в работе
• версионность и бэкап
• параллельная работа верстальщиков
• независимая разработка фич
• параллельное тестирование
• независимое внедрение фич
• быстрое развертывание на серверах
• быстрый откат
HighLoad++ 2010 4
Система шаблонов
• HTML-текст с командами управления
• переменные, функции, инклуды, условия, etc.
• на фронтендах – компилированные
• одни шаблоны для Perl, С, Python
<html>
##SetVars(UserName=Вася)##
<!-- IF ActiveUser -->
<h1>Привет, ##UserName##!</h1>
<!-- /IF -->
</html>
HighLoad++ 2010 5
Как это было: CVS
Схема репозитория
mail.ru/
mail/
templates/
images/
js/
css/
my/
photo/
video/
Что лежит:
• шаблоны
• картинки
• swf
• бинарные файлы
• etc.
Почта
Мир
Фото
HighLoad++ 2010 6
HEAD
CURRENT
Feature-1
Как это было: работа верстальщика
• сцепление версий
Проблемы
• одна ветка в CVS
• теги для версионности
vasya
petya
vasya
HighLoad++ 2010 7
изменение
cvs commit
ssh deploy
раскладка
результат
Как это было: работа верстальщика
• долгое внесение изменений
• «мусорные» коммиты
Проблемы
• любая раскладка – через репозиторий
• боевая и тестовая раскладка – по одной
схеме
HighLoad++ 2010 8
Как это было: раскладка
CVS deploy upload
Фронтенды
(Почта, Мир,
etc.)
БД
Мониторинг
верстальщик
HighLoad++ 2010 9
Как это было: минусы
• долгий процесс разработки
• шаблоны всех проектов на всех фронтендах
• долгое распространение шаблонов
HighLoad++ 2010 10
Как это было: минусы CVS
• размер репозитория – 2,8 Гб, 55 тыс. файлов
• медленный
• тяжелые ветки
• плохой мердж
HighLoad++ 2010 11
Что сделали
• перевод репозитория CVS  git
• разделение репозиториев
• использование веток
• реорганизация тестового окружения
• изменение схемы работы верстальщиков
• дополнительная логика при раскладке шаблонов
Ускорение разработки. Как?
HighLoad++ 2010 12
Переход на git – разделение репозиториев
• разделили репозитории (статика и шаблоны)
• git с шаблонами – 600 Мб (около 16 тыс. файлов)
• git со статикой – 3.2 Гб (около 38 тыс. файлов)
Статика Шаблоны
• картинки
• бинарные данные
• шаблоны
• CSS
• JS
HighLoad++ 2010 13
Переход на git – разделение на ветки
• разделили на ветки:
• master
• prerelease
• ветки разработки
master
prerelease
test-branch
HighLoad++ 2010 14
Переход на git - хуки
• hooks:
• проверка синтаксиса шаблонов
• обработка шаблонов
• автоматическая раскладка
• etc.
HighLoad++ 2010 15
Процесс разработки
1. создаем ветку на основе master
2. вносим изменения
3. коммитим, тестируем
4. переносим изменения из ветки в prerelease
5. тестируем prerelease
6. переносим изменения из prerelease в master
7. раскладываем
HighLoad++ 2010 16
Общая схема (потоки данных)
d
git
deploy upload2
Фронтенды (Почта,
Мир, etc.)
БД
Мониторинг
верстальщик
dev.mail.ru
prerelease 1..N
upload1
HighLoad++ 2010 17
Общая схема (действия)
d
git
deploy upload2
Фронтенды (Почта,
Мир, etc.)
БД
Мониторинг
верстальщик
dev.mail.ru
prerelease 1..N
upload1
hook
http
http
samba
ssh
scpscp
HighLoad++ 2010 18
Тестовые серверы
• DOCUMENT_ROOT сервера – директория с шаблонами
• dev.mail.ru – master
• branch-1.dev.mail.ru – ветка branch-1
• виртуальные машины с общим диском
• размер каждой директории – около 200 Мб
• количество веток – около 500
• для полного хранения – 100 Гб
HighLoad++ 2010 19
FUSE (Filesystem on Userspace)
• храним только отличающиеся файлы
• отключаем компиляцию шаблонов
• недостающие файлы в ветке берем из master
• итоговый размер 5 Гб
branch-1.mail.ru/*
mail.ru/*
deploy/branch-1/*
FUSE
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)
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
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
HighLoad++ 2010 23
• git + windows
• длинная цепочка действий для раскладки
• принцип «сохранил – увидел»
• решение – Samba + перенос репозитория
git
верстальщик
Вася
samba
ssh
/home/vasya/
Проблемы
HighLoad++ 2010 24
Процесс:
1. клонирование репозитория в /home/vasya
2. редактирование через Samba
3. проверка на vasya.dev.mail.ru
4. новая ветка (на основе master)
5. push
6. раскладка по хуку на тестовый сервер
7. мердж в prerelese
8. раскладка по хуку
9. мердж в master
10.ручная раскладка на живые
Samba
HighLoad++ 2010 25
Раскладчик
• модульность
• проверка шаблонов
• различная обработка разных типов
файлов
• компиляция шаблонов
ищем diff
зависимости
обработка
компиляция
архивация
заливка по scp
HighLoad++ 2010 26
Раскладчик – вкусности
• условная обработка файла в зависимости от меток в нем
• JS
• сборка
• минимизация
• именование файлов
• Шаблон
• переводы строк
• перекодировка
• и любые глупости
HighLoad++ 2010 27
Раскладчик – пример метки
• метка в первой строке файла
• JS
• // @build
• // @build-minify
• Шаблон
• <!-- build-strip-newlines -->
HighLoad++ 2010 28
Мониторинг раскладки
• инкрементный номер каждой раскладки
• в БД – позиция на каждом сервере
• мониторим состояние раскладчика
• мониторим позиции на каждом сервере
deploy upload2 Фронтенды
БД Мониторинг
upload1
HighLoad++ 2010 29
Результаты
• упростили жизнь верстальщикам
• возможность параллельной разработки фич
• ускорение отладки и тестирования
• улучшение работы с репозиторием
HighLoad++ 2010 30
Но есть проблема…
• узкое место – получение архивов с шаблонами из одного источника
upload
f1 f2 f3 f1373
HighLoad++ 2010 31
Простое решение… шардинг
• увеличить количество отдающих серверов
uploadN
f1 f2 f(N-1) fN
upload1 …………..
HighLoad++ 2010 32
Хорошее решение: peer-to-peer
• с upload-сервера отдача в режиме супер-сидирования
• фронтенды обмениваются между собой
f1
f2 f3
fN
upload
HighLoad++ 2010 33
Спасибо. Вопросы?
kondratov@corp.mail.ru

More Related Content

What's hot

Расширения для PostgreSQL
Расширения для PostgreSQLРасширения для PostgreSQL
Расширения для PostgreSQLAnastasia Lubennikova
 
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)Ontico
 
pgconf.ru 2015.avito postgresql recovery
pgconf.ru 2015.avito postgresql recoverypgconf.ru 2015.avito postgresql recovery
pgconf.ru 2015.avito postgresql recoveryМихаил Тюрин
 
Node.JS: возможности для РНР-разработчика
Node.JS: возможности для РНР-разработчикаNode.JS: возможности для РНР-разработчика
Node.JS: возможности для РНР-разработчикаAlexei Smolyanov
 
Советы для начинающих разработчиков PostgreSQL
Советы для начинающих разработчиков PostgreSQL Советы для начинающих разработчиков PostgreSQL
Советы для начинающих разработчиков PostgreSQL Anastasia Lubennikova
 
Highload 2014. PostgreSQL: ups, DevOps.
Highload 2014. PostgreSQL: ups, DevOps.Highload 2014. PostgreSQL: ups, DevOps.
Highload 2014. PostgreSQL: ups, DevOps.Alexey Lesovsky
 
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)Ontico
 
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...rit2011
 
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (..."Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...AvitoTech
 
Александр Крашенинников "Hadoop High Availability: опыт Badoo"
Александр Крашенинников "Hadoop High Availability: опыт Badoo"Александр Крашенинников "Hadoop High Availability: опыт Badoo"
Александр Крашенинников "Hadoop High Availability: опыт Badoo"IT Event
 
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев
CRIU: ускорение запуска PHP в CloudLinux OS  -- Руслан КупреевCRIU: ускорение запуска PHP в CloudLinux OS  -- Руслан Купреев
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан КупреевOpenVZ
 
05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколы05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколыRoman Brovko
 
Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Эффективная отладка репликации MySQL / Света Смирнова (Percona)Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Эффективная отладка репликации MySQL / Света Смирнова (Percona)Ontico
 
XML Native Database на примере SednaXML
XML Native Database на примере SednaXMLXML Native Database на примере SednaXML
XML Native Database на примере SednaXMLSlach
 
Сергей Белов "bem server: система сборки фронтенда"
Сергей Белов "bem server: система сборки фронтенда"Сергей Белов "bem server: система сборки фронтенда"
Сергей Белов "bem server: система сборки фронтенда"Yandex
 
Hacking PostgreSQL. Физическое представление данных
Hacking PostgreSQL. Физическое представление данныхHacking PostgreSQL. Физическое представление данных
Hacking PostgreSQL. Физическое представление данныхAnastasia Lubennikova
 
Streaming replication in practice
Streaming replication in practiceStreaming replication in practice
Streaming replication in practiceAlexey Lesovsky
 

What's hot (19)

Расширения для PostgreSQL
Расширения для PostgreSQLРасширения для PostgreSQL
Расширения для PostgreSQL
 
pgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresqlpgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresql
 
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
 
pgconf.ru 2015.avito postgresql recovery
pgconf.ru 2015.avito postgresql recoverypgconf.ru 2015.avito postgresql recovery
pgconf.ru 2015.avito postgresql recovery
 
Node.JS: возможности для РНР-разработчика
Node.JS: возможности для РНР-разработчикаNode.JS: возможности для РНР-разработчика
Node.JS: возможности для РНР-разработчика
 
Советы для начинающих разработчиков PostgreSQL
Советы для начинающих разработчиков PostgreSQL Советы для начинающих разработчиков PostgreSQL
Советы для начинающих разработчиков PostgreSQL
 
Highload 2014. PostgreSQL: ups, DevOps.
Highload 2014. PostgreSQL: ups, DevOps.Highload 2014. PostgreSQL: ups, DevOps.
Highload 2014. PostgreSQL: ups, DevOps.
 
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
 
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
 
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (..."Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...
 
Александр Крашенинников "Hadoop High Availability: опыт Badoo"
Александр Крашенинников "Hadoop High Availability: опыт Badoo"Александр Крашенинников "Hadoop High Availability: опыт Badoo"
Александр Крашенинников "Hadoop High Availability: опыт Badoo"
 
PHP
PHPPHP
PHP
 
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев
CRIU: ускорение запуска PHP в CloudLinux OS  -- Руслан КупреевCRIU: ускорение запуска PHP в CloudLinux OS  -- Руслан Купреев
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев
 
05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколы05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколы
 
Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Эффективная отладка репликации MySQL / Света Смирнова (Percona)Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Эффективная отладка репликации MySQL / Света Смирнова (Percona)
 
XML Native Database на примере SednaXML
XML Native Database на примере SednaXMLXML Native Database на примере SednaXML
XML Native Database на примере SednaXML
 
Сергей Белов "bem server: система сборки фронтенда"
Сергей Белов "bem server: система сборки фронтенда"Сергей Белов "bem server: система сборки фронтенда"
Сергей Белов "bem server: система сборки фронтенда"
 
Hacking PostgreSQL. Физическое представление данных
Hacking PostgreSQL. Физическое представление данныхHacking PostgreSQL. Физическое представление данных
Hacking PostgreSQL. Физическое представление данных
 
Streaming replication in practice
Streaming replication in practiceStreaming replication in practice
Streaming replication in practice
 

Similar to Быстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов

Быстрое развёртывание шаблонов и статики в Mail.ru (Николай Кондратов)
Быстрое развёртывание шаблонов и статики в Mail.ru (Николай Кондратов)Быстрое развёртывание шаблонов и статики в Mail.ru (Николай Кондратов)
Быстрое развёртывание шаблонов и статики в Mail.ru (Николай Кондратов)Ontico
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Anton Baranov
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Ontico
 
Scino: DVCS на примере Git
Scino: DVCS на примере GitScino: DVCS на примере Git
Scino: DVCS на примере GitSCINO
 
Загрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитикиЗагрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитикиBadoo Development
 
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...SECON
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновOntico
 
От хаоса к космосу: консолидация внутренних веб-ресурсов компании
От хаоса к космосу: консолидация внутренних веб-ресурсов компанииОт хаоса к космосу: консолидация внутренних веб-ресурсов компании
От хаоса к космосу: консолидация внутренних веб-ресурсов компанииSQALab
 
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)Ontico
 
Monitoring-driven эксплуатация (rootconf2015)
Monitoring-driven эксплуатация (rootconf2015)Monitoring-driven эксплуатация (rootconf2015)
Monitoring-driven эксплуатация (rootconf2015)Nikolay Sivko
 
Путь мониторинга, DevOps club в Grammarly
Путь мониторинга, DevOps club в GrammarlyПуть мониторинга, DevOps club в Grammarly
Путь мониторинга, DevOps club в GrammarlyVsevolod Polyakov
 
DevOps в Agile среде. Как, почему и когда инструменты помогают.
DevOps в Agile среде. Как, почему и когда инструменты помогают.DevOps в Agile среде. Как, почему и когда инструменты помогают.
DevOps в Agile среде. Как, почему и когда инструменты помогают.Alexander Titov
 
обзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторингаобзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторингаКонстантин Никифоров
 
Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...
Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...
Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...Ontico
 
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил ТюринPG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюринpgdayrussia
 
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Николай Лавлинский
 

Similar to Быстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов (20)

Быстрое развёртывание шаблонов и статики в Mail.ru (Николай Кондратов)
Быстрое развёртывание шаблонов и статики в Mail.ru (Николай Кондратов)Быстрое развёртывание шаблонов и статики в Mail.ru (Николай Кондратов)
Быстрое развёртывание шаблонов и статики в Mail.ru (Николай Кондратов)
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 
Sivko
SivkoSivko
Sivko
 
Scino: DVCS на примере Git
Scino: DVCS на примере GitScino: DVCS на примере Git
Scino: DVCS на примере Git
 
Загрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитикиЗагрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитики
 
GitFlow_MOEX
GitFlow_MOEXGitFlow_MOEX
GitFlow_MOEX
 
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
 
Барнаул15
Барнаул15Барнаул15
Барнаул15
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
 
Git presentation
Git presentationGit presentation
Git presentation
 
От хаоса к космосу: консолидация внутренних веб-ресурсов компании
От хаоса к космосу: консолидация внутренних веб-ресурсов компанииОт хаоса к космосу: консолидация внутренних веб-ресурсов компании
От хаоса к космосу: консолидация внутренних веб-ресурсов компании
 
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
 
Monitoring-driven эксплуатация (rootconf2015)
Monitoring-driven эксплуатация (rootconf2015)Monitoring-driven эксплуатация (rootconf2015)
Monitoring-driven эксплуатация (rootconf2015)
 
Путь мониторинга, DevOps club в Grammarly
Путь мониторинга, DevOps club в GrammarlyПуть мониторинга, DevOps club в Grammarly
Путь мониторинга, DevOps club в Grammarly
 
DevOps в Agile среде. Как, почему и когда инструменты помогают.
DevOps в Agile среде. Как, почему и когда инструменты помогают.DevOps в Agile среде. Как, почему и когда инструменты помогают.
DevOps в Agile среде. Как, почему и когда инструменты помогают.
 
обзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторингаобзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторинга
 
Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...
Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...
Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...
 
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил ТюринPG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
 
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
 

More from Fuenteovejuna

Facebook, Robert Johnson
Facebook, Robert JohnsonFacebook, Robert Johnson
Facebook, Robert JohnsonFuenteovejuna
 
Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...
Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...
Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...Fuenteovejuna
 
Shared Personalization Service - How To Scale to 15K RPS, Patrice Pelland
Shared Personalization Service - How To Scale to 15K RPS, Patrice PellandShared Personalization Service - How To Scale to 15K RPS, Patrice Pelland
Shared Personalization Service - How To Scale to 15K RPS, Patrice PellandFuenteovejuna
 
Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 ...
Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 ...Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 ...
Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 ...Fuenteovejuna
 
Практическое создание крупного масштабируемого web 20 c нуля, Дмитрий Бородин
Практическое создание крупного масштабируемого web 20 c нуля, Дмитрий БородинПрактическое создание крупного масштабируемого web 20 c нуля, Дмитрий Бородин
Практическое создание крупного масштабируемого web 20 c нуля, Дмитрий БородинFuenteovejuna
 
Social Monitoring Tool codename Looking Glass, Patrice Pelland
Social Monitoring Tool codename Looking Glass, Patrice PellandSocial Monitoring Tool codename Looking Glass, Patrice Pelland
Social Monitoring Tool codename Looking Glass, Patrice PellandFuenteovejuna
 
Профилирование памяти в приложениях на Python, Антон Грицай
Профилирование памяти в приложениях на Python, Антон ГрицайПрофилирование памяти в приложениях на Python, Антон Грицай
Профилирование памяти в приложениях на Python, Антон ГрицайFuenteovejuna
 
Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаи...
Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаи...Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаи...
Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаи...Fuenteovejuna
 
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...Fuenteovejuna
 
Некоторые аспекты влияния сходимости протокола BGP на доступность сетевых рес...
Некоторые аспекты влияния сходимости протокола BGP на доступность сетевых рес...Некоторые аспекты влияния сходимости протокола BGP на доступность сетевых рес...
Некоторые аспекты влияния сходимости протокола BGP на доступность сетевых рес...Fuenteovejuna
 
Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...
Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...
Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...Fuenteovejuna
 
Динамика DDoS-атак в России, Александр Лямин
Динамика DDoS-атак в России, Александр ЛяминДинамика DDoS-атак в России, Александр Лямин
Динамика DDoS-атак в России, Александр ЛяминFuenteovejuna
 
Extreme Cloud Storage on FreeBSD, Андрей Пантюхин
Extreme Cloud Storage on FreeBSD, Андрей ПантюхинExtreme Cloud Storage on FreeBSD, Андрей Пантюхин
Extreme Cloud Storage on FreeBSD, Андрей ПантюхинFuenteovejuna
 
Мониторинг XXI-век, Алиса Смирнова, Дима Никоненко
Мониторинг XXI-век, Алиса Смирнова, Дима НиконенкоМониторинг XXI-век, Алиса Смирнова, Дима Никоненко
Мониторинг XXI-век, Алиса Смирнова, Дима НиконенкоFuenteovejuna
 
Native Client, Евгений Эльцин
Native Client, Евгений ЭльцинNative Client, Евгений Эльцин
Native Client, Евгений ЭльцинFuenteovejuna
 
Tarantool Silverbox, Юрий Востриков
Tarantool Silverbox, Юрий ВостриковTarantool Silverbox, Юрий Востриков
Tarantool Silverbox, Юрий ВостриковFuenteovejuna
 
Real time indexes in Sphinx, Yaroslav Vorozhko
Real time indexes in Sphinx, Yaroslav VorozhkoReal time indexes in Sphinx, Yaroslav Vorozhko
Real time indexes in Sphinx, Yaroslav VorozhkoFuenteovejuna
 
Sphinx для высоко-нагруженных и масштабируемых проектов, Вячеслав Крюков
Sphinx для высоко-нагруженных и масштабируемых проектов, Вячеслав КрюковSphinx для высоко-нагруженных и масштабируемых проектов, Вячеслав Крюков
Sphinx для высоко-нагруженных и масштабируемых проектов, Вячеслав КрюковFuenteovejuna
 
Масштабируемая система голосования на базе PostgreSQL PgQ, Сергей Нековаль
Масштабируемая система голосования на базе PostgreSQL PgQ, Сергей НековальМасштабируемая система голосования на базе PostgreSQL PgQ, Сергей Нековаль
Масштабируемая система голосования на базе PostgreSQL PgQ, Сергей НековальFuenteovejuna
 
Вы решили написать собственное хранилище, Илья Космодемьянский
Вы решили написать собственное хранилище, Илья КосмодемьянскийВы решили написать собственное хранилище, Илья Космодемьянский
Вы решили написать собственное хранилище, Илья КосмодемьянскийFuenteovejuna
 

More from Fuenteovejuna (20)

Facebook, Robert Johnson
Facebook, Robert JohnsonFacebook, Robert Johnson
Facebook, Robert Johnson
 
Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...
Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...
Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...
 
Shared Personalization Service - How To Scale to 15K RPS, Patrice Pelland
Shared Personalization Service - How To Scale to 15K RPS, Patrice PellandShared Personalization Service - How To Scale to 15K RPS, Patrice Pelland
Shared Personalization Service - How To Scale to 15K RPS, Patrice Pelland
 
Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 ...
Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 ...Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 ...
Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 ...
 
Практическое создание крупного масштабируемого web 20 c нуля, Дмитрий Бородин
Практическое создание крупного масштабируемого web 20 c нуля, Дмитрий БородинПрактическое создание крупного масштабируемого web 20 c нуля, Дмитрий Бородин
Практическое создание крупного масштабируемого web 20 c нуля, Дмитрий Бородин
 
Social Monitoring Tool codename Looking Glass, Patrice Pelland
Social Monitoring Tool codename Looking Glass, Patrice PellandSocial Monitoring Tool codename Looking Glass, Patrice Pelland
Social Monitoring Tool codename Looking Glass, Patrice Pelland
 
Профилирование памяти в приложениях на Python, Антон Грицай
Профилирование памяти в приложениях на Python, Антон ГрицайПрофилирование памяти в приложениях на Python, Антон Грицай
Профилирование памяти в приложениях на Python, Антон Грицай
 
Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаи...
Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаи...Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаи...
Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаи...
 
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
 
Некоторые аспекты влияния сходимости протокола BGP на доступность сетевых рес...
Некоторые аспекты влияния сходимости протокола BGP на доступность сетевых рес...Некоторые аспекты влияния сходимости протокола BGP на доступность сетевых рес...
Некоторые аспекты влияния сходимости протокола BGP на доступность сетевых рес...
 
Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...
Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...
Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...
 
Динамика DDoS-атак в России, Александр Лямин
Динамика DDoS-атак в России, Александр ЛяминДинамика DDoS-атак в России, Александр Лямин
Динамика DDoS-атак в России, Александр Лямин
 
Extreme Cloud Storage on FreeBSD, Андрей Пантюхин
Extreme Cloud Storage on FreeBSD, Андрей ПантюхинExtreme Cloud Storage on FreeBSD, Андрей Пантюхин
Extreme Cloud Storage on FreeBSD, Андрей Пантюхин
 
Мониторинг XXI-век, Алиса Смирнова, Дима Никоненко
Мониторинг XXI-век, Алиса Смирнова, Дима НиконенкоМониторинг XXI-век, Алиса Смирнова, Дима Никоненко
Мониторинг XXI-век, Алиса Смирнова, Дима Никоненко
 
Native Client, Евгений Эльцин
Native Client, Евгений ЭльцинNative Client, Евгений Эльцин
Native Client, Евгений Эльцин
 
Tarantool Silverbox, Юрий Востриков
Tarantool Silverbox, Юрий ВостриковTarantool Silverbox, Юрий Востриков
Tarantool Silverbox, Юрий Востриков
 
Real time indexes in Sphinx, Yaroslav Vorozhko
Real time indexes in Sphinx, Yaroslav VorozhkoReal time indexes in Sphinx, Yaroslav Vorozhko
Real time indexes in Sphinx, Yaroslav Vorozhko
 
Sphinx для высоко-нагруженных и масштабируемых проектов, Вячеслав Крюков
Sphinx для высоко-нагруженных и масштабируемых проектов, Вячеслав КрюковSphinx для высоко-нагруженных и масштабируемых проектов, Вячеслав Крюков
Sphinx для высоко-нагруженных и масштабируемых проектов, Вячеслав Крюков
 
Масштабируемая система голосования на базе PostgreSQL PgQ, Сергей Нековаль
Масштабируемая система голосования на базе PostgreSQL PgQ, Сергей НековальМасштабируемая система голосования на базе PostgreSQL PgQ, Сергей Нековаль
Масштабируемая система голосования на базе PostgreSQL PgQ, Сергей Нековаль
 
Вы решили написать собственное хранилище, Илья Космодемьянский
Вы решили написать собственное хранилище, Илья КосмодемьянскийВы решили написать собственное хранилище, Илья Космодемьянский
Вы решили написать собственное хранилище, Илья Космодемьянский
 

Быстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов

  • 1. Быстрое развертывание шаблонов и статики в Mail.Ru Кондратов Николай Технический руководитель почтовой службы HighLoad++ 2010
  • 2. HighLoad++ 2010 2 О чем мы? • система шаблонов • организация работы верстальщиков • процесс разработки и тестирования • тестовая среда • VCS • развертывание
  • 3. HighLoad++ 2010 3 Хорошая система работы со статикой: • удобство и скорость в работе • версионность и бэкап • параллельная работа верстальщиков • независимая разработка фич • параллельное тестирование • независимое внедрение фич • быстрое развертывание на серверах • быстрый откат
  • 4. HighLoad++ 2010 4 Система шаблонов • HTML-текст с командами управления • переменные, функции, инклуды, условия, etc. • на фронтендах – компилированные • одни шаблоны для Perl, С, Python <html> ##SetVars(UserName=Вася)## <!-- IF ActiveUser --> <h1>Привет, ##UserName##!</h1> <!-- /IF --> </html>
  • 5. HighLoad++ 2010 5 Как это было: CVS Схема репозитория mail.ru/ mail/ templates/ images/ js/ css/ my/ photo/ video/ Что лежит: • шаблоны • картинки • swf • бинарные файлы • etc. Почта Мир Фото
  • 6. HighLoad++ 2010 6 HEAD CURRENT Feature-1 Как это было: работа верстальщика • сцепление версий Проблемы • одна ветка в CVS • теги для версионности vasya petya vasya
  • 7. HighLoad++ 2010 7 изменение cvs commit ssh deploy раскладка результат Как это было: работа верстальщика • долгое внесение изменений • «мусорные» коммиты Проблемы • любая раскладка – через репозиторий • боевая и тестовая раскладка – по одной схеме
  • 8. HighLoad++ 2010 8 Как это было: раскладка CVS deploy upload Фронтенды (Почта, Мир, etc.) БД Мониторинг верстальщик
  • 9. HighLoad++ 2010 9 Как это было: минусы • долгий процесс разработки • шаблоны всех проектов на всех фронтендах • долгое распространение шаблонов
  • 10. HighLoad++ 2010 10 Как это было: минусы CVS • размер репозитория – 2,8 Гб, 55 тыс. файлов • медленный • тяжелые ветки • плохой мердж
  • 11. HighLoad++ 2010 11 Что сделали • перевод репозитория CVS  git • разделение репозиториев • использование веток • реорганизация тестового окружения • изменение схемы работы верстальщиков • дополнительная логика при раскладке шаблонов Ускорение разработки. Как?
  • 12. HighLoad++ 2010 12 Переход на git – разделение репозиториев • разделили репозитории (статика и шаблоны) • git с шаблонами – 600 Мб (около 16 тыс. файлов) • git со статикой – 3.2 Гб (около 38 тыс. файлов) Статика Шаблоны • картинки • бинарные данные • шаблоны • CSS • JS
  • 13. HighLoad++ 2010 13 Переход на git – разделение на ветки • разделили на ветки: • master • prerelease • ветки разработки master prerelease test-branch
  • 14. HighLoad++ 2010 14 Переход на git - хуки • hooks: • проверка синтаксиса шаблонов • обработка шаблонов • автоматическая раскладка • etc.
  • 15. HighLoad++ 2010 15 Процесс разработки 1. создаем ветку на основе master 2. вносим изменения 3. коммитим, тестируем 4. переносим изменения из ветки в prerelease 5. тестируем prerelease 6. переносим изменения из prerelease в master 7. раскладываем
  • 16. HighLoad++ 2010 16 Общая схема (потоки данных) d git deploy upload2 Фронтенды (Почта, Мир, etc.) БД Мониторинг верстальщик dev.mail.ru prerelease 1..N upload1
  • 17. HighLoad++ 2010 17 Общая схема (действия) d git deploy upload2 Фронтенды (Почта, Мир, etc.) БД Мониторинг верстальщик dev.mail.ru prerelease 1..N upload1 hook http http samba ssh scpscp
  • 18. HighLoad++ 2010 18 Тестовые серверы • DOCUMENT_ROOT сервера – директория с шаблонами • dev.mail.ru – master • branch-1.dev.mail.ru – ветка branch-1 • виртуальные машины с общим диском • размер каждой директории – около 200 Мб • количество веток – около 500 • для полного хранения – 100 Гб
  • 19. HighLoad++ 2010 19 FUSE (Filesystem on Userspace) • храним только отличающиеся файлы • отключаем компиляцию шаблонов • недостающие файлы в ветке берем из master • итоговый размер 5 Гб branch-1.mail.ru/* mail.ru/* deploy/branch-1/* FUSE
  • 20. 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)
  • 21. 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
  • 22. 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
  • 23. HighLoad++ 2010 23 • git + windows • длинная цепочка действий для раскладки • принцип «сохранил – увидел» • решение – Samba + перенос репозитория git верстальщик Вася samba ssh /home/vasya/ Проблемы
  • 24. HighLoad++ 2010 24 Процесс: 1. клонирование репозитория в /home/vasya 2. редактирование через Samba 3. проверка на vasya.dev.mail.ru 4. новая ветка (на основе master) 5. push 6. раскладка по хуку на тестовый сервер 7. мердж в prerelese 8. раскладка по хуку 9. мердж в master 10.ручная раскладка на живые Samba
  • 25. HighLoad++ 2010 25 Раскладчик • модульность • проверка шаблонов • различная обработка разных типов файлов • компиляция шаблонов ищем diff зависимости обработка компиляция архивация заливка по scp
  • 26. HighLoad++ 2010 26 Раскладчик – вкусности • условная обработка файла в зависимости от меток в нем • JS • сборка • минимизация • именование файлов • Шаблон • переводы строк • перекодировка • и любые глупости
  • 27. HighLoad++ 2010 27 Раскладчик – пример метки • метка в первой строке файла • JS • // @build • // @build-minify • Шаблон • <!-- build-strip-newlines -->
  • 28. HighLoad++ 2010 28 Мониторинг раскладки • инкрементный номер каждой раскладки • в БД – позиция на каждом сервере • мониторим состояние раскладчика • мониторим позиции на каждом сервере deploy upload2 Фронтенды БД Мониторинг upload1
  • 29. HighLoad++ 2010 29 Результаты • упростили жизнь верстальщикам • возможность параллельной разработки фич • ускорение отладки и тестирования • улучшение работы с репозиторием
  • 30. HighLoad++ 2010 30 Но есть проблема… • узкое место – получение архивов с шаблонами из одного источника upload f1 f2 f3 f1373
  • 31. HighLoad++ 2010 31 Простое решение… шардинг • увеличить количество отдающих серверов uploadN f1 f2 f(N-1) fN upload1 …………..
  • 32. HighLoad++ 2010 32 Хорошее решение: peer-to-peer • с upload-сервера отдача в режиме супер-сидирования • фронтенды обмениваются между собой f1 f2 f3 fN upload
  • 33. HighLoad++ 2010 33 Спасибо. Вопросы? kondratov@corp.mail.ru