Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Барух Садогурский, Кирилл Толкачёв — DevOps In Action

Moscow JUG
September 08, 2016

Барух Садогурский, Кирилл Толкачёв — DevOps In Action

Говорят, DevOps позволяет увеличить скорость разработки и развертки приложений. Давайте проверим! Достаточно ли 3 часа для того, чтобы написать и развернуть в production свой собственный CI server (оставим в стороне вопрос “зачем нам рукописный CI server?!”)?

Что будет?
- процесс рождения собственного CI as a Service
- ловкое использование Docker и Spring Boot
- масштабирование на нашу большую компанию
- весело

На выходе вы, наконец, поймете, зачем обычному разработчику знать про свою инфраструктуру, как сияет радуга и как прекрасна шерсть розовых пони если dev любит ops, ops любит dev (в хорошем смысле) и везде царит мир и любовь.

Moscow JUG

September 08, 2016
Tweet

More Decks by Moscow JUG

Other Decks in Programming

Transcript

  1. 16 DevOps - buzzword 1. Очень абстрактно 2. Популярное словечко

    3. Продающее 4. Все говорят “девопс”
  2. Описание демо • Мы будем писать и разворачивать доморощенный CI

    server • “Да вы, что, е****сь?!” • В здравом уме → не стали бы
  3. Описание демо • Мы будем писать и разворачивать доморощенный CI

    server • “Да вы, что, е****сь?!” • В здравом уме → не стали бы • Но ведь все знают что такое CI?
  4. В чем проблема-то? • Пишем war • Жмём экспорт в

    JDeveloper • Посылаем админам по почте
  5. В чем проблема-то? • Пишем war • Жмём экспорт в

    JDeveloper • Посылаем админам по почте • Спасибо, все свободны.
  6. Шутки в сторону • Пишем war • Собираем Мавеном •

    Деплой в Томкат • Спасибо, все свободны.
  7. Mesos lets us treat a cluster as one big computer

    WEB WASTED CACHE WASTED WASTED HADOOP 42
  8. Mesos lets us treat a cluster as one big computer

    WEB WASTED CACHE WASTED WASTED HADOOP WASTED WEB CACHE HADOOP FREE FREE 43
  9. День 1: Vagrant 1. Инициализация окружения a. vmware b. virtualbox

    c. hyper-v d. … 2. Эмуляция сетевой топологии a. node.vm.network :private_network, ip: "192.168.40.#{i+110}" 3. Много разных плагинов a. hostmanager-plugin например. Автоматически добавляет имена в hosts файлы
  10. День 1: Vagrant & Ansible 1. Zookeeper role 2. Mesos

    Master role a. marathon b. mesos dns
  11. День 1: Vagrant & Ansible 1. Zookeeper role 2. Mesos

    Master role a. marathon b. mesos dns 3. Mesos Slave role a. CPU % b. MEM % c. PORTS [5100-2000,80] d. DISK % e. GPUS
  12. ★ Декларативная настройка ★ JUnit правила ★ Единый Docker storage

    → быстрый - Все же очень далекий “от реальности” - Проблемы с запуском на разных версиях Docker/OS День 3: Minimesos
  13. Marathon 1. Long Running tasks 2. Управление жизненным циклом 3.

    Обновление без недоступности* a. marathon-lb/client side lb
  14. День 4: Mesos DNS 1. Устанавливаем через Marathon 2. Показываем

    что работает, перенастраиваем приложения
  15. День 6: Mesos DNS 1. Устанавливаем через Marathon 2. Пробуем

    задеплоить через Public анонс приложение с NC или еще что нибудь простенькое и быстрое
  16. День 5: Marathon LB 1. Устанавливаем через Marathon 2. Пробуем

    задеплоить через Public анонс приложение с NC или еще что нибудь простенькое и быстрое
  17. День 5: Marathon LB 1. 9090 a. haproxy?stats b. _haproxy_getconfig

    2. 9091 a. resolve by header 3. 80 a. resolve by host
  18. День 5: Marathon LB 1. 9090 a. haproxy?stats b. _haproxy_getconfig

    2. 9091 a. resolve by header 3. 80 a. resolve by host 4. Custom haproxy config a. marathon fetch
  19. День 5: Marathon LB 1. 9090 a. haproxy?stats b. _haproxy_getconfig

    2. 9091 a. resolve by header 3. 80 a. resolve by host 4. Custom haproxy config a. marathon fetch
  20. Рабочие узлы и ограничения 1. Docker image c java и

    git 2. Размазывается по узлам 3. Необходимо настраивать выгрузку 4. С документацией
  21. DVPS #1 Подготовка 1. Развернем $ vagrant up or $

    minimesos up 2. Бинарный репозиторий 3. Обнаружение - https://github.com/mesosphere/marathon-lb a. VHOST b. HAPROXY_{n}_PATH c. HAPROXY_{n}_GROUP d. HAPROXY_{n}_BIND_OPTIONS e. .. https://github.com/mesosphere/marathon-lb/blob/master/Longhelp.md
  22. github/{project} Mesos Framework Spring boot mesos Mesos master Реализация Mesos

    slaves GET :8080/tasks?repoUrl='ls-la' Resource Offer, Accept Schedule git pull ./gradlew build publish Artifactory
  23. Условия и ограничения • один docker образ для всех сборок

    • Docker образ должен содержать java и git • отвественность за произведенные артефакты на разработчике ◦ но это правится с помощью Gradle плагинов • все попадает в бинарный репозиторий
  24. Итак, full stack • Docker • Mesos • Marathon •

    Vagrant • Ansible • HA Proxy • Minimesos • Artifactory • Spring Boot
  25. Проблемы? Да пожалуйста Scale Resources Rejecting offer offerId=...O2301, by requirement=scaleFactorRequirement

    Accepting offer offerId=...-O2301, by requirement=cpuRequirement Accepting offer offerId=...-O2301, by requirement=memRequirement Accepting offer offerId=...-O2301 on slaveId=...-S2
  26. QA

  27. DVPS! 1. DevOps это не сложно 2. Концепции Discovery/Monitoring etc

    можно получить из коробки 3. Знай и люби свой DevOps 4. Только зная и любя его, можно сделать эффективное и прекрасное решение