[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-mikroservisy-kak-organizovat-deploy-mikroservisov":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":16,"progress":17,"seo":18},836,"kak-organizovat-deploy-mikroservisov",23,"mikroservisy","Микросервисы","🔗","Как организовать деплой микросервисов?","Развёртывание микросервисов требует зрелых CI\u002FCD практик и стратегий, минимизирующих риски. Основные стратегии: Blue-Green, Canary и Rolling Update.\n\n### Стратегии развёртывания\n\n| Стратегия | Принцип | Плюсы | Минусы |\n|---|---|---|---|\n| Blue-Green | 100% переключение между двумя окружениями | Мгновенный откат | Двойные ресурсы |\n| Canary | Постепенное увеличение трафика (5% → 25% → 100%) | Раннее обнаружение проблем | Сложнее настроить |\n| Rolling Update | Постепенная замена pod'ов | Стандарт в Kubernetes | Медленный откат |\n\n\u003Cdetails>\u003Csummary>Rolling Update в Kubernetes\u003C\u002Fsummary>\n\n```yaml\napiVersion: apps\u002Fv1\nkind: Deployment\nmetadata:\n  name: payment-service\nspec:\n  replicas: 4\n  strategy:\n    type: RollingUpdate\n    rollingUpdate:\n      maxSurge: 1        # Создать 1 новый pod перед удалением старого\n      maxUnavailable: 0   # Не допускать недоступности\n  template:\n    spec:\n      containers:\n        - name: payment-service\n          image: bank-registry\u002Fpayment-service:2.0\n          readinessProbe:\n            httpGet:\n              path: \u002Factuator\u002Fhealth\u002Freadiness\n              port: 8080\n            initialDelaySeconds: 20\n            periodSeconds: 5\n```\n\n\u003C\u002Fdetails>\n\n### CI\u002FCD Pipeline для микросервиса\n\n```yaml\nstages:\n  - build       # Maven build + unit tests\n  - test        # Integration tests + Contract tests\n  - scan        # SonarQube + SAST\u002FDAST + License compliance\n  - package     # Docker build + push to registry\n  - deploy-dev  # Deploy to dev\n  - deploy-stage # Deploy to staging + E2E tests\n  - deploy-prod # Canary → Rolling update to production\n```\n\n### Graceful Shutdown -- корректное завершение при обновлении\n\n\u003Cdetails>\u003Csummary>Конфигурация graceful shutdown\u003C\u002Fsummary>\n\n```yaml\n# application.yml\nserver:\n  shutdown: graceful\nspring:\n  lifecycle:\n    timeout-per-shutdown-phase: 30s\n\n# Kubernetes\nspec:\n  terminationGracePeriodSeconds: 60\n  containers:\n    - lifecycle:\n        preStop:\n          exec:\n            command: [\"sh\", \"-c\", \"sleep 10\"]  # Даём время LB убрать pod из ротации\n```\n\n```java\n\u002F\u002F Обработка graceful shutdown для Kafka consumer\n@PreDestroy\npublic void onShutdown() {\n    log.info(\"Получен сигнал завершения. Останавливаем обработку сообщений...\");\n    kafkaListenerEndpointRegistry.stop();\n    \u002F\u002F Дожидаемся завершения текущих операций\n}\n```\n\n\u003C\u002Fdetails>\n\n### Рекомендации\n\n- Каждый сервис деплоится независимо, со своим пайплайном.\n- Обязательные этапы: сканирование безопасности (SAST\u002FDAST), проверка лицензий.\n- Feature flags (Unleash, LaunchDarkly) для безопасного включения новых функций.\n- Автоматический rollback при деградации метрик.\n- Чёткая процедура согласования релизов (change management).\n\n> **На собеседовании:** знайте три стратегии деплоя и когда какую использовать. Обязательно упомяните graceful shutdown и readiness probes — без них rolling update будет терять запросы. Частая ошибка — забыть про preStop hook в Kubernetes.","","middle",[15],"microservices",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":20,"featuredSnippetReady":23},"Как организовать деплой микросервисов? — Gymterview","Развёртывание микросервисов требует зрелых CI\u002FCD практик и стратегий, минимизирующих риски. Основные стратегии: Blue-Green, Canary и Rolling Update.","Развёртывание микросервисов требует зрелых CI\u002FCD практик и стратегий, минимизирующих риски. Основные стратегии: Blue-Gre",[15,13],true]