Skip to content

Instantly share code, notes, and snippets.

@manji602
Created June 6, 2015 08:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save manji602/0a0fcf7811aa6d3e6cb8 to your computer and use it in GitHub Desktop.
Save manji602/0a0fcf7811aa6d3e6cb8 to your computer and use it in GitHub Desktop.

TA-05 AWS Elastic Beanstalk, AWS OpsWorks, AWS CodeDeploy, AWS CloudFormation を使った自動デプロイ

Introduction

  • EC2, ELB, RDS, S3 を組み合わせる構築事例が多い

AWS Elastic Beanstalk

  • 定番構成の構築・アプリデプロイの自動化サービス
  • 特徴
    • 早く簡単にアプリケーションをデプロイ可能
    • インフラストラクチャの準備&運営からアプリケーションスタックの管理までを自動化
    • Auto Scaling によりコストを抑えながらスケーラビリティを確保
    • Java, PHP, .NET, Go, Dockerなどに対応

AWS OpsWorks

  • 特徴
    • chefのレシピを使って、デプロイや運用タスクを自動化可能
    • ライフサイクルイベントにより動的な構成変更への対応が可能
    • 継続的な構成管理

AWS CodeDeploy

  • 特徴
    • Amazon.comと同様の仕組みで管理されたデプロイを実現
    • エージェントをインストールするだけでEC2でもオンプレでも管理可能
    • グループ内に一度にデプロイしたり1台ずつデプロイしたりと設定可能

AWS CloudFormation

  • 設定管理 & クラウドのオーケストレーションサービス
  • 特徴
    • テンプレートを元にEC2やELBといったAWSリソースの環境構築を自動化
    • JSONフォーマットのテキストでテンプレートを自由に記述可能

Wordpressのデプロイ方法

  • 各種サービスを3つの観点からご紹介

    • プロビジョニング
    • デプロイ
    • 環境のカスタマイズ
  • 注意事項

    • どれがベストかという話ではない
  • Elastic Beanstalk

    • 2.X台ではgit aws pushというコマンドがあった
    • 3.X台ではeb deployというコマンドに変更されているので注意
    • デプロイ単位(台数)は分割することができる
    • 環境設定のRolling update
      • Auto Scalingグループ内にあるインスタンスの置換えを伴う操作を一部ずつ実行できる

  • OpsWorks
    • JSONのデータをchefのレシピから読み込むことができる
    • 5つのライフサイクルイベント(Setup -> Configure -> Deploy -> Undeploy -> Shutdown)

  • CodeDeploy
    • インスタンスのプロビジョニングの機能は持っていない
    • WordPressにAppSpec.yamlを含めておく。以下のようにshファイルで実行タイミングを設定できる
      • BeforeInstall
      • AfterInstall
      • ApplicationStart
      • ApplicationStop
    • Deployyment Configuration
      • どれをデプロイするか
      • どうやってデプロイするか
      • どこにデプロイするか

  • CloudFormation
    • 主にプロビジョニングに特化したサービス

まとめ

  • デプロイ&マネージメントサービスを活用することで簡単にデプロイ自動化が可能
  • それぞれのサービスでデプロイ手順は異なる
  • お客様のシステムの要件と照らしあわせて最適なサービスを選ぶべき
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment