ほぼ日AWS ソリューションまとめ 1日目 コンピューティングソリューションについて

ほぼ日AWS について

今日から、AWSのソリューションについて学んでいく為に、以下のAWS管理画面で見れるすべてのサービスについて、どんな時に使われてそれらがどんなソリューションなのかまとめてみたいと思います。

※ ちなみに著者はAWS初心者勢です。
ソリューションがどういうものかに重点をおいて調べてまとめているだけですので、ノウハウTipsの提供等はできません。

このブログの目標

読んだ方(主に自分)が、AWSのソリューションについて 「ああ、AWSののこのソリューションって〜〜〜っていうもんでしょ?」ってざっくり理解するのに手助けになれば幸いです。

では、本題。

コンピューティングソリューション について

いわゆる仮想サーバーホスティングに関するマネージドサービスや、コンテナ管理のマネージドサービスが提供されているセクションです。

AWSに仮想サーバーを立て、その仮想サーバ上にPHP動作の環境を作成してサービスを提供しよう、とかいう場合にここらのサービスを活用していく事になります。

以下のサービスが提供されています。

f:id:ikkitang1211:20180509080406p:plain


EC2

何ができるのか

正式名称はElastic Compute Cloud で、頭文字を取って一般的に EC2 と扱われる。

仮想サーバー(インスタンス)を立てて、サービスを提供するなどの用途として使用され、サーバーホスティングのフルマネージドサービスと言える。

多種多様なOSをホスティングする事ができ、 「CentOSubuntuWindows」などのOSのインスタンスを構築する事ができる。

ホスティングについては、いわゆる初期状態からインスタンスを立ててセットアップする方法と AMI (Amazon Machine Image ) と呼ばれる OSのイメージを活用して予めセットアップされた状態でインスタンスを作成する方法の二種類がある。

無料利用枠ある?

あるよ。

750 時間/月の LinuxRHEL、または SLES のOSの t2.micro インスタンスの使用 が無料枠として提供されている。

※ ただし、上記の無料枠はAWSサインアップ後、12ヶ月間内だけ有効。

東京リージョンある?

あるよ。

主なユースケース

ありすぎて紹介しきれない...(笑

  • EC2 上にサービス提供の環境(例えば LAMP環境(LinuxApacheMySQLPHP))を構築してサービスを提供する。

  • 後日、書く事にはなるかと思いますが AutoScalingElastic 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 とかJavaPython などサポートされた多様な言語で定義する事が出来る。

無料利用枠ある?

あるよ。

東京リージョンある?

あるよ。

主なユースケース

例にも書いたけど、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のソリューションを調べて紹介していこうと思います。(このボリューム続けられるんだろうか・・・)

インフラ構築とか分からないマンなのでサーバーレスなソリューションにすごくひかれる。

ECSFargateがすごく好きになれそう。
東京リージョンでの提供が待ち焦がれる、って思いました。


リンク集

1日目 コンピューティングソリューション

2日目 ストレージソリューション

3日目 データベースソリューション

4日目 移行ソリューション

5日目 ネットワークソリューション

6日目 開発者用ツールソリューション

7日目 管理ツール ソリューション

8日目 メディアサービスソリューション

9日目 機械学習ソリューション

10日目 分析ソリューション

11日目 セキュリティソリューション

12日目 モバイルサービスソリューション

13日目 VR ARサービスソリューション

14日目 アプリケーション統合サービスソリューション

15日目 カスタマーエンゲージメントサービスソリューション

16日目 ビジネスの生産性ソリューション