web-dev-qa-db-ja.com

AWS API Gateway + Elastic Beanstalkおよびマイクロサービス

AWSでマイクロサービスのアーキテクチャを構築するつもりですが、私の疑問を明確にするようにお願いします。

私の現在の一般的な概念

Elastic Beanstalkで実行されているマイクロサービスのAPIを公開するAPIゲートウェイを使用したいと思います。インターネットからインスタンスに直接アクセスせずにVPCにElastic Beanstalkを配置したいと思います。

enter image description here

質問と疑問:

  1. Elastic Beanstalkは、アプリケーションの作成時にサブドメインを取得します。このサブドメインは、統合タイプがAWSのAPI Gateway、アクション構成で使用する必要があります-私は正しいですか?
  2. 単一のマイクロサービスを表すものは何ですか? Elastic Beanstalkのアプリケーションは、特定のスケーラブルなマイクロサービスですか?
  3. マイクロサービスはどのように相互に通信する必要がありますか? ImがSQS(Simple Queue Service)を使用するいくつかのタスクがあります。しかし、他のケースでは、2つのマイクロサービスが直接ではなくAPI Gatewayを介して相互に通信するほうが良いですか?
  4. テスト環境:テスト環境(またはステージング環境)ではどのような構造を使用する必要がありますか?別のElastic Beanstalkと他のAmazonサービスを使用して個別のVPCを作成することを検討しています。
  5. テスト環境とAPIゲートウェイ:APIゲートウェイを設定するにはどうすればよいですか?リクエストにtest.mydomain.com/hello_world/say_helloのような特定のサブドメインがある場合、テスト環境でクライアントがマイクロサービスにアクセスできるようにする必要があります。テストステージから本番ステージに構成を手動でコピーせずに、CI/CDでAPI Gatewayを使用して高速かつシンプルにする方法がわかりません。 (私はどんな複雑なソリューションも期待していません、それに使用できるコンポーネント、パーツ、コンセプトについてのいくつかのヒントだけです。詳細は自分で見つけます)。
  6. Codep DeployやJenkinsを使用してElastic Beanstalkにアプリをデプロイした経験はありますか? Jenkins、AWS Code Deploy、またはJenkins + CodeDeployのどちらの方が優れているのか興味深いです。
15
nicq

私は意見に基づいていない点に答えます:

  1. Elastic Beanstalkは、アプリケーションの作成時にサブドメインを取得します。このサブドメインは、統合タイプがAWSのAPI Gateway、アクション構成で使用する必要があります-私は正しいですか?

いいえ、AWSサービスの統合は、実際にElastic Beanstalkサービスを呼び出している場合にのみ適用されます。独自のbeanstalkinstanceを呼び出すため、HTTP統合を使用します。

  1. 単一のマイクロサービスを表すものは何ですか? Elastic Beanstalkのアプリケーションは、特定のスケーラブルなマイクロサービスですか?

これはあなた次第ですが、コメントで述べたように、多くのお客様はBeanstalkアプリケーションではなくLambda関数を使用してこれを行うことを選択します。 Lambdaを使用すると、beanstalkアプリケーションのスケーリングを管理する必要がないという利点があります。

  1. テスト環境:テスト環境(またはステージング環境)ではどのような構造を使用する必要がありますか?別のElastic Beanstalkと他のAmazonサービスを使用して個別のVPCを作成することを検討しています。

ここでの注意点として、API Gatewayは現在VPCのリソースにアクセスできません。 Beanstalkインスタンスはすべて、パブリックにアクセスできる必要があります。

  1. テスト環境とAPIゲートウェイ:APIゲートウェイを設定するにはどうすればよいですか?リクエストにtest.mydomain.com/hello_world/say_helloのような特定のサブドメインがある場合、テスト環境でクライアントがマイクロサービスにアクセスできるようにする必要があります。テストステージから本番ステージに構成を手動でコピーせずに、CI/CDでAPI Gatewayを使用して高速かつシンプルにする方法がわかりません。 (私はどんな複雑なソリューションも期待していません、それに使用できるコンポーネント、パーツ、コンセプトについてのいくつかのヒントだけです。詳細は自分で見つけます)。

stage variables を見てください。これにより、これらの変数に格納されたdev/test/prod間の違いを含む基本的な設定を使用できるようになります。

11
Bob Kinney

API GatewayがプライベートVPCとの統合をサポートするようになったため、ELBをプライベートVPCにデプロイし、.ebextensionを使用してAPI Gatewayを前面に配置できると思います

ソース: https://aws.Amazon.com/about-aws/whats-new/2017/11/Amazon-api-gateway-supports-endpoint-integrations-with-private-vpcs/

5
Stephane