Практики и инструменты devops для построения тестового...

46
Software quality assurance days 20 Международная конференция по вопросам качества ПО sqadays.com Минск. 24–26 ноября 2016 Семерханов Илья T-Systems RUS, Санкт-Петербург, Россия Практики и инструменты DevOps для построения тестового окружения

Upload: sqalab

Post on 09-Jan-2017

117 views

Category:

Education


4 download

TRANSCRIPT

Page 1: Практики и инструменты DevOps для построения тестового окружения

Software quality assurance days20 Международная конференция по вопросам качества ПОsqadays.com

Минск. 24–26 ноября 2016

Семерханов ИльяT-Systems RUS, Санкт-Петербург, Россия

Практики и инструменты DevOps для построения тестового окружения

Page 2: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

О себе

www.linkedin.com/in/ilya-semerhanov

https://www.facebook.com/ilya.semerhanov

Page 3: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

О чем?

• Немного про DevOps

• Как можно использовать в тестировании

• Как лучше настраивать тестовые окружения

• Какие использовать инструменты для этого

Page 4: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Зачем DevOps тестировщику?

Page 5: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

DevOps

Page 6: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

DevOpsРазвертывание дев окруженийАвтоматизация сборкиContinuous Integration

Development

Page 7: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

DevOpsРазвертывание дев окруженийАвтоматизация сборкиContinuous Integration

Development

QA Развертывание тестовых окруженийАвтоматизация тестовContinuous Deployment

Page 8: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

DevOpsРазвертывание дев окруженийАвтоматизация сборкиContinuous Integration

Development

QA

Operations

Развертывание тестовых окруженийАвтоматизация тестовContinuous Deployment

Развертывание production окруженияАвтоматизация поставкиContinuous Delivery\Deployment

Page 9: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

DevOpsРазвертывание дев окруженийАвтоматизация сборкиContinuous Integration

Development

QA

Operations

Развертывание тестовых окруженийАвтоматизация тестовContinuous Deployment

Развертывание production окруженияАвтоматизация поставкиContinuous Delivery\Deployment

На каждом этапе можно использовать DevOps

Page 10: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Проблемы

• Большое время между обнаружением бага, его фиксом и установкой

• Неразбериха в тестовых окружениях и их конфигурациях

• Конфигурацию тестовых окружений сложно менять

• Проблема «А у меня все работает»

Page 11: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Проблемы

Page 12: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Набитые шишки

• Test окружение ~ Production окружение

• Деплоить надо как можно чаще

• Как можно раньше нужно интегрировать все компоненты

• Возможность откатиться необходима

• Держать все конфигурации в коде

Page 13: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Области применения

• Автоматическое создание тестовых окружений

• Использование виртуальных окружений

• Использование практик Continuous Integration и Continuous Delivery

• Мониторинг тестовых окружений и логов

Page 14: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Создание тестовых окружений

Page 15: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Автоматическое создание тестовых окружений

От «ручной» настройки следует отказаться!

Page 16: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

AnsibleИнструмент для автоматического развертывания окружений

Page 17: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Ansible

• Взаимодействие с окружениями через SSH

• Простота написания сценариев

• Декларативный язык

• Большое количество готовых модулей

• Большое сообщество

Page 18: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Структура Ansible

Tasks

RolesDependencies

HandlersVariables

Templates

Page 19: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Модули

Готовые команды «из коробки». Более 100 различных модулей.

•Shell

•File

•Copy

•Cron

•Template

Page 20: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Ansible Playbooks

Сценарий на Yaml, состоящий из набора ролей.

ansible-playbook <имя_файла_сценария.yml> ... [другие параметры]

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

•Можно использовать на всех окружениях один сценарий

•Можно использовать таски в других сценариях

Page 21: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Ansible Playbooks

Page 22: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Пример Ansible Playbook

Page 23: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Преимущества

• Скорость развертывания новых окружений

• Гарантия того, что окружения настроены одинаково

• Уменьшение человеческого фактора

Page 24: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Ansible Playbooks

Page 25: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Виртуализация

Page 26: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Использование виртуализации

• Virtual Box, VMWare, Hyper V, etc…

• Vagrant

• Docker

Page 27: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Vagrant

Vagrant – оболочка для систем виртуализации.

•Проще чем установка гостевой ОС из ISO

•Большой набор готовых Box

•Конфигурация через код – VagrantFile

•Интеграция с Ansible

Page 28: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Для чего используется Vagrant

• «Песочница»

• Девелоперское окружение

• Тестовое окружение

Page 29: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Как начать работать с Vagrant

• Установка на машину

• Установка Virtual Box

• Установка плагинов через vagrant plugin install

• Поиск нужной базовой сборки (vagrant box) или Vagrant-файл в

репозитории Atlas (https://atlas.hashicorp.com/boxes/search)

или GitHub

Установка готового box: vagrant init hashicorp/precise64

Сборка из VagrantFile: vagrant up

Page 30: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Создание собственного Box

• Поднять текущий бокс или виртуальную машину

• Внести изменения

• Запаковать: vagrant package --output mynew.box

Page 31: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Пример VagrantFile

Page 32: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Docker Позволяет создать изолированные среды на одной ОС без гипервизора.

•Просто создать с нуля любое количество окружений

•«Быстрее» чем виртуализиция с гостевыми ОС

•Конфигурация через код - DockerFile

Page 33: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Docker

Page 34: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Пример DockerFile

Page 35: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Continuous Integration and Delivery

Page 36: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Использование практик CI и CD

• Каждое изменение -> новые билд

• Новый билд -> новая версия

• Новая версия билда -> загружаем в хранилище

• Любой билд «потенциально» готов к установке

• Установка автоматически после создания билда, по расписанию или по

требованию

Page 37: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Последовательность

Page 38: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Сбор и анализ логов

Page 39: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

ELK Stack

Агрегация логов с разных окружений

Page 40: Практики и инструменты DevOps для построения тестового окружения

ELK Stack

Page 41: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

ELK Stack

• Удобный доступ к логам

• Средства поиска

• Манипуляции логами

Page 42: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Мониторинг окружений

Page 43: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Graphite + Grafana

http://sqadays.com/ru/talk/34444

Page 44: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Graphite + Grafana

Page 45: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Какие проблемы решаются?

• Время поставки новой версии значительно уменьшается

• Конфигурации всех окружений под контролем

• Все окружения настроены идентично

• Вносить изменения в конфигурацию значительно проще

• Заранее видно проблемные окружения

Page 46: Практики и инструменты DevOps для построения тестового окружения

Практики и инструменты DevOps для построения тестового окружения

Вопросы