web-dev-qa-db-fra.com

AWS API Gateway + Elastic Beanstalk et Microservices

Je vais construire l'architecture d'ABS sur microservices et je voudrais vous demander de clarifier mes doutes.

Mon concept général actuel

J'aimerais utiliser API Gateway, qui expose les API de microsevices s'exécutant dans Elastic Beanstalk. J'aimerais placer Elastic Beanstalk dans VPC sans accès direct d'Internet à ses instances.

 enter image description here

Questions et doutes:

  1. Elastic Beanstalk obtient un sous-domaine lors de la création de l'application. Cette passerelle devrait être utilisée par la passerelle API avec le type d'intégration: service AWS, dans la configuration d'action - Ai-je raison?
  2. Qu'est-ce qui représenterait un seul microservice? Une application Elastic Beanstalk est un microservice spécifique évolutif?
  3. Comment les microservices devraient-ils communiquer entre eux? Il y aurait une tâche pour laquelle je vais utiliser SQS (Simple Queue Service). Mais dans d'autres cas, est-il préférable que deux microservices communiquent l'un avec l'autre via API Gateway plutôt que directement - ai-je raison?
  4. Environnement de test: Quelle structure dois-je utiliser dans un environnement de test (ou env. Staging)? Je pense créer un VPC séparé avec un autre Elastic Beanstalk et d'autres services Amazon.
  5. Environnement de test et passerelle API: Comment dois-je configurer une passerelle API? Il doit permettre aux clients d’accéder aux microservices dans l’environnement de test si la requête a un sous-domaine spécifique, tel que: test.mydomain.com/hello_world/say_hello. Je ne sais pas comment utiliser API Gateway dans CI/CD pour le rendre simple et rapide, sans copier manuellement une configuration depuis la phase de test jusqu'à la phase de production. (Je ne m'attends pas à une solution complexe, seulement quelques conseils sur les composants, parties, concepts que je pourrais utiliser. Plus de détails, je les trouverai moi-même).
  6. Avez-vous de l'expérience dans le déploiement d'applications sur Elastic Beanstalk avec Codep Deploy et/ou Jenkins? Je suis intéressant de savoir comment Jenkins, AWS Code Deploy ou Jenkins + CodeDeploy pourraient être meilleurs.
8
nicq

Je vais répondre aux points qui ne sont pas basés sur l'opinion:

  1. Elastic Beanstalk obtient un sous-domaine lors de la création de l'application. Ce sous-domaine Doit être utilisé par API Gateway avec le type d'intégration: AWS Service, dans la configuration d'action - Ai-je raison?

Non, l'intégration du service AWS ne s'appliquerait que si vous appeliez réellement le service Elastic Beanstalk . Vous appelez votre propre beanstalk instance pour utiliser l'intégration HTTP.

  1. Qu'est-ce qui représenterait un seul microservice? Une application Elastic Beanstalk est un microservice spécifique évolutif?

Cela dépend de vous, mais comme mentionné dans les commentaires, de nombreux clients choisissent de le faire via des fonctions Lambda plutôt que des applications beanstalk. L'utilisation de Lambda présente l'avantage que vous n'avez pas besoin de gérer la mise à l'échelle de votre application beanstalk.

  1. Environnement de test: Quelle structure dois-je utiliser dans un environnement de test (ou Staging env.)? Je pense créer un VPC séparé avec un autre Elastic Beanstalk et d’autres services Amazon.

Remarque: API Gateway ne peut pas actuellement contacter les ressources de votre VPC. Toute instance de haricot devrait être accessible au public.

  1. Environnement de test et passerelle API: Comment dois-je configurer une passerelle API? Il doit permettre aux clients d’accéder aux microservices dans l’environnement de test si la requête a un sous-domaine spécifique, tel que: test.mydomain.com/hello_world/say_hello. Je ne sais pas comment utiliser API Gateway dans CI/CD pour le rendre simple et rapide, sans copier manuellement une configuration depuis la phase de test jusqu'à la phase de production. (Je ne m'attends pas à une solution complexe, seulement quelques conseils sur les composants, parties, concepts que je pourrais utiliser. Plus de détails, je les trouverai moi-même).

Vous devriez jeter un oeil sur variables de stade . Cela vous permettrait d'utiliser une configuration de base avec des différences entre dev/test/prod stockés dans ces variables.

9
Bob Kinney

API Gateway prend désormais en charge l'intégration avec les VPC privés. Par conséquent, je suppose que vous pouvez déployer votre ELB dans un VPC privé et le connecter à API Gateway à l'aide d'un .ebextension

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

2
Stephane