129
Рецепт приготовления облачных тестингов Артем Ерошенко

Артём Ерошенко «Рецепт приготовления облачных тестингов»

Embed Size (px)

Citation preview

Page 1: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Рецепт приготовления облачных тестингов

Артем Ерошенко

Page 2: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Немного истории

Page 3: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Железный тестинг

512 мб

2 ядра

нет sudo

Page 4: Артём Ерошенко «Рецепт приготовления облачных тестингов»

автотестов росло

Количество

Page 5: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Увеличить мощность

2024 мб

4 ядра

Page 6: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Растет количество

компонент

Page 7: Артём Ерошенко «Рецепт приготовления облачных тестингов»

В комнате стало тесно

Page 8: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Растет количество

релизов

Page 9: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Проблемы железа

Page 10: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Облачные платформы

Page 11: Артём Ерошенко «Рецепт приготовления облачных тестингов»
Page 12: Артём Ерошенко «Рецепт приготовления облачных тестингов»
Page 13: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Когда это нужно?

Page 14: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Когда это нужно?

очереди на тестирование

Page 15: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Когда это нужно?

очереди на тестирование

зависимость тестингов

Page 16: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Рецепт приготовления

Page 17: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Ингредиенты

dockeransiblejenkins

Page 18: Артём Ерошенко «Рецепт приготовления облачных тестингов»
Page 19: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Что такое docker?

Page 20: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Что такое docker?

инструмент, предоставляющий удобный интерфейс для

работы с LXC (LinuX Container)

Page 21: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Так что же это такое?

Page 22: Артём Ерошенко «Рецепт приготовления облачных тестингов»

инструмент виртуализации на основе ядра Linux

Так что же это такое?

Page 23: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Какую задачу решает?

Page 24: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Настройка окружения

Page 25: Артём Ерошенко «Рецепт приготовления облачных тестингов»

docker run -it ubuntu /bin/bash

Запускаем контейнер

Page 26: Артём Ерошенко «Рецепт приготовления облачных тестингов»

apt-get install mysql-server-5.5

Устанавливаем mysql

Page 27: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Усиленно работаем :)

Page 28: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Стоп контейнер

docker stop <container-name>

Page 29: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Удаляем контейнер

docker rm <container-name>

Page 30: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Когда это полезно?

Page 31: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Разные версии

языка разработки

Page 32: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Разные версии

внешних сервисов

Page 33: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Разные версии

окружения

Page 34: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Основные сущности

Page 35: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Docker образ

Page 36: Артём Ерошенко «Рецепт приготовления облачных тестингов»

hub.docker.com

Page 37: Артём Ерошенко «Рецепт приготовления облачных тестингов»

myservice образ

Page 38: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Docker контейнер

Page 39: Артём Ерошенко «Рецепт приготовления облачных тестингов»

docker run -it <image> /bin/bash

Docker контейнер

Page 40: Артём Ерошенко «Рецепт приготовления облачных тестингов»

myservicebackendcontainer

Docker контейнер

Page 41: Артём Ерошенко «Рецепт приготовления облачных тестингов»

myservicebackendcontainer

mysqlcontainer

Docker контейнер

Page 42: Артём Ерошенко «Рецепт приготовления облачных тестингов»

myservicebackendcontainer

mysqlcontainer

myservicefrontendcontainer

Docker контейнер

Page 43: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Основные принципы

Page 44: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Основные принципы

Изолированность

Page 45: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Основные принципы

Изолированность1 контейнер - 1 процесс

Page 46: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Ингредиенты

dockeransiblejenkins

Page 47: Артём Ерошенко «Рецепт приготовления облачных тестингов»
Page 48: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Зачем нужен?

Page 49: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Настроить окружение

mysql

nginx

service

Page 50: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Устанавливаем пакеты

ssh [email protected]

Page 51: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Устанавливаем пакеты

ssh [email protected]

apt-get install mysql-server

Page 52: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Устанавливаем пакеты

ssh [email protected]

apt-get install mysql-server

apt-get install nginx

Page 53: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Устанавливаем пакеты

ssh [email protected]

apt-get install mysql-server

apt-get install nginx

apt-get install server

Page 54: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Конфигурируем

vi /etc/mysql/my.conf

Page 55: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Конфигурируем

vi /etc/mysql/my.conf

vi /etc/nginx/nginx.conf

Page 56: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Конфигурируем

vi /etc/mysql/my.conf

vi /etc/nginx/nginx.conf

vi /etc/server/server.conf

Page 57: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Результат

mysql

nginx

service

Page 58: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Настрой еще одну?

Page 59: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Пишем скрипт

install.sh

Page 60: Артём Ерошенко «Рецепт приготовления облачных тестингов»

install.bat

install.sh

Пишем скрипт

Page 61: Артём Ерошенко «Рецепт приготовления облачных тестингов»

install.bat

install.sh

install2.sh

Пишем скрипт

Page 62: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Скрипты это неудобно

Page 63: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Система управленияконфигурациями

Page 64: Артём Ерошенко «Рецепт приготовления облачных тестингов»

конфигурация вместо кода

Ansible

Page 65: Артём Ерошенко «Рецепт приготовления облачных тестингов»

описывает желаемое состояние системы

Ansible

Page 66: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Ansible

Page 67: Артём Ерошенко «Рецепт приготовления облачных тестингов»

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

легко читается

не зависит от платформы

легче переиспользовать

Page 68: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Ansible playbook

Page 69: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Ansible playbook

это набор yaml файлов

Page 70: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Ингредиенты

dockeransiblejenkins

Page 71: Артём Ерошенко «Рецепт приготовления облачных тестингов»
Page 72: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Ингредиенты

dockeransiblejenkins

Page 73: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Рецепт приготовления

Page 74: Артём Ерошенко «Рецепт приготовления облачных тестингов»

backend

Несколько

компонент

Page 75: Артём Ерошенко «Рецепт приготовления облачных тестингов»

backend mysql

Несколько

компонент

Page 76: Артём Ерошенко «Рецепт приготовления облачных тестингов»

backend mysqlfrontend

Несколько

компонент

Page 77: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Где размещаем?

Кто запускает?

Как собираем?

Page 78: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Где размещаем?

Кто запускает?

Как собираем?

Page 79: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Жизненный цикл

одной компоненты

Page 80: Артём Ерошенко «Рецепт приготовления облачных тестингов»
Page 81: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Жизненный цикл

build

clean

start

stop

одной компоненты

Page 82: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Жизненный цикл

одной компоненты

build

clean

start

stop

Page 83: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Build

docker build -t «component»

Page 84: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Жизненный цикл

одной компоненты

build

clean

start

stop

Page 85: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Start

docker run -it «component» bash

Page 86: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Жизненный цикл

одной компоненты

build

clean

start

stop

Page 87: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Stop

docker stop «component»

Page 88: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Жизненный цикл

одной компоненты

build

clean

start

stop

Page 89: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Clean

docker rm «component»

Page 90: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Как организовать

совместную работу?

Page 91: Артём Ерошенко «Рецепт приготовления облачных тестингов»
Page 92: Артём Ерошенко «Рецепт приготовления облачных тестингов»

build

clean

start

stop

Жизненный цикл

всех компонент

Page 93: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Build.yml

генерация конфигов

Page 94: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Build.yml

генерация конфигов

сборка docker образов

Page 95: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Start.yml

создание баз данных

Page 96: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Start.yml

создание баз данных

накатка тестовых данных

Page 97: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Start.yml

запуск docker контейнеров

накатка тестовых данных

создание баз данных

Page 98: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Stop.yml

остановка docker контейнеров

Page 99: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Stop.yml

остановка docker контейнеров

удаление баз данных

Page 100: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Clean.yml

удаление docker образов

Page 101: Артём Ерошенко «Рецепт приготовления облачных тестингов»

работает локально

что получили?

Page 102: Артём Ерошенко «Рецепт приготовления облачных тестингов»

работает локально

чистое окружение

что получили?

Page 103: Артём Ерошенко «Рецепт приготовления облачных тестингов»

работает локально

изолированность

чистое окружение

что получили?

Page 104: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Где размещаем?

Кто запускает?

Ansible + Docker

Page 105: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Где размещаем?

Кто запускает?

Ansible + Docker

Page 106: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Железные машинки

Page 107: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Облачные платформы

Page 108: Артём Ерошенко «Рецепт приготовления облачных тестингов»
Page 109: Артём Ерошенко «Рецепт приготовления облачных тестингов»

build

clean

start

stop

Ansible playbook

Page 110: Артём Ерошенко «Рецепт приготовления облачных тестингов»

build

clean

start

stop

Ansible playbook

init

Page 111: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Init.yml

установка docker

установка библиотек

Page 112: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Получили тестинг по требованию

Page 113: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Облачный тестинг

создаем виртуалку

выполняем ansible

Page 114: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Кто запускает?

Ansible + Docker

Digitalocean

Page 115: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Кто запускает?

Ansible + Docker

Digitalocean

Page 116: Артём Ерошенко «Рецепт приготовления облачных тестингов»
Page 117: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Сконфигурировать

джобы

Page 118: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Запуск автотестов

на входверсии

компонент

Page 119: Артём Ерошенко «Рецепт приготовления облачных тестингов»

создает виртуалку

Page 120: Артём Ерошенко «Рецепт приготовления облачных тестингов»

создает виртуалкувыкачивает playbook

Page 121: Артём Ерошенко «Рецепт приготовления облачных тестингов»

создает виртуалкувыкачивает playbookустанавливает docker

Page 122: Артём Ерошенко «Рецепт приготовления облачных тестингов»

создает виртуалкувыкачивает playbookустанавливает dockerподнимает тестинг

Page 123: Артём Ерошенко «Рецепт приготовления облачных тестингов»

создает виртуалкувыкачивает playbookустанавливает dockerподнимает тестингзапускает автотесты

Page 124: Артём Ерошенко «Рецепт приготовления облачных тестингов»

создает виртуалкувыкачивает playbookустанавливает dockerподнимает тестингзапускает автотестыстопает тестинг

Page 125: Артём Ерошенко «Рецепт приготовления облачных тестингов»

создает виртуалкувыкачивает playbookустанавливает dockerподнимает тестингзапускает автотестыстопает тестинг

удаляет виртуалку

Page 126: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Аренда тестинга

на входверсии

компоненти время

Page 127: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Jenkins

Ansible + Docker

Digitalocean

Page 128: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Рецепт коронногоблюда

Page 129: Артём Ерошенко «Рецепт приготовления облачных тестингов»

Вопросы?

Aртем Ерошенко[email protected]