AWS OpsWorks
# AWS OpsWorks
https://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-online-seminar-2017-aws-opsworks
## OpsWorks とは
Chef を使用してアプリケーションを構成および運用するための構成管理サービス
- 種類
- 仕組み
- インストールしたOpsWorks エージェントがOpsWorks エンドポイントに対しアウトバウンド通信を行う(SSMと同じ感じ)
- OpsWorks によって発行された一連のコマンドを取得
- エージェントがChef Client のローカルモードでレシピを実行
- OpsWorks の構成要素
- スタック
- OpsWorks のトップエンティティ
- 属する全インスタンスの構成を管理
- カスタムレシピを保存する任意のリポジトリを指定可能
- VPC内部に作成可能
- スタックごとに構成情報をJSON形式で保持
- スタックを(リージョン間でも)コピー可能
- レイヤー
- インスタンス構築のための青写真
- インスタンス
- EC2インスタンスなどのコンピューティングリソース
- 内部ではOpsWorksエージェントが動作している必要がある
- OpsWorks エンドポイントに対しアウトバウンド接続ができる必要がある
- スケーリング(Auto Scaling Group とは違う)
- 常時稼働
- 時間ベース
- 負荷ベース
- App
- デプロイするアプリケーション
- 実行可能なコマンド
- スタックコマンド
- エージェントコマンド
- デバッグやトラブルシューティングのために利用するコマンド
- 基本的にはスタックコマンド推奨
- インスタンス内部にログインして実行可能
- ライフサイクル
- Setup
- Configure
- Deploy
- Undeploy
- Shutdown
- 連携
- AWS CodePipelineと連携
## ベストプラクティス
- インスタンス間のバージョン整合性の維持
- 以下の2パターンでデプロイされる
- インスタンス起動時
- DeployコマンドまたはUpdate Custom Cookbooks コマンド
- 問題
- 意図しないタイミングで最新のコードでデプロイされてしまう
- 解決方法
- S3のバージョニングとGitのブランチ戦略によって意図したコードが配信されて適切なバージョンが当たるようにする
- ローリングでデプロイ
- 問題
- 機能としては提供されていないので自身で仕組みを構築しないといけない
- 開発・ステージング・本番用スタックの使用
- Blue-Green Deployment の使用
- Berkshelf を使用してローカルでの複数クックブックの依存関係をパッケージ化
- Linux セキュリティ更新のインストールの自動化
## Chef Automate
- Chef のcookbookやレシプを使って、インフラ管理を自動化
- アプリケーションの継続的なインストール、構成、管理、デプロイ、スケールが可能
- 仕組み
- リソースを中央のChef サーバに接続し、更新がChefサーバーから配信される
- 機能
## AWS OpsWorks for Chef Automate
- マネージドChef サーバ
- 毎日または週一の定期バックアップ
- スケーリングが簡単
- AWS OpsWorks for Chef Automate API を利用可能
- Chef DK
- ハイブリッド環境を簡単に構築
- ダッシュボードから確認可能
- ノードの追加
- 手動
- EC2 Auto Scaling 対応
- CloudFormation 対応
- 要IAMの設定
- Userdateaを利用してノードを追加するイメージ
## OpsWorksスタックとOpsWorks for Chef Automate の違い
- Chef サーバ
- OpsWorks スタックでは不要
- OpsWorks for Chef Automate では必要(管理はAWS)
- 互換性
- OpsWorks スタックでは一部互換性のないものがある
- 東京リージョンサポート
- OpsWorks のみ
## 雑感
マネージドChef サーバー。近年だとChef はAnsible などに流されているので振るわないイメージがどうしても付いてきてしまう。OpsWorks のリリースが2013年の2月
(アマゾン ウェブ サービス AWS OpsWorksを発表)
で、Docker のコンテナ技術が出はじめたのが2014年なので少しタイミングが悪かったといえばそうなる感じがする。
使い所は少し違うが、最近だと簡単にアプリをデプロイできるサービス(lightsail 、Beanstalkなど)があるし、サーバレス、ECRも整っている。さらにはサーバの管理というレイヤーだとSSMもあるので役目を終えたようなサービスに見えてしまう。。。