100
Автоматизация тестовой инфраструктуры Антон Галицын, 2GIS 1 / 100

Антон Галицын

Embed Size (px)

Citation preview

Автоматизация тестовойинфраструктуры

Антон Галицын, 2GIS

1 / 100

О себе

Разработчик в отделе Infrastruсture &

Operations

Работал в команде OpenStack

Занимаюсь автоматизацией деплойментапроектов 2ГИСа

2 / 100

У нас есть приложение!

3 / 100

Приложение

C, gcc 4.9.3, Linux 4.2

$ ./codefest

Codefest is IT conference!

4 / 100

Где будем тестировать?

5 / 100

Локально

6 / 100

Локально

Просто

А зачем что-то еще?

7 / 100

А что с Windows и OS X?

8 / 100

Локально

Разные операционные системы

9 / 100

OK, Linux!

10 / 100

Упс...

Some packages could not be installed.

codefest: Depends: libstdc++6 (>= 5.2) but 4.9.2-10 is to be installed

E: Unable to correct problems.

11 / 100

Локально

Разные операционные системы

Проблемы с зависимостями

12 / 100

Локально

13 / 100

Локально, с изоляцией

14 / 100

Локально, с изоляцией

VirtualBox

KVM

LXC

Docker

15 / 100

Где будем тестировать?

Шаг 1 - создать окружение

16 / 100

Любое окружение надо конфигурировать

17 / 100

Конфигурация

Documentation-driven

Scripts (bash, python, perl)

Configuration management (chef, ansible, puppet)

18 / 100

Где будем тестировать?

Шаг 1 - создать окружение

Шаг 2 - настроить окружение

19 / 100

Тестируем!

✔ Шаг 1 - создать окружение

✔ Шаг 2 - настроить окружение

Прогоняем тесты, смотрим результаты

20 / 100

Автотесты показывают разныерезультаты!

21 / 100

Достоверные результаты автотестов

22 / 100

Достоверные результаты автотестов

Результат автотестов повторяем

23 / 100

Достоверные результаты автотестов

Результат автотестов повторяем

Автотесты находят баги

24 / 100

Проблемы

25 / 100

Проблемы

Окружений > 1

26 / 100

Проблемы

Окружений > 1

Неоднородная инфраструктура

27 / 100

Проблемы

Окружений > 1

Неоднородная инфраструктура

Автотесты оставляют артефакты (tmp файлы,cache, неконсистентная база)

28 / 100

Решение

29 / 100

Решение

Список окружений

30 / 100

Решение

Список окружений

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

31 / 100

Решение

Список окружений

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

Инфраструктура по требованию

32 / 100

Решение

Список окружений

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

Инфраструктура по требованию

"Чистые" автотесты

33 / 100

Решение

Список окружений

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

Инфраструктура по требованию

"Чистые" автотесты

34 / 100

Универсальный инструмент

✔ Шаг 1 - vagrant provider (Vbox, LXC, Docker,

Digital Ocean)

✔ Шаг 2 - vagrant provisioner (shell, chef, ansible,

puppet)

$ vagrant up

35 / 100

Что у нас есть?

✔ Список окружений

✔ Конфигурация в коде

✔ Инфраструктура по требованию

36 / 100

Переписываем приложение!

37 / 100

Web

38 / 100

Better Web

39 / 100

Service-oriented

40 / 100

Microservices

41 / 100

Где будем тестировать?

42 / 100

Удаленно

43 / 100

Варианты

44 / 100

Варианты

Публичное облако (AWS, Digital Ocean,

Rackspace)

45 / 100

Варианты

Публичное облако (AWS, Digital Ocean,Rackspace)

Приватное облако (VMware, HP)

46 / 100

Варианты

Публичное облако (AWS, Digital Ocean,Rackspace)

Приватное облако (VMware, HP)

Приватное облако open-source (ApacheCloudstack, OpenStack)

47 / 100

Я просто хотел запустить тесты!

48 / 100

2ГИС

49 / 100

2ГИС

Cправочник и карты

Web, Mobile, Desktop

35 команд

50 / 100

Команды

Разные языки

Интеграции

51 / 100

Потребности команд

Автоматизированное тестирование

Достоверные результаты

52 / 100

Итог

35 команд

Интеграции

Автоматизированное тестирование

53 / 100

Где будем тестировать?

54 / 100

Что у нас есть?

✔ Свое железо

55 / 100

Что у нас есть?

✔ Свое железо

✔ Системные администраторы

56 / 100

Что у нас есть?

✔ Свое железо

✔ Системные администраторы

✔ Опыт в виртуализации

57 / 100

Инфраструктура компании не готова

58 / 100

Проблемы инфраструктуры

Конец 2013 года - Proxmox Virtual Environment

59 / 100

Проблемы инфраструктуры

Конец 2013 года - Proxmox Virtual Environment

Создание виртуалок вручную по тикету

60 / 100

Проблемы инфраструктуры

Конец 2013 года - Proxmox Virtual Environment

Создание виртуалок вручную по тикету

Нет разделения по проектам

61 / 100

Проблемы инфраструктуры

Конец 2013 года - Proxmox Virtual Environment

Создание виртуалок вручную по тикету

Нет разделения по проектам

Слабый API, платные плагины

62 / 100

Пора что-то менять!

63 / 100

Требования к решению

64 / 100

Требования к решению

Эффективная утилизация железа

65 / 100

Требования к решению

Эффективная утилизация железа

Командные ресурсы

66 / 100

Требования к решению

Эффективная утилизация железа

Командные ресурсы

Модульность

67 / 100

Требования к решению

Эффективная утилизация железа

Командные ресурсы

Модульность

Легко дорабатывать

68 / 100

Требования к решению

Эффективная утилизация железа

Командные ресурсы

Модульность

Легко дорабатывать

API

69 / 100

Требования к решению

Эффективная утилизация железа

Командные ресурсы

Модульность

Легко дорабатывать

API

Изоляция70 / 100

Варианты

Публичное облако (AWS, Digital Ocean,Rackspace)

Приватное облако (VMware, HP)

✔ Приватное облако open-source (ApacheCloudstack, OpenStack)

71 / 100

72 / 100

Что такое OpenStack?

OpenStack - набор сервисов для построенияпубличного или приватного облака.

73 / 100

OpenStack - open software

Релиз раз в полгода status.openstack.org

Базовые компоненты github.com/openstack

Инкубатор github.com/stackforge

Конференции, встречи, Q&A, mail-lists

openstack.org/community

74 / 100

Контрибьюторы OpenStack

openstack.org/foundation/companies

Red Hat

Rackspace

IBM

Intel

Cisco75 / 100

Решение проблем инфраструктуры

76 / 100

Решение проблем инфраструктуры

✔ Эффективная утилизация железа

77 / 100

Решение проблем инфраструктуры

✔ Эффективная утилизация железа

✔ Командные ресурсы

78 / 100

Решение проблем инфраструктуры

✔ Эффективная утилизация железа

✔ Командные ресурсы

✔ Модульность

79 / 100

Решение проблем инфраструктуры

✔ Эффективная утилизация железа

✔ Командные ресурсы

✔ Модульность

✔ Легко дорабатывать

80 / 100

Решение проблем инфраструктуры

✔ Эффективная утилизация железа

✔ Командные ресурсы

✔ Модульность

✔ Легко дорабатывать

✔ API

81 / 100

Решение проблем инфраструктуры

✔ Эффективная утилизация железа

✔ Командные ресурсы

✔ Модульность

✔ Легко дорабатывать

✔ API

✔ Изоляция82 / 100

Инфраструктура по требованию

83 / 100

Инфраструктура по требованию

Создание стеков из шаблонов

server:

depends_on: [ ip_adress, dns_record ]

type: OS::Nova::Server

properties:

name: { get_param: name }

flavor: { get_param: flavor }

image: { get_param: image }

key_name: { get_param: key_name }

84 / 100

Инфраструктура по требованию

Создание стеков из шаблонов

$ heat stack-create API -f api.yml \ -P key_name="id_rsa" \ -P name=api-all-in-one \ -P flavor=medium \ -P image="ubuntu-14.04-x64"

85 / 100

Это было начало

86 / 100

Развитие автоматизации

87 / 100

Continuous integration

88 / 100

github.com/2gis/vmmaster

89 / 100

Нагрузочное тестирование

90 / 100

github.com/2gis/badger

91 / 100

github.com/2gis/badger-api

92 / 100

И мы будем писать еще!

93 / 100

Выводы

94 / 100

Выводы

Используйте однородные окружения

95 / 100

Выводы

Используйте однородные окружения

Храните конфигурации в коде

96 / 100

Выводы

Используйте однородные окружения

Храните конфигурации в коде

Используйте "чистую" инфраструктуру потребованию

97 / 100

Собирайте достоверные результаты!

98 / 100

Спасибо!

Антон Галицын

[email protected]

github.com/agalitsyn

99 / 100

Нераскрытые темы про OpenStack

Эксплуатация

Деплой

Апгрейд

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

Разработка плагинов

Расследование инцидентов100 / 100