тарасов, викторова, Dev ops без булшита

Preview:

Citation preview

DevOps без булшита

About us

/aatarasoff

/aatarasoff

habrahabr.ru/aatarasoffdeveloperblog.info

/myfoxicus

/myfoxicus

High-performing IT organizations experience 60 times fewer failures and recover from failure 168 times faster than their lower-performing peers. They also deploy

30 times more frequently with 200 times shorter

lead times.

2015 2016 2017

DevOps - это buzzword...так же как BigData или Cloud

DevOps (?)

● Уступаем в скорости и качестве? ● Хочется повысить стабильность

работы приложений?● Сэкономить? Сократить?

Оптимизировать?● Legacy?● Технологии?

Зачем это Банку?DevOps

● Значительно сократитьtime-to-market

● Повысить качество инженерных решений в продуктах

● Сократить стоимость внедрения, эксплуатации и поддержки

Что это значит для бизнеса?DevOps

● Метрики и KPI?● Комитмент?● Фин модель внедрения DevOps?● CI … CD …?● …. ?

Как проверить Банку, что у нас случился DevOps?

Три составляющие DevOps

Мировоззрение - определяет образ жизни и мышления людей, подталкивает делать вещи правильно

Архитектура - определяет эффективность, степень боли и трудозатраты

Инструменты и практики - дают техническую возможность реализации наших хотелок

Изменение сознания (dev)

• Мой коТ работает на

моей машине

• Я написал инструкцию

админам

• Я что-то сделал, пусть

тестировщик тестирует

• Мой код работает у

клиента

• Я написал скрипт

развёртывания ПО

• Я должен написать

тесты

Изменение сознания (ops)

• Мне дали инструкцию

как выкладывать

продукт

• У вас ошибка в

инструкции

• У меня есть документ

как настраивать сервера

• Я написал скрипт

выкладки продукта

• У нас баг в скрипте

• У меня есть скрипт,

который настраивает

сервера

DEV QA DEPLOYANALISYS SUPPORT

Трансформация

QA SUPPORTDELIVERY

ANALISYS

DEV

QA

Слияние аналитики, разработки и внедрения

Доставка ПО - часть разработки

Единые инструменты и практики для команды

Нагрузочное тестирование как R&D

Тестирование начинается до разработки

Уменьшение рисков за счёт атомарности внедрений

Непрерывный мониторинг состояния системы

Эффективная обратная связь команде

Тестирование на «живых» клиентах

Перманентное ОПЭФокус на своём участке работы

Фокус на доставке ценности клиенту

Метрики

1 2

3

4 5

6

Наш вариантМетрика 01.2016 07.2016 План проекта

на12.2016 Факт 01.2017

Время доставки до клиента от завершения

разработки3-10д 2д 3 часа 2,5 часа

Длительность реализации 30д 10д 5д 3д

Время восстановления после аварии 30-40 мин 20 мин 5 мин 0*

Длительность исправления критических

дефектовN/A 1,5д 1д 0*

Количество багов на релиз 4-5 3 1 0,16

Процент неудавшихся внедрений N/A 0,9 % 0,7 % 0 %

// указаны календарные дни

История одной команды: от менеджеров к инженерам

Кучка евангелистов

Про идею!

Менеджеры, Архитекторы …

Про как и куда!

Разработчики, Тестировщики

Пробуем и улучшаем!

КомандаБерем и делаем!

Путь к инженерии

Жесткая специализация

Выполнение однотипной работы каждый день

Изучение смежных областей и

инструментов

Помощь другим участникам команды в эффективном выполнение их работы

Автоматизация своих действий

Использование инструментов и практик для уменьшения рутины

Инженерный подход

Непрерывное улучшение инструментов и практик

Инженерные практики

Непрерывная доставка ПО

Всё есть код: - документация - тестирование - доставка и развёртывание

Парная работа, кроссфункциональность

Все ходы записаны

Ссылки на артефакты: - документация - отчёт по

тестированию

Инженерные практики

Непрерывная доставка ПО

Всё есть код: - документация - тестирование - доставка и развёртывание

Парная работа, кроссфункциональность

Аналитик Разработчик Тестировщик

== Переводы между своими счетами (получение списка лимитов)Схема: [plantuml,"a2a-limits", "png"]---------- include::diagrams/a2a-limits.puml[]---------- Параметры ответа метода /search#POSTinclude::{snippets}/success/response-fields.adoc[]Пример ответа метода /search#POSTinclude::{snippets}/success/http-response.adoc[]

void "Верни ошибку 400, если в заголовке не указан customerID"() { when: def response = mockMvc.perform(post("/limits/search") .header("applicationId", "spockTest")) then: response.andExpect(status().isUnauthorized())) }

void "Верни ошибку 400, если в заголовке не указан customerID"() { when: def response = null then: response.andExpect(status().isUnauthorized())) }

api-pipeline-template.groovy

jobs.each { job -> pipelineJob("${basePath}/${job}") { //define SCM

definition { cps { script(readFileFromWorkspace('some_script.groovy')) sandbox() } } }}

Инженерные практики

Непрерывная доставка ПО

Всё есть код: - документация - тестирование - доставка и развёртывание

Парная работа, кроссфункциональность

АналитикРазработчик

Тестировщик

Единые инструменты • git • IDE (IDEA/ATOM) • Asciidoctor • Spock Framework

Совместные практики • приёмочное тестирование • TDD (разработка тестов) • BDD (разработка авто-тестов)

Совместные практики • приёмочное тестирование • TDD (проработка тест-кейсов) • BDD (сценарии авто UI-тестирования)

Совместные практики • TDD (проработка тест-кейсов) • документация • нефункциональное тестирование

ManagerDBA

BA

UX

Developer QA

Operations

Software Engineer

Вскрывшиеся нерешенные проблемы - next steps

Инженерные практики

API самообслуживания

SaaS внутри компании

Развитие и рост команды евагелистов

ВыводыDevOps состоит из трёх слагаемых:

• мировоззрения, • архитектуры, • инженерных практик

ВыводыDevOps - это: ● про ускорение доставки ценности клиенту ● не человек, не отдел и дело даже не в

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

решать задачи на инженерном, а не процессном уровне

ВыводыСтавьте правильные метрики, но не забывайте, что метрики всего лишь метрики● нацелены на бизнес

○ время доставки ○ lead time

● нацелены на качество ○ количество дефектов ○ time budget

● нацелены на удовлетворенность ○ NPS внутри команд ○ NPS клиентов

● “красно-зеленые” таблицы ● нацелены на разработку или

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

бизнеса

DevOps – Agile с другого конца

СПАСИБО!

Recommended