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

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

Jul 23, 2015

Download

Documents

Ontico
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)

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

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

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

О  чем  доклад?  

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

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

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

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

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

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

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

Проблемы  SVN  

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

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

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

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

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

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

ConZnuous  IntegraZon  

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

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

ConZnuous  IntegraZon  

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

Заявка    

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

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

   

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Graceful  restart  

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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  

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

Вопросы?  

     

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

github.com/mambaru