Полный разбор DevOps (часть 2)
Сегодня поговорим об основных практиках и инструментах DevOps.
Технологический процесс по DevOps
В рамках DevOps технологический процесс идет рука об руку с автоматизацией и непрерывной работой над качеством продукта. Ниже его основные элементы.
- Планирование (Planning) — получить требования, подготовить спецификации, спланировать ход совместной работы;
- Разработка (Development) — создать и проверить архитектуру проекта;
- Непрерывное тестирование (Continuous Testing) — проверять продукт и искать ошибки с помощью автоматизированных инструментов;
- Непрерывная интеграция (Continuous Integration) — объединить и протестировать новую функциональность и предыдущую версию кода;
- Непрерывный выпуск обновлений (Continuous Delivery) — показать проект и готовый к запуску продукт;
- Непрерывное развертывание (Continuous Deployment) — запустить продукт и проследить, чтобы возможные изменения не ухудшали пользовательский интерфейс или работу сайта;
- Мониторинг (Monitoring) — постоянно отслеживать ошибки;
- Обратная связь (Feedback) — собрать отзывы клиентов и целевой аудитории, при необходимости добавить новые функции.
Практики DevOps
Благодаря практикам DevOps можно автоматизировать множество рабочих процессов. Команды разработки и эксплуатации не связаны с планированием, но полезны на других этапах жизненного цикла проекта. Рассмотрим практики DevOps ниже.
Непрерывная интеграция
Основа гибкой разработки (agile development) — непрерывная интеграция. Разработчики обновляют код в центральном репозитории каждый раз после успешного теста. Непрерывная интеграция позволяет быстрее находить и устранять потенциальные проблемы, повышать качество ПО и быстрее выпускать обновления.
До введения этой практики каждый разработчик писал код отдельно, и результаты объединяли только в самом конце — процесс довольно трудоемкий и длительный.
При непрерывной интеграции разработчики регулярно проводят модульные тесты — они же юнит-тесты (unit tests) — и загружают изменения в центральный репозиторий. Затем система управления версиями (version control system) автоматически проверяет, возможно ли безопасно интегрировать код в существующий репозиторий. Так постоянное обновление кода облегчает тестирование и снижает риски.
Автоматизированное тестирование
Самый быстрый способ проверки финальных сборок программ — автоматизированные тесты. Для модульного, интеграционного и UX-тестирования нужны разные инструменты, но главное — не нужен человек. Автотесты сразу выдают информацию об ошибках в сборке, и разработчики могут приступить к их исправлению, не дожидаясь результатов ручного тестирования (manual testing).
Непрерывный выпуск обновлений
Непрерывный выпуск обновлений нужен для быстрого развертывания в производственной среде без изменения существующей функциональности. В этом помогает оптимизация на ранних этапах процесса разработки.
Разработчик отправляет новую функцию на тестирование QA-инженерам. Тестировщикам проще работать с небольшими изменениями: тщательно их протестировать и написать тестовые примеры (write test cases). Далее — автотесты и проверка в ветви выпуска в системе управления версиями.
Непрерывное развертывание
Зачастую непрерывное развертывание и непрерывный выпуск обновлений не различают, хотя это разные практики.
Непрерывный выпуск обновлений — пользователи регулярно получают обновления.
Непрерывное развертывание — новые функции после тестирования можно сразу интегрировать в программу, минуя вмешательство DevOps-инженеров.
Для непрерывного развертывания подходит, например, Docker. Инженеры DevOps вносят изменения в контейнеры и вводят их в работу автоматически. Весь процесс занимает всего несколько минут, поэтому способствует непрерывному выпуску обновлений.
Однако постоянное переключение функциональности (feature toggling) может принести больше вреда, чем пользы. В случае с непрерывным развертыванием нужно опираться на потребности бизнеса и процессы внедрения новой функциональности.
Инфраструктура как код
Инфраструктура как код (Infrastructure as a Code (IaC)) или по-другому программируемая инфраструктура — это модель, в которой процесс конфигурации инфраструктуры аналогичен процессу программирования ПО.
Когда появилась эта модель, граница между написанием приложений и созданием сред для них стала размываться. В программах уже заложены скрипты, которые создают и используют виртуальные машины (ВМ). Это основа облачных вычислений и неотъемлемая часть DevOps.
Инфраструктура как код позволяет управлять ВМ на программном уровне без ручной настройки и обновлений для отдельных компонентов оборудования. Так инфраструктуру легко воспроизводить и масштабировать, она становится «эластичной». Один оператор может создавать и обслуживать как одну, так и 1000 машин, используя один набор кода.
Преимущества инфраструктуры как кода — скорость, экономичность и снижение рисков.
Инструменты DevOps
Хотя DevOps обязан своим успехом изменениям общей культуры производственного процесса, инструменты тоже важны. Ниже их краткий список:
- Репозитории исходного кода (Git, CloudForce, TFS, Subversion);
- Серверы сборки (SonarQube, Jenkins, Artifactory);
- Инструменты управления конфигурацией (Puppet, Ansible, Salt, Chef);
- Инструменты по автоматизации тестирования (Selenium, Water);
- Облачные платформы (Amazon Web Services, Microsoft Azure, VMware vCloud).
Статью перевела: Бедретдинова Диана
Источник: https://dzone.com/articles/what-is-devops-complete-guide
Материалы обработал: Бедретдинова Диана
Больше контента от наших переводчиков, редакторов по ИТ/медицине смотрите на канале https://t.me/alliancepro