Что такое Agile?

«Что такое Agile?» — вопрос из категории Архитектура и DevOps-практики, который задают на 24% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Agile (гибкая методология) — это набор принципов и ценностей для разработки ПО, сфокусированный на итеративной поставке рабочего продукта, быстрой адаптации к изменениям и тесном сотрудничестве с заказчиком. В DevOps культура Agile является фундаментом для CI/CD.

Ключевые принципы из Agile Manifesto, важные для DevOps:

  • Работающий продукт — основной показатель прогресса. В DevOps это трансформируется в автоматизированные пайплайны, где каждая успешная сборка потенциально готова к продакшену.
  • Готовность к изменениям требований. Наша инфраструктура как код (IaC) и контейнеризация позволяют быстро адаптировать окружение под новые нужды.
  • Частые поставки рабочего ПО. Мы реализуем это через автоматизированные пайплайны развертывания, которые могут выполняться несколько раз в день.

Как это выглядит на практике в DevOps-команде:

Мы работаем двухнедельными спринтами. Разработчик создает фичу в отдельной ветке, затем создает Merge Request. Запускается CI/CD пайплайн в GitLab CI:

# .gitlab-ci.yml (упрощенно)
stages:
  - test
  - build
  - deploy-staging
  - deploy-prod

unit-test:
  stage: test
  script:
    - make test

build-container:
  stage: build
  script:
    - docker build -t my-app:$CI_COMMIT_SHA .
    - docker push my-registry/my-app:$CI_COMMIT_SHA

deploy-to-staging:
  stage: deploy-staging
  script:
    - kubectl set image deployment/my-app app=my-registry/my-app:$CI_COMMIT_SHA -n staging
  only:
    - merge_requests

# Ручное или автоматическое развертывание в prod после ревью кода
deploy-to-prod:
  stage: deploy-prod
  script:
    - ./scripts/blue-green-deploy.sh $CI_COMMIT_SHA
  when: manual # Требует подтверждения
  only:
    - main

Таким образом, Agile в DevOps — это не просто встречи, а технические практики, позволяющие безопасно и быстро доставлять ценность пользователям.

Видео-ответы