背景: EC2とRDSを使用してきました。最近、アマゾンウェブサービスを使用してモバイルアプリケーションとウェブアプリケーションの両方を開発したいと考えているクライアントからクエリを受け取りました。
また、私はこれらのサービスを理解するためにYouTubeとGoogleでいくつかのチュートリアルを行ってきましたが、それでも彼がどのサービスを使用するべきかを理解することができません。
問題:上記のサービスを使用するための適切な知識と経験がありません。ですから、一緒に働いた経験のある人からアドバイスをもらいたいです。
アドバイスがしやすいように、特定のサービスを使用することの利点と欠点を説明してください。
Elastic Beanstalkは従来のホスティングです-PHPまたはJavaまたはWordpressなどのアプリケーションをアップロードして、データベースを構成します。スケーリングやリカバリなどの機能はいくつかありますが、それでも従来のホスティングプラットフォームは非常に優れています。
ECSコンテナーでも従来のアプリを実行できますが、いくつかの詳細事項があります-特にコンテナーには永続的なストレージがありませんephemeralであり、いつでも行き来でき、いつでも再起動できます。つまり、手動で構成/介入することなく、ビルドして実行する準備ができている必要があります。コンテナに永続的なストレージを提供する方法はいくつかありますが、それを回避できる場合はより良い方法です。たとえば、すべてのデータをデータベースに保存し、すべてのファイルをS3に保存するようにアプリケーションを設計します。ところで[〜#〜] ecr [〜#〜](Elastic Container Registry)は、コンテナーのストレージにすぎません。 ECSで使用します。
Lambdaは、アプリがさまざまなAPIリクエストを処理する小さな関数に分割される、クラウドネイティブのサーバーレスコンセプトです。ウェブサイトのフロントエンドは通常、たとえばReactまたはVueまたは同様のもの)で構築され、S3/CloudFrontから提供されます。次に、APIを介してLambdasへのAPI呼び出しを行いますゲートウェイ。
サーバーレスアプリとコンテナーは、通常、従来のアプリよりも適切にスケーリングできます。一方、最初のサーバーレスアプリの構築は、一部の概念が従来の方法とは異なるため、かなりの学習曲線になります。
これは非常に簡単な概要です。このトピックは何時間も議論できます:)
「サーバーレスアプリの設計のベストプラクティス」や「コンテナ化アプリの設計のベストプラクティス」のようなものをググってみてください。
それが役に立てば幸い:)
前の答えに追加-Docker(ECS)とLambdaがCattlesであるのに対し、Elastic BeanstalkはPetプラットフォームに近いです。これはまた、DockerとLambdaがstatelessであることを意味します。つまり、状態をローカルに保存しない(保存しない)必要があります。すべてがデータベース、memcacheクラスター、S3にあります。 。一方、Beanstalkはローカル状態を保存できますが、スケーリングが複雑になるため、最新のアプリケーションでは推奨されません。
ペットと牛のコンセプト に詳しくない場合は、こちらをご覧ください。