Amazon ElasticBeanstalk – 2

この記事は公開されてから半年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ElasticBeanstalk001

Elastic Beanstalk x Docker

Docker ってなんでしょうか。さらに Elastic Beanstalk とコラボさせる・・・。スっとはいってこない内容なので、この最強コラボについて説明していきます。まずは、 Elastic BeanstalkDocker のそれぞれの要点をまとめてみましょう。

 

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 の様に、セットアップが自動化され、かつ拡張性・可搬性が高い )

 

実際に運用実績としてはありませんが、運用面で最強じゃないポイントとか、問題点も見つけていきたいので、このブログで共有していきます。

投稿者プロフィール

Rito
Rito
AWS認定12冠
趣味 : スプラトゥーン

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


Time limit is exhausted. Please reload CAPTCHA.