ほぼ日AWS について
今日から、AWSのソリューションについて学んでいく為に、以下のAWS管理画面で見れるすべてのサービス
について、どんな時に使われてそれらがどんなソリューションなのかまとめてみたいと思います。
※ ちなみに著者はAWS初心者勢です。
ソリューションがどういうものかに重点をおいて調べてまとめているだけですので、ノウハウTipsの提供等はできません。
このブログの目標
読んだ方(主に自分)が、AWSのソリューションについて 「ああ、AWSののこのソリューションって〜〜〜っていうもんでしょ?」ってざっくり理解するのに手助けになれば幸いです。
では、本題。
コンピューティングソリューション について
いわゆる仮想サーバーホスティングに関するマネージドサービスや、コンテナ管理のマネージドサービスが提供されているセクションです。
AWSに仮想サーバーを立て、その仮想サーバ上にPHP動作の環境を作成してサービスを提供しよう、とかいう場合にここらのサービスを活用していく事になります。
以下のサービスが提供されています。
EC2
何ができるのか
正式名称はElastic Compute Cloud
で、頭文字を取って一般的に EC2
と扱われる。
仮想サーバー(インスタンス)を立てて、サービスを提供するなどの用途として使用され、サーバーホスティング
のフルマネージドサービスと言える。
多種多様なOSをホスティングする事ができ、 「CentOS、ubuntu、Windows」などのOSのインスタンスを構築する事ができる。
ホスティングについては、いわゆる初期状態からインスタンスを立ててセットアップする方法と AMI (Amazon Machine Image )
と呼ばれる OSのイメージを活用して予めセットアップされた状態でインスタンスを作成する方法の二種類がある。
無料利用枠ある?
あるよ。
750 時間/月の Linux、RHEL、または SLES のOSの t2.micro インスタンスの使用 が無料枠として提供されている。
※ ただし、上記の無料枠はAWSサインアップ後、12ヶ月間内だけ有効。
東京リージョンある?
あるよ。
主なユースケース
ありすぎて紹介しきれない...(笑
EC2
上にサービス提供の環境(例えば LAMP環境(Linux、Apache、MySQL、PHP))を構築してサービスを提供する。後日、書く事にはなるかと思いますが
AutoScaling
やElastic Load Balancer
を活用してEC2
を 自動で複数台構築してサービスの負荷分散を行う事が出来る。
Lightsail
何ができるのか
AWSで提供されるいわゆるVPSサービス
。
予め開発環境(LAMP、MEAN)がセットアップされた状態でインスタンスを作成出来たり、またはアプリケーション(Redmine、GitLab)が予めインストールされた状態でインスタンスを作成出来る。
とにかくシンプル・高速にインスタンスを作成することを目的にされたサービスなのでその半面、制限等は多い。
無料利用枠ある?
無さそう。
東京リージョンある?
あるよ。
主なユースケース
検証環境としてサクッと環境を構築したい場合には活躍できそう。
逆にELBの設定やセキュリティの設定に制限がある事から本番環境で使うのは一概には言えないが避けた方が良さそうかと思った。
Elatic Container Service
何ができるのか
正式名称はAmazon Elastic Container Service
で、頭文字を取って一般的に ECS
と扱わる。
Dockerコンテナを管理するためのマネージドサービス。
コンテナの管理方法が二種類あり、 一つは Docker Image をデプロイして 複数のEC2のインスタンス
からなる Cluster
って概念を作り、そこでサービスを稼働させる方法。
この起動方法は コンテナ と クラスタ を管理(プロビジョニング・スケーリング等)する必要がある。
もう一つが AWS Fargate
を用いる方法。
AWS Fargate
AWS Fargate
は コンテナのサーバーレス
なマネージドサービス
。
実行時に適切にメモリや台数が割り当てられる為、これまで行っていた EC2 の Cluster を管理しなくてもよくなり、その為コンテナの構成にだけ集中出来る、というメリットがある。
無料利用枠ある?
そもそも、ECS自体に金額は発生せず 下記の2つのパターンのうちどちらを使うかによって計算が異なっている。
EC2起動タイプ
EC2 の無料利用枠が適用される。
AWS Fargate起動タイプ
なさそう。
東京リージョンある?
EC2起動タイプ
ある。
AWS Fargate タイプ
なさそう。
主なユースケース
Docker のメリットを活用しつつ、EC2でサービスを提供したい場合。
例えば、複数の言語からなる小型の独立化したサービスからなるマイクロサービスの構築等に役立てる事が有効と思う。
また、Fargateを用いる事でずっと立ち上げておく必要は無いけど、必要な時だけ動けば良いようなサービス(例えば バッチ処理など)の提供等にも役立てられそうだな、って思った。 (こういうのは後述の AWS Batch
を使うと良さそう。)
Lambda
何ができるのか
サーバーレスコンピューティングを実現するソリューション。
予めプロビジョニングされたLambdaのインスタンスに対して割当がされる為、インフラの構築を考えなくても良いため、ビジネスロジックに集中出来るメリットがある。
使い方としては、Lambdaファンクション
と呼ばれる いわゆる関数を作成し それを呼ぶ事でAPIのようなふるまいを得られる。
このLambdaファンクション
はイベント(トリガー)を指定して動作させる事が出来、 例えば 「S3に画像がアップロードされた時をトリガーとして、サムネイル用の小サイズの画像を作成する」などとイベント駆動で実行を行う事も出来る。
Lambdaファンクションは Node.js
とかJava
、 Python
などサポートされた多様な言語で定義する事が出来る。
無料利用枠ある?
あるよ。
東京リージョンある?
あるよ。
主なユースケース
例にも書いたけど、S3にファイルがアップロードされた事をトリガーにして画像のトリミングの処理を行ったり、何かイベントをキーにして その時にだけ必要な処理をさせる時とかに有効。
API Gateway
によってLambda ファンクション
をAPIとして呼ぶことが出来るので、 API Gateway
-
Lambda
- Dynamo DB
みたいな構築にして Lambda
上でAPIを定義してサービスを提供する事も出来る。
Batch
何ができるのか
バッチ処理実行のフルマネージドサービス。
定義したJobを Docker Image などのコンテナを用いて 実行する。
必要な時に必要なだけコンテナを立てて、処理が完了したら一定時間後にコンテナを削除する、というようなふるまいをする。
コンテナ構成の定義とジョブの定義を行えば後は良いようにやってくれる。
無料利用枠ある?
ECSの無料枠に沿う。
EC2起動タイプならあるし、Fargate起動タイプならない。
東京リージョンある?
ECSに従う。
主なユースケース
バッチ実行に最適化されたサービス。
マネージドサービスは他にもあるが、 機械学習などで 一時的に複数台のサーバーを一気に立てて機械学習を処理(日本語難しい)して、終わったらコンテナを消す。 みたいな使い方が出来るかと思った。
Elastic Beanstalk
何ができるのか
いうなれば、ウェブアプリケーションのマネージドサービス
的な感じで手軽にウェブサービスを提供したい場合であったり、インフラに集中するのではなくてコードにだけ集中したい場合にメリットがあるかと思った。
Beanstalk に ソースコードをアップして 適切な動作環境を選択するだけで ウェブアプリケーションを動作させる事が出来る。
例えば、 PHPのソースコードをアップロードして PHPの環境を選択する事で、インフラ構築をAWS側が自動で設定してくれて、ウェブアプリケーションがデプロイ出来る。
無料利用枠ある?
EC2 や ECS に従う。
EC2を使用する場合は、ある。
東京リージョンある?
ある。(Fargate 知らない子です)
主なユースケース
上記にもあげたように、ビジネスコードにだけ集中して後はインフラは最低限動く環境だけあればよい、みたいな時に有効に活用出来る。
所感
これからほぼ毎日こんな感じで(9割自分の為に)AWSのソリューションを調べて紹介していこうと思います。(このボリューム続けられるんだろうか・・・)
インフラ構築とか分からないマンなのでサーバーレスなソリューションにすごくひかれる。
ECS
とFargate
がすごく好きになれそう。
東京リージョンでの提供が待ち焦がれる、って思いました。