1

MongoDBデータベースからニュースを表示するためのiOSアプリケーションを開発しています。アプリには約50,000人のアクティブユーザーがいるので、サーバー上でかなり重いです。 APIの構築方法を再考しようとしています。 AWS API Gateway、Google Cloud Functions、Firebaseなどについて少し学んだことがあります。多くのリクエストを処理する実行API

ニュースリスト、ユーザーリストなどを抽出するだけの機能が必要な場合は、 2017年の時点でこのAPIを構築しますか?私はいつも、いくつかのエンドポイントを持つNode.jsサーバーを作成する必要があると考えてきました。しかし、AWSラムダ関数を指すAWS API Gatewayなど、別々のエンドポイントを作成する方がパフォーマンスが良いようです。

実際に最もスケーラブルなオプションは何ですか?

+2

特定のプログラミングに関する質問ではなくても、人々はそれを下降させるかもしれませんが、大きな疑問があります。とにかく続く。 – renatoargh

答えて

0

クラウドフロント(キャッシングあり) - > APIゲートウェイ - >ラムダはスケーラブルなソリューションです。 DynamoDBを選択していないので、ストレージと可用性のためにマングースを管理する必要があります。

これをさらに進化させるには、ラムダエッジをクラウドフロントで使用して複数の地域でアクティブ/アクティブにすることができます。したがって、1つの地域がダウンすると、アプリは引き続き利用可能になります。

+0

APIゲートウェイ(舞台裏でCloudFrontを使用)内でキャッシュを有効にすることができます。キャッシングのためだけに、API Gatewayの前に余分なCloudFrontディストリビューションを配置する必要はありません。 –

+0

CloudfrontキャッシュとAPIキャッシュの価格設定はさまざまです。 https://aws.amazon.com/cloudfront/pricing/およびhttps://aws.amazon.com/api-gateway/pricing/ – Kannaiyan

0

"Performant"と言うとき、シナリオではどういう意味ですか?

ニュースやユーザーのリストなどのリストを抽出する関数が必要な場合は、パフォーマンスが問題となるようには聞こえません。

AWS Serverless Stackが何千から何百万というリクエストを処理できるかどうか疑問に思うなら、答えははいです.API Gateway + Lambdaはあらゆる規模のリクエストを処理できます。

データをハッシュキーで照会するだけであれば、DynamoDBは非常によく適合します。また、auto scale featureがあります。しかし、スキャンや複雑なクエリを実行する必要がある場合は、少し高価で時間がかかることもあります。このシナリオでは、DynamoDBデータをElasticsearchまたはデータウェアハウスソリューションにストリーミングできます。

LambdaとMongoDBを組み合わせた方がいいとは思いません。たとえば、Mongo AtlasのようなホストされたMongoDBサービスを選択すると、VPCピアリングのような複雑なシステムを追加し、MongoDBへのラムダ接続を管理/ optmizeする必要があります(Optimizing AWS Lambda Performance with MongoDB Atlas)。何百万というリクエストコールを処理している場合、多くのラムダ関数が並行して実行されていると思いますが、MongoDBにはいくつの接続がオープンしているのでしょうか?

AWS Serverless Stack以外にも、システムを簡単に拡張できるElastic BeansTalkがあります。

すべてのソリューションに長所と短所があります.API Gateway + LambdaまたはElastic Beanstalk(または他のベンダーのソリューション)の両方で拡張できます。私はスケーラブルなのは、クラウドベンダーが提供している機能で、インフラストラクチャを設計する際に分析すべきトピックの1つにすぎないと思います。

関連する問題