Ответ
В зрелых DevOps-командах разработчики самостоятельно инициируют развертывание своих изменений через автоматизированные CI/CD-пайплайны. Роль DevOps- или Platform-инженера — создать надежный, безопасный и простой в использовании механизм для этого.
Как это работает на практике:
- Разработчик пушит код в ветку
main/master. - CI/CD система (например, GitHub Actions) автоматически запускает сборку, прогоняет тесты.
- После успешного прохождения всех этапов пайплайн автоматически или после одобрения (approval) разворачивает приложение в целевое окружение (staging/production).
Пример реального пайплайна, который мы настраивали:
# .github/workflows/deploy.yml
name: Deploy to EKS
on:
push:
branches: [ main ]
jobs:
test-and-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: make test
- run: docker build -t myapp:${{ github.sha }} .
- run: docker push myapp:${{ github.sha }}
deploy-staging:
needs: test-and-build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
- name: Deploy to EKS
run: |
aws eks update-kubeconfig --name my-cluster
kubectl set image deployment/myapp myapp=myapp:${{ github.sha }} -n staging
Таким образом, разработчик не выполняет ручные команды — он лишь управляет кодом. Вся тяжелая работа по обеспечению консистентности, откатов (rollback) и мониторинга деплоя лежит на автоматизированной платформе, созданной DevOps-инженерами.