質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

2回答

1022閲覧

AWS EC2について

fgl_1

総合スコア16

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2019/07/07 10:35

編集2019/07/07 10:46

AWSのEC2とAPI Gatewayに関しての質問です。

現在Android開発を始めて約10ヶ月のインターン生になります。今までの開発では、サーバー側はFirebaseで管理していたため、APIを作るということがあまり理解できなく、最近になってAPIを作るということに興味をもち、APIを作ってみたいと思ったところです。

ちょうど今日、LambdaにPythonでシンプルな関数を書いて、それをAPI Gatewayに繋いで、Androidから叩くということができました。

そこで本題ですが、
Lambda -> API Gateway -> Androidから叩く
というプロセスにおいて、いつ、そして何を目的にEC2を使うのでしょうか?
サーバーを立てて、というワードがいまいち理解できておりません。

というのも、API Gatewayで発行されるUrlを叩くことで、データ保存やデータ取得はできるのです。
なので、本質的には、上記のプロセスで一般的なアプリは構築できるのでは?と思いました。

ユーザーが増えた時に、そのアクセスに対処するためには、サーバーを増やさなくてはいけない!そのためにはEC2インスタンスを立てる必要がある!
という認識で合っていますでしょうか?
というのも、社内のエンジニアさんが、「プッシュ通知を送るので、サーバー増やしておきました!」などと言っていたので、増えるであろうアクセスに対処するためにサーバー増やすのかな?と思っていました。

私自身、エンジニアとしてまだ一年未満の経験で、サーバーサイドに関してはほとんど無知なのですが、
Android開発を通じて、サーバーサイドやAPIに関して興味を持ち始めているので、理解したいという気持ちが強いです。

AWSに関してとても初歩的な質問かもしれませんが、Android開発だけでなく、自分でAPIを作ったり、サーバーサイドも書けるようになりたいので、どなたか、ご意見くださると嬉しいです。

よろしくお願いします。

簡潔に質問を申し上げますと、
いつ、そして何を目的にEC2は使われているのか、ということです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/07/07 10:39

質問はなんですか?
guest

回答2

0

ベストアンサー

Lambda -> API Gateway -> Androidから叩く

というプロセスにおいて、いつ、そして何を目的にEC2を使うのでしょうか?

少し混同されている部分があると思います。

「Lambda」はAWSが提供する1つのサービスです。
「API Gateway」も1つのサービスです。
そして、「EC2 (Elastic Compute Cloud)」も、サービスの1つです。

まず、Lambdaですが、さまざまなサービスと組み合わせて使用することができます。

AWS Lambda
https://aws.amazon.com/jp/lambda/

Lambda は、S3、DynamoDB、Kinesis、SNS、CloudWatch などの AWS のサービスによって直接起動することも、AWS Step Functions によってワークフローに編成することもできます。

 

Amazon S3 を使用して AWS Lambda をトリガーし、アップロードしたデータを直ちに処理することができます。

 

AWS Lambda と Amazon Kinesis を使用して処理することで、アプリケーションのアクティビティのトラッキング、注文のトランザクション処理、クリックストリーム分析、データクレンジング、メトリクスの生成、ログのフィルタリング、インデックス作成、ソーシャルメディア分析、および IoT データのテレメトリと測定などが行えます。

 

AWS Lambda を使用することで、DynamoDB テーブル内のデータの変更すべてに対して検証、フィルタリング、ソート、その他の変換を実行し、変換されたデータを別のデータストアにロードできます。

 

AWS Lambda を使用して、ウェブ、モバイル、IoT、およびサードパーティの API リクエストを扱う、サーバーレスバックエンドを構築できます。

 

AWS Lambda と Amazon API Gateway を使用して、API リクエストの認証と処理のためのバックエンドを構築できます。

なので、特に決まったプロセスといったものはなく自由に組み合わせることができます。

API GatewayEC2も同様です。

lambdaは関数を実行する、API Gatewayはリクエストに応じて振り分ける、EC2は仮想サーバを立てる、です。

また、Lambdaは実行時バックエンドでEC2が動いています。
イメージ説明
Blckbelt資料

が、マネージドサービスですので、Lambda実行時特に意識する必要はありません。(AWS側で勝手に調整してくれます)

なので、本質的には、上記のプロセスで一般的なアプリは構築できるのでは?と思いました。

はい、ご認識のとおりです。
突き詰めていくと、サーバレスアプリケーションになります。

イメージ説明
AWSリンク

ユーザーが増えた時に、そのアクセスに対処するためには、サーバーを増やさなくてはいけない!そのためにはEC2インスタンスを立てる必要がある!

という認識で合っていますでしょうか?

これは、あっていますし、あっていません。
そもそも、アクセスされるサーバがオンプレミスであったり、EC2のように仮想サーバであるならば、1台あたり処理できるリクエスト数は決まってくると思いますので、
・サーバを増強する (高性能なサーバへとアップグレードする)
・サーバを増やす (ロードバランサ等で振り分ける前提で配下のサーバ数を増やす)
の2択になってきます。

サーバを増強するのはスケールアップ(垂直スケール)、
サーバを増やすのはスケールアウト(水平スケール)といわれます。

Wikipedia:スケーラビリティ

ただし、スケールアップだけだと、もしサーバが1台であったときにそのサーバが死んだらサービス提供に影響がでますので、たいていはスケールアウトで対応するケースがほとんどです。

というのも、社内のエンジニアさんが、「プッシュ通知を送るので、サーバー増やしておきました!」などと言っていたので、増えるであろうアクセスに対処するためにサーバー増やすのかな?と思っていました。

そちらのプロダクトがどういう構成かはわかりませんが、プッシュ通知を送る > アクセスが増える > サーバへのリクエストが増える > 事前にスケールアウトさせた、ということでしょう。

ちなみに、AWSであればサーバの負荷に応じて自動でスケールアウトするよう設定できます。

AWS Auto Scaling

あとこれは蛇足ですが、サーバレスアーキテクチャであればサービスのバックエンドは負荷に応じて自動的にスケールアウトしたりするのでリソースの管理をしなくてもよくなります。 (構成によります)

最後に、ご質問に回答します。

いつ、そして何を目的にEC2は使われているのか、ということです。

いつでも、どんな目的でも、EC2は使用することができます。
あえてEC2を使うこともできますし、ほかのAWSサービスを利用し使わないという選択もすることができます。
さらに、AWSは日々進化していますので、明日、明後日、1ヶ月後には、また新たなサービスが提供されている可能性があります。
EC2を利用するもしないも、あなたの自由です。

参考になりましたら幸いです。

投稿2019/07/08 02:07

michi_h

総合スコア158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fgl_1

2019/07/16 01:43

回答ありがとうございます。 今後の学習の参考にさせていただきます。
guest

0

Lambda -> API Gateway -> Androidから叩く

というプロセスにおいて、いつ、そして何を目的にEC2を使うのでしょうか?

EC2 は必要ないです。

投稿2019/07/07 10:58

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fgl_1

2019/07/07 11:02

回答ありがとうございます。 ちなみにですが、te2ji さんはEC2を使われたことはありますか? もしありましたらどのような状況で使われたのか教えていただけると嬉しいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問