デプロイメントTips

デプロイメントを効率化するためのヒントとコツを記載します。

ゼロダウンタイムデプロイメント

サービスを停止することなくデプロイするための手法を記載します。

ローリングデプロイメント

# docker-compose.yml でのローリング更新例
services:
  app:
    image: myapp:latest
    deploy:
      replicas: 3
      update_config:
        parallelism: 1
        delay: 10s
        order: start-first

ヘルスチェック

デプロイ時のヘルスチェック設定について記載します。

healthcheck:
  test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
  interval: 30s
  timeout: 10s
  retries: 3
  start_period: 40s

環境変数の管理

環境ごとの設定管理のベストプラクティスを記載します。

.env ファイルの活用

# .env.example
DATABASE_URL=postgresql://localhost:5432/myapp
API_KEY=your_api_key_here
DEBUG=false

Secretsの管理

機密情報の安全な管理方法について記載します。

CI/CD パイプライン最適化

CI/CDパイプラインの最適化のコツを記載します。

キャッシュの活用

# GitHub Actions でのキャッシュ例
- name: Cache node modules
  uses: actions/cache@v3
  with:
    path: ~/.npm
    key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
    restore-keys: |
      ${{ runner.os }}-node-

並列実行

テストやビルドの並列実行による高速化について記載します。

デプロイ前チェックリスト

デプロイ前に確認すべき項目のチェックリストを記載します。

  • [ ] テストがすべて通過している

  • [ ] セキュリティスキャンが完了している

  • [ ] データベースマイグレーションが準備できている

  • [ ] ロールバック手順が確認済み

  • [ ] 監視アラートが設定済み

ロールバック戦略

問題が発生した際のロールバック手順について記載します。

自動ロールバック

# Kubernetes でのロールバック例
apiVersion: apps/v1
kind: Deployment
spec:
  progressDeadlineSeconds: 600
  revisionHistoryLimit: 10

手動ロールバック

緊急時の手動ロールバック手順について記載します。

デプロイメント履歴管理

デプロイメント履歴の管理方法について記載します。

タグ管理

# バージョンタグの作成
git tag -a v1.0.0 -m "Release version 1.0.0"
git push origin v1.0.0

リリースノート

リリースノートの作成方法について記載します。