SlideShare a Scribd company logo
1 of 26
Jabber как инструмент
    разработчика
Continuous Integration по протоколу XMPP




                                                Стрелков Виктор,
            руководитель отдела исследований и контроля качества

                                                            1
Немного о нас


Positive Technologies - одна из ведущих российских компаний в
области информационной безопасности


Нам 10 лет. Мы выросли в 4 раза за последние 2 года.


Сегодня более 250 сотрудников занято в разработке:


      - сканера безопасности XSpider


      - системы контроля защищенности MaxPatrol


Анализирует безопасность продуктов крупнейших софтверных вендоров
                                                 (Cisco, Citrix и др.)




                                                                         2
Форум Positive Hack Days 2012

1500 участников (ожидается)
6 потоков
10 семинаров
8 соревнований
                              Партнеры форума:
Состязание CTF
Главный гость - Брюс Шнайер




                                             3
Как мы помогаем пользователям

                    SurfPatrol.ru

     Информирует о состоянии защищенности ПК

     Уведомляет о необходимости обновления и помогает с
     обновлением

     Рассказывает об опасностях в киберпространстве




                                                          4
Как получить полную информацию о проекте?

CI –
                                 Docs?
ответ на
все
вопросы
                                         Deployed?

              Built?
                            CI

                                             Compiled?



                       Tested?




                                                         5
Непрерывная интеграция – очевидная необходимость

Наличие организованного CI
позволяет:


Обнаружить ошибки на ранней
стадии

Сократить затраты на выполнение
регулярных активностей

Контролировать состояние
проекта

Многое другое…




                                                   6
Что включает в себя CI


  Типовые стадии
  непрерывной                    Выполнение
                                   сборки
  интеграции


                   Уведомление                Запуск тестов




                      Развертывание       Выпуск
                       (подготовка)    документации




                                                              7
Стоявшие перед нами ограничения


Максимально сократить время простаивания задачи любого рода в очереди


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


Сигналом для задачи являлось внешнее событие



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


Негативные воздействия на весь процесс разработки от падения сервера или
несобираемого билда должны быть минимальны




                                                                        8
Выбор своего пути



Чего хотелось        Что предлагали

  Распределяемость    Общие машинные
      ресурсов           ресурсы

 Легкая интеграция    Изолированность
 с внешним миром       от окружения
                      Централизованное
 Масштабируемость        управление




                                         9
Проблема – сервер занят


 Выполнение
 длительных операций
 на сервере CI
 заставляет ждать
 других участников
 процесса




                          10
Проблема – связь с внешним миром


Интеграция
элементов другой
системы с all-in-one
CI сервером может
стать проблемой




                                   11
Проблема – необходимость гибкого управления

Под гибким управлением мы понимали:

   • Сборку любой ветки любой конфигурации
   • Запуск любых автотестов над любой сборкой
   • Возможность опубликовать любую сборку, прошедшую
     любой набор тестов
   • И любая активность инициируется любым участником!




                                                         12
Решение – распределенный CI по XMPP




                                      13
Как это работает: общий вид

Типовой серверный модуль
                                       BUILD
   • Приложение/скрипт +              SERVER
     jabber-net.dll
                             Hudson
                                                  DEV
                               +
                                                 TEAM
                             jabber
Типовое место пользователя
                             plugin
   • Любой IM + jabber-
     плагин                             j
                             DEPLOY             TEST
Бонус                        SERVER            SERVER
    • Можно интегрировать
      в систему любой
      готовый CI с                    TEST
      поддержкой jabber               TEAM



                                                        14
Как это работает: в частности

Шаблон серверного модуля


                 Any-server.exe/.py

                                   Config.xml
                  Jabber-net.dll

                                                Обработчики
                                   Входящие
                                                • Исходящие
                                   сообщения      сообщения




                                                              15
Старт процесса

Разработчик инициирует полный цикл, посылая запрос на
сервер сборки




    Developer                                           Build Server
 (Miranda + jabber   build /trunk /fulltest /deploy   (msbuild + jabber-
      plugin)                                              net.dll)




                                                                     16
Переход к тестам

В случае успеха, после сборки управление передается на тест-
сервер




  Build Server                                   Test Server
(msbuild + jabber-     fulltest XXXX /deploy   (python scripts +
     net.dll)                                   jabber-net.dll)




                                                              17
Переход к развертыванию

После успешного прогона тестов управление передается на
сервер развертывания




   Test Server                              Deploy Server
 (python scripts +       deploy XXXX        (msi compiler +
  jabber-net.dll)                            jabber-net.dll)




                                                           18
Завершение цикла

При завершении цикла оповещаются запустивший процесс +
список обязательных заинтересованных лиц




 Deploy Server                            Release Manager
 (msi compiler +      Deploy XXXX is OK   (Miranda + jabber
  jabber-net.dll)                              plugin)




                                                         19
Процесс переменной длины


Далеко не всегда оправданно запускать полный цикл.




  Test manager             /bvt XXXX              Test Server
 (Miranda + jabber                              (python scripts +
      plugin)         bvt tests for XXXX - OK    jabber-net.dll)

    Developer             /build trunk            Build Server
 (Miranda + jabber                              (msbuild + jabber-
      plugin)            Build XXXX - OK             net.dll)



                                                                 20
Множество вариантов

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



Примеры наборов команд:

build /trunk /test

build /21.r.3.SAP /nightly /deploy

test /rc /full

deploy /release




                                                       21
Не увлекайтесь смайликами 




                              22
Дополнительные плюсы в итоге


    Легкое конфигурирование
    • Связь между модулями, нет центра
    • Достаточно подключить jabber и
      добавиться в ростер
    Разделяемость ресурсов
    • Независимость серверов друг от друга
    • Отказоустойчивость

    Унифицированный способ общения
    • Человек и бот – общий язык




                                             23
Все имеет цену


Минусы подхода:
   • Потребность в машинных ресурсах
   • Внедрение/разработка займет время
   • Отсутствие части функционала
     готовых решений




                                         24
С чего начать?

 Шаги к внедрению:

     • Поднять Jabber-сервер + IM
     • Определить роли, аккаунты, добавить в ростер
     • Описать набор команд
     • Написать типовой скрипт/приложение и/или выбрать
       готовый CI с поддержкой джаббера
     • Погонять каждый модуль в автономном режиме
     • Запустить в комплексе




                                                      25
Спасибо за внимание!

      Вопросы?

                                      vstrelkov@ptsecurity.ru
                                     facebook.com/vsstrelkov
                                          twitter: @ptsecurity
      Все иллюстрации, использованные в данной презентации, принадлежат их
      уважаемым владельцам. В случае, если вы являетесь их правообладателем и
      против размещения этих иллюстраций–напишите, пожалуйста, письмо по
      адресу vstrelkov@ptsecurity.ru и я уберу их из слайдов.         26

More Related Content

What's hot

Роман Василенко. Continuous delivery или как упростить себе жизнь
Роман Василенко. Continuous delivery или как упростить себе жизньРоман Василенко. Continuous delivery или как упростить себе жизнь
Роман Василенко. Continuous delivery или как упростить себе жизнь_itcampus
 
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемыMoscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемыOleg Nenashev
 
Непрерывная интеграция. Практическое применение
Непрерывная интеграция. Практическое применениеНепрерывная интеграция. Практическое применение
Непрерывная интеграция. Практическое применениеdevclub
 
Введение в maven
Введение в mavenВведение в maven
Введение в mavenDmitry Zinushin
 
«Механизмы обновления платформы и окружений пользователей в Jelastic»
«Механизмы обновления платформы и окружений пользователей в Jelastic»«Механизмы обновления платформы и окружений пользователей в Jelastic»
«Механизмы обновления платформы и окружений пользователей в Jelastic»Nata_Churda
 
Инструменты разработки ПО в *nix
Инструменты разработки ПО в *nixИнструменты разработки ПО в *nix
Инструменты разработки ПО в *nixAlexander Gerasiov
 
Мастер класс- Maven + Jenkins
Мастер класс- Maven + JenkinsМастер класс- Maven + Jenkins
Мастер класс- Maven + JenkinsValentin Fedoskin
 
Continuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxContinuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxDotNetConf
 
Continuous Delivery in Enterprise / Agile Kitchen 2016
Continuous Delivery in Enterprise / Agile Kitchen 2016Continuous Delivery in Enterprise / Agile Kitchen 2016
Continuous Delivery in Enterprise / Agile Kitchen 2016pbiryukov
 
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...corehard_by
 
Maven 3 : уличная магия
Maven 3 : уличная магияMaven 3 : уличная магия
Maven 3 : уличная магияAleksey Solntsev
 
Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...Ontico
 
Автоматизируй это. Кирилл Тихонов ➠ CoreHard Autumn 2019
Автоматизируй это. Кирилл Тихонов ➠  CoreHard Autumn 2019Автоматизируй это. Кирилл Тихонов ➠  CoreHard Autumn 2019
Автоматизируй это. Кирилл Тихонов ➠ CoreHard Autumn 2019corehard_by
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...HappyDev
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаMikhail Chinkov
 

What's hot (20)

Роман Василенко. Continuous delivery или как упростить себе жизнь
Роман Василенко. Continuous delivery или как упростить себе жизньРоман Василенко. Continuous delivery или как упростить себе жизнь
Роман Василенко. Continuous delivery или как упростить себе жизнь
 
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемыMoscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
 
Непрерывная интеграция. Практическое применение
Непрерывная интеграция. Практическое применениеНепрерывная интеграция. Практическое применение
Непрерывная интеграция. Практическое применение
 
Введение в maven
Введение в mavenВведение в maven
Введение в maven
 
CD with Jenkins. Lessons Learned
CD with Jenkins. Lessons LearnedCD with Jenkins. Lessons Learned
CD with Jenkins. Lessons Learned
 
«Механизмы обновления платформы и окружений пользователей в Jelastic»
«Механизмы обновления платформы и окружений пользователей в Jelastic»«Механизмы обновления платформы и окружений пользователей в Jelastic»
«Механизмы обновления платформы и окружений пользователей в Jelastic»
 
Непрерывная интеграция (Марина Пестова)
Непрерывная интеграция (Марина Пестова)Непрерывная интеграция (Марина Пестова)
Непрерывная интеграция (Марина Пестова)
 
It meetup cd
It meetup cdIt meetup cd
It meetup cd
 
Инструменты разработки ПО в *nix
Инструменты разработки ПО в *nixИнструменты разработки ПО в *nix
Инструменты разработки ПО в *nix
 
Мастер класс- Maven + Jenkins
Мастер класс- Maven + JenkinsМастер класс- Maven + Jenkins
Мастер класс- Maven + Jenkins
 
Continuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxContinuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под Linux
 
Deep Dive in Magento DI
Deep Dive in Magento DIDeep Dive in Magento DI
Deep Dive in Magento DI
 
Continuous Delivery in Enterprise / Agile Kitchen 2016
Continuous Delivery in Enterprise / Agile Kitchen 2016Continuous Delivery in Enterprise / Agile Kitchen 2016
Continuous Delivery in Enterprise / Agile Kitchen 2016
 
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
 
Maven 3 : уличная магия
Maven 3 : уличная магияMaven 3 : уличная магия
Maven 3 : уличная магия
 
Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...
 
Автоматизируй это. Кирилл Тихонов ➠ CoreHard Autumn 2019
Автоматизируй это. Кирилл Тихонов ➠  CoreHard Autumn 2019Автоматизируй это. Кирилл Тихонов ➠  CoreHard Autumn 2019
Автоматизируй это. Кирилл Тихонов ➠ CoreHard Autumn 2019
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
 
Методоллогии Agile
Методоллогии AgileМетодоллогии Agile
Методоллогии Agile
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 

Viewers also liked

Игрушки на вырост. Программируем Lego-роботов
Игрушки на вырост. Программируем Lego-роботовИгрушки на вырост. Программируем Lego-роботов
Игрушки на вырост. Программируем Lego-роботовAlexander Kolotov
 
Analyst’s Guide to GUI: Проектирование интерфейсов как элемент системного ана...
Analyst’s Guide to GUI: Проектирование интерфейсов как элемент системного ана...Analyst’s Guide to GUI: Проектирование интерфейсов как элемент системного ана...
Analyst’s Guide to GUI: Проектирование интерфейсов как элемент системного ана...CUSTIS
 
О чем молчит стейкхолдер (поиск неявных требований)
О чем молчит стейкхолдер (поиск неявных требований)О чем молчит стейкхолдер (поиск неявных требований)
О чем молчит стейкхолдер (поиск неявных требований)Nadia Tarasiuk
 
Чек-лист для разработчика: о чем нужно не забыть, создавая мобильное приложение
Чек-лист для разработчика: о чем нужно не забыть, создавая мобильное приложениеЧек-лист для разработчика: о чем нужно не забыть, создавая мобильное приложение
Чек-лист для разработчика: о чем нужно не забыть, создавая мобильное приложениеdeko519
 
Dmitry Zavalishin. Successful it-project - where can it fail
Dmitry Zavalishin. Successful it-project - where can it failDmitry Zavalishin. Successful it-project - where can it fail
Dmitry Zavalishin. Successful it-project - where can it failAndrew Mayorov
 
Аналитические навыки менеджера по работе с заказчиком: как и зачем?
Аналитические навыки менеджера по работе с заказчиком: как и зачем?Аналитические навыки менеджера по работе с заказчиком: как и зачем?
Аналитические навыки менеджера по работе с заказчиком: как и зачем?SQALab
 
Сторителлинг и проективные тесты для выявления и валидации требований
Сторителлинг и проективные тесты для выявления и валидации требованийСторителлинг и проективные тесты для выявления и валидации требований
Сторителлинг и проективные тесты для выявления и валидации требованийSQALab
 
Пишем самый быстрый хеш для кэширования данных
Пишем самый быстрый хеш для кэширования данныхПишем самый быстрый хеш для кэширования данных
Пишем самый быстрый хеш для кэширования данныхRoman Elizarov
 

Viewers also liked (8)

Игрушки на вырост. Программируем Lego-роботов
Игрушки на вырост. Программируем Lego-роботовИгрушки на вырост. Программируем Lego-роботов
Игрушки на вырост. Программируем Lego-роботов
 
Analyst’s Guide to GUI: Проектирование интерфейсов как элемент системного ана...
Analyst’s Guide to GUI: Проектирование интерфейсов как элемент системного ана...Analyst’s Guide to GUI: Проектирование интерфейсов как элемент системного ана...
Analyst’s Guide to GUI: Проектирование интерфейсов как элемент системного ана...
 
О чем молчит стейкхолдер (поиск неявных требований)
О чем молчит стейкхолдер (поиск неявных требований)О чем молчит стейкхолдер (поиск неявных требований)
О чем молчит стейкхолдер (поиск неявных требований)
 
Чек-лист для разработчика: о чем нужно не забыть, создавая мобильное приложение
Чек-лист для разработчика: о чем нужно не забыть, создавая мобильное приложениеЧек-лист для разработчика: о чем нужно не забыть, создавая мобильное приложение
Чек-лист для разработчика: о чем нужно не забыть, создавая мобильное приложение
 
Dmitry Zavalishin. Successful it-project - where can it fail
Dmitry Zavalishin. Successful it-project - where can it failDmitry Zavalishin. Successful it-project - where can it fail
Dmitry Zavalishin. Successful it-project - where can it fail
 
Аналитические навыки менеджера по работе с заказчиком: как и зачем?
Аналитические навыки менеджера по работе с заказчиком: как и зачем?Аналитические навыки менеджера по работе с заказчиком: как и зачем?
Аналитические навыки менеджера по работе с заказчиком: как и зачем?
 
Сторителлинг и проективные тесты для выявления и валидации требований
Сторителлинг и проективные тесты для выявления и валидации требованийСторителлинг и проективные тесты для выявления и валидации требований
Сторителлинг и проективные тесты для выявления и валидации требований
 
Пишем самый быстрый хеш для кэширования данных
Пишем самый быстрый хеш для кэширования данныхПишем самый быстрый хеш для кэширования данных
Пишем самый быстрый хеш для кэширования данных
 

Similar to Виктор Стрелков - Jabber как инструмент разработчика

CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITYCONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITYPavel Tsukanov
 
Eduard Dautov (Provectus): СКОРИНГ ML МОДЕЛЕЙ В МИКРОСЕРВИСНОЙ АРХИТЕКТУРЕ
Eduard Dautov (Provectus): СКОРИНГ ML МОДЕЛЕЙ В МИКРОСЕРВИСНОЙ АРХИТЕКТУРЕ Eduard Dautov (Provectus): СКОРИНГ ML МОДЕЛЕЙ В МИКРОСЕРВИСНОЙ АРХИТЕКТУРЕ
Eduard Dautov (Provectus): СКОРИНГ ML МОДЕЛЕЙ В МИКРОСЕРВИСНОЙ АРХИТЕКТУРЕ Provectus
 
DevOps в реальном времени
DevOps в реальном времениDevOps в реальном времени
DevOps в реальном времениAndriy Samilyak
 
Кирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектовКирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектовOlesya_V
 
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.COMAQA.BY
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Yandex
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Yandex
 
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...DrupalCamp MSK
 
Процессы разработки в Яндексе
Процессы разработки в ЯндексеПроцессы разработки в Яндексе
Процессы разработки в ЯндексеAndrey Kazarinov
 
Python Development process in Yandex
Python Development process in YandexPython Development process in Yandex
Python Development process in Yandexaviatakz
 
Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Technopark
 
Jiramania презентации @augspb
Jiramania презентации   @augspbJiramania презентации   @augspb
Jiramania презентации @augspbGonchik Tsymzhitov
 
Continous Integration
Continous IntegrationContinous Integration
Continous IntegrationGetDev.NET
 
Robot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораRobot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораSQALab
 
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesPositive Hack Days
 
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON
 
Процесс разработки и тестирования с Docker + gitlab ci
Процесс разработки и тестирования с  Docker + gitlab ciПроцесс разработки и тестирования с  Docker + gitlab ci
Процесс разработки и тестирования с Docker + gitlab ciАлександр Сигачев
 

Similar to Виктор Стрелков - Jabber как инструмент разработчика (20)

CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITYCONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
 
DevOps
DevOps DevOps
DevOps
 
Eduard Dautov (Provectus): СКОРИНГ ML МОДЕЛЕЙ В МИКРОСЕРВИСНОЙ АРХИТЕКТУРЕ
Eduard Dautov (Provectus): СКОРИНГ ML МОДЕЛЕЙ В МИКРОСЕРВИСНОЙ АРХИТЕКТУРЕ Eduard Dautov (Provectus): СКОРИНГ ML МОДЕЛЕЙ В МИКРОСЕРВИСНОЙ АРХИТЕКТУРЕ
Eduard Dautov (Provectus): СКОРИНГ ML МОДЕЛЕЙ В МИКРОСЕРВИСНОЙ АРХИТЕКТУРЕ
 
DevOps в реальном времени
DevOps в реальном времениDevOps в реальном времени
DevOps в реальном времени
 
Wgforge CI/CD
Wgforge CI/CDWgforge CI/CD
Wgforge CI/CD
 
Кирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектовКирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектов
 
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
 
Процессы разработки в Яндексе
Процессы разработки в ЯндексеПроцессы разработки в Яндексе
Процессы разработки в Яндексе
 
Python Development process in Yandex
Python Development process in YandexPython Development process in Yandex
Python Development process in Yandex
 
Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5
 
Jiramania презентации @augspb
Jiramania презентации   @augspbJiramania презентации   @augspb
Jiramania презентации @augspb
 
Continous Integration
Continous IntegrationContinous Integration
Continous Integration
 
Robot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораRobot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатора
 
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive Technologies
 
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
 
Dev collaboration
Dev collaborationDev collaboration
Dev collaboration
 
Процесс разработки и тестирования с Docker + gitlab ci
Процесс разработки и тестирования с  Docker + gitlab ciПроцесс разработки и тестирования с  Docker + gitlab ci
Процесс разработки и тестирования с Docker + gitlab ci
 

More from Positive Hack Days

Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesИнструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesPositive Hack Days
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerPositive Hack Days
 
Аналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikАналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikPositive Hack Days
 
Использование анализатора кода SonarQube
Использование анализатора кода SonarQubeИспользование анализатора кода SonarQube
Использование анализатора кода SonarQubePositive Hack Days
 
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityPositive Hack Days
 
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...Positive Hack Days
 
Автоматизация построения правил для Approof
Автоматизация построения правил для ApproofАвтоматизация построения правил для Approof
Автоматизация построения правил для ApproofPositive Hack Days
 
Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»Positive Hack Days
 
Формальные методы защиты приложений
Формальные методы защиты приложенийФормальные методы защиты приложений
Формальные методы защиты приложенийPositive Hack Days
 
Эвристические методы защиты приложений
Эвристические методы защиты приложенийЭвристические методы защиты приложений
Эвристические методы защиты приложенийPositive Hack Days
 
Теоретические основы Application Security
Теоретические основы Application SecurityТеоретические основы Application Security
Теоретические основы Application SecurityPositive Hack Days
 
От экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 летОт экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 летPositive Hack Days
 
Уязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на граблиУязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на граблиPositive Hack Days
 
Требования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПОТребования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПОPositive Hack Days
 
Формальная верификация кода на языке Си
Формальная верификация кода на языке СиФормальная верификация кода на языке Си
Формальная верификация кода на языке СиPositive Hack Days
 
Механизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET CoreМеханизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET CorePositive Hack Days
 
SOC для КИИ: израильский опыт
SOC для КИИ: израильский опытSOC для КИИ: израильский опыт
SOC для КИИ: израильский опытPositive Hack Days
 
Honeywell Industrial Cyber Security Lab & Services Center
Honeywell Industrial Cyber Security Lab & Services CenterHoneywell Industrial Cyber Security Lab & Services Center
Honeywell Industrial Cyber Security Lab & Services CenterPositive Hack Days
 
Credential stuffing и брутфорс-атаки
Credential stuffing и брутфорс-атакиCredential stuffing и брутфорс-атаки
Credential stuffing и брутфорс-атакиPositive Hack Days
 

More from Positive Hack Days (20)

Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesИнструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows Docker
 
Аналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikАналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + Qlik
 
Использование анализатора кода SonarQube
Использование анализатора кода SonarQubeИспользование анализатора кода SonarQube
Использование анализатора кода SonarQube
 
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps Community
 
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
 
Автоматизация построения правил для Approof
Автоматизация построения правил для ApproofАвтоматизация построения правил для Approof
Автоматизация построения правил для Approof
 
Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»
 
Формальные методы защиты приложений
Формальные методы защиты приложенийФормальные методы защиты приложений
Формальные методы защиты приложений
 
Эвристические методы защиты приложений
Эвристические методы защиты приложенийЭвристические методы защиты приложений
Эвристические методы защиты приложений
 
Теоретические основы Application Security
Теоретические основы Application SecurityТеоретические основы Application Security
Теоретические основы Application Security
 
От экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 летОт экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 лет
 
Уязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на граблиУязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на грабли
 
Требования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПОТребования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПО
 
Формальная верификация кода на языке Си
Формальная верификация кода на языке СиФормальная верификация кода на языке Си
Формальная верификация кода на языке Си
 
Механизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET CoreМеханизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET Core
 
SOC для КИИ: израильский опыт
SOC для КИИ: израильский опытSOC для КИИ: израильский опыт
SOC для КИИ: израильский опыт
 
Honeywell Industrial Cyber Security Lab & Services Center
Honeywell Industrial Cyber Security Lab & Services CenterHoneywell Industrial Cyber Security Lab & Services Center
Honeywell Industrial Cyber Security Lab & Services Center
 
Credential stuffing и брутфорс-атаки
Credential stuffing и брутфорс-атакиCredential stuffing и брутфорс-атаки
Credential stuffing и брутфорс-атаки
 
Доклад SiteSecure
Доклад SiteSecureДоклад SiteSecure
Доклад SiteSecure
 

Виктор Стрелков - Jabber как инструмент разработчика

  • 1. Jabber как инструмент разработчика Continuous Integration по протоколу XMPP Стрелков Виктор, руководитель отдела исследований и контроля качества 1
  • 2. Немного о нас Positive Technologies - одна из ведущих российских компаний в области информационной безопасности Нам 10 лет. Мы выросли в 4 раза за последние 2 года. Сегодня более 250 сотрудников занято в разработке: - сканера безопасности XSpider - системы контроля защищенности MaxPatrol Анализирует безопасность продуктов крупнейших софтверных вендоров (Cisco, Citrix и др.) 2
  • 3. Форум Positive Hack Days 2012 1500 участников (ожидается) 6 потоков 10 семинаров 8 соревнований Партнеры форума: Состязание CTF Главный гость - Брюс Шнайер 3
  • 4. Как мы помогаем пользователям SurfPatrol.ru Информирует о состоянии защищенности ПК Уведомляет о необходимости обновления и помогает с обновлением Рассказывает об опасностях в киберпространстве 4
  • 5. Как получить полную информацию о проекте? CI – Docs? ответ на все вопросы Deployed? Built? CI Compiled? Tested? 5
  • 6. Непрерывная интеграция – очевидная необходимость Наличие организованного CI позволяет: Обнаружить ошибки на ранней стадии Сократить затраты на выполнение регулярных активностей Контролировать состояние проекта Многое другое… 6
  • 7. Что включает в себя CI Типовые стадии непрерывной Выполнение сборки интеграции Уведомление Запуск тестов Развертывание Выпуск (подготовка) документации 7
  • 8. Стоявшие перед нами ограничения Максимально сократить время простаивания задачи любого рода в очереди Наши проекты имеют большое количество разных конфигураций, запуск задачи для новой конфигурации должен быть легким и зависеть от как можно меньшего количества дополнительных действий Сигналом для задачи являлось внешнее событие Существовали внешние приложения, которые должны были реагировать на результат выполнения той или иной задачи Негативные воздействия на весь процесс разработки от падения сервера или несобираемого билда должны быть минимальны 8
  • 9. Выбор своего пути Чего хотелось Что предлагали Распределяемость Общие машинные ресурсов ресурсы Легкая интеграция Изолированность с внешним миром от окружения Централизованное Масштабируемость управление 9
  • 10. Проблема – сервер занят Выполнение длительных операций на сервере CI заставляет ждать других участников процесса 10
  • 11. Проблема – связь с внешним миром Интеграция элементов другой системы с all-in-one CI сервером может стать проблемой 11
  • 12. Проблема – необходимость гибкого управления Под гибким управлением мы понимали: • Сборку любой ветки любой конфигурации • Запуск любых автотестов над любой сборкой • Возможность опубликовать любую сборку, прошедшую любой набор тестов • И любая активность инициируется любым участником! 12
  • 14. Как это работает: общий вид Типовой серверный модуль BUILD • Приложение/скрипт + SERVER jabber-net.dll Hudson DEV + TEAM jabber Типовое место пользователя plugin • Любой IM + jabber- плагин j DEPLOY TEST Бонус SERVER SERVER • Можно интегрировать в систему любой готовый CI с TEST поддержкой jabber TEAM 14
  • 15. Как это работает: в частности Шаблон серверного модуля Any-server.exe/.py Config.xml Jabber-net.dll Обработчики Входящие • Исходящие сообщения сообщения 15
  • 16. Старт процесса Разработчик инициирует полный цикл, посылая запрос на сервер сборки Developer Build Server (Miranda + jabber build /trunk /fulltest /deploy (msbuild + jabber- plugin) net.dll) 16
  • 17. Переход к тестам В случае успеха, после сборки управление передается на тест- сервер Build Server Test Server (msbuild + jabber- fulltest XXXX /deploy (python scripts + net.dll) jabber-net.dll) 17
  • 18. Переход к развертыванию После успешного прогона тестов управление передается на сервер развертывания Test Server Deploy Server (python scripts + deploy XXXX (msi compiler + jabber-net.dll) jabber-net.dll) 18
  • 19. Завершение цикла При завершении цикла оповещаются запустивший процесс + список обязательных заинтересованных лиц Deploy Server Release Manager (msi compiler + Deploy XXXX is OK (Miranda + jabber jabber-net.dll) plugin) 19
  • 20. Процесс переменной длины Далеко не всегда оправданно запускать полный цикл. Test manager /bvt XXXX Test Server (Miranda + jabber (python scripts + plugin) bvt tests for XXXX - OK jabber-net.dll) Developer /build trunk Build Server (Miranda + jabber (msbuild + jabber- plugin) Build XXXX - OK net.dll) 20
  • 21. Множество вариантов Таким образом сравнительно небольшим количеством параметров описывается все многообразие требуемых действий над множеством конфигураций Примеры наборов команд: build /trunk /test build /21.r.3.SAP /nightly /deploy test /rc /full deploy /release 21
  • 23. Дополнительные плюсы в итоге Легкое конфигурирование • Связь между модулями, нет центра • Достаточно подключить jabber и добавиться в ростер Разделяемость ресурсов • Независимость серверов друг от друга • Отказоустойчивость Унифицированный способ общения • Человек и бот – общий язык 23
  • 24. Все имеет цену Минусы подхода: • Потребность в машинных ресурсах • Внедрение/разработка займет время • Отсутствие части функционала готовых решений 24
  • 25. С чего начать? Шаги к внедрению: • Поднять Jabber-сервер + IM • Определить роли, аккаунты, добавить в ростер • Описать набор команд • Написать типовой скрипт/приложение и/или выбрать готовый CI с поддержкой джаббера • Погонять каждый модуль в автономном режиме • Запустить в комплексе 25
  • 26. Спасибо за внимание! Вопросы? vstrelkov@ptsecurity.ru facebook.com/vsstrelkov twitter: @ptsecurity Все иллюстрации, использованные в данной презентации, принадлежат их уважаемым владельцам. В случае, если вы являетесь их правообладателем и против размещения этих иллюстраций–напишите, пожалуйста, письмо по адресу vstrelkov@ptsecurity.ru и я уберу их из слайдов. 26