54
Цикл разработки и внедрения функционала в Мамбе Михаил Буйлов «Мамба»

Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)

  • Upload
    ontico

  • View
    1.668

  • Download
    3

Embed Size (px)

Citation preview

Цикл  разработки  и  внедрения  функционала  в  Мамбе  

Михаил  Буйлов  «Мамба»  

О  чем  доклад?  

•  Основа  разработки  –  система  контроля  версий  

•  Автоматизированная  система  деплоя  с  веб  интерфейсом  

•  Проблемы  непосредственно  деплоя  кода  •  Как  мы  понимаем,  что  все  хорошо  

Системы  контроля  версий  (VCS)  

Мы  использовали  •  CVS  •  SVN  •  GIT  

Проблемы  SVN  

•  Тяжелые  операции  переключения  веток  •  Тяжелые  операции  мержа  и  поддержки  актуальности  веток  

 и  как  следствие    •  Разработка  в  транке  

Проблемы  разработки  в  транке  

•  Нет  стабильного  кода  – Решение:    ConZnuous  IntegraZon  

ConZnuous  IntegraZon  

•  Коммит  в  транк  вызывает  старт  билда  

ConZnuous  IntegraZon  

•  Коммит  в  транк  вызывает  старт  билда  •  Сервер  билдов  –  jenkins  

Проблемы  разработки  в  транке  

•  Нет  стабильного  кода  •  Нет  боевого  кода  

Проблемы  деплоя  при  разработки  в  транке  

•  Его  нельзя  раскладывать  целиком.  Только  отдельные  файлы.  

Проблемы  деплоя  при  разработки  в  транке  

•  Его  нельзя  раскладывать  целиком.  Только  отдельные  файлы.  

•  Деплой  нужно  производить  так  часто  как  это  возможно    

 

Проблемы  деплоя  при  разработки  в  транке  

•  Его  нельзя  раскладывать  целиком.  Только  отдельные  файлы.  

•  Деплой  нужно  производить  так  часто  как  это  возможно    

•  Нет  возможности  сегментировать  билд    

Сегментация  билда  

•  Структурирует  изменения  

Сегментация  билда  

•  Структурирует  изменения  •  Позволяет  автоматически  исключать  из  билда  нестабильный  функционал    

Заявка    

•  Строительный  элемент  билда  

   

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

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

•  Сильно  проще  работать  с  ветками.    

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

 •  Сильно  проще  работать  с  ветками.    •  Стабильный  мастер  позволит  делать  теги  для  аварийного  отката  

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

 •  Сильно  проще  работать  с  ветками.    •  Стабильный  мастер  позволит  делать  теги  для  аварийного  отката  

•  Заявка  на  деплой  –  ветка  в  репозитории  

Система  визуального  деплоя  

•  Начиналась  со  списка  файлов  в  почте  

Система  визуального  деплоя  

•  Начиналась  со  списка  файлов  в  почте  •  Потом  появилась  форма,  для  списка  файлов(автоматизация!)  

Система  визуального  деплоя  

•  Валидирует  заявки  

Валидация  заявок  

•  Автоматический  merge  с  мастером  •  Проверка  корректности  разметки  шаблонов  •  Запуск  тестов  conZnuous  integraZon  

Система  визуального  деплоя  

•  Валидирует  заявки  •  Диагностирует  конфликты  между  заявками  

Система  визуального  деплоя  

•  Валидирует  заявки  •  Диагностирует  конфликты  между  заявками  •  Выгружает  код  на  тестовые  сервера  

Система  визуального  деплоя  

•  Валидирует  заявки  •  Диагностирует  конфликты  между  заявками  •  Выгружает  код  на  тестовые  сервера  •  Генерирует  переводы  

Система  визуального  деплоя  

•  Валидирует  заявки  •  Диагностирует  конфликты  между  заявками  •  Выгружает  код  на  тестовые  сервера  •  Генерирует  переводы  •  Хранит  кучу  галочек  и  стрелочек    

 

Система  перевода  

•  Меташаблоны  

Система  перевода  

•  Меташаблоны  – Blitz  – Вызовы  из  пхп  кода  из  шаблонов  – Вызовы  как  маркеры  фраз  

Система  перевода  

•  Меташаблоны  – Blitz  – Вызовы  из  пхп  кода  из  шаблонов  – Вызовы  как  маркеры  фраз  

•  Копия  шаблонов  для  каждого  языка  

Система  перевода  

•  Меташаблоны  – Blitz  – Вызовы  из  пхп  кода  из  шаблонов  – Вызовы  как  маркеры  фраз  

•  Копия  шаблонов  для  каждого  языка  •  Визуальный  перевод  

Визуальный  перевод  

Цикл  деплоя  функционала      

Цикл  деплоя  функционала  

Цикл  деплоя  функционала  

Цикл  деплоя  функционала  

Цикл  деплоя  функционала  

Как  не  надо  делать  деплой  

На  проекте  с  нагрузкой  больше  1  одновременного  запроса  на  сервер  

Как  не  надо  делать  деплой  

•  Нельзя  делать  копирование  в  бой  –  будут  сегфолты  

Как  нежелательно  делать  деплой  

•  Нельзя  копировать  в  соседнюю  папку  и  переключать  симлинк  

Graceful  restart  

Как  нежелательно  делать  деплой  

Нежелательно  выключать  рабочий  процесс    

Как  мы  делаем  деплой  

•  Разделили  процесс  доставки  кода  и  процесс  переключения  

Как  мы  делаем  деплой  

•  Разделили  процесс  доставки  кода  и  процесс  переключения  

•  Изменяем  document  root  и  перечитываем  конфиг  nginx  

Как  мы  делаем  деплой  

После  деплоя.  Демон  агрегации  статистики  

 •  BTP:  Демон  сбора  статистики  

После  деплоя.  Демон  агрегации  статистики  

 •  BTP:  Демон  сбора  статистики  •  Большое  количество  счетчиков  и  таймеров  разного  уровня.  

После  деплоя.  Демон  агрегации  статистики  

 •  BTP:  Демон  сбора  статистики  •  Большое  количество  счетчиков  и  таймеров  разного  уровня.  

•  Циклическая  база  для  хранения  значений  до  года  

После  деплоя.  Демон  агрегации  статистики  

 •  BTP:  Демон  сбора  статистики  •  Большое  количество  счетчиков  и  таймеров  разного  уровня.  

•  Циклическая  база  для  хранения  значений  до  года  

•  Обновляется  в  реальном  времени  

После  деплоя  все  хорошо  

А  вот  что-­‐то  не  так  

Мы  настроили  дашборды  и  сидим  в  центре  управления  полетом  

О  чем  же  был  доклад?  

•  Git  быстрее  svn  из-­‐за  локальных  операций  •  Визуальным  деплоем  пользуются  даже  менеджеры  

•  Деплой:  переключение  document  root  •  Для  мониторинга  мы  написали  сервер  статистики  и  он  open  source    

BTP  можно  найти  на  github  

•  h�ps://github.com/mambaru/btp-­‐daemon  Демон  

•  h�ps://github.com/mambaru/btp-­‐webui    Web  интерфейс  

•  h�ps://github.com/mambaru/btp-­‐api                    Api  для  PHP  

Вопросы?  

     

Михаил  Буйлов,  «Мамба»  [email protected]  

github.com/mambaru