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 Gateway、EC2も同様です。
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を利用するもしないも、あなたの自由です。
参考になりましたら幸いです。