SlideShare uma empresa Scribd logo
1 de 33
Быстрое развертывание шаблонов
                         и статики в Mail.Ru
                                     Кондратов Николай
                                    Технический руководитель
                                            почтовой службы




HighLoad++ 2010
О чем мы?

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




HighLoad++ 2010                                   2
Хорошая система работы со статикой:

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




HighLoad++ 2010                                   3
Система шаблонов

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

      <html>
      ##SetVars(UserName=Вася)##
      <!-- IF ActiveUser -->
      <h1>Привет, ##UserName##!</h1>
      <!-- /IF -->
      </html>


HighLoad++ 2010                                             4
Как это было: CVS

        Схема репозитория                  Что лежит:

                  mail.ru/                 • шаблоны
                   mail/           Почта   • картинки
                      templates/
                                           • swf
                      images/
                                           • бинарные файлы
                      js/
                      css/
                                           • etc.
                   my/             Мир
                   photo/          Фото
                   video/




HighLoad++ 2010                                               5
Как это было: работа верстальщика

        •    одна ветка в CVS              HEAD    vasya
        •    теги для версионности

                                                   petya
                                                   vasya
        Проблемы
                                       CURRENT
        •    сцепление версий
                                       Feature-1




HighLoad++ 2010                                            6
Как это было: работа верстальщика

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


                                                       ssh deploy
        Проблемы
        •    долгое внесение изменений                 раскладка
        •    «мусорные» коммиты
                                                       результат


HighLoad++ 2010                                                     7
Как это было: раскладка


                          CVS       deploy        upload



                                                            БД
         верстальщик
                                              Фронтенды
                       Мониторинг            (Почта, Мир,
                                                 etc.)



HighLoad++ 2010                                                  8
Как это было: минусы

        •    долгий процесс разработки
        •    шаблоны всех проектов на всех фронтендах
        •    долгое распространение шаблонов




HighLoad++ 2010                                         9
Как это было: минусы CVS

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




HighLoad++ 2010                                            10
Что сделали

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


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



HighLoad++ 2010                                              11
Переход на git – разделение репозиториев

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

        Статика                                           Шаблоны
        •    картинки                                     •    шаблоны
        •    бинарные данные                              •    CSS
                                                          •    JS



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




HighLoad++ 2010                                                   13
Переход на git - хуки

        •    hooks:
              • проверка синтаксиса шаблонов
              • обработка шаблонов
              • автоматическая раскладка
              • etc.




HighLoad++ 2010                                14
Процесс разработки

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



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


                d
             dev.mail.ru       deploy   upload1   upload2
                                                                        БД




        верстальщик             git
                                                            prerelease 1..N
                                                  Фронтенды (Почта,
                                                     Мир, etc.)
                  Мониторинг



HighLoad++ 2010                                                               16
Общая схема (действия)

                           scp              scp             http
                d
             dev.mail.ru         deploy           upload1             upload2
                                                                                            БД
            samba
                           ssh       hook
                                                                   http

        верстальщик               git
                                                                                prerelease 1..N
                                                                      Фронтенды (Почта,
                                                                         Мир, etc.)
                  Мониторинг



HighLoad++ 2010                                                                                   17
Тестовые серверы

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




HighLoad++ 2010                                               18
FUSE (Filesystem on Userspace)

        •    храним только отличающиеся файлы
        •    отключаем компиляцию шаблонов
        •    недостающие файлы в ветке берем из master
        •    итоговый размер 5 Гб


                                                         mail.ru/*

                  branch-1.mail.ru/*       FUSE
                                                         deploy/branch-1/*



HighLoad++ 2010                                                              19
FUSE (Filesystem on Userspace)


             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)



HighLoad++ 2010                                                             20
FUSE (Filesystem on Userspace)


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



HighLoad++ 2010                                                                 21
FUSE (Filesystem on Userspace)


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



HighLoad++ 2010                                                                 22
Проблемы

        •     git + windows
        •     длинная цепочка действий для раскладки
        •     принцип «сохранил – увидел»
        •     решение – Samba + перенос репозитория



                  верстальщик      ssh
                  Вася                             git
                                                         /home/vasya/
                                  samba

HighLoad++ 2010                                                         23
Samba

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

HighLoad++ 2010                                    24
Раскладчик
                                                  ищем diff

        •    модульность
        •    проверка шаблонов                  зависимости

        •    различная обработка разных типов
             файлов                              обработка
        •    компиляция шаблонов
                                                 компиляция


                                                 архивация


                                                заливка по scp


HighLoad++ 2010                                                  25
Раскладчик – вкусности

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


HighLoad++ 2010                                                       26
Раскладчик – пример метки

        •    метка в первой строке файла
        •    JS
              • // @build
              • // @build-minify

        •    Шаблон
              • <!-- build-strip-newlines -->




HighLoad++ 2010                                 27
Мониторинг раскладки

        •      инкрементный номер каждой раскладки
        •      в БД – позиция на каждом сервере
        •      мониторим состояние раскладчика
        •      мониторим позиции на каждом сервере

            deploy      upload1        upload2       Фронтенды




                                  БД                 Мониторинг


HighLoad++ 2010                                                   28
Результаты

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




HighLoad++ 2010                                         29
Но есть проблема…

        •     узкое место – получение архивов с шаблонами из одного источника


                                            upload




                          f1           f2            f3       f1373




HighLoad++ 2010                                                                 30
Простое решение… шардинг

        •     увеличить количество отдающих серверов


                               upload1        …………..        uploadN




                          f1             f2            f(N-1)         fN




HighLoad++ 2010                                                            31
Хорошее решение: peer-to-peer

        •     с upload-сервера отдача в режиме супер-сидирования
        •     фронтенды обмениваются между собой

                                          upload


                    f1                                             fN



                                    f2             f3


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

                   kondratov@corp.mail.ru




HighLoad++ 2010                             33

Mais conteúdo relacionado

Mais procurados

Производительность и надежность Docsvision 5
Производительность и надежность Docsvision 5Производительность и надежность Docsvision 5
Производительность и надежность Docsvision 5Docsvision
 
Java худеет. Спроси меня как.
Java худеет. Спроси меня как.Java худеет. Спроси меня как.
Java худеет. Спроси меня как.Nikita Lipsky
 
Миграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows AzureМиграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows AzureNatalia Efimtseva
 
Java осень 2014 занятие 1
Java осень 2014 занятие 1Java осень 2014 занятие 1
Java осень 2014 занятие 1Technopark
 

Mais procurados (10)

Управление данными (реляционная модель)
Управление данными (реляционная модель)Управление данными (реляционная модель)
Управление данными (реляционная модель)
 
Управление данными. Основы проектирования БД
Управление данными. Основы проектирования БДУправление данными. Основы проектирования БД
Управление данными. Основы проектирования БД
 
Управление данными (дополнительно)
Управление данными (дополнительно)Управление данными (дополнительно)
Управление данными (дополнительно)
 
Управление данными (хранилища данных и OLAP)
Управление данными (хранилища данных и OLAP)Управление данными (хранилища данных и OLAP)
Управление данными (хранилища данных и OLAP)
 
Управление данными (Введение в СУБД)
Управление данными (Введение в СУБД)Управление данными (Введение в СУБД)
Управление данными (Введение в СУБД)
 
Производительность и надежность Docsvision 5
Производительность и надежность Docsvision 5Производительность и надежность Docsvision 5
Производительность и надежность Docsvision 5
 
Информатика (эффективный поиск в Интернет)
Информатика (эффективный поиск в Интернет)Информатика (эффективный поиск в Интернет)
Информатика (эффективный поиск в Интернет)
 
Java худеет. Спроси меня как.
Java худеет. Спроси меня как.Java худеет. Спроси меня как.
Java худеет. Спроси меня как.
 
Миграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows AzureМиграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows Azure
 
Java осень 2014 занятие 1
Java осень 2014 занятие 1Java осень 2014 занятие 1
Java осень 2014 занятие 1
 

Destaque

Progressive downloads and rendering (Stoyan Stefanov)
Progressive downloads and rendering (Stoyan Stefanov)Progressive downloads and rendering (Stoyan Stefanov)
Progressive downloads and rendering (Stoyan Stefanov)Ontico
 
The design and implementation of a scalable concurrent virtual machine (Rober...
The design and implementation of a scalable concurrent virtual machine (Rober...The design and implementation of a scalable concurrent virtual machine (Rober...
The design and implementation of a scalable concurrent virtual machine (Rober...Ontico
 
Управляемый Code injection (Михаил Якшин)
Управляемый Code injection  (Михаил Якшин)Управляемый Code injection  (Михаил Якшин)
Управляемый Code injection (Михаил Якшин)Ontico
 
10 проблем заказчика на старте аутсорсингового проекта (Cергей Бережной)
10 проблем заказчика на старте аутсорсингового проекта (Cергей Бережной)10 проблем заказчика на старте аутсорсингового проекта (Cергей Бережной)
10 проблем заказчика на старте аутсорсингового проекта (Cергей Бережной)Ontico
 
Демонстрируем результаты заказчику: How to и how to not (Евгения Фирсова)
Демонстрируем результаты заказчику: How to и how to not (Евгения Фирсова)Демонстрируем результаты заказчику: How to и how to not (Евгения Фирсова)
Демонстрируем результаты заказчику: How to и how to not (Евгения Фирсова)Ontico
 
I don't do agile, i am agile (Barry O'Reilly)
I don't do agile, i am agile (Barry O'Reilly)I don't do agile, i am agile (Barry O'Reilly)
I don't do agile, i am agile (Barry O'Reilly)Ontico
 
Архитектура хранилища бинарных данных на Одноклассниках (Александр Христофоро...
Архитектура хранилища бинарных данных на Одноклассниках (Александр Христофоро...Архитектура хранилища бинарных данных на Одноклассниках (Александр Христофоро...
Архитектура хранилища бинарных данных на Одноклассниках (Александр Христофоро...Ontico
 
Кадровые кризисы бизнеса (Александр Зиза)
Кадровые кризисы бизнеса (Александр Зиза)Кадровые кризисы бизнеса (Александр Зиза)
Кадровые кризисы бизнеса (Александр Зиза)Ontico
 
Cтроим эффективную команду из людей с нулевым опытом (Николай Кондратов)
Cтроим эффективную команду из людей с нулевым опытом (Николай Кондратов)Cтроим эффективную команду из людей с нулевым опытом (Николай Кондратов)
Cтроим эффективную команду из людей с нулевым опытом (Николай Кондратов)Ontico
 
Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)
Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)
Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)Ontico
 
Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)
Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)
Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)Ontico
 
Практическая реализация распределенного отказоустойчивого Comet сервера на Er...
Практическая реализация распределенного отказоустойчивого Comet сервера на Er...Практическая реализация распределенного отказоустойчивого Comet сервера на Er...
Практическая реализация распределенного отказоустойчивого Comet сервера на Er...Ontico
 
Netmap (by luigi rizzo) простой и удобный opensource фреймворк для обработк...
Netmap (by luigi rizzo)   простой и удобный opensource фреймворк для обработк...Netmap (by luigi rizzo)   простой и удобный opensource фреймворк для обработк...
Netmap (by luigi rizzo) простой и удобный opensource фреймворк для обработк...Ontico
 
Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...
Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...
Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...Ontico
 
Компиляция скриптов PHP (Алексей Романенко)
Компиляция скриптов PHP (Алексей Романенко)Компиляция скриптов PHP (Алексей Романенко)
Компиляция скриптов PHP (Алексей Романенко)Ontico
 
Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...
Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...
Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...Ontico
 
Cервис рекомендаций на виртуальном Hadoop кластере (Роман Зыков)
Cервис рекомендаций на виртуальном Hadoop кластере (Роман Зыков)Cервис рекомендаций на виртуальном Hadoop кластере (Роман Зыков)
Cервис рекомендаций на виртуальном Hadoop кластере (Роман Зыков)Ontico
 
InnoDB architecture and performance optimization (Пётр Зайцев)
InnoDB architecture and performance optimization (Пётр Зайцев)InnoDB architecture and performance optimization (Пётр Зайцев)
InnoDB architecture and performance optimization (Пётр Зайцев)Ontico
 
Бизнес на коробочном софте против бизнеса на облачном софте / Сергей Котырев ...
Бизнес на коробочном софте против бизнеса на облачном софте / Сергей Котырев ...Бизнес на коробочном софте против бизнеса на облачном софте / Сергей Котырев ...
Бизнес на коробочном софте против бизнеса на облачном софте / Сергей Котырев ...Ontico
 
Патентная защита Internet-разработок (Михаил Радченко)
Патентная защита Internet-разработок (Михаил Радченко)Патентная защита Internet-разработок (Михаил Радченко)
Патентная защита Internet-разработок (Михаил Радченко)Ontico
 

Destaque (20)

Progressive downloads and rendering (Stoyan Stefanov)
Progressive downloads and rendering (Stoyan Stefanov)Progressive downloads and rendering (Stoyan Stefanov)
Progressive downloads and rendering (Stoyan Stefanov)
 
The design and implementation of a scalable concurrent virtual machine (Rober...
The design and implementation of a scalable concurrent virtual machine (Rober...The design and implementation of a scalable concurrent virtual machine (Rober...
The design and implementation of a scalable concurrent virtual machine (Rober...
 
Управляемый Code injection (Михаил Якшин)
Управляемый Code injection  (Михаил Якшин)Управляемый Code injection  (Михаил Якшин)
Управляемый Code injection (Михаил Якшин)
 
10 проблем заказчика на старте аутсорсингового проекта (Cергей Бережной)
10 проблем заказчика на старте аутсорсингового проекта (Cергей Бережной)10 проблем заказчика на старте аутсорсингового проекта (Cергей Бережной)
10 проблем заказчика на старте аутсорсингового проекта (Cергей Бережной)
 
Демонстрируем результаты заказчику: How to и how to not (Евгения Фирсова)
Демонстрируем результаты заказчику: How to и how to not (Евгения Фирсова)Демонстрируем результаты заказчику: How to и how to not (Евгения Фирсова)
Демонстрируем результаты заказчику: How to и how to not (Евгения Фирсова)
 
I don't do agile, i am agile (Barry O'Reilly)
I don't do agile, i am agile (Barry O'Reilly)I don't do agile, i am agile (Barry O'Reilly)
I don't do agile, i am agile (Barry O'Reilly)
 
Архитектура хранилища бинарных данных на Одноклассниках (Александр Христофоро...
Архитектура хранилища бинарных данных на Одноклассниках (Александр Христофоро...Архитектура хранилища бинарных данных на Одноклассниках (Александр Христофоро...
Архитектура хранилища бинарных данных на Одноклассниках (Александр Христофоро...
 
Кадровые кризисы бизнеса (Александр Зиза)
Кадровые кризисы бизнеса (Александр Зиза)Кадровые кризисы бизнеса (Александр Зиза)
Кадровые кризисы бизнеса (Александр Зиза)
 
Cтроим эффективную команду из людей с нулевым опытом (Николай Кондратов)
Cтроим эффективную команду из людей с нулевым опытом (Николай Кондратов)Cтроим эффективную команду из людей с нулевым опытом (Николай Кондратов)
Cтроим эффективную команду из людей с нулевым опытом (Николай Кондратов)
 
Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)
Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)
Как Badoo модерирует 1 миллиард фотографий в год (Андрей Гоменюк)
 
Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)
Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)
Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)
 
Практическая реализация распределенного отказоустойчивого Comet сервера на Er...
Практическая реализация распределенного отказоустойчивого Comet сервера на Er...Практическая реализация распределенного отказоустойчивого Comet сервера на Er...
Практическая реализация распределенного отказоустойчивого Comet сервера на Er...
 
Netmap (by luigi rizzo) простой и удобный opensource фреймворк для обработк...
Netmap (by luigi rizzo)   простой и удобный opensource фреймворк для обработк...Netmap (by luigi rizzo)   простой и удобный opensource фреймворк для обработк...
Netmap (by luigi rizzo) простой и удобный opensource фреймворк для обработк...
 
Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...
Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...
Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...
 
Компиляция скриптов PHP (Алексей Романенко)
Компиляция скриптов PHP (Алексей Романенко)Компиляция скриптов PHP (Алексей Романенко)
Компиляция скриптов PHP (Алексей Романенко)
 
Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...
Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...
Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...
 
Cервис рекомендаций на виртуальном Hadoop кластере (Роман Зыков)
Cервис рекомендаций на виртуальном Hadoop кластере (Роман Зыков)Cервис рекомендаций на виртуальном Hadoop кластере (Роман Зыков)
Cервис рекомендаций на виртуальном Hadoop кластере (Роман Зыков)
 
InnoDB architecture and performance optimization (Пётр Зайцев)
InnoDB architecture and performance optimization (Пётр Зайцев)InnoDB architecture and performance optimization (Пётр Зайцев)
InnoDB architecture and performance optimization (Пётр Зайцев)
 
Бизнес на коробочном софте против бизнеса на облачном софте / Сергей Котырев ...
Бизнес на коробочном софте против бизнеса на облачном софте / Сергей Котырев ...Бизнес на коробочном софте против бизнеса на облачном софте / Сергей Котырев ...
Бизнес на коробочном софте против бизнеса на облачном софте / Сергей Котырев ...
 
Патентная защита Internet-разработок (Михаил Радченко)
Патентная защита Internet-разработок (Михаил Радченко)Патентная защита Internet-разработок (Михаил Радченко)
Патентная защита Internet-разработок (Михаил Радченко)
 

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

Быстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай КондратовБыстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай КондратовFuenteovejuna
 
Путь мониторинга, DevOps club в Grammarly
Путь мониторинга, DevOps club в GrammarlyПуть мониторинга, DevOps club в Grammarly
Путь мониторинга, DevOps club в GrammarlyVsevolod Polyakov
 
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...SECON
 
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)Ontico
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Anton Baranov
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Ontico
 
обзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторингаобзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторингаКонстантин Никифоров
 
Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...
Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...
Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...Ontico
 
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...it-people
 
Net core and linux in production
Net core and linux in productionNet core and linux in production
Net core and linux in productionAnatoly Popov
 
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Николай Лавлинский
 
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)Ontico
 
Асинхронный биллинг для службы такси - IzhDevCom November 2014
Асинхронный биллинг для службы такси - IzhDevCom November 2014Асинхронный биллинг для службы такси - IzhDevCom November 2014
Асинхронный биллинг для службы такси - IzhDevCom November 2014Egor Konovalov
 
Павел Брылов, Skype
Павел Брылов, SkypeПавел Брылов, Skype
Павел Брылов, SkypeOntico
 
Handling Static Files in Badoo by Yuriy Nasretdinov
Handling Static Files in Badoo by Yuriy NasretdinovHandling Static Files in Badoo by Yuriy Nasretdinov
Handling Static Files in Badoo by Yuriy NasretdinovMoscowJS
 
Доклад Юрия Насретдинова на MoscowJS Meetup. "Как мы начали работать со стати...
Доклад Юрия Насретдинова на MoscowJS Meetup. "Как мы начали работать со стати...Доклад Юрия Насретдинова на MoscowJS Meetup. "Как мы начали работать со стати...
Доклад Юрия Насретдинова на MoscowJS Meetup. "Как мы начали работать со стати...Badoo Development
 
Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...
Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...
Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...Ontico
 
Фронтенд для миллионов (Орёл)
Фронтенд для миллионов (Орёл)Фронтенд для миллионов (Орёл)
Фронтенд для миллионов (Орёл)Anastasia Goryacheva
 
DevOps в Agile среде. Как, почему и когда инструменты помогают.
DevOps в Agile среде. Как, почему и когда инструменты помогают.DevOps в Agile среде. Как, почему и когда инструменты помогают.
DevOps в Agile среде. Как, почему и когда инструменты помогают.Alexander Titov
 

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

Быстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай КондратовБыстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
 
Путь мониторинга, DevOps club в Grammarly
Путь мониторинга, DevOps club в GrammarlyПуть мониторинга, DevOps club в Grammarly
Путь мониторинга, DevOps club в Grammarly
 
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
 
Sivko
SivkoSivko
Sivko
 
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 
обзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторингаобзор архитектуры и подсистем деплоя и мониторинга
обзор архитектуры и подсистем деплоя и мониторинга
 
Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...
Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...
Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систе...
 
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...
 
Net core and linux in production
Net core and linux in productionNet core and linux in production
Net core and linux in production
 
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
 
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)
 
Асинхронный биллинг для службы такси - IzhDevCom November 2014
Асинхронный биллинг для службы такси - IzhDevCom November 2014Асинхронный биллинг для службы такси - IzhDevCom November 2014
Асинхронный биллинг для службы такси - IzhDevCom November 2014
 
Павел Брылов, Skype
Павел Брылов, SkypeПавел Брылов, Skype
Павел Брылов, Skype
 
Handling Static Files in Badoo by Yuriy Nasretdinov
Handling Static Files in Badoo by Yuriy NasretdinovHandling Static Files in Badoo by Yuriy Nasretdinov
Handling Static Files in Badoo by Yuriy Nasretdinov
 
Доклад Юрия Насретдинова на MoscowJS Meetup. "Как мы начали работать со стати...
Доклад Юрия Насретдинова на MoscowJS Meetup. "Как мы начали работать со стати...Доклад Юрия Насретдинова на MoscowJS Meetup. "Как мы начали работать со стати...
Доклад Юрия Насретдинова на MoscowJS Meetup. "Как мы начали работать со стати...
 
Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...
Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...
Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...
 
Фронтенд для миллионов (Орёл)
Фронтенд для миллионов (Орёл)Фронтенд для миллионов (Орёл)
Фронтенд для миллионов (Орёл)
 
DevOps в Agile среде. Как, почему и когда инструменты помогают.
DevOps в Agile среде. Как, почему и когда инструменты помогают.DevOps в Agile среде. Как, почему и когда инструменты помогают.
DevOps в Agile среде. Как, почему и когда инструменты помогают.
 

Mais de Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Ontico
 

Mais de Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

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

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