JS memo

お洒落にJavaScript。

2019年3月26日20:08

Elastic beanstalkとは?AWS入門

AWSが提供するElastic Beanstalkとはどのようなサービスなのかを分かりやすく解説!

目次

  1. Elastic Beanstalkとは?
  2. Elastic Beanstalkのアーキテクチャー
  3. Elastic Beanstalkの概念
  4. まとめ

Elastic Beanstalkとは?

 Webアプリケーションやインターネット上でのサービスを提供するためのプラットフォーム(PAAS)のことです。 Elastic Beanstalkはサーバーからネットワークの設定までアプリケーションの開発に必要な環境をあらかじめ整えてくれています。そのため面倒くさい環境の構築はElastic Beanstalkに任せて、コードを書くだけでアプリケーションを作成することができます。ではElastic Beanstalkはどの言語とサーバーをサポートしていているのでしょうか?

Elastic Beanstalkがサポートする開発言語

Java / PHP / Python / Python(with Docker) / Node.js / Go / NET / Ruby

Elastic Beanstalkがサポートしている主なサーバー

Apache / Nginx / Tomcat / IIS

オーソドックスな言語とサーバーはほぼサポートされています!またPythonでは今流行りのDockerでも作成することができます。

具体的にElastic Beanstalkを利用することでどういったことがメリットになるのでしょうか。

メリット

1. 高速にアプリケーションを実行できる。

 本来アプリケーションを実行するにはネットワークやサーバー、セキュリティーなどのインフラ環境を構築しなければいけません。 Elastic Beanstalkを利用することによって上記のような環境があらかじめ用意されているので、アプリケーションをアップロードするだけで実行できます。

2. 運営が楽になる。

 Elastic Beanstalkはサーバーやストレージなどアプリケーションの状態をモニタリングしたり、OSとデーターベースの管理をしてくれるため、よりアプリケーションの運営が楽になります。

3. 運用コストを節約できる。

 使用するEC2やS3などに料金はかかるものの、Elastic Beanstalk自体には料金が発生しません。

 Elastic Beanstalkはモニタリングやセキュリティーに必要なパッケージのみ使用してくれるので、不要なコストを削減してくれます。さらにElastic Beanstalk自体には料金がかかりません。

4. 複数のユーザーが使用できる。

 Elastic Beanstalkは1つのシステム上に複数のアプリケーションを実行できる環境(マルチテナントアーキテクチャ)を提供しています。そのため複数のユーザーや企業が同じアプリケーションを共有し、各々でカスタマイズすることが可能です。


Elastic Beanstalkはただ環境を構築してくれるだけでなく、運用やコストの面でもサポートしてくれるのでとてもありがたいサービスです。

Elastic Beanstalkのアーキテクチャー

 ではElastic Beanstalkは他のAWSのサービスとどのように関係しているのでしょうか。シンプルな例でみていきましょう。Elastic Beanstalkのアーキテクチャーは以下の画像の通りです。サボテンみたいなので囲まれた緑の枠がElastic Beanstalkの構築した環境です。

 例えばホームページにアクセスがあった時のリクエストの受け取りからアプリケーションの構築までの順序を以下に示します。

1. www.amazon.comにリクエストが来る

2. Route 53 : ドメイン(www.amazon.com)からCNAMEのURL(先ほどのElastic Beanstalkの構成要素で説明したURL)にリクエストを転送。

3. Elastic Load Balancer : リクエストをインスタンスに分割

4. Auto Scaling Group: リクエストの内容と数に応じて適切な数のインスタンスを自動的に用意。

5. EC2 Instance : 仮想サーバー(CPU、メモリ、ストレージなどを選んで構成)でアプリケーションを構築
※必要に応じてRDB DB(アマゾンクラウドのデータベース)やS3(静的ページや画像を格納できるストレージ)が使用可能


上記はシンプルなアーキテクチャーを例に説明しました。アプリケーションの内容によって他のサービスとも様々な環境を構築することができます。

Elastic Beanstalkの概念

次にElastic Beanstalk自体の内容をみていきましょう。

 Elastic Beanstalkではまずアプリケーションフォルダーがあります。アプリケーションは何個でも作成可能です。次に作成したアプリケーション内に作成するアプリケーションの環境を作成します。1つのアプリケーションの中に複数の環境が構築できます。 主要な環境の用語を下記にまとめておきます

  • 環境枠

    ウェブサーバーとワーカーが選択可能です。

    ウェブサーバー:HTTPリクエストを処理する

    ワーカー:SQSキューからタスクを受ける

  • プラットフォーム

    サーバーとOSの種類です。

  • URL

    ドメインからリクエストが転送されるCNAMEでアプリケーションがデプロイされる場所です。

  • ヘルスステータス

    アプリケーションの状態をチェックし4段階に分けて評価します。

    グレー:アップデート中

    グリーン:ヘルスチェックに合格

    イエロー:1,2個チェック通過に失敗

    レッド:3個以上チェック通過に失敗

まとめ

 Elastic Beanstalkは環境構築の知識がなくてもコードを書くだけでアプリケーションを作成でき、かつまた複雑な作業や不要なコストを削減できるので万能なサービスです。

 より素早くアプリケーションを作りたい場合はおすすめです。

f