Презентация методологии git-flow для стабильной разработки
Текстовая версия: https://medium.com/ruopsdev/git-flow-presentation-b80643390888
Скачать презентацию в формате pptx: https://docs.google.com/presentation/d/1Bgx5GP9ykGYKUnAaD53Y0YIpPpHHSbvT/edit?usp=sharing&ouid=106302903983671723423&rtpof=true&sd=true
Codeception + Docker + Robo и что из этого вышлоCOMAQA.BY
Параллелизация тестов, а именно: лучший пхп тулл для автоматизации (Codeception); основы Docker контейнирезации; robo - что это и зачем он нам нужен; profit
Как мы собираем проекты в выделенном окружении в Windows DockerPositive Hack Days
1. Обзор Windows Docker (кратко)
2. Как мы построили систему билда приложений в Docker (Visual Studio\Mongo\Posgresql\etc)
3. Примеры Dockerfile (выложенные на github)
4. Отличия процессов DockerWindows от DockerLinux (Долгий билд, баги, remote-регистр.)
Типовая сборка и деплой продуктов в Positive TechnologiesPositive Hack Days
1. Проблемы в построении CI процессов в компании
2. Структура типовой сборки
3. Пример реализации типовой сборки
4. Плюсы и минусы от использования типовой сборки
Вместе с Алексеем Ашурком мы расскажем о том, как проект «Фламп» релизится по 2n раз в неделю и комфортно себя при этом чувствует:
— Ветки - это хорошо или о переходе с SVN на Git.
— Чем плоха «классическая» модель релизов.
— Что такое модель пофичных релизов, в чём её плюсы и минусы.
— Почему она подходит для веб-сервисов.
— Как идти в ногу со временем или частые деплои.
— Как ловить ошибки и минимизировать их число.
Видео доклада: http://devday.2gis.ru/report/15
Антон Григорьев, Git-flow: как построить процесс разработки и быстро получать...ScrumTrek
Работаете над проектом втроем (вчетвером, впятером, вдесятером и тд) и у вас постоянные конфликты в системе контроля версий? - В спешке пытаетесь собрать проект, но не можете найти рабочую версию, а клиент просит здесь и сейчас? - Процесс тестирования и выпуск новой версии - стресс для вас и вашей команды? Решить эти и другие проблемы поможет git-flow. Вы узнаете, как git-flow связан с процессом непрерывной интеграции, как это поможет быстро доставлять вашим клиентам исправления критических ошибок и как эти изменения автоматически попадут в текущую версию продукта. Приходите, если даже просто интересно, причем тут git и подойдет ли SVN, Hg или TFS?
1. Что такое BI. Зачем он нужен.
2. Что такое Qlik View / Sense
3. Способ интеграции. Как это работает.
4. Метрики, KPI, планирование ресурсов команд, ретроспектива релиза продукта, тренды.
5. Подключение внешних источников данных (Excel, БД СКУД, переговорные комнаты).
Презентация методологии git-flow для стабильной разработки
Текстовая версия: https://medium.com/ruopsdev/git-flow-presentation-b80643390888
Скачать презентацию в формате pptx: https://docs.google.com/presentation/d/1Bgx5GP9ykGYKUnAaD53Y0YIpPpHHSbvT/edit?usp=sharing&ouid=106302903983671723423&rtpof=true&sd=true
Codeception + Docker + Robo и что из этого вышлоCOMAQA.BY
Параллелизация тестов, а именно: лучший пхп тулл для автоматизации (Codeception); основы Docker контейнирезации; robo - что это и зачем он нам нужен; profit
Как мы собираем проекты в выделенном окружении в Windows DockerPositive Hack Days
1. Обзор Windows Docker (кратко)
2. Как мы построили систему билда приложений в Docker (Visual Studio\Mongo\Posgresql\etc)
3. Примеры Dockerfile (выложенные на github)
4. Отличия процессов DockerWindows от DockerLinux (Долгий билд, баги, remote-регистр.)
Типовая сборка и деплой продуктов в Positive TechnologiesPositive Hack Days
1. Проблемы в построении CI процессов в компании
2. Структура типовой сборки
3. Пример реализации типовой сборки
4. Плюсы и минусы от использования типовой сборки
Вместе с Алексеем Ашурком мы расскажем о том, как проект «Фламп» релизится по 2n раз в неделю и комфортно себя при этом чувствует:
— Ветки - это хорошо или о переходе с SVN на Git.
— Чем плоха «классическая» модель релизов.
— Что такое модель пофичных релизов, в чём её плюсы и минусы.
— Почему она подходит для веб-сервисов.
— Как идти в ногу со временем или частые деплои.
— Как ловить ошибки и минимизировать их число.
Видео доклада: http://devday.2gis.ru/report/15
Антон Григорьев, Git-flow: как построить процесс разработки и быстро получать...ScrumTrek
Работаете над проектом втроем (вчетвером, впятером, вдесятером и тд) и у вас постоянные конфликты в системе контроля версий? - В спешке пытаетесь собрать проект, но не можете найти рабочую версию, а клиент просит здесь и сейчас? - Процесс тестирования и выпуск новой версии - стресс для вас и вашей команды? Решить эти и другие проблемы поможет git-flow. Вы узнаете, как git-flow связан с процессом непрерывной интеграции, как это поможет быстро доставлять вашим клиентам исправления критических ошибок и как эти изменения автоматически попадут в текущую версию продукта. Приходите, если даже просто интересно, причем тут git и подойдет ли SVN, Hg или TFS?
1. Что такое BI. Зачем он нужен.
2. Что такое Qlik View / Sense
3. Способ интеграции. Как это работает.
4. Метрики, KPI, планирование ресурсов команд, ретроспектива релиза продукта, тренды.
5. Подключение внешних источников данных (Excel, БД СКУД, переговорные комнаты).
Готовим Docker для Автоматизации ТестированияCOMAQA.BY
Docker как технология уже давно и интенсивно используется на некоторых проектах. Этот доклад посвящен вариантам использования Docker-а для автоматизации тестирования на таких проектах, таким как: верификация деплоя микросервисов, построение изолированной среды для тестирования, мониторинг состояния продакшена.
Инструмент ChangelogBuilder для автоматической подготовки Release NotesPositive Hack Days
1. Основные понятия и определения: продукт, пакет, связи между ними.
2. Как узнать, какие изменения произошли в продукте?
3. Проблемы changelog и release note.
4. Решение: инструмент ChangelogBuilder для автоматической подготовки Release Notes
Организация эффективной работы команды при разработке и поддержке сложной инф...tabtabus
Как поддерживать высокую скорость разработки без ущерба для качества кода? Как быстро и эффективно реагировать на проблемы, возникающие у пользователей? Как автоматизировать и упростить процесс обновления клиентских систем? Как обеспечить передачу знаний между сотрудниками? Как сделать работу сотрудников более интересной? Доклад дает ответы на эти и другие вопросы, основанные на более чем шестилетнем опыте разработки и поддержки сложной многозвенной информационной системы. В частности, рассматривается практический опыт внедрения таких приемов и методологий, как code review, парное программирование, test-driven development, continuous integration, автоматизированное тестирование пользовательского интерфейса, а также собственных наработок.
В докладе будет:
- что такое F.I.R.S.T
- организация кода приложения для повышения его тестируемости, поддерживаемости и производительности
- какой тест-фреймворк выбрать для решения какой задачи?
- какие виды тестирования бывают и за какие из них отвечают разработчики?
- как тратить больше времени на код, а не на тесты
- как и какие метрики тестирования собирать
Это рассказ Вики Руденко о том, что такое непрерывная интеграция и каково ее влияние на работу тестировщика. В ее выступлении можно будет узнать о самых популярных системах CI, услышать о их преимуществах и недостатках. А в завершении она на реальном примере покажет, как работает данный подход в ее проекте.
Jenkins Imperative Pipeline vs Declarative Pipeline Кирилл Толкачёв
Презентация со встерчи JUG MSK про Groovy DSL
Проводитили сравнение новой фичи Jenkins – Declarative Pipelines путем попытки переписать уже существующий пайплайн по доставке ПО на декларативный. Описали подводные камни и обсудили проблемы.
Видео можно будет найти тут https://vk.com/jugmsk или тут https://plus.google.com/communities/115981831554057619568
В своем докладе я поделюсь опытом использования сервера непрерывной интеграции Jenkins, который мы подняли для справочного и картографического API и проекта Онлайн.
Сделаю упор на следующих моментах:
— Jenkins — быстрый старт, как за час сделать свой первый билд.
— Возможности Jenkins: сборка проекта из репозитория, запуск тестов, создание отчётов.
— Расширение функционала: Pipeline (упорядочение сборок), Violations (красивая статистика), E-mail-плагин, плагин от Чака Нориса и пр.
— Опыт использования в веб-проектах 2ГИС.
Когда мы пишем код, наши мысли почти всегда заняты исключительно правильностью его работы. Мы очень редко обращаем внимание на то, как именно его пишем. Выбор оформления и применения определенных элементов языка может влиять на восприятие вашего кода коллегами. Поэтому для эффективной работы в команде необходимо поддерживать единый стиль кода. В этом докладе я постараюсь рассказать, какие средства для этого можно использовать и что делать, если их не хватает.
Готовим Docker для Автоматизации ТестированияCOMAQA.BY
Docker как технология уже давно и интенсивно используется на некоторых проектах. Этот доклад посвящен вариантам использования Docker-а для автоматизации тестирования на таких проектах, таким как: верификация деплоя микросервисов, построение изолированной среды для тестирования, мониторинг состояния продакшена.
Инструмент ChangelogBuilder для автоматической подготовки Release NotesPositive Hack Days
1. Основные понятия и определения: продукт, пакет, связи между ними.
2. Как узнать, какие изменения произошли в продукте?
3. Проблемы changelog и release note.
4. Решение: инструмент ChangelogBuilder для автоматической подготовки Release Notes
Организация эффективной работы команды при разработке и поддержке сложной инф...tabtabus
Как поддерживать высокую скорость разработки без ущерба для качества кода? Как быстро и эффективно реагировать на проблемы, возникающие у пользователей? Как автоматизировать и упростить процесс обновления клиентских систем? Как обеспечить передачу знаний между сотрудниками? Как сделать работу сотрудников более интересной? Доклад дает ответы на эти и другие вопросы, основанные на более чем шестилетнем опыте разработки и поддержки сложной многозвенной информационной системы. В частности, рассматривается практический опыт внедрения таких приемов и методологий, как code review, парное программирование, test-driven development, continuous integration, автоматизированное тестирование пользовательского интерфейса, а также собственных наработок.
В докладе будет:
- что такое F.I.R.S.T
- организация кода приложения для повышения его тестируемости, поддерживаемости и производительности
- какой тест-фреймворк выбрать для решения какой задачи?
- какие виды тестирования бывают и за какие из них отвечают разработчики?
- как тратить больше времени на код, а не на тесты
- как и какие метрики тестирования собирать
Это рассказ Вики Руденко о том, что такое непрерывная интеграция и каково ее влияние на работу тестировщика. В ее выступлении можно будет узнать о самых популярных системах CI, услышать о их преимуществах и недостатках. А в завершении она на реальном примере покажет, как работает данный подход в ее проекте.
Jenkins Imperative Pipeline vs Declarative Pipeline Кирилл Толкачёв
Презентация со встерчи JUG MSK про Groovy DSL
Проводитили сравнение новой фичи Jenkins – Declarative Pipelines путем попытки переписать уже существующий пайплайн по доставке ПО на декларативный. Описали подводные камни и обсудили проблемы.
Видео можно будет найти тут https://vk.com/jugmsk или тут https://plus.google.com/communities/115981831554057619568
В своем докладе я поделюсь опытом использования сервера непрерывной интеграции Jenkins, который мы подняли для справочного и картографического API и проекта Онлайн.
Сделаю упор на следующих моментах:
— Jenkins — быстрый старт, как за час сделать свой первый билд.
— Возможности Jenkins: сборка проекта из репозитория, запуск тестов, создание отчётов.
— Расширение функционала: Pipeline (упорядочение сборок), Violations (красивая статистика), E-mail-плагин, плагин от Чака Нориса и пр.
— Опыт использования в веб-проектах 2ГИС.
Когда мы пишем код, наши мысли почти всегда заняты исключительно правильностью его работы. Мы очень редко обращаем внимание на то, как именно его пишем. Выбор оформления и применения определенных элементов языка может влиять на восприятие вашего кода коллегами. Поэтому для эффективной работы в команде необходимо поддерживать единый стиль кода. В этом докладе я постараюсь рассказать, какие средства для этого можно использовать и что делать, если их не хватает.
Григорий Липин: Автоматизация нагрузочного тестированияYandex
Доклад посвящен нагрузочному тестированию. Мы поделимся своим опытом и расскажем, как автоматизировать нагрузочное тестирование с помощью инструмента Яндекс.Танк.
В докладе мы рассмотрим на примере работы с RESTful интерфейсом сервиса через Json, как написать автоматизированное тестирование с нуля. Особое внимание уделим настройке системных и юнит-тестов и постановке системы CI.
Openstack Third-Party CI and the review of a few Openstack Infrastructure pro...Evgeny Antyshev
Presentation for QA:Conference held in Moscow, Russia on April 23rd.
Author: Evgeny Antyshev, Virtuozzo
These slide discover some Openstack Infrastructure tools to ease the task of creating generic CI systems. As an illustration, I setup "model" CI stand to test Libvirt project. Important ideas originated from Openstack testing also mentioned: pre-review integration testing, testing infrastructure in a cloud, project gating, etc.
Небольшой обзор возможностей плагина jobDSL для Jenkins CI. Плагин позволяет очень быстро настраивать jenkins job и превратить рутинную настройку в управляемый и поддерживаемый код
Общедоступные программы и библиотеки подкупают своей бесплатностью. Если же исходный код открыт, то все сразу думают, что «умные дядьки уже исправили всё, что нужно». На практике же оказывается, что грабли разложены там, где их мало кто ждёт. Тормозит всё, кроме, разве что, самой java. В докладе мы рассмотрим примеры проблем производительности при использовании таких библиотек как Wildfly, Spring, HornetQ, pgjdbc.
Например, оказывается, что spring.getBean тормозит, а в комбинации с autoproxy вообще может занимать до 50% времени приложения. Cglib мешает работе garbage collector’а в попытках проксировать Object#finalize, а HornetQ внезапно притормаживает отправку JMS, что запросто приводит к 5-и секундным задержкам на одно сообщение. Узнаем как их опознать и обезвредить.
http://javapoint.ru/talks/sitnikov/
Непрерывный анализ качества кода с помощью SonarQubeVasilii Chernov
Непрерывный анализ качества кода с помощью SonarQube. В презентации освещены основные принципы статического анализа кода, использование SonarQube, плагина для Jenkins CI SonarQube Github plugin и использование SonarLint для pre-commit проверки
Highload в ВУЗе идеализм, расчётливый менеджмент или пустые надежды / Артем К...Ontico
Highload — тот ещё секс в нашей жизни. Можно ли научить сексу заранее тех, кто не нюхал пороха?
В своей работе я часто сталкиваюсь с бойцами от разработки, управления проектами, информационной безопасности и даже эксплуатации, возможно даже опытными, с медалями первой степени, но из другого рода продуктов, из "обычного софта" что ли... Эти ребята действительно уверены, что база данных всегда ответит их приложению быстро. Они с пеной у рта доказывают, что точки интеграции с elastic'ом защищать не нужно и можно делать синхронные вызовы к нему на входе в приложение. Они обижаются, когда их приложение падает. Недоумевают, почему разбираться с этим нужно вместе — ведь на тестовой все работало, а на машине у программера, вообще, все летало!!!
И только с кровью и потом приходит понимание. Поскольку кровь и пот не только их, но и мои, я задумался: а можно ли ещё на этапе грудного вскармливания подмешать этих знаний в молодые умы? Чтоб уж, если не писали сразу с учётом боевой нагрузки, то хотя бы чтоб быстро понимали, как исправлять приложение.
Как итог: новый спецкурс на Факультете информационных технологий в НГУ.
Два года, два потока.
Переписанная два раза программа, мысли переписать снова.
Трудности с лабораторными стендами. Пошёл через облака — отдал своих кровных 5 000 за время, пока настраивал, и две пары лабораторной работы в Azure.
Отказался от идеи показать для сравнения мир Microsoft с его release manager и desired state config.
С удивлением включил в программу вопросы непрерывной интеграции, а думал говорить только про поставку.
Мясо, нужно больше мяса, но нужны помощники, где взять опытных волонтеров со сбитыми костяшками.
Мучения с погружением в кух�
Large Scale Data Analytics with Spark and Cassandra on the DSE PlatformDataStax Academy
In this talk will show how Large Scale Data Analytics can be done with Spark and Cassandra on the DataStax Enterprise Platform. First we will give an overview of what is the Spark Cassandra Connector and how it enables working with large data sets. Then we will use the Spark Notebook to show live examples in the browser of interacting with the data. The example will load a large Movies Database from Cassandra into Spark and then show how that data can be transformed and analyzed using Spark.
Ceph BlueStore - новый тип хранилища в Ceph / Максим Воронцов, (Redsys)Ontico
- Что такое SDS (общие места для (почти) всех решений — масштабирование, абстрагирование от аппаратных ресурсов, управление с помощью политик, кластерные ФС);
- Почему мы решили использовать SDS (нужно было объектное хранилище);
- Почему решили использовать именно Ceph, а не другие открытые (GlusterFS, Swift...) или проприетарные (IBM Elastic Storage, Huawei OceanStor) решения;
- Что еще умеет Ceph, кроме object storage (RBD, CephFS);
- Как работает Ceph (со стороны сервера);
- Что нового дает BlueStore по сравнению с классическим (поверх ФС);
- Сравнение производительности (метрики тестов);
- BlueStore — все еще tech preview;
- Заключение. Ссылки, литература.
I'm going to cover something which could be seen as essential for Cassandra but which hasn't gotten much attention in the Cassandra community and literature. It's schema migrations--how you go about pushing out and versioning changes to your keyspace and table definitions across environments. This is an area that has established solutions in the relational database world, with tools like Liquibase(http://www.liquibase.org/) and Flyway (http://flywaydb.org/) and in web frameworks like Rails and Grails.
I'll explain the different types of migrations but then focus, for most of the talk, on schema migrations. I'll explain how schema migrations have been done in the Cassandra community and the roadblocks teams have faced trying to use Liquibase and Flyway to manage Cassandra migrations.
Then I'll share an elegant, lightweight schema migrations system that we at GridPoint built on top of Flyway. I'll use our system as a context for discussing schema migration best practices for Cassandra and the various choices teams have for their migrations and table definitions, including when NOT to use a tool like Flyway. I'll also touch on the other types of migrations besides keyspace and table definitions that can be versioned and driven off source control.
Движение по хрупкому дну / Сергей Караткевич (servers.ru)Ontico
Сегодня Интернет увлечен микросервисами, контейнерами и immutable-инфраструктурой. Очень сложно не поддаться искушению внедрить что-то подобное в компании, в которой вы работаете сейчас. Я попытаюсь отговорить вас использовать эти технологии во вред приложению, себе и бизнесу компании в целом. Я расскажу о типовом проекте, который был запущен в 20 странах за 4 месяца, проблемах, которые я встретил, и выводах, которые я сделал.
- Почему микросервисы не спасут, а похоронят ваш проект.
Я расскажу на основе собственного опыта, почему не стоит увлекаться микросервисами для небольших проектов, почему благие намерения — упрощение деплоя и увеличение числа деплоев, увеличение доступности и улучшение масштабирования ведут к отсутствию гибкости и критическому уменьшению стабильности системы.
- Почему ваша система слишком сложна для своих задач.
Я расскажу, почему не стоит усложнять систему, почему, скорее всего, ваша система слишком сложна для задач, которые она решает и почему вы не контролируете то, что происходит в системе. Я объясню, почему вы потратите все свое время на отладку сложной системы, вместо того чтобы решать задачи бизнеса.
- Почему Docker используется неправильно.
Будут предоставлены реальные примеры использования Docker для нового проекта и для портированного проекта, я объясню, с какими проблемами сталкиваются операторы при работе с Docker на живых примерах, объясню, почему вы, скорее всего, используете Docker неправильно, и предложу варианты, как этого избежать.
- Почему immutable слишком статичен для вашей компании.
Я расскажу про свой опыт работы с immutable и объясню, почему, на мой взгляд, переход к подобной инфраструкт
DC/OS – больше чем PAAS, Никита Борзых (Express 42)Ontico
Доклад про ближайшее будущее в эксплуатации распределённых систем.
Компания Mesosphere весной 2016 сделала свою платформу DC/OS (data center operation system) бесплатной и открытой. Платформа DC/OS унифицирует и упрощает процесс поставки и эксплуатации систем.
Основными особенностями платформы являются:
– переход от host centric к resource centric подходу для всех компонентов вашего проекта за счёт представления серверов как ресурсов для приложения (с помощью mesos и marathon);
– наличие инструментов автоматического восстановления вашего проекта после аварии;
– marketplace для приложений. Например, можно развернуть MySQL, Elasticsearch, Kafka или mongodb кластер, используя готовые скрипты развертывания. Процесс развертывания кастомизируется, в случае необходимости можно описать кастомные приложения и поправить скрипты существующих;
– наличие API для интеграции в ваши системы CI/CD, мониторинга, и т.д.
Основные компоненты DC/OS:
– Apache Mesos — абстракция над датацентром, которая представляет сервера (физические и виртуальные) как ресурсы и распределяет эти ресурсы на основании данных о потребностях приложения;
– Marathon — система распределённого запуска приложений (в т.ч. docker контейнеров), основной фишкой является возможность декларативного описания вашей системы. Вы можете описать, сколько ресурсов нужно вашему приложению, зависимости между приложениями, и в каком порядке производить деплой.
Доклад разбит на три части:
– Интро про DC/OS, сравнение с kubernetes и coreos стеком;
– Рассказ про компоненты mesos и marathon, как их можно использовать с докером (и без!) уже сейчас;
– Опыт Express 42. Мы построили CI/CD платформу для приложений, с использованием Mesos, Marathon, Docker и Jenkins 2.0.
The practical story telling how Devops changed the culture of quality in the Bank. Recently Devops became mainstream topic. But only few people have a deep understanding how to apply it to the process of software quality assurance. Some believe that the Devops kills manual testing.
I will talk about changes it makes to the role of QA engineers themself. The discussion main point is NOT about tools or technologies. It’s NOT about the “silver bullet” for your problems with the quality of products.
Instead, I will show you an integrated approach which we used for quality assurance. It allowed us to significantly reduce the cost of finding and fixing defects. This approach has also accelerated the development and delivery value to our customers and made the whole process more transparent and predictable.
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемыOleg Nenashev
Рассказ о Configuration as Code в Jenkins и возможностях Pipeline: DSL, Multi-Branch, Pipeline Model Definition, восстановление после ошибок, параллелизация задач, интеграции. В каком направлении развивается экосистема?
Непрерывная интеграция Python-проектов в ЯндексеAndrey Kazarinov
Рутинные операции тестирования, сборки и развёртывания заставляют в нервном ожидании толстеть на кофепоинте, а частый релизный цикл создаёт лёгкое головокружение? Чтобы помочь вам сохранить тело подтянутым, а голову светлой, я расскажу об организации и особенностях непрерывной интеграции в Python-проектах на примере популярных инструментов.
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...HappyDev
Матерый enterprise проект с "зоопарком" из разнообразных технологий. Часто меняющаяся команда и требовательный заказчик. Менеджер, активно пытающийся вытянуть проект... Все составляющие для сюжета, достойного Титаника.
Было перепробовано множество практик для улучшения процесса разработки, и больше всего это влияло на нас, разработчиков. В одночасье рушились привычные устои, а новые, не успев прижиться, менялись снова. Разве возможна нормальная работа в такой нервной обстановке?
Автор критически оценит парное программирование, тестирование, code review и прочие практики из мира улучшения разработки, а также расшарит набитые шишки и обнаруженные грабли.
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...IT-Portfolio
20 апреля DEV {highload} - конференция о Highload веб-разработке, "Инженерный дзен. DevOps на практике", Александр Титов (DevOps-эксперт "Экспресс 42")
Аннотация
Разработать программное обеспечение в веб-индустрии - это еще не все, надо его еще выкатить в производственное окружение и при этом не разочаровать пользователей. Обычно этот процесс происходит раз в месяц или две недели и сопровождается стрессом для всех участников, а часто заканчивается очень неприятной процедурой отката изменений, далеко не всегда безболезненной.
Проведем параллель с эволюцией в природе, разве там происходит так? Что-то меняется слишком резко и происходит откат? Нет, природа плавно меняет себя, делая небольшие изменения и пропуская их через проверку временем.
Инженерам, работающим в сфере программного обеспечения, дан уникальный шанс, они могут вносить изменения в работающий продукт каждый день, но для этого надо выполнить несколько условий:
- наладить в команде доверительные отношения;
- постоянно интегрировать продукт в тестовой среде;
- поддерживать непрерывный контекст при интеграции;
- использовать подходящие инструменты для управления конфигурацией и деплоя.
Доклад будет про то, как подобрать подходящие инструменты и процессы для работы и начать регулярно выкатывать ваш продукт. В мире принято такие практики называть DevOps.
Биография
Совладелец компании по внедрению DevOps-инструментов и процессов "Экспресс 42". Александр был техническим директором первого облака в России "Оверсан-Скалакси", потом руководил отделом системного администрирования в компании Скайп, подготовил инфраструктуру для запуска проекта видеосообщений.
2. 2CONFIDENTIAL
MOD-PROD
MOD-PROD – группа проектов покрывающая полный цикл производства
осуществляемого клиентом. Начиная от дизайна продукта, производства и
тестирования до доставки заказчику.
Технологии: Java, JavaScript + HTML 5, PostgreSQL, GIT, Amazon Cloud, Atlassian Jira
Amazon Cloud
App 1
App 2
App N
DB 2DB 1
User
User
3. 3CONFIDENTIAL
У нас было:
• Итерация разработки ~ 4 недели
• 10 проектов с огромным количеством связей
• 12 девелоперов
• 4 разных окружения
• Множество common модулей всех сортов и
расцветок
• (!) Большое количество .sql скриптов
создаваемых разработчиками
MOD-PROD структура
4. 4CONFIDENTIAL
MOD-PROD как было раньше
• 2 недели разрабатываем
• 2 недели тестируем
• Тестирование на различных окружениях
• Отдельный бранч для Test & Fix
W 1 W 5
App1 App2
App3
App
N
Test
&
Fix
W 3
Функциональность разрабатывается
отдельно в каждом приложение
Тестирование интегрированных вместе
приложений
5. 5CONFIDENTIAL
MOD-PROD как было раньше
• Изменения проверяются локально, без
остальных приложений
• БД песочница общая для всех девелоперов
• Jenkins уведомляет об ошибках тестов
• Изменений может быть много, очень много
• Требования могут быть убраны / добавлены во
время итерации
GIT
Jenkins
Dev
Sandbox
Feature 1
Task N
Fail notification
run unit tests
App1
Feature 1
Feature 2
Feature 3
Feature 4
...
...
Feature X
Task N
Feature X
Task A
6. 6CONFIDENTIAL
Проблемы
Разработчики видят только результаты Unit тестов1
Конфликты при изменениях БД (выполнение скриптов не гарантирует
выполнение при развертке)
2
Нет проверки взаимодействия приложений3
Долгое ожидание обратной связи от тестирования / аналитиков4
Нет равномерной загруженности команд5
Возможны изменения требований на этапе тестирования6
Долгий процесс, сложно реагировать на изменения7
7. 7CONFIDENTIAL
Continuous Integration (CI)
1. Включим скрипты БД в
цикл CI
2. Пишем более сложные
тесты на взаимодействие
приложений
Результат: проблемы 1,2,3
выглядят решенными.
Очевидные решения
8. 8CONFIDENTIAL
Continuous Delivery (CD) – непрерывное создание готового к поставке продукта
1. Все пункты из CI
2. Включение интеграционных тестов в процесс релиза
3. Использование системы релизов для БД
4. Изменения фокуса команды разработки – мой следующий коммит может сразу
уйти в релиз
5. Частые автоматические релизы после реализации функциональности / по
расписанию
Результат: проблемы 1,2,3,4,5,6,7 выглядят решенными.
Чуть менее очевидные решения
9. 9CONFIDENTIAL
MOD-PROD как стало
• Нет жесткого разделения цикла разработки и цикла тестирования
• После завершения разработки функциональность идет в релиз
• Интеграционное тестирование часть релиз процесса
• Разработчики проверяют функциональность на спец окружении содержащем
все приложения
• Отдельный бранч для релиза
App
1
App
2
App
3
App
N
Auto-
test-env
run integration
tests
W 1
W 5
W 3
bug
10. 10CONFIDENTIAL
Для приготовления CD нам понадобятся:
• CI сервер: Jenkins (Git plugin, Maven plugin,Git parameter, Delivery Pipeline plugin,
Parameterized Trigger plugin)
• Система хранения артефактов: Nexus
• Репозиторий: Git
• Создание релизов: Maven release plugin
• Версионирование БД: Flyway
• Тестовое окружение: Auto-test srv (App Server + DB)
Построение CD процесса
11. 11CONFIDENTIAL
CD структура глазами разработчика
• Для каждого коммита БД скриптов проводится тестовый апдейт БД
• Последние версии приложений всегда доступны на авто-тест сервере
• Релизим только то, что прошло авто-тесты
• В случае неудачи - уведомления почтой
• Все релизы хранятся в Nexus
• Для каждого релиза создается Git tag
• Для удачных релизов можно создавать release notes
GIT
Jenkins
Feature 1
Task N
Fail notification
run unit tests
Auto-test
DB
test
migration
on
commit
Auto-
test Srv
Deploy & Run
Integration
test
Nexus
create tag
12. 12CONFIDENTIAL
Jenkins Pipeline
1. Выполнение unit тестов
2. Развертка приложений на тестовом сервере (git commit из
п. 1)
3. Выполнение интеграционных тестов
4. Релиз приложения (git commit из п. 1)
5. Релиз БД скриптов этого приложения
13. 13CONFIDENTIAL
1. Настройка Jenkins + GIT на Windows
2. Настройки Jenkins + Maven + Nexus
3. Отсутствие интеграции Nexus -> Jenkins для деплоя
4. Внедрение системы управление БД
5. Нужно высокое тестовое покрытие
6. Изменение фокуса команды
7. Сложный переходный период
Основные трудности
14. 14CONFIDENTIAL
«Полуитеграционные» тесты
1. Тестируется взаимодействие с реальной БД
2. Возможность тестировать бизнес-логику
3. Возможность строить сложные сценарии тестирования
4. Откат транзакций по окончанию теста – нет мусора в бд
В случае Java EE можно воспользоваться Arquillian или Spring + Java EE
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({ "classpath:test-applicationContext-web.xml", "classpath:test-applicationContext-security.xml", "classpath:test-applicationContext.xml"})
@WebAppConfiguration()
public class ControllerTest {
public static final String REST_API_SEARCH_REQUEST = "/some/address";
public static final String APPLICATION_JSON_CHARSET_UTF_8 = "application/json;charset=UTF-8";
@Autowired
private LotManager lotManager;
@Test
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void testSearch() throws Exception {
//Вызов REST сервиса
ResultActions loadActions = mvc.perform(MockMvcRequestBuilders
.post(REST_API_SEARCH_REQUEST)
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsBytes(Arrays.asList(MyVO.class))))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.content().contentType(APPLICATION_JSON_CHARSET_UTF_8));
loadActions.andDo(MockMvcResultHandlers.print());
//Обработка REST сервиса
List<ResponseInfoVO> loadResponse = objectMapper.readValue(
loadActions.andReturn().getResponse().getContentAsString(),
typeFactory.constructCollectionType(List.class, ResponseInfoVO.class));
}
15. 15CONFIDENTIAL
Проблемы vs Решения
№ Проблемы Решения
1 Разработчики видят только результаты
Unit тестов
Integration tests
2 Конфликты при изменениях БД Версионирование, правила именование,
тестирование БД on commit
3 Нет проверки взаимодействия
приложений
Доп. окружение со всеми приложениями
+ Integration tests
4 Долгое ожидание обратной связи от
тестирования
Быстрые релизы
5 Нет равномерной загруженности команд Нет выделенного этапа тестирования
6 Возможны изменения требований на
этапе тестирования
Нет выделенного этапа тестирования
7 Долгий процесс, сложно реагировать на
изменения
Процесс ориентирован на постоянное
создание готового к поставке продукта
16. 16CONFIDENTIAL
Высокое покрытие автотестами
Упрощено создание релизов
Легче реагировать на изменения в требованиях во время итерации
Легче делать внезапные «вот очень срочно завтра надо эту штуку»
Время внедрения процесса ~ 10 чел.-дн. (2 календарных месяца)
Итог