Workflows в Express 42

Post on 25-Jan-2017

543 views 0 download

Transcript of Workflows в Express 42

Workflows в Express 42

Игорь Курочкин

История• Qik• Skype• Microsoft• Express 42

Надежные решения для сложной инфраструктуры2

Qik• 2 DEV команды• 3 OPS• 1 продукт• 1 датацентр, 2 окружения• 10 сервисов• 50 серверов

Надежные решения для сложной инфраструктуры3

Skype• 2 DEV команды• 5 OPS• 2 продукта• 3 датацентра• 20 сервисов (Java/Python/C/C++)• 200 серверов• 100Tb данных в месяц

Надежные решения для сложной инфраструктуры4

Skype Ops• 3 OPS• Scrum• 5 OPS

• 3 Infra OPS• 1 dedicated OPS per team

• CEN, TSG, On-call• Передача проекта• devopstopologies.com

Надежные решения для сложной инфраструктуры5

Skype infra repo• 1 репозиторий• 3 репозитория

• base• team1• team2

• N репозиториев• base• team1• teamN

• component1• componentN

Надежные решения для сложной инфраструктуры6

Skype• PaaS• Chef and Zabbix• DBaS• InfoSec• TPS• Internal and external endpoints• Deployment

• PreQA, QA, CAB, Live• DR, incidents and post-mortems

Надежные решения для сложной инфраструктуры7

Express 42Chef• Workflow• Testo• Berkshelf• Community cookbooks• Test Kitchen and tests

Надежные решения для сложной инфраструктуры8

Chef• Chef DK • Knife• Berkshelf• Chef клиент

• всегда запущен и run проходит без ошибок• настраивает окружение• не деплоит

• Chef сервер на окружение (knife-block)

Надежные решения для сложной инфраструктуры9

Chef workflow• Chef RFC

• https://github.com/chef/chef-rfc• rfc019-chef-workflows

• Chef Policies• https://www.chef.io/blog/2015/10/05/

policyfiles-why-what-and-how/• Roles/Environments/Runlist

Надежные решения для сложной инфраструктуры10

Chef проблемы• Монолитные кукбуки• Изменения не доходят до всех окружений• Данные на Chef и в Git не совпадают• Аудит изменений на Chef сервере и на клиенте

• Версионирование

Надежные решения для сложной инфраструктуры11

Testohttps://github.com/express42-cookbooks/testo• cookbooks• data_bags• environments• roles• Berksfile/Berksfile.lock• .kitchen.yml• README.md

Надежные решения для сложной инфраструктуры12

Berksfile

Надежные решения для сложной инфраструктуры13

Roles and env• Roles

• Base• Chef server• Graylog server• Zabbix server

• Environment• Vagrant

Надежные решения для сложной инфраструктуры14

.kitchen.yml

Надежные решения для сложной инфраструктуры15

Infra repohttp://www.heavywater.io/blog/2015/04/29/infra-repo/• AWS• SparkleFormation• sfn• Batali• Chef

Надежные решения для сложной инфраструктуры16

Community cookbooks• Platforms (Ubuntu 14.04)• Init systems and restart• Chef 11/12• LWRP and wrapper support• Dependencies• Templates• Tests and Chef Supermarket• Issues and pull requests

Надежные решения для сложной инфраструктуры17

Tests• Любое изменение на GitHub• Запуск тестов в Travis CI• Вызов Rubocop и Foodcritic проверок• Запуск виртуалки в Digital Ocean через Test Kitchen• Выполнение Serverspec тестов• Загрузка в Chef Supermarket• Нотификация в Slack чат и обновление статуса сборки

Надежные решения для сложной инфраструктуры18

МониторингZabbix • zabbixapi• zabbix_lwrp (host, template, graph, …)• zabbix_templates (~25 сервисов)• zabbix_actions (email, slack, opsgenie)• zabbix_dashing• https://github.com/alexanderzobnin/grafana-zabbix

Надежные решения для сложной инфраструктуры19

Мониторинг• https://github.com/express42/zabbixapi

• https://github.com/express42-cookbooks/zabbix_lwrp

Надежные решения для сложной инфраструктуры20

Мониторинг

Надежные решения для сложной инфраструктуры21

Zabbix Live• Number of hosts 134• Number of items 74754• Number of triggers 20775• New values per second 1186Zabbix PreQA/QA• 79/28920/4968/454

Мониторинг

Надежные решения для сложной инфраструктуры22

• Много триггеров для поиска проблемы, но только две нотификации о наличии

• End-to-end тесты:• Full flow тест• Harness тест

ChatOps• Slack integrations

https://api.slack.com/community• Atlassian/Zabbix/GitHub/Travis• Chef/Deploy/Rundeck/Foreman/Graylog• Hubot

• https://hubot.github.com

Надежные решения для сложной инфраструктуры23

Документация• knife-cookbook-doc• README.md• CHANGELOG.md• Git commit message• Readme Driven Development• http://docs.writethedocs.org

Надежные решения для сложной инфраструктуры24

Культура• Постоянные улучшения• Внутренние митапы• Хакатоны• Вече

Надежные решения для сложной инфраструктуры25

Вопросы?

Надежные решения для сложной инфраструктуры26

• Twitter: @igoritl• GitHub: ikurochkin• igor@express42.com