DevOps интервью с экспертом

Содержание

DevOps: интервью с экспертом

Кейс 1. Прогноз для импортёра.

С ошибками в методе экспертного интервью в своей прошлой практике сталкивался один из наших клиентов – компания, официальный дистрибьютор итальянского концерна по производству сельскохозяйственной уборочной техники. Когда мы впервые предложили обратиться за прогнозами по развитию рынка к эксперту в аграрной отрасли, партнеры отказались от такого исследования: «Результата не будет, только общие слова про курс доллара и высокие цены на импортные товары. Мы уже пробовали».

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

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

Нам удалось убедить партнера попытаться еще раз. Была проведена полноценная подготовка к интервью. В результате мы получили уже от другого компетентного эксперта:

● Полноценный прогноз развития сельскохозяйственного машиностроения в России и отдельных ключевых для заказчика регионов. Было проанализировано 3 вероятных сценария: позитивный, нейтральный и негативный для клиента.

● Раскладка по цифрам с объемами рынка, долями ключевых игроков и оценкой положения каждого из них.

● Рекомендации по построению стратегии в новых экономических условиях с учетом изменившихся условиях.

Наш партнёр остался доволен полученными данными. Они легли в основу пятилетнего плана развития компании.

DevOps: интервью с экспертом

DevOps — это продуктивное взаимодействие сисадминов, тестировщиков и разработчиков, в ходе чего компания получает более устойчивую систему для продукта с меньшим сроком развертывания и меньшим количеством сбоев. А DevOps инженер понимает, как все это организовать и помогает сделать работу сисадминов, QA и разработчиков удобнее и в чем-то легче. Задача DevOps’а — понимать и видеть систему как единое целое, и действовать, исходя из общих интересов компании и поставленных для всей команды задач.

В обязанности DevOps инженера входит:

  • Развертывание релиза в продакшен;
  • Интеграция и углубление процессов разработки;
  • Автоматизация процессов;
  • Настройка инфраструктуры;
  • Обнаружение и исправление проблем.

Проблема подбора кандидатов на эту позицию обусловлена кросс-доменностью. Успешный кандидат должен иметь знания и умения, которые находятся в трех областях:

  • Разработка. Нужно понимать пользу системы автоматической сборки, обязательного этапа автоматизированного тестирования, отчетов о покрытия кода или отчетов о соответствии кода правилам статического анализатора и т.д.
  • Развертывание, администрирование и поддержка сред и систем. Нужно разбираться в тонкостях докеризации, особенностях настройки ОС под специфичные требования запускаемых компонент и т.д.
  • Процессная составляющая для ведущих позиций. От сильного кандидата требуется не только возможность сделать все «своими руками», но и выстроить процесс. Это зависит от внутренней культуры и структуры команды и сопряжено с необходимостью планировать, убеждать, объяснять и обучать.

Но у кандидатов и компаний нет устоявшегося понимания, что такое «DevOps”. Как следствие — системные администраторы, которые видят в ярлыке “DevOps” возможность увеличения дохода, но имеют пробелы в части процессов и культуры разработки.

СTO компании-клиента DigitalHR

Основные вопросы:

  • С какими инструментами вы в основном работаете? (Это больше касается инструментов контейнеризации, таких как docker и kubernetes).
  • Каким образом происходила работа с AWS?
  • Какие изменения удалось осуществить на последнем месте работы? Что удалось улучшить?
  • Какими задачами интересно заниматься, в какую сторону планируете развитие?
  • С какими из новых инструментов вы работали?
  • Какие качества вы считаете важными для DevOps инженера?

Что такое DevOps и зачем он нужен?

Почему полезно работать с DevOps, где применять эту технологию и какие существуют инструменты. Объясняет Алексей Климин из компании «Атвинта».

Фронтенд, Бэкэнд, Админ, DevOps. Обожаю все оптимизировать и автоматизировать. Постоянно ищу новые технологии и способы их внедрения.

Проблемы при работе без DevOps

Как DevOps улучшает процесс разработки

Что это за технология

Термин DevOps образован от английских слов development и operations. Это подход, методология и даже культура и философия процесса разработки, при котором программисты, тестировщики и системные администраторы могут работать над продуктом быстрее и эффективнее. Подход помогает снизить ошибки при передаче проекта от разработчиков к тестировщикам и сисадминам и наладить между ними взаимодействие. В основе лежит идея, что разработка, тестирование и эксплуатация цифровых продуктов — это единый, бесшовный и циклический процесс.

Сама по себе тема DevOps довольно объемная. Это автоматизация процессов подготовки инфраструктуры как для разработки, так и для тестирования приложения, а также для его эксплуатации. Сюда же входят автоматизация деплоя и мониторинг.

Наиболее ярко DevOps раскрывается при разработке приложения с применением микросервисной архитектуры 1 .

Рассмотрим на примере заказной разработки веб-приложений, с какими проблемами сталкиваются разработчики и как их устранить с DevOps-подходом.

Вариант сервис-ориентированной архитектуры ПО, ориентированный на взаимодействие небольших, слабо связанных и легко изменяемых модулей — микросервисов.

Проблемы при работе без DevOps

До попадания к пользователям программный продукт проходит несколько этапов. Разработчик пишет код, его тестирует QA, после чего системный администратор заливает приложение на боевой сервер.

Много действий при передаче на тестирование

Разработчик устанавливает у себя на машине все необходимое: язык программирования, на котором будет вестись разработка, например PHP 7.0, базу данных, MySQL 5.7 и веб-сервер, Apache. Какая операционная система и какие версии библиотек и зависимостей будут установлены на сервере, неизвестно.

После того как нужная функциональность приложения реализована, требуется ее протестировать.

Программист упаковывает в архив свой код, копию базы данных, информацию о требуемом ПО и инструкцию по установке всего необходимого для запуска и работы приложения. После этого он передает архив тестировщику.

QA-специалист устанавливает все необходимое на тестовый стенд, разворачивает приложение и принимается тестировать.

Если в процессе тестирования появляется новая версия разработки, то приходится повторять процедуру. Разработчику нужно снова создать архив, передать тестировщику; а тому, в свою очередь, снова развернуть приложение.

В результате таких многократно повторяющихся процедур ошибки наслаиваются, и QA- специалисту приходится дважды перепроверять одни и те же баги.

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

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

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

В итоге при использовании на продакшне другого веб-сервера приходится настраивать приложение заново. А это дополнительное время.

Как DevOps улучшает процесс разработки

У нас в digital-агентстве «Атвинта» я настроил процессы таким образом, что сборка проекта, запуск автотестов и деплой на тестовый сервер происходят автоматически, а на продакшн — полуавтоматически. Если какой-либо из этапов завершился неудачно, разработчик получит оповещение.

Эти технологии подходят при разработке веб-приложений, закрытых сервисов вроде корпоративных порталов и сервисов учета сделок для интернет-магазинов.

Для подготовки серверов используются инструменты наподобие Ansible. Они позволяют быстро настроить окружение, в котором приложение будет работать в автоматическом режиме. На это тратится несколько минут, а не несколько часов.

Для единообразия окружения используем инструмент Docker.

После того как разработчик сделал определенный функционал, он отправляет код в репозиторий. Там вступает в работу процесс, называемый Continuous Integration/Continuous Delivery — непрерывная интеграция и непрерывная доставка (далее CI/CD).

Если процесс сборки и автоматического тестирования прошел успешно, приложение разворачивается на тестовом сервере (staging server), где специалист по QA проводит ручное тестирование либо тестирование с применением инструментов вроде Selenium — для автоматизации действий веб-браузера в случае веб-приложения.

Даже если во время ручного тестирования возникли какие-либо ошибки, разработчик быстро вносит правки и выкатывает обновление. Даже если нужно повторять процедуру, это происходит быстро.

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

DevOps-инженер также проводит работы по так называемому незаметному деплою, когда конечные пользователи даже не подозревают о том, что вышла новая версия.

Инструментарий для DevOps

Разнообразие инструментов DevOps невероятно велико, так что я перечислю лишь некоторые из них, которые применяю в своей работе.

  • Управление конфигурацией серверов: Ansible, Chef, Puppet.
  • Для непрерывной интеграции и доставки (CI/CD): GitLab, Jenkins, TeamCity, Drone.
  • Сбор данных для мониторинга: Prometheus, Telegraf, LogStash.
  • Для отображения собранных данных: Grafana, Kibana, Zabbix.
  • Мониторинг ошибок: Sentry, Rollbar.

Ansible — система управления конфигурациями, написанная на Python с использованием декларативного языка разметки (yaml) для описания конфигураций.

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

GitLab — система контроля версий со встроенной CI/CD.

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

Для мониторинга нагрузки серверов используется довольно популярный стек: Grafana + InfluxDB + Telegraf.

Grafana — это платформа с открытым исходным кодом для визуализации, мониторинга и анализа данных.

InfluxDB — база данных для хранения собранной статистики.

Telegraf — агент, который устанавливается на сервер и пересылает метрики, а также логи в базу InfluxDB.

Кому и для чего применять

  • Разработчикам. Позволит сконцентрироваться на коде приложения и не задумываться об инфраструктуре, которая будет на продакшне.
  • Тестировщикам. Предоставит больше простора в тестировании приложения на разных конфигурациях систем и с разным набором библиотек.
  • Системным администраторам. Снимет с них работы по развертыванию и мониторингу приложения.
  • Бизнесу в цифровой среде. Поможет быстрее адаптировать продукт под запросы рынка, выпускать новые версии и улучшать пользовательский опыт клиентов.

Применение методологии DevOps поможет наладить бизнес-процессы и ускорить выход обновлений.

Профессия Веб-разработчик

Практический курс для тех, кто хочет стать профессиональным веб-разработчиком, запустить свой интернет-проект или веб-сервис и получить первые заказы на разработку. Помимо просмотра уроков, вы будете делать реальные проекты, которые оценят. Ведь работодатели будут встречать вас в том числе и по тому, что увидят на аккаунте вашего GitHub. После прохождения обучения — гарантированное трудоустройство

Кто такой DevOps и как им стать: план обучения

Рассказывает Василий Озеров, SVP of Infrastructure

В этой статье я постараюсь рассказать о том, что требуется ИТ-специалисту, чтобы стать DevOps инженером. Но сначала несколько слов о себе, чтобы познакомиться поближе. Меня зовут Василий, работаю SVP of Infrastructure в одной из рекламных компаний, владею собственным бизнесом и на досуге пишу в свой канал Хмельной DevOps.

С Unix системами я познакомился в далеком 2005 году, еще будучи учеником лицея. О да, те незабываемые ночи, проведенные за установкой FreeBSD и компиляцией KDE из исходников. К слову, именно благодаря этому я и нашел свою первую работу, где разрабатывал небольшие проекты на QT/C++, занимался настройкой Cisco, а также поднимал почтовые сервера. И вот, наконец, я попал в геймдев компанию, где и начал свою карьеру DevOps инженера. Активное взаимодействие разработчиков и команды эксплуатации погрузили меня в доселе невиданный мир. До этого момента путь кода от разработчика на продакшн виделся мне огромной черной бездной, в которой было невозможно ничего разглядеть. Но, окунувшись в нее с головой, я понял, что все не так уж и страшно. Я увидел, как приложения собираются, как тестируются, как уходят в продакшн, где их видит весь интернет. Давайте приподнимем завесу тайны и посмотрим, как же стать успешным DevOps инженером.

Что такое DevOps?

DevOps — это сокращение от Development Operations, и, на самом деле, это не название профессии. Это культура, методика, если угодно. DevOps движение возникло в 2008 году и было призвано решить накопившиеся проблемы. Очень много компаний видели проблему во взаимодействиях команд разработки и эксплуатации. Разработчики считали, что если код запустился у них локально, то нет проблем – можно запускать в продакшн. Если все же проблемы возникали, то со стороны команды эксплуатации звучало: «Да это проблемы с кодом, пусть разработчики разбираются!». Из-за такого подхода релизы продуктов постоянно затягивались и зачастую страдало качество конечного продукта. Сильно накладывало отпечаток еще и то, что за один релиз выкатывалось очень много изменений и было очень трудно разобраться, что же породило проблемы на продакшене.

DevOps был призван решить эти проблемы. Он должен был стать связующим звеном между командой разработки и командой эксплуатации. Условно, в DevOps культуре можно выделить несколько ролей, которые очень хорошо соотносятся с профессиями:

  • Build Engineer — человек, отвечающий за сборку кода. Подтягивание зависимостей, разбор конфликтов в коде — это все про него.
  • Release Engineer — отвечает за доставку кода от разработки в продакшн. Какая ветка пойдет в тестирование, какой билд попадет на продакшн, релиз-инженер занимается именно этим.
  • Automation Engineer — инженер по автоматизации. Автоматизирует все, что движется. А что не движется, двигает и тоже автоматизирует. Автоматическая сборка при пуше в гит, прогон тестов, деплой на staging, деплой в продакшн — это все его задачи. Ключевая роль в DevOps подходе.

В целом можно выделить еще несколько ролей. Например, Security Engineer, который будет отвечать за прогон security-тестов и изучение уязвимостей в используемых компонентах. В реальном мире все (или почти все) эти роли по отдельности обычно совмещает какой-нибудь другой человек. К примеру, роль билд инженера можно отдать в руки разработчика. Да и автоматизация настройки серверов обычно отдается системным администраторам. А DevOps инженеру остается проработать и автоматизировать процесс сборки и доставки кода от разработчика в продакшн.

Минимальные знания, необходимые DevOps инженеру

Строго говоря, никаких специальных требований к DevOps студенту не предъявляется, но конечно вход в профессию будет намного легче, если вы обладаете следующими навыками:

Senior System Administrator

Или хотя бы middle. Идея в том, что вы должны на хорошем уровне разбираться в среде, в которой будут работать ваши приложения. Как они стартуют (init, systemd), что делать, если вы видите ошибку too many open files, использовать или не использовать swap. Все это очень сильно пригодится, когда вы будете запускать реальные проекты.

«Росбанк», Москва, до 60 000 ₽ (до налогов)

  1. Пройдите базовый курс по Linux.
  2. Я учился по сайту lissyara.su, речь тут идет больше о FreeBSD, но, изучив все статьи, получится хорошо расширить свой кругозор по часто используемом софту.
  3. Самое главное во время обучения — с головой окунуться в происходящее. Этому очень способствуют тематические форумы и телеграмм-каналы.
Цукерберг рекомендует:  Helloworld - Ошибки в консоли, при написании банальной HelloWorld.

Networking — CCNA

Очень важная вещь, хотя про это забывают многие разработчики. Я считаю, что нельзя писать онлайн-сервисы, не понимая, как работает сеть. Никто не говорит, что надо заучивать семь уровней модели OSI, но точно потребуется знать, как работает IP, TCP/UDP и, конечно, протокол уровня приложения — например, HTTP, HTTP/2. Это сохранит вам кучу нервов выискивая причины ошибки Connection Refused.

  1. Запишитесь на курс CCNA.
  2. Установите себе GNS 3 и прокачивайтесь в настройке сетевого оборудования.

Junior Developer

Да-да. Вы должны представлять, как пишется код, что такое ООП, что такое потоки и еще кучу разных вещей. В общем, чем больше у вас знаний в этом пункте, тем легче вам будет собрать и выкатить приложение.

Многие могут не согласиться со мной, аргументируя это тем, что код должен писать разработчик. Но, простите, если вы не понимаете, как создается программный продукт, то как вы будете автоматизировать его сборку, тестирование и депплой? Сможете ли вы заметить узкое место в архитектурном решении до того, как оно попадет на продакшн? Чтобы ответить на эти вопросы, все же необходимо немного углубиться в основные понятия.
С чего начать:

  1. Изучить основные типы используемых данных.
  2. Посмотреть на основные применяемые алгоритмы.
  3. Почитать про паттерны программирования.
  4. Пройти простой курс по любому языку программирования, например, у golang есть неплохой интерактивный онлайн-туториал.

Junior DBA

На самом деле это входит в предыдущий пункт, но я все же решил его вынести отдельно. Поскольку все текущие проекты в любом случае используют базы данных, было бы неплохо уметь писать SQL запросы, использовать explain и понимать, как работают и зачем нужны index‘ы. Ну и до кучи посмотреть на популярные nosql решения.

  1. Самое простое — это пройти какой-нибудь курс, например от Enterprise DB.
  2. Если курс не хочется,то открываем документацию по postgres, устанавливаем базу, создаем таблички и изучаем основные команды, такие как select , insert , join . Смотрим на execution plan запроса, создаем индексы, а также бекапим, восстанавливаем и настраиваем репликацию.

Судя по моей личной статистике, чаще всего в DevOps приходят люди из эксплуатации, поскольку у разработчиков обычно не прокачан первый скилл из списка. Но я знаю два случая из жизни, когда senior developers становились DevOps, потому что им надоело, как работает эксплуатация �� И, к слову, помимо технических навыков вам точно потребуются некоторые софт скиллз. Как минимум вы будете очень много общаться со всеми заинтересованными сторонами. Также вы будете продвигать новые идеи и технологии, что потребует от вас умения ясно и четко доносить свои мысли и умение спорить. Про стрессоустойчивость писать не буду, но терпение вам точно понадобится, поскольку внедрить новую крутую технологию зачастую невозможно в течение одного дня.

Как стать DevOps инженером

Вообще DevOps инженер — это больше про опыт, нежели про знание конкретного софта. Девопс-ребята постоянно учатся, изучают и тестируют новые проекты и технологии. Они должны постоянно задавать себе вопрос: улучшит ли эта технология наш проект? Что лучше выбрать в качестве языка: ruby, python, golang или написать на чистых плюсах? А как мы будем доставлять изменения в продакшн, чтобы не поломать работающие системы?

Главное, что надо понимать, — DevOps инженер обладает действительно хорошим кругозором. Чтобы его расширить необходимо постоянно заниматься самообучением. Ниже я привел примерные шаги, которые помогут вам вырасти из, например, системного администратора в DevOps инженера. Главное запомните — список всего лишь указывает направление, оттачивать навыки придется вам самим.

  1. Сразу напишем небольшое приложение. Язык выбираем абсолютно любой. Приложение будет отдавать информацию о пользователях через HTTP. По сути, простенькое API.
  2. Теперь давайте добавим работу с базой: пусть наши пользователи хранятся в базе. Идеально структуру базы хранить рядом с кодом и научиться прогонять миграции при новых изменениях. Таким образом ваше приложение само синхронизирует базу до нужной структуры.
  3. Регистрируемся на github.com/bitbucket.org и закидываем весь исходный код нашего приложения туда.
  4. На своей машине поднимаем jenkins/teamcity и настраиваем автоматическую сборку приложения из нашего репозитория по кнопке.
  5. Усложняем задачу. Настроим webhooks на github/bitbucket, которые будут автоматически запускать сборку на jenkins/teamcity.
  6. Добавим тестов в jenkins: как минимум можно прогонять lint по нашему коду или набросать unit тесты.
  7. Переключимся на настройку dev окружения. Берем в руки ansible/chef/puppet/salt и настраиваем виртуалку с нуля: создаем пользователей, устанавливаем необходимые библиотеки и зависимости.
  8. Подводим все это дело под vagrant: виртуалка должна автоматически подниматься и настраиваться.
  9. Подключаем vagrant к jenkins с помощью соответствующего плагина: при пуше в git наше приложение собирается, и поднимается виртуальное окружение с помощью vagrant + configuration system management.
  10. Ищем best practices по деплою приложений на языке, который вы выбрали. Можно заворачивать все в deb/rpm пакеты, можно деплоить ruby с помощью capistrano. Главное — выбрать решение.
  11. Выбор сделан, реализуем его и конфигурируем jenkins, чтобы после пуша в репозиторий, jenkins, помимо сборки приложения и развертывания окружения, выкладывал и запускал наш код.
  12. Добавляем смоук тесты: после запуска jenkins должен запросить список пользователей у нашего API и убедиться, что получает ответ.
  13. Добавляем мониторинг нашего проекта: изучаем time series базы, настраиваем prometheus, grafana, автоматически подключаем новый инстанс нашего приложения к мониторингу.
  14. Улучшаем мониторинг: интегрируемся со slack и pagerduty, чтобы получать нотификации.
  15. Читаем про докер, пишем Dockerfile и оборачиваем наше приложение.
  16. Изучаем увлекательные статьи про настройку систем оркестрации swarm, kubernetes, rancher cattle. Следуем рекомендациям и поднимаем кластер.
  17. Меняем Jenkins: собираем docker образ, прогоняем тесты, запускаем собранный докер на кластере kubernetes, проводим smoke тесты, вводим наше приложение в балансировку.

Главной целью всех этих шагов является получение опыта работы с различными технологиями. Я уже говорил, что самое главное для DevOps инженера — это кругозор, так что берем эти же 17 пунктов и в каждом из них меняем технологию на новую. Писали приложение на golang? Теперь пишем на ruby. Использовали jenkins? Берем teamcity. Поднимали kubernetes? Настраиваем swarm. Таким нехитрым образом через несколько месяцев вы заранее сможете понять, что лучше использовать в конкретной ситуации, а это — самое главное качество грамотного и успешного DevOps.

Заключение

Да, стать DevOps инженером не так-то просто, серебряной пули не существует. Не существует ее и в любой другой области. Всегда придется изучать, читать, пробовать. Но после 10-ой итерации вы войдете во вкус. Вы не будете пропускать ни одной интересной софтинки, станете изучать и пробовать все новое и неизведанное. А новое и неизведанное — это всегда круто. Кто бы вам что ни говорил, дерзайте!

Экспертное интервью

Цель такой беседы: раскрыть все специфические нюансы изучаемого события или предмета. Это достигается благодаря интервью высококомпетентного профессионала, досконально знающего предмет — эксперта.

Если информация, полученная от обычного респондента, нуждается в проверке на истинность, все, что сообщит эксперт, считается надежными и достоверными данными. И задача такого интервью заключается в получении максимально полной и подробной информацией.

Как правило, респондентами в экспертном интервью выступают:

2- Руководители компаний;

4- Узкие специалисты-практики;

5- Сотрудники научно-исследовательских организаций;

6- Представители властей;

7- Сотрудник экспертных или консалтинговых организаций.

Экспертное интервью как метод исследования

Такая разновидность интервью проводится с обладающим высоким статусом респондентом, компетентность которого в узком вопросе темы исследования не подвергается сомнению. Благодаря заранее приготовленному большому кругу вопросов можно получить мнение эксперта по ряду тем.

К преимуществам этого способа исследования относятся:

2- Эксперт предоставляет наиболее актуальную информацию по рынку;

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

4- Полученная информация позволяет делать прогнозы, даже при отсутствии нужного объема статистической информации.

Что нужно для успеха экспертного интервью

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

Кроме проработки основных вопросов, модератору нужно убедиться что предусмотрено выяснение всех специфических деталей в той предметной области или того рынка, с экспертом которого планируется беседа.

Для проведения самого опроса используется два способа:

Заочный вопрос — эксперт сам заполняет отправленную ему анкету. Дешево, просто, но не надежно. При таком способе опроса эксперт может неправильно понять некоторые вопросы в анкете, а некоторые проигнорировать, что сразу снизит ценность информации для исследователя.

Для того чтобы оценить согласованность мнений и подтвердить данные по самым важным пунктам, используется последовательное обращение к нескольким экспертам в одной и той же области.

Информация от эксперта — свежая и точная

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

DevOps: интервью с экспертом

«На текущий момент АПК демонстрирует рентабельность по EBITDA двадцать процентов и выше — например, производство мяса бройлеров дает двадцать процентов, а в растениеводстве и свиноводстве производители получают около тридцати процентов», — говорит первый заместитель председателя правления Россельхозбанка (РСХБ) Ирина Жачкина

Сергей Кумов: «“Техпрорыв” уже позволил исключить из добычи и переработки миллионы тонн пустой породы»

Одно из стратегических направлений развития ПАО ГМК «Норильский никель» — модернизация производства и соответствие современным мировым стандартам. В 2020 году «Норникель» переходит ко второму этапу «Технологического прорыва» — программы повышения операционной эффективности, стартовавшей в 2015 году.

7 вопросов Ирине Самохиной руководителю ИД «Крестьянин»

О грязном заказе

7 вопросов Тимофею Жукову, депутату гордумы Екатеринбурга

О площадке для храма

Александра Щеткина: «Многие родственники верят, что лекарствами можно вернуть память»

26 октября в Москве фонд «Альцрус» соберет пожилых людей с деменцией, их родственников и друзей в Альцгеймер-кафе. Это первый в России формат закрытых встреч, где каждый человек с болезнью Альцгеймера может провести время с семьей в комфортной и безопасной атмосфере. Президент фонда «Альцрус» рассказала, почему большая часть врачей до сих пор считает деменцию нормальным процессом старения и как помочь родственнику, если еще месяц назад он был заядлым театралом, а сегодня не помнит, как есть ложкой

Юлия Герман: «Люди не настроены замечать рядом с собой того, что не нравится глазу»

Из-за жалоб жителей в Самаре 1 сентября закрылось отделение Центра социальной адаптации, куда в любой момент бездомные могли прийти на ночевку. Спустя месяц отделение открыли снова в том же месте — благодаря реакции уполномоченного по правам человека и разных НКО города, хотя конфликт с жителями не улажен и альтернативного помещения нет. Куратор проекта «Ты дома» Юлия Герман рассказала «РР», почему социальным проектам, помогающим бездомным, почти всегда приходится жертвовать хорошими отношениями с жителями

7 вопросов Павлу Гнилорыбову экскурсоводу

О Шуфутиновом дне

Главный клиент – мегарегулятор

На время подготовки ответов на поступающие от ЦБ вопросы, работа банков с клиентами практически приостанавливается, сетует председатель правления Кузнецкбизнесбанка Юрий Буланов

7 вопросов Михаилу Федотову главе СПЧ при президенте

Об оскорблении представителей власти

Жизнь для «Живого»

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

Лицом к реке

Что произойдет с набережными Москвы в ближайшие годы

Анна Ривина: «У нас не выстроится очередь из мужчин, которые хотят себя перевоспитывать»

В центре «Насилию.нет» появилось открытое пространство, куда женщины и мужчины, столкнувшиеся с абьюзом, могут прийти за психологической и юридической помощью. Основатель центра Анна Ривина рассказала «РР», как сотрудники «Насилию.нет» планируют помогать агрессорам и почему в Москве до сих пор есть только один кризисный центр

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

Известный социолог участвовал летом 2020 года в масштабном исследовании настроений жителей Севастополя. О своих наблюдениях и выводах он рассказал корреспонденту «Эксперт Online»

Антон Сазонов: «Можно просто сесть на велосипед и поехать продвигать идею»

Антон Сазонов отправился в велоэкспедицию из Уфы в Лиссабон, чтобы привезти детям из разных стран письма российских школьников. Проект «Дети мира» получил президентский грант и стал 11-м в рейтинге из девяти тысяч заявок. Уфимский велопутешественник рассказал «РР», о чем пишут друг другу дети от Индонезии до Португалии и как встречают в разных странах нового почтальона Печкина

7 вопросов Асе Казанцевой, популяризатору науки

О продаже яйцеклеток

«Протест технологичен, это очень важно в современном мире»

Хотя московские протесты, в отличие от схожих событий 2011-2012 годов, это форма солидарности с рядом конкретных политиков, о них говорят, как о протестах без лидеров

Viber: от звонков к бизнес-сервисам

Один из самых популярных мессенджеров России остается верен сегменту B2B. Компания работает над повышением прозрачности коммуникации, чтобы клиенты точно знали, от кого и почему получили сообщение

Бизнес на людях

Как операционный директор «Арпикома» открыл свою управляющую компанию

Светлана Козырева: «Я с ужасом осознала, что телевизионная речь может стать последним, что в своей жизни услышит пациент хосписа»

В Пермском хосписе появится свое телевидение. Пациенты смогут каждый день смотреть хорошие фильмы вместо плохих новостей и слушать слова поддержки от жителей города вместо рекламы. Онкопсихолог Светлана Козырева рассказала «РР», как удалось подключить к проекту десятки волонтеров в городе, где еще недавно о хосписах не думали вообще

7 вопросов Наталии Зверевой, директору Фонда «Наше будущее»

О «дельфинах капитализма»

Меньше серы, больше «цифры»

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

7 вопросов Михаилу Гельфанду, ученому

О липовых диссертациях

«Через 20 лет мы просто не узнаем наш мир»

Уже в следующем десятилетии ведущие страны начнут массово строить беспилотные ударные подводные аппараты и малоэкипажные надводные корабли, многие функции которых будет выполнять искусственный интеллект, уверен глава КГНЦ Павел Филиппов

Вадим Митьковец: «Уличные музыканты — это предприниматели, а не маргиналы»

Бизнесмен и автор блога «MBA» на YouTube Вадим Митьковец запустил проект «Бременские музыканты». 100 уличных артистов, которые благодаря проекту будут зарегистрированы как самозанятые, смогут поставить себе терминалы бесконтактной оплаты и играть свою музыку с социальной миссией: 25% их выручки автоматически будет получать фонд «Детские сердца». «РР» поговорил с Вадимом Митьковцом о том, как бизнес-проект стал благотворительным.

7 вопросов Алексею Паршину, адвокату Ангелины Хачатурян

О деле сестер Хачатурян

7 вопросов Сергею Шаргунову, писателю и депутату

О постыдных делах

Медиа-тревога, или как сохранить привычный формат СМИ

О западном «перегрузе» толерантности, европейском опыте регулирования соцсетей — очень жестком, кстати, о моделях функционирования СМИ в России и в мире и о кризисе печатной индустрии мы поговорили с председателем комиссии Общественной палаты РФ по развитию информационного сообщества, СМИ и массовых коммуникаций Александром Малькевичем

Стратегия Китая: наше дело предложить

Китайский взгляд на перезагрузку «нового Шелкового пути», торговую войну со Штатами и сотрудничество с Москвой

«Храм не увеличит зеленые зоны»

Запрещенное интервью с борцом против строительства храма в Екатеринбурге

Свидетельство о регистрации средства массовой информации Эл № ФС 77-31428 от «07» марта 2008 г.
Выдано Федеральной службой по надзору в сфере массовых коммуникаций, связи и охраны культурного наследия

DevOps: интервью с экспертом

Задумались о получении сертификата ISTQB, но пока не знаете с какой стороны подойти к этому вопросу?

• Продукт у нас хороший, и вы бы сами убедились, если бы не…

Онлайн-тренинги

Конференции

Что пишут в блогах (EN)

Разделы портала

Про инструменты

У нас DevOps. Давайте уволим всех тестировщиков
04.06.2020 00:00

Можно ли автоматизировать всё, что угодно? Потом всех тестировщиков уволим, конечно. Зачем они теперь нужны, «ручного» тестирования не осталось. Правильно ведь?

Это рассказ о будущем тестирования с точки зрения DevOps. Здесь будут конкретные цифры и чисто практические выводы, как так получается, что у хороших специалистов всегда есть работа. (Или нет работы! Глядите на фотографию Шекспира и бойтесь, сейчас будет решаться ваша судьба).

В основе материала — расшифровка доклада Баруха jbaruch Садогурского, Developer Advocate в компании JFrog. Текстовая версия и видео доклада — под катом.

Всем привет! Видите цитату из Шекспира на картинке чуть выше? Это «Генрих VI», предложение убить всех адвокатов. Сами понимаете, с тех пор у нас более вегетарианские способы избавляться от неправильных профессий. Убивать мы никого не будем, просто возьмем и всех уволим.

Точней, есть такая возможность. Станем ли мы кого-то увольнять — давайте поговорим.

Это Вася. Как-то утром он приходит на работу и проходит мимо самой главной переговорки. А там его шеф приветствует нового консультанта. Консультант по эффективности приходит в компанию и говорит: «Мы будем делать DevOps как в netflix*. Мы специально летали в Кремниевую долину на конференцию, и там нам рассказали, как делают в netflix».

* дисклеймер: в этой статье часто используется фирма Netflix как недостижимый идеал DevOps. Это использование носит нарицательный характер.

Обсуждение того, действительно ли в фирме Netflix идеальный DevOps, выходит за рамки этой статьи (скорее всего, кстати, нет).

Они ставят Spinnaker, потом запускают Chaos Monkey, и все автоматизируют. И мы так будем делать и будем очень эффективными.

Шеф спрашивает, а как же тестировщики. «А у нас как в нетфликсе — freedom и responsibility. Разработчики будут сами писать тесты».

И тут Васе становится нехорошо, потому что он смотрит на свою визитку, а там…

Вася начинает переживать: в прошлый раз, когда приходил консультант по эффективности, уволили его знакомую, Наташу, работавшую сисадмином. Потому что всюду DevOps. И тут он понимает, что скоро все будет очень плохо.

Но, конечно, тут Вася просыпается.

Меня зовут Барух Садогурский, я Developer Advocate в компании JFrog. Редактор этой статьи специально попросил написать пару абзацев, чтобы никто не сомневался в моих полномочиях рассказывать, как мы будем увольнять тестировщиков.

Компания JFrog – это стартап в Кремниевой долине, последняя наша оценка была более миллиарда долларов. Мы официально unicorn, и мы занимаемся автоматизацией DevOps. Наши продукты – Artifactory, Xray, Mission Control и так далее – инструменты для той самой автоматизации, превращающий омский мясокомбинат в netflix.

Я сам не тестировщик, поэтому, возможно, буду рассказывать какую-то чушь. В программке конференции, на которой изначально читался этот доклад, есть специальное обозначение — картинка с бутылкой с зажигательной смесью. Значит, докладчик собирается нести какую-то ересь, и у слушателей будет подгорать. Это про меня. В твиттере я @jbaruch. Как вы уже поняли, я очень веселый парень, меня надо срочно зафолловить.

У меня для вас есть новости: 80% разработчиков пишут тесты. Разработчикам устраивают всякие опросы. Вот нам компания JetBrains устраивает очень хороший State of Developer Ecosystem Report. Там спрашивают, кто пишет юнит-тесты.

  • 59% пишут сами,
  • 11% видят в своем коде юнит-тесты и не знают, откуда они приходят.

Итого 70% разработчиков пользуются юнит-тестами. Это круто.

Есть более углубленное исследование компании Hubstaff о тестировании с помощью разработчиков, оно чуть-чуть постарее – 2014 года. Согласно нему:

  • 85% разработчиков пишут юнит-тесты,
  • 15% нет;
  • 40% работают по методологии test-driven development;
  • хорошее покрытие – между 34 и 66 у 31% разработчиков.

Подавляющее большинство разработчиков утверждают, что они еще и ручками что-то тестируют. Врут, конечно, но статистика такова.

Начиная с 2011 года наша самая любимая цитата: «Every company is a software company». Включая, естественно, омский мясокомбинат, на котором Вася работает. Везде есть софт и все на этом софте пытаются зарабатывать. Что хотят компании? Грести бабло лопатой. Откуда берутся деньги? От довольных клиентов. А что хотят клиенты? Новых фич. А когда они хотят новых фич? Сейчас!

CEO из комикса Dilbert — начальник начальника Васи. Он тоже слушал всякие интересные доклады. Он считает, что если клиенты хотят новых фич — значит, нужно новые фичи чаще релизить. Логично. Для этого нужно уменьшать трение в командах.

Надо ли чаще релизить? Например, в 2020 году Java перешла на более частые релизы, потому что все хотят фичи и, казалось бы, надо релизить побыстрее. Каждые полгода выходит новая Java. Но никто ее не использует.

У нас недавно был Joker, мы на нем устраивали Java Puzzlers. В начале мы всегда спрашиваем, кто на какой Java, чтобы понять, какие паззлеры спрашивать.

Картинка не изменилась: 80%, а то и больше, всё ещё сидят на Java 8, которая вышла сто лет назад. Ни девятую, ни десятую, ни одиннадцатую не берет никто.

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

Как мы ставим апдейты

Приходит уведомление, что у нас есть апдейт, давайте поставим новую операционную систему. Мы хотим этого? Там есть что-то полезное или у нас кассовый аппарат, который работает на Windows 98 Embedded, и больше нам ничего не надо?

Если мы хотим это обновление, следующий вопрос – насколько оно опасно. Одно дело, когда фейсбук проапдейтится, и у нас поедет скроллинг, и мы не сможем лайки ставить. Совсем другое дело, когда в больнице отключится система жизнеобеспечения. Если нам наплевать на риски, давайте апдейтить. Если риски есть, то вопрос в доверии тому, кто выкатывает обновление.

С компанией Apple раньше не было проблем: есть новая операционная система – давай возьмем. Это было раньше, а сейчас мы уже боимся обновляться, нет былого доверия. Если мы доверяем – нет проблем, обновляемся. Если же не доверяем – нужно тестировать.

Мы делаем то, что называется приемочные тесты (acceptance tests). Вот нам сообщают: вышла новая Java, и к примеру, мы — компания Baidu. Хайлоад, 100500 серверов, клауд, JVM везде. Мы берем какую-то часть серверов, начинаем менять Java. Куче инженеров приходится что-то сделать и всё это проверить. Раз в три года нормально, но раз полгода… Вы что, охренели? Мы только проверять её полгода будем. Конечно, мы не будем брать эту вашу новую Java.

Поэтому, если мы можем проверить быстро, стоит обновиться. А вот если придётся проверять долго, то можно и пропустить пару версий. Ничего не случится, если переползём с восьмой версии сразу на двенадцатую.

Проблема именно в доверии. Если мы не доверяем, то обновляться будет тяжело. Если вопрос доверия решен, то с апдейтами проблем нет. Или у нас есть фича, или нам наплевать.

Возьмите Chrome. Он, начиная с какой-то версии, апдейтится вообще никого не спрашивая. Риски там небольшие, но все-таки есть. Но с другой стороны, мы доверяем тем, кто Chrome пишет. Чаще всего, когда выходит новый релиз Chrome, ничего там не ломается. По сути, у нас нет проблем с доверием, и мы идем по этому пути.

У нас есть апдейт, риски не важны, доверяем – апдейтим. А еще нас не будут спрашивать, хотим мы или нет, поэтому мы всегда будем апдейтить. Именно так это и делается.

Представьте, netflix выкатывает новый апдейт, и теперь мы можем пропускать не только титры и заставку, но и все скучные места. Крутой апдейт? Крутой. Мы его хотим? Хотим. Он будет работать? Скорее всего, да. В крайнем случае мы пойдем на YouTube, мультики посмотрим, если netflix сломался.

Вопрос доверия тут критичный. Как мы его решаем? Под словом «мы» имеются в виду два сооснователя JFrog, Фред Саймон (Fred Simon), Йоав Ландман (Yoav Landman) и ваш покорный слуга. Мы написали книжку, которая советует, как решать эту проблему.

Допустим, мы уговорили нашего CEO, он прочитал Liquid Software, и теперь он понимает, зачем ему апдейт. Он спрашивает у консультанта, как мы будем чаще апдейтить. Agile! DevOps! А что такое DevOps?

DevOps

Давайте я вам расскажу немного теории, что такое DevOps, поскольку мы на этом зарабатываем. Взгляните на картинку, у нас были вот эти группы, команды, отделы:

Есть разработчики, есть Ops — сисадмины, которые берут то, что разработчики написали, и выкидывают на прод. И еще посередине между разработчиками Ops есть QA, которые тестируют. То есть, разработчики сели, написали, потом отнесли тестировщикам, потестировали, отнесли сисадминам, и они на прод залили. Для этого у нас были отдельные отделы.

Русский язык прекрасен: отдел всегда отдельный, это корень слова. На английском этой прелести нет, поэтому эти разные отделы называются silos. Лучший перевод этого слова на русский привел Антон Вайс, который был лучшим докладчиком DevOops. Он называет silos «колодцами». Разные отделы – глубокие колодцы. Чтобы туда загрузить какую-то работу, нужно спуститься, а потом вытащить оттуда работу – подняться. Удобнее всего делать это группами. Как мы группируем вещи, которые из колодца достаем?

Естественно, ведрами. То есть, у нас есть такие «ведра работы». Разработчики что-то в колодце написали, мы это загрузили в ведра, достали это из колодца, отнесли ведра тестировщикам, спустили к ним в колодец.

Очень много действий совершается для передачи работы между разными колодцами. Когда мы группируем задачи, чтобы сэкономить на этой работе, мы начинаем нагружать эти ведра. Само собой, чем больше ведро, тем больше мы сэкономим на этом процессе передачи. Поэтому ведра делают большими.

В чем проблема с большими ведрами? В том, что их долго наполнять. Поэтому когда у нас есть важные фичи, которые надо срочно выпустить на продакшн, потому что стоит очередь клиентов с деньгами – мы не можем этого сделать. У нас же колодцы, давайте мы лучше побольше в ведро соберём. Поэтому важные фичи ждут всякую ерунду, пока у нас будет достаточно, чтобы этот колодец наполнить. Это плохо, как вы сами понимаете. Решается это тем, что мы всех из этих колодцев достаем и смешиваем.

Я не виноват! Я просто взял три изначальных цвета, положил их один на другой, и вот этот цвет получился. Теперь у нас все делают всё. У нас есть такие инженеры, которые и швец, и жнец, и на дуде игрец. Это Dev, QA и Ops. Он и код пописал, и потестировал, и потом еще и на продакшн все это выложил – такой вот единорог.

В чем проблема единорогов? В том, что они не существуют. А те, которые существуют, их уже давно netflix нанял. Поэтому нам остается делать смесь.

Смесь

У нас есть общая культура, общие цели. Мы вышли из колодцев, мы теперь все вместе, но у нас осталась глубокая специализация. Разработчик все-таки больше разработчик, чем Ops, а тестировщик — больше тестировщик, чем разработчик. Но тем не менее, они понимают все. Они понимают, что они делают, зачем они это делают и как оно работает.

То есть у нас появляются T-shaped people, «люди в форме буквы T».

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

  • Культура того, что у нас теперь есть общие цели, мы понимаем, что мы делаем вместе.
  • Автоматизация, чтобы релизить чаще.

Скорость и качество

Давайте поговорим про предположение о том, что существует обратная зависимость скорости и качества. Грубо говоря, чем быстрее мы будем релизить, тем хуже получится качество. И наоборот: если мы не будем спешить, то успеем все хорошенько потестировать. У нас трейд-офф!

Для того, чтобы понять, действительно ли эта зависимость существует, обратимся к научным трудам и поговорим о докладе State of DevOps от организации DORA. Я вам очень рекомендую в этот доклад хорошенько посмотреть.

Насколько ему можно доверять? В докладе говорится о том, что за пять лет опрошено больше 30 000 человек, а в 2020 году почти 2000 человек. Это очень большая выборка и на основании такого количества, например, делают прогнозы на выборах в США. Поэтому исследованию можно доверять.

Кроме того, Николь Форсгрен, возглавляющая DORA, в отличие от нас, — ученый, поэтому там все серьезно. Давайте посмотрим, что же DORA нам расскажет про эту обратную корреляцию.

Во-первых, они поделили всех опрашиваемых на три группы: Low performers, Medium Performers и High Performers.

Кроме того, есть еще Elite. Это Netflix (на самом деле нет, смотри дисклеймер выше).

Как вы видите, пропорции меняются. Естественно, пять лет назад было намного больше Low Performers, сейчас намного больше High Performers, ведь мы уже начинаем немножко понимать, что мы делаем.

Это как-то странно. Оказывается, Medium тестируют ручками больше, чем Low. Почему? Да потому, что Low вообще ничего не тестируют.

У них есть тренд, график под названием J-кривая, которая показывает ту самую корреляцию или обратную корреляцию между скоростью и качеством. И тут все очень странно. В какой-то момент мы видим подтверждение этой обратной корреляции. То есть, чем быстрее мы релизим, тем ниже качество.

Но дальше корреляция не только не обратная, она прямая. Чем быстрее мы релизим, тем лучше у нас качество. Допустим, мы Medium и тестим ручками. Все неплохо, но медленно, потому что мы верим в то, что если не будем спешить, то и протестируем всё получше. Потом приходит консультант от DevOps и говорит: «Всё, теперь автоматизируем. А тестировщики нам не нужны. Всё отлично».

Но без тестов получается какая-то ерунда. После того, как мы осознали, что все-таки что-то надо тестировать, и надо автоматизировать правильно, мы начинаем автоматизировать правильно и дальше стремимся в заоблачные выси.

Этот провал, где появляется много багов, нужно правильно преодолеть. Как в него попасть, я думаю, вопросов нет. Вопрос, как из него вылезти.

Нам нужно ответить на вопрос, как жить без ручного тестирования. Ответ такой же, как и на вопрос, как жить без настройки серверов. Очевидно, можно. Что же меняется?

Раньше у нас был сисадмин, который выкатывал продукт на прод. Он сидел и ждал, пока разработчики закончат писать. После этого он брал этот продукт и шел CD-ROM вставлять и провода втыкать. Что в это время происходит со всеми остальными? Все остальные ждут. Это бутылочное горлышко, затык.

Мы это решаем правильной автоматизацией. Мы автоматизируем процесс, у нас заранее приготовлен пайплайн, и теперь продукт выкатывается автоматически, как только его закончили писать. Значит ли, что теперь эти люди не нужны? Нет. Это значит, что они нужны, но занимаются чем-то другим.

То же самое с тестированием. У нас есть тестировщики, которые тестируют продукт. Они ждут, пока им напишут продукт. Написали — пора тестировать. Что делают все остальные, пока они тестируют? Ничего не делают, сидят ждут. Как мы это решаем?

Опять же правильной автоматизацией. Мы строим процесс. Он будет гарантировать качество продукта. Мы можем подготовить этот процесс заранее, и дальше продукт тестируется автоматически.

  • Для этого нужны, например, кроссфункциональные команды. Вот мы из колодцев поднялись и сели вместе. Теперь у нас лев возлежит с овцой, и тестировщик работает вместе с программистом.
  • Мы делаем Continuous Testing. Это как автоматизированное тестирование, но умнее.
  • В процессе разработки делается «брейнуальное тестирование». Это более правильный термин, чем «мануальное тестирование», потому что мануальное тестирование — оно про мозг, а не про руки. Спасибо за этот термин моему близнецу в Фейсбуке Алексею Виноградову. Брейнуальное тестирование происходит в процессе разработки. Как только появляется что-то, уже можно проверить его flow, уже можно понять, как оно работает, уже можно начать намечать какие-то corner cases, которые мы потом заавтоматизируем.
  • Мы теперь следим за разработчиком. Если он сначала не написал тест, мы ему можем дать подзатыльник. Это Test Driven Development.
  • Важен моментальный фидбэк. У нас должен быть пайплайн, который сразу же нам говорит, как только что-то сломалось. Потому что мы сразу же должны пойти и это моментально починить.
  • Участие в дизайне. Бывает такое, что вы смотрите на что-то и думаете, как мы это говно теперь будем тестировать. Но извините, а где вы были, когда все решили, что будет говно? Вы приходите на совещания и говорите, что вы не согласны, надо делать неговно. Надо участвовать в дизайне, чтобы гарантировать, что потом вы сможете это протестировать.
  • Инструменты, обвязки, стенды — то, что многие из вас делают сегодня, никуда не уходит. Наоборот, этого будет больше. Соответственно, это кто-то должен писать.
  • Chaos engineering. Вы всегда мечтали запустить Chaos Monkey в продакшн, особенно если у вас есть сеть банкоматов на Windows 95. Вот ваш шанс.
  • И наконец, нужно учить неучей дизайнить тесты. Мы же решили, что разработчики по крайней мере утверждают, что они пишут тесты. Вот теперь пусть пишут тесты, только надо их научить это делать. Кто их будет учить, откуда они знают, как писать тесты? Только вы. Больше некому.

Осталось все заавтоматизировать. На самом деле, мы умеем автоматизировать тестирование. Проблема в том, что автоматизировать можно определенную часть.

Вы все знаете этот анекдот про то, как тестировщик заходит в бар, заказывает пиво, заказывает 0 пива, заказывает 99999999999 пива, заказывает ящерицу, заказывает -1 пиво и заказывает… Вот тут баг, потому что это должно быть asdfgh, а не вот эта фигня.

Это легко автоматизируется. Понятно, что в цифрах вообще нет проблем. Мы ставим рандомайзер, он нам это делает. Даже ящерицу сегодня уже можно туда сгенерировать. Это фаззинг — надеюсь, что вы про него слышали, потому что я вот вчера прочитал.

А вот дальше приходит клиент, спрашивает, где туалет и все, бар сгорает, все умирают и все такое. Вот это автоматизировать нельзя. Ну, как бы можно, но сначала надо понять головой, что бар — это не только там, где напитки, это еще там, где туалет. Более того, шансов, что клиент захочет пойти в туалет, немножко больше, чем то, что он закажет ящерицу. Поэтому это проверить важнее, но для этого надо понимать бизнес, надо понимать продукт, и это могут сделать только люди с головой.

Вы видели список, там девять совершенно разношерстных требований, и совершенно понятно, что это может делать только единорог. Единорог от тестирования ничем не отличается от единорога от DevOps. Он точно так же не существует, и решение такое же. T-образные инженеры — это то, что нам нужно.

Те, кто умеет делать что-то одно очень хорошо. Вот у них «брейнуальное тестирование», они могут подумать, что в баре нужен туалет. Ну, не каждый может, но есть такие, которые могут. А есть такие, которым дай Selenium упарываться. Не вопрос, но нужно понимать и все остальное.

Поговорим о том, как делать эту трансформацию.

Автоматизаторы — там все понятно. Это люди, которые сегодня нужны, завтра будут еще нужнее. Меняется общение. Мы вышли из колодца, сели с разработчиками, с Ops-ами и давай настраивать инструменты и процессы, обвязки, стенды, упарываться вот этим всем, потому что теперь наш пайплайн должен тестировать все сам, и теперь нам нужно, чтобы это все прекрасно работало, иначе будут проблемы с качеством.

Developers in test — их девелоперский бэкграунд очень полезен, потому что они понимают, как думают окружающие. Им можно объяснить, как правильно тестировать. Участие в дизайне, чтобы сделать тестируемым ваш продукт; евангелизм — как правильно тестировать, о чем речь; внедрение TDD объясняет, какое покрытие имеет смысл, а какое нет, какие тесты имеют смысл, а какие нет. Те, кто сейчас в тестировании и имеют девелоперский бэкграунд, бесценны для этого общения.

«Брейнуальные тестировщики». Казалось бы, мы их уже отправили на покой и решили, что они не нужны, но это не так, потому что понимание продукта, понимание бизнеса — критический скилл. Эти ребята сейчас поднимаются на верхний этаж, где сидят все самые крутые перцы, и начинают им втирать про тестирование, влиять на архитектуру, понимать продакт, участвовать в совещаниях с бизнесом и приносить свою экспертизу в понимание, как правильно тестировать, в архитектуру продукта, в тестируемость продукта, евангелизм, как важно делать Continuous Testing и глобальное видение.

Для всех этих end-to-end тестирований гигантских систем идеальны ребята, которые были мануальными тестировщиками. Поэтому заголовки о том, что сотни тестировщиков были уволены, когда все перешли в DevOps, этого нет и не будет.

Безусловно, кто-то не захочет меняться, это нормально. Сегодня есть такие бородатые ребята, сисадмины закалки 70-х годов: «Никакого DevOps, мы будем ручками настраивать сервера». Даже они не безработные, потому что существует огромное количество систем, в которых они нужны.

То же самое с тестировщиками. Если есть кто-то, кто хочет делать мануальное тестирование, и все, что я сейчас рассказывал, им совершенно неинтересно, работа есть. Приведу пример: мы вчера с Леонидом Игольником ( EVP Engineering, SignalFx) летели из Мюнхена, и выяснилось, что билет Леонида пропал в черную дыру между системами заказов Люфтганзы и системами заказов Юнайтед.

Обе написаны в 70-х годах на Коболе и работают на мейнфреймах. Их надо тестировать. Тот, кто не хочет меняться, добро пожаловать. Там дают много миль своим работникам, вы сможете летать на Карибы. Работа, наверное, будет не очень интересная, но это ваш выбор, без работы вы не останетесь. А те, кто хотят меняться, тут, извините меня, небо — это не предел, netflix нас всех ждет.

Вы видели, есть куда меняться, есть, что делать интересного, есть, куда идти, чтобы принимать решения, чтобы влиять на продукт, на бизнес, на процессы. Это все на самом деле очень круто. Мы не только не теряем работу, мы получаем намного более интересную.

Мы приближаемся к концу, и тут я вспомнил Леонида. Ну какой же доклад без цитаты от Леонида. «Важно лишь то качество, которое видит клиент», — сказал мне однажды Леонид, мудро почесав бороду, за ужином.

«Секундочку, — сказал я Леониду. — Мы только что полчаса обсуждали вот это все: процессы, стабильность, то, се. И ты мне тут говоришь, что клиенту глубоко наплевать, что у нас происходит, лишь бы та фича, в которой он заинтересован, работала. Так давай вообще ничего не будем делать. Вот у нас есть ручное тестирование, мы что-то там проверили, она работает и достаточно. Зачем это все втирать? Artifactory пришел продавать, засранец?!».

Я хочу вам напомнить, что эта статья и этот доклад — не про то, как тестировать лучше. Он про то, как релизить быстрее. Когда клиенты хотят новых фич? Сейчас!

Возвращаясь к DORA: чем больше работы автоматизировано, в данном случае это тестирование, тем больше у технических специалистов появляется времени делать осмысленную работу, то есть клепать новые фичи.

Нам нужен New Work. Обратите внимание, что New Work у Low — 30%, у Medium — 40%, у High и Elite — 50%. Половина времени (это практически в два раза больше, чем у Low) освобождается, чтобы творить, делать новые фичи.

И это очень и очень круто.

Это доклад с конференции Heisenbug 2020 Moscow, а 5-6 декабря в Москве пройдёт следующий Heisenbug. Вполне вероятно, что Барух выступит и там, и в любом случае там будет множество других спикеров. Узнать все подробности можно на сайте конференции, приобрести билеты там же (и по мере приближения мероприятия их цены постепенно повышаются).

Интервью о DevOps вице-президента Parallels

Николай Добровольский
Соснователь и вице-президент РагаIleIs. Родился 13 июли 1975 года в Москве. В 1997-м окончил Московский институт радиотехники, электроники и автоматики (Технический университет) по специальности «Автоматизированные системы обработки информации и управления». В 2010 году прошел обучение в Гарвардской бизнес-школе, В 2013-м закончил образовательную программу Foundation and Leadership в Йельском университете.
Лауреат Национальной премии им. Владимира Зворыкина как «Лучший инновационный менеджер» (2008).
В 2012 году в рамках Всемирного экономического форума отмечен в числе 200 лучших мировых молодых лидеров а номинации Young Global Leader.В 13 лет стал победителем всероссийского конкурса программирования.

Николай Добровольский:
«Настоящий DeuOps-инженер должен быть отличным программистом и норошим системным администратором»

Николай, расскажите, чем вы занимаетесь в Parallels?

Отвечаю за весь процесс разработки нашими инженерами программного обеспечения Parallels. Я руковожу BSD-центрами в России, Эстонии и на Мальте.
Вообще, учитывая, что мы с моей командой вместе более 20 лет, параллельно приходилось заниматься различными вещами начинав от поиска инвесторов, привлечения и удержания ключевых сотрудников до административных вопросов, связанных с офисной жизнью. Скучать не приходится.

Как организован ваш рабочий день?

Все довольно стандартно: ранний подъем, зарядка, завтрак, рабочие будни. Поскольку у Parallels 10 офисов по всему миру, приходится довольно активно перемещаться. Совещания, личные встречи с сотрудниками, ничего из ряда вон выходящего.
Открытое ПО может сыграть важную роль в развитии ИТ-отрасли, упрощая исследовательские разработки [делая их доступными] и снижая стоимость законченных промышленных решений
Единственное — стараюсь максимально оптимизировать рабочий график. Иногда провожу деловые переговоры или встречи с сотрудниками за обедом. Вообще мне здорово помогает персональный ассистент.
Она знает все о моем графике, владеет информацией о моих встречах, перелетах, визах и паспортах. Думаю, что без ее помощи мне было бы сложно со всем управляться.
Она также планирует все официальные мероприятия и обеспечивает мою явку.

Какое программное обеспечение используете (почтовые клиенты, браузеры, ОС, редакторы, среды разработки и т.п)

Мне кажется, я пользуюсь всем. У меня iOS и Android-смартфоны и планшеты. На iOS использую встроенного почтового клиента и браузер. На Android — Exchange-клиента TouchDown и Google Chrome. Достаточно активно пользуюсь TripAdvisor, Flight Radar. Telegram, Skype, WhatsApp. Uber. Google Maps и т.д. Часто помогает Microsoft Office Lens -бесплатный удобный мобильный сканер документов, white boards и экранов презентаций. На компьютере использую Safari, Chrome, Parallels Desktop, Microsoft Office, для почты-MS Outlook.

А облачные сервисы?

У нас в офисе развита инфраструктура Office 365. Помимо этого, есть Dropbox. Для бэкапа лично я использую решения от наших коллег из Acronis. Вообще видно, что все больше мы уходим в облака. Parallels не исключение. Например, наш Parallels RAS дает возможность использовать VDI и SaaS-решения для малого и среднего бизнеса. В целом динамика позитивная.

Как организован процесс разработки — от создания кода до релиза и поддержки решения?

В создании любой программы, приложения или сервиса принимают участие различные ИТ-специалисты: разработчики, пишущие код, инженеры QA, проверяющие результаты разработки, системные администраторы, отвечающие за работу серверной инфраструктуры, и DevOps-инженеры, обеспечивающие корректное развертывание и функциональность созданного продукта на базе специальных хранилищ/депозитариев.
На мой взгляд, настоящий DevOps-инженер должен быть отличным программистом и хорошим системным администратором.
Их задача не столько администрировать работу «железа», сколько стараться автоматизировать процессы, чтобы упростить действия.При этом знания в области системного администрирования также важны.
Именно по этому хорошие DevOps инженеры в прошлом хорошие системные администраторы. Наряду с алгоритмами и программированием для них важно понимать внутренние системные процессы. Если мы говорим про веб-сервисы, то им важно знать, как работают высоконагруженные системы.Очень важную роль в разработке наших решений играют тестировщики и менеджеры продукта. Мы внимательно относимся ко всем замечаниям и стараемся оперативно исправлять все критические моменты.

— Какие инструменты (среды. ОС и т п.) и сервисы используете для разработки?

Поскольку у нас не один программный продукт Мы используем разнообразньй инструментарий javascript, C#. С, С++, Assetiber, Python, Perl. Для организации npouecca используем продукты компании Atlassian — Jira. Confluence, Bitbucket, HipCrat. Если говорить про DevOps, то здесь Chef, Ansible и Jenkins.
Без знания хотя бы двух из этих трех слов мы вообще не рассматриваем человека, как DevOps. Возможно, он хороший человек, но это гигиенический минимум. Без него никак. Плюс, поскольку скрипты у нас пишутся в основном на Python, его знание просто необходимо.

В целом что такое Parallels для Linux?

Приложение Parallels Client позволяет организовать удаленный доступ к рабочим столам персональных компьютеров, виртуальных машин или сеансам терминального сервера — как через Parallels Remote Application Server (RAS), так и напрямую через обычное RDP-соединение.

Расскажите о вкладе вашей компании в разработку ядра Linux?

Поскольку Parallels начинает свою историю с конца девяностых годов, в этом отношении нашей командой было сделано немало Причем я говорю обо всех инженерах, работавших когда либо и рабтающих по сей день в группе компаний Parallels. Отмечу, что большой вклад был внесен нашими коллегами из Virtuozzo.
В разные годы го отчетам Linux — Foundation мы входили в список разработчиков, внесших наибольших вклад в код ядра Linux.
Например, когда-то только по проекту OpenVZ у нас было сделано примерно 1700 патчей в основном ядре. Наши инженеры были отмечены Red Hat за обнаружение серьезных уязвимостей CVE-2014-0203 и CVE-2014-4483 и удостоены благодарности за обнаружение ошибок CVE-2014-5045 и С VE-2012-4508.

А что можно сказать в целом об Open Source-решениях?

Сегодня Open Source представляет собой самодостаточную программную экосистему, способную на высоком качественном уровне решать практически весь спектр ИТ-задач в масштабах любого предприятия. На мой взгляд, открытое ПО может сыграть важную роль в развитии ИТ-отрасли, упрощая исследовательские разработки (в том числе делая их доступными даже силами специалистов-индивидуалов) и снижая стоимость законченных промышленных решений.

Какие дистрибутивы Linux поддерживаются Parallels?

В новой версии Parallels Desktop 13 вы можете бесплатно создать виртуальную машину (ВМ) с одной из перечисленных ниже операционных систем: Windows 10 — Development Environment, Modern.IE — Test Environment, Ubuntu, Fedora, CentOS, Debian, Linux Mint, Android, MacOS. Кроме того, для Linux была добавлена поддержка дистрибутивов: Elementary, Kali Linux, Manjaro и Zorin. Список поддерживаемых дистрибутивов сейчас насчитывает 50 различных вариантов Linux.

Мы не можем протестировать все существующие дистрибутивы, но это не значит, что они не будут работать. Рекомендую попробовать запустить ваш любимый дистрибутив, даже если его нет в списке поддерживаемых. Скорее всего заработает, ведь Parallels Desktop создает полноценный виртуальный компьютер.

Несколько вопросов о DevOps. Что для Parallels «работа по принципам DevOps»?

От команды DevOps зависит продуктивность большого числа людей. Плохой девопс способен свести на нет усилия группы разработчиков из пятидесяти и более человек. Некорректно работающая билдовая система может существенно затормозить производственный процесс.
В этой связи для нас крайне важны способность и умение людей работать в команде. Мы стремимся к тому, чтобы наши инженеры всегда находили кратчайший путь друг к Другу и решали возникающие ситуации максимально результативно.

Какую программную платформу для DevOps вы сделали базовой?

Данный вопрос в определенном смысле можно считать абсурдным, поскольку девопс — это культура и практики взаимодействия разработчиков (Development) и инженеров, занимающихся инфраструктурой (Operations).

Программное обеспечение для автоматизации непрерывной интеграции? Почему остановили выбор на нем?

Jenkins. Огромный выбор плагинов, с которым возможно реализовать любую смелую фантазию команды разработки, большое активное сообщество.

Не могли бы привести пример того, как выстраиваете и сопровождаете на практике CI/CD?

Используем Jenkins pipeline для версионирования конфигураций сборок продуктов.
Для больших продуктов сборки из мастера и релизных бранчей идут по расписанию несколько раз в день. Также для них есть урезанные короткие сборки, которые запускаются покоммитно по факту обновления репозитория.
Для маленьких продуктов сборки покоммитные. Предоставляем возможность любую сборку запустить из девелоперского бранча.
На успешных сборках запускаются юнит-тесты. Оповещения о результатах сборок и тестирования по email и в Hipchat. Сборочные окружения описаны в Chef-кукбуках и terraform-скриптах, которые мы поддерживаем.

Какие сервисы используете для реализации DevOps-решений?

  • оркестрация Terrafomi;
  • контейнерная виртуализация Virtuozzo;
  • для управления конфигурации контейнеров и других платформ используем Chef;
  • в качестве системы непрерывной интеграции — Jenkins;
  • для повышения отказоустойчивости инфраструктуры -мониторинг от Icinga;
  • различные продукты от Elastic для хранения и обработки логов и визуализации событий.

В каких мероприятиях/конференциях принимаете участие?

Традиционно мы представлены на международных форумах и конференциях. В этом году в очередной раз были на IFA, WMC, WWDC. В России мы стараемся делиться опытом на базе крупнейших отраслевых форумов, таких как RIW, РИФ. HighLoad++, MobiiDev и других.

Услуги девопс администратора, внедрение продуктов Jenkins, Jira, Bitbucket, оркестратор, докер и др, обращайтесь, [email protected]

Экспертное интервью

Цель такой беседы: раскрыть все специфические нюансы изучаемого события или предмета. Это достигается благодаря интервью высококомпетентного профессионала, досконально знающего предмет — эксперта.

Если информация, полученная от обычного респондента, нуждается в проверке на истинность, все, что сообщит эксперт, считается надежными и достоверными данными. И задача такого интервью заключается в получении максимально полной и подробной информацией.

Как правило, респондентами в экспертном интервью выступают:

2- Руководители компаний;

4- Узкие специалисты-практики;

5- Сотрудники научно-исследовательских организаций;

6- Представители властей;

7- Сотрудник экспертных или консалтинговых организаций.

Экспертное интервью как метод исследования

Такая разновидность интервью проводится с обладающим высоким статусом респондентом, компетентность которого в узком вопросе темы исследования не подвергается сомнению. Благодаря заранее приготовленному большому кругу вопросов можно получить мнение эксперта по ряду тем.

К преимуществам этого способа исследования относятся:

2- Эксперт предоставляет наиболее актуальную информацию по рынку;

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

4- Полученная информация позволяет делать прогнозы, даже при отсутствии нужного объема статистической информации.

Что нужно для успеха экспертного интервью

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

Кроме проработки основных вопросов, модератору нужно убедиться что предусмотрено выяснение всех специфических деталей в той предметной области или того рынка, с экспертом которого планируется беседа.

Для проведения самого опроса используется два способа:

Заочный вопрос — эксперт сам заполняет отправленную ему анкету. Дешево, просто, но не надежно. При таком способе опроса эксперт может неправильно понять некоторые вопросы в анкете, а некоторые проигнорировать, что сразу снизит ценность информации для исследователя.

Для того чтобы оценить согласованность мнений и подтвердить данные по самым важным пунктам, используется последовательное обращение к нескольким экспертам в одной и той же области.

Информация от эксперта — свежая и точная

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

DevOps: интервью с экспертом

Кейс 1. Прогноз для импортёра.

С ошибками в методе экспертного интервью в своей прошлой практике сталкивался один из наших клиентов – компания, официальный дистрибьютор итальянского концерна по производству сельскохозяйственной уборочной техники. Когда мы впервые предложили обратиться за прогнозами по развитию рынка к эксперту в аграрной отрасли, партнеры отказались от такого исследования: «Результата не будет, только общие слова про курс доллара и высокие цены на импортные товары. Мы уже пробовали».

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

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

Нам удалось убедить партнера попытаться еще раз. Была проведена полноценная подготовка к интервью. В результате мы получили уже от другого компетентного эксперта:

● Полноценный прогноз развития сельскохозяйственного машиностроения в России и отдельных ключевых для заказчика регионов. Было проанализировано 3 вероятных сценария: позитивный, нейтральный и негативный для клиента.

● Раскладка по цифрам с объемами рынка, долями ключевых игроков и оценкой положения каждого из них.

● Рекомендации по построению стратегии в новых экономических условиях с учетом изменившихся условиях.

Наш партнёр остался доволен полученными данными. Они легли в основу пятилетнего плана развития компании.

Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих