Elastic Beanstalk x Docker
Docker ってなんでしょうか。さらに Elastic Beanstalk とコラボさせる・・・。スっとはいってこない内容なので、この最強コラボについて説明していきます。まずは、 Elastic Beanstalk、Docker のそれぞれの要点をまとめてみましょう。
Elastic Beanstalk
-- Elastic Beanstalk で実際に処理される内容
- 選んだアプリケーション ( Apache + PHP 等 ) がインストールされた EC2 インスタンスの起動
- 選択していれば RDS インスタンスを起動 ( RDS を選択していると RDS の起動に時間がかかるかもしれません )
- デプロイされた EC2 インスタンス内で自動的にアプリケーションをインストール + 起動
- Elastic Load Balancing の作成
- Auto Scaling のグループ作成 + Launch Configuration 作成
- Security Group の作成
- git で push する S3 のバケット作成 ( コンテンツ用ファイル と Log ファイル )
- Cloud Watch の設定 ( Auto Scaling 用 )
ここまで自動で瞬殺してくれる事が普通に感じてしまうのですが、オンプレミスで上記作業の工数化をしてみてください。いったい何日、何週間かかるんだっていう話ですよね。さらに、下記のような運用コストまで削減してくれます。
- インフラ調達
- インスタンス構築
- アプリケーション配置
- 高負荷時の手動スケールアウト
各サーバへ SSH で接続して~なんて事が無くなる時代が近づいているのでしょうか。運用屋さんの私としてはこの時点で満足していたのですが、やはり開発屋さん目線で見ると物足りないとの声もあるようです。例えば、「実行環境ごとデプロイしたい!」とか「Java で Tomcat 以外のアプリケーションを使いたい!」とか「CentOS を使いたい!」とかとか。えー、つまり Docker が解決してくれます。
Docker
Docker とは? Docker 社が提供する「Docker Engine」や「Docker Hub」などのプラットフォームを総称して「Docker」と呼ぶらしいです。Linux 上で仮想コンテナを実行し、仮想マシンのような振る舞いができるようです。 仮想コンテナというと OpenVZ を思い出しますね。EC2 インスタンスはハイパーバイザー型ですので、その上にホスト OS 型仮想マシンが乗るイメージなのでしょうか。ものすごいです。
-- Docker でできる事
- コンテナ作成 (作成したい OS イメージを取得し展開、一度 OS イメージを読み込んでしまえばデプロイ、複製は高速です。)
- コンテナイメージとして保存、共有も可能
- Docker が動く環境であれば、実行環境ごとデプロイ可能 ( オンプレミスの OS 上でコンテナを作成し、EC2 インスタンスの OS 上にデプロイ )
ざっくりとした説明ですが、アプリケーション環境ごとにデプロイが可能という事ですね。Docker 自体、他にも様々な機能があるみたいです。
まとめ
-- Elastic Beanstalk x Docker でできる事
- Docker で作成したアプリケーション実行環境 ( 仮想 OS ) ごと Elastic Beanstalk 管理下のインスタンス上にデプロイできる
- Elastic Beanstalk という Paas サービス内の制約にとらわれず自由に実行環境を選択できる
- Elastic Beanstalk 側にて Docker のデプロイ方針の設定や管理が容易
- 故に最強である ( Immutable Infrastructure の様に、セットアップが自動化され、かつ拡張性・可搬性が高い )
実際に運用実績としてはありませんが、運用面で最強じゃないポイントとか、問題点も見つけていきたいので、このブログで共有していきます。
投稿者プロフィール
-
AWS認定12冠
趣味 : スプラトゥーン
最新の投稿
- AWS2024年1月9日Amazon S3 Express One Zone を使ってみた
- マイグレーション2024年1月9日AWS Migration Hub を使ってみた
- AWS2024年1月9日AWS Application Discovery Service (ADS) を使ってみた
- AWS2023年7月5日AWS DMS Serverless を使ってみた