SlideShare une entreprise Scribd logo
1  sur  20
Télécharger pour lire hors ligne
Шаблон “Service Discovery” в
методологии DevOps
Алексей Алексеев
Кратко о DevOps
Паттерны в DevOps
Technical People Process
Continious Integration
Continious Deployment
Continiuos Testing
Automated Testing
etc….
Job Rotation
Full Stack Engineers
Integrated Teams
Join Meetings
etc….
Infrastructure as Code
Service Discovery
Monitoring
Developer Self Service
etc….
Service Discovery
- В понимании DevOps это общий
инфраструктурный паттерн
- направлен на обеспечении целостности
связей между приложениями и сервисами
- создает единую точку доступа к сервисам
Несколько слов об окружениях
DEV STAGE
DB
DB Application
Application
DB
И как нам это внедрить?
1. Что нужно для вредрения?
2. Куда бежать?
3. Что читать?
4. Если это у нас будет - у нас будет
DevOps?
5. Нам нужно все переделывать под
этот паттерн?
Инструментарий
Краткое сравнение
DNS Api REST Api Плюсы Минусы
Нет Да SSL, кластеризация Частая смена api
Да Да Кластеризация Отсутствие хранилища,
ограничение на размер ответа
Doozer Нет Нет Кластеризация Отсутствие поддержки
проекта, свой протокол.
ZooKeeper Нет Нет Устоявщийся проект,
большое комьюнити
Java, необходимость встраивать
клиента в приложение.
Service Discovery для QA
- Управление инфраструктурой
- Генерация тестовых данных
- Генерация конфигураций
- Автоматическая настройка CI
Генерация тестовых данных
ТестыService
Discovery
Запрос данных/шаблона
Ответ с готовыми
данными
Тестовые
данные
Генерация тестовых данных
class TestEtcdData(unittest.TestCase):
def setUp(self):
self.testUser=requests.get('http://localhost:2379/v2/keys/test-user')
def test_get_data(self):
self.assertEqual(self.testUser.json()['node']['value'], 'Ivan')
if __name__ == '__main__':
unittest.main()
Генерация конфигураций
ТестыService
Discovery
Запрос данных/шаблона
Ответ с готовыми
данными
Хост
Сервис Сервис
Генерация конфигураций
import socket
serversocket = socket.socket(
socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind(('', 0))
port=serversocket.getsockname()[1]
print "Fake server running on port %s"%port
serversocket.listen(5)
while 1:
(clientsocket, address) = serversocket.accept()
Генерация конфигураций
OS
Сервис
Serf
Handler Handler
Генерация конфигураций
import sys
import subprocess
serf_payload=""
for line in sys.stdin:
serf_payload+=line
def exec(command):
return subprocess.Popen(command,shell=True, stdout=subprocess.PIPE).stdout.read()
pid=exec("ps aux | grep '%s' | grep -v 'grep' | tr -s ' ' | cut -d' ' -f2 "%serf_payload.rstrip())
port=exec("lsof -w -a -p%s -i4 | grep LISTEN | tr -s ' ' |cut -d' ' -f9 "%pid.rstrip())
print port.split(":")[1]
Применение для CI
Service
Discovery
Применение для CI
https://jenkins-sqadays18.rhcloud.com/
username: sqadays18
password: sqadays18
Плюсы
1. Избавились от десяти мест для хранения
конфигураций
2. Создали единый справочник по сервисам
доступным в окружении
3. Получили гибкое распределенное хранилище
Минусы
1. Сервис для поиска сервисов теперь
полностью на нас
2. Как теперь найти этот сервис?
3. Нет единственного подходящего решения
Контакты
http://linkedin.com/in/alexeyalexeev
voodoo1441
https://google.com/+АлексейАлексеев144

Contenu connexe

En vedette

Automated release management with team city & octopusdeploy - NDC 2013
Automated release management with team city & octopusdeploy - NDC 2013Automated release management with team city & octopusdeploy - NDC 2013
Automated release management with team city & octopusdeploy - NDC 2013
Kristoffer Deinoff
 
Continuous integration with Docker and Ansible
Continuous integration with Docker and AnsibleContinuous integration with Docker and Ansible
Continuous integration with Docker and Ansible
Dmytro Slupytskyi
 
DevOps модное слово или следующая ступень эволюции
DevOps модное слово или следующая ступень эволюцииDevOps модное слово или следующая ступень эволюции
DevOps модное слово или следующая ступень эволюции
Andrey Rebrov
 
DevOps от и до - что, зачем и почему
DevOps от и до - что, зачем и почемуDevOps от и до - что, зачем и почему
DevOps от и до - что, зачем и почему
Andrey Rebrov
 

En vedette (20)

Functional web with elixir and elm in phoenix
Functional web with elixir and elm in phoenixFunctional web with elixir and elm in phoenix
Functional web with elixir and elm in phoenix
 
Roman Valchuk "Introducing to DevOps technologies"
Roman Valchuk "Introducing to DevOps technologies"Roman Valchuk "Introducing to DevOps technologies"
Roman Valchuk "Introducing to DevOps technologies"
 
Андрей Самиляк - Meet Magento Ukraine - Как мы играли в DevOps и как получилс...
Андрей Самиляк - Meet Magento Ukraine - Как мы играли в DevOps и как получилс...Андрей Самиляк - Meet Magento Ukraine - Как мы играли в DevOps и как получилс...
Андрей Самиляк - Meet Magento Ukraine - Как мы играли в DevOps и как получилс...
 
Final melnyk 2
Final melnyk 2Final melnyk 2
Final melnyk 2
 
#nostaging - Software Circus - Amsterdam, 2-9-2016
#nostaging - Software Circus - Amsterdam, 2-9-2016#nostaging - Software Circus - Amsterdam, 2-9-2016
#nostaging - Software Circus - Amsterdam, 2-9-2016
 
Metrics: where and how
Metrics: where and howMetrics: where and how
Metrics: where and how
 
Monitoring base, golang meetup, kyiv
Monitoring base, golang meetup, kyivMonitoring base, golang meetup, kyiv
Monitoring base, golang meetup, kyiv
 
Dev ops performance lab-v2 (1)
Dev ops performance lab-v2 (1)Dev ops performance lab-v2 (1)
Dev ops performance lab-v2 (1)
 
Automated release management with team city & octopusdeploy - NDC 2013
Automated release management with team city & octopusdeploy - NDC 2013Automated release management with team city & octopusdeploy - NDC 2013
Automated release management with team city & octopusdeploy - NDC 2013
 
Как проекты приходят к DevOps?
Как проекты приходят к DevOps?Как проекты приходят к DevOps?
Как проекты приходят к DevOps?
 
Continuous integration with Docker and Ansible
Continuous integration with Docker and AnsibleContinuous integration with Docker and Ansible
Continuous integration with Docker and Ansible
 
Implementing DevOps In Practice
Implementing DevOps In PracticeImplementing DevOps In Practice
Implementing DevOps In Practice
 
HP Discover Session BB2160: Agile DevOps Continuous Delivery
HP Discover Session BB2160:  Agile DevOps Continuous DeliveryHP Discover Session BB2160:  Agile DevOps Continuous Delivery
HP Discover Session BB2160: Agile DevOps Continuous Delivery
 
JUST EAT: Embracing DevOps
JUST EAT: Embracing DevOpsJUST EAT: Embracing DevOps
JUST EAT: Embracing DevOps
 
Lean part of DevOps - DevOps Amsterdam meetup - 17-8-2016
Lean part of DevOps - DevOps Amsterdam meetup - 17-8-2016Lean part of DevOps - DevOps Amsterdam meetup - 17-8-2016
Lean part of DevOps - DevOps Amsterdam meetup - 17-8-2016
 
DevOps модное слово или следующая ступень эволюции
DevOps модное слово или следующая ступень эволюцииDevOps модное слово или следующая ступень эволюции
DevOps модное слово или следующая ступень эволюции
 
DevOps от и до - что, зачем и почему
DevOps от и до - что, зачем и почемуDevOps от и до - что, зачем и почему
DevOps от и до - что, зачем и почему
 
DevOps - Retour d'expérience - MarsJug du 29 Juin 2011
DevOps - Retour d'expérience - MarsJug du 29 Juin 2011DevOps - Retour d'expérience - MarsJug du 29 Juin 2011
DevOps - Retour d'expérience - MarsJug du 29 Juin 2011
 
Devops: от заката до рассвета
Devops: от заката до рассветаDevops: от заката до рассвета
Devops: от заката до рассвета
 
Managing Your Application Lifecycle on AWS: Continuous Integration and Deploy...
Managing Your Application Lifecycle on AWS: Continuous Integration and Deploy...Managing Your Application Lifecycle on AWS: Continuous Integration and Deploy...
Managing Your Application Lifecycle on AWS: Continuous Integration and Deploy...
 

Plus de SQALab

Plus de SQALab (20)

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировку
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщика
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержки
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testing
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нужен
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихии
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советов
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIs
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджменте
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестирование
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных систем
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
 

Шаблон "Service Discovery" в методологии DevOps