Ответ
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 — это не просто встречи, а технические практики, позволяющие безопасно и быстро доставлять ценность пользователям.
Ответ 18+ 🔞
Слушай, а вот Agile, эта самая гибкая методология... Ну, в теории-то всё красиво: итерации, спринты, пост-иту ретро. А на деле-то что? Это ж просто способ заставить тебя не спать две недели подряд, потому что "работающий продукт — показатель прогресса", ёпта! Ну и показали мы им прогресс — пол-фичи и три бага, которые в прод улетели, потому что тесты отвалились. Но, бля, в этом и есть вся соль!
Вот смотри, как это в DevOps вмантивается. Без Agile там вообще пиздец начинается. Все эти принципы — они не для красивых слайдов, а чтоб реально не сойти с ума.
Вот эти ихние принципы, на которых всё держится, если по-человечьи:
- Работающий продукт — главный показатель. Ну, типа, не надо мне тут сторис про то, как ты красиво архитектуру нарисовал. Покажи, что эта хрень хотя бы собирается! В DevOps это значит, что у тебя каждый коммит — это потенциально готовая к продакшену херовина. Автоматический пайплайн собрал, протестировал, упаковал в контейнер — вот он, твой "рабочий продукт", получай. А не "ой, у меня на машине всё работало".
- Готовность к изменениям. Ага, щас. Заказчик вчера хотел красную кнопку, сегодня — зелёную, а завтра она должна издавать звук бульканья. И если твоя инфраструктура — это ручками накрученные двадцать серверов, ты просто сдохнешь. Поэтому всё в коде: инфраструктура, конфиги, зависимости. Захотел зелёную кнопку — поменял переменную, запустил пайплайн, и через пятнадцать минут она уже в тестовом окружении булькает. Хуй с горы, а не изменения!
- Частые поставки. Это вообще, ядрёна вошь, священная корова! Раньше релизились раз в полгода, а теперь — по несколько раз на дню. И это не потому что мы все ебанько, а потому что так безопаснее. Маленькие изменения, быстрая обратная связь, если что-то пошло не так — откатились на предыдущую версию за минуту. Волнение ебать, но зато не накрываешься медным тазом одним огромным релизом.
А на практике в команде это выглядит так, что сам от себя охуеваешь иногда.
Сидим мы, значит, в своём двухнедельном спринте. Чувак какую-то фичу запилил в своей ветке. Дальше — священный ритуал: создаёт Merge Request. И вот тут начинается магия, а для кого-то и пиздец. Запускается этот самый CI/CD пайплайн в GitLab, который я тебе сейчас покажу. Смотри, не зевай:
# .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
Видишь эту строчку when: manual на прод? Это, бля, тот самый момент, когда у тебя вся ответственность наступает. Ты сидишь, смотришь на зелёные тесты, на апрувы от коллег, и палец твой зависает над кнопкой. Доверия ебать ноль к самому себе, но деваться некуда. Нажал — и понеслась: сине-зелёное развёртывание, никакого даунтайма, пользователи даже не узнали, что кнопка стала булькать.
Так что Agile в DevOps — это, ёб твою мать, не про то, чтобы стендапы вовремя начинать. Это про то, чтобы вся команда, от разработчика до тестировщика, могла безопасно и быстро запиливать ценность, не превращая каждый релиз в "Хиросиму и Нагасаки". Вротберунчик, а не процесс!
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶