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

Кирилл Ветчинкин «Практика использования .NET Core на ОС Linux с применением автоматизации»

DotNetRu
November 14, 2017

Кирилл Ветчинкин «Практика использования .NET Core на ОС Linux с применением автоматизации»

Технология .NET Core от Microsoft позволила .NET разработчикам разворачивать приложения на Linux. Вместе с этим появилось и множество новых возможностей для более эффективной разработки и поставки. В докладе будут разобраны основные проблемы разработки, поставки, тестирования и рассмотрены схемы их решения, используя такие средства как: GitLab, Vgarant+VirtualBox, TeamCity, Ansible, Octopus Deploy, Docker. Мы поговорим про создание тестовых сред, управление инфраструктурой из кода и CI/CD. Основная цель доклада — продемонстрировать, что .NET Core на Linux — это выгодно, быстро и управляемо.

DotNetRu

November 14, 2017
Tweet

More Decks by DotNetRu

Other Decks in Programming

Transcript

  1. О себе 12 Месяцев с .net Core на Prod 6

    Месяцев c ОС Linux на Prod 4 Проекта на .net Core+Linux 2
  2. План доклада • Рассмотрим проблемы разработки и поставки • Рассмотрим

    способы их решения • Поговорим про Windows/Linux • Практические примеры(тестовая среда, создание, настройка, деплой и т.п.) 3
  3. Единый тестовый стенд QA Develop QA Dev - “Ты тестируй,

    а я подожду” Integration/Test Staging Production - “Он опять все стер” 15
  4. Ручные операции/инструкции для Ops QA Develop Dev Ops - “Я

    протестировал. Все ок” - “Ой! Я забыл сделать это на Prod” - “Сменю-ка я название базы на Integration сервере” Integration/Test Staging Production 17
  5. Решение - добавляем Infrastructure as code Develop Dev Test QA

    Integration/Test Staging Production Test Ops Ops Ops 18
  6. Общее окружение для всех приложений Develop Dev - “Я приложение

    A на .net Core 2.0 перевел” Ops - “Я конфиги nginx правил для приложения B. Теперь не работают A и C” Integration/Test Staging Production 19
  7. Как это реализовать на Windows? 21 1. Купить Windows Server

    2014(323 848 руб.) 2. Купить MS Sql Server 2014 (374 502 руб.) 3. Купить Azure подписку для VM на Windows (x3 по сравнению с Linux)
  8. Что мы от нее ожидаем • Убивается/создается «с кнопки» •

    Вся конфигурация в Git • Каждый тестировщик работает независимо со своей средой • Настроена теми же скриптами что и Integration/Staging/Production(а значит равна им) 27
  9. Что делает Ansible • Настройка ОС(ufw, mc и т.п.) •

    Установка Docker, Docker Swarm • Pull Docker Images • Run/Stop/Remove Docker containers 30
  10. Команды Ansible • “ansible-playbook –i inventories/test main.yml “ – настроить

    машину • “ansible-playbook –i inventories/test deploy.yml – deploy Docker контейнеров 38
  11. Docker Swarm 46 HEALTHCHECK --interval=30s \ --timeout=3s \ CMD curl

    -f http://localhost:8500/swagger /ui/index.html || exit 1
  12. Docker Swarm + Ansible 47 ansible-playbook -i inventories/stage main.yml Базовая

    инфраструктура(ufw и т.п) Docker + Registry connect Docker Swarm 0/1 1/2 2/3 1/1 2/2 3/3
  13. Итоги • На моем компьютере это работает • Пересборка для

    каждой среды • Единый тестовый стенд • Ручные операции/инструкции для Ops • Общее окружение для всех приложений
  14. Контроль • Приложение – код • Схема БД – код

    • Авто тесты – код • Инфраструктура – код • CI/CD – код(TC*) 52
  15. Скорость • Интеграция/деплой при каждом коммите • Любое количество сред

    и машин • Настройка машины – 5-7 минут • Деплой – 1-3 минуты 53
  16. Уверенность • Частый деплой • Частое создание/убийство сред • Тестирование

    инфраструктуры • Тестирование конвеера • Тестирование кода • Повторяемость • Все среды одинаковы 54
  17. Выгода • Linux, PostgreSql = 0$ • Azure Linux VM

    дешевле Windows VM в 3 раза • 10 минут работы машины дешевле 2 дней работы Ops руками в 96 раз 55
  18. .Net Core на ОС Linux «.Net Core на ОС Linux

    – это полностью контролируемый, быстрый, надежный процесс разработки и поставки ПО и в ∞ раз дешевле чем на Windows» 56