5

Ich werde Microservices Architektur auf AWS bauen und ich möchte Sie bitten, meine Zweifel zu klären.AWS API Gateway + Elastische Bohnenstange und Microservices

Mein aktuelles allgemeines Konzept

Ich mag API-Gateway verwenden, die microsevices' APIs läuft in Elastic Beanstalk aussetzt. Ich möchte die Elastic Beanstalk in VPC ohne direkten Zugriff aus dem Internet auf seine Instanzen platzieren.

enter image description here

Fragen & Unsicher:

  1. Elastic Beanstalk bekommt Sub-Domain auf Anwendungserstellung. Diese Subdomain sollte von API-Gateway mit Integrationstyp verwendet werden: AWS-Service, in Aktion Konfiguration - Habe ich Recht?
  2. Was würde einen einzigen Microservice darstellen? Eine Anwendung von Elastic Beanstalk ist ein spezifischer skalierbarer Microservice?
  3. Wie sollten die Microservices miteinander kommunizieren? Es gäbe eine Aufgabe, wo ich SQS (Simple Queue Service) verwenden würde. Aber in anderen Fällen ist es besser, wenn zwei Microservices über API Gateway miteinander kommunizieren, anstatt direkt - habe ich recht?
  4. Testumgebung: Welche Struktur sollte ich in der Testumgebung (oder Stagingumgebung) verwenden? Ich denke darüber nach, separate VPC mit einem anderen Elastic Beanstalk und anderen Amazon-Diensten zu erstellen.
  5. Testumgebung und API-Gateway: Wie sollte ich ein API-Gateway einrichten? Es sollte Clients erlauben, auf die Microservices in der Testumgebung zuzugreifen, wenn die Anfrage eine bestimmte Subdomain hat, wie zum Beispiel: test.mydomain.com/hello_world/say_hello. Ich bin nicht sicher, wie man API Gateway in CI/CD verwendet, um es schnell und einfach zu machen, ohne manuell einige Konfigurationen von der Teststufe in die Produktionsphase zu kopieren. (Ich erwarte keine komplexe Lösung, nur einige Hinweise darauf, welche Komponenten, Teile, Konzepte ich dafür verwenden könnte. Mehr Details finde ich alleine).
  6. Haben Sie Erfahrung in der Bereitstellung von Apps für Elastic Beanstalk mit Codep Deploy und/oder Jenkins? Ich bin interessant, auf welche Weise könnte besser sein: Jenkins, AWS Code Deploy oder Jenkins + CodeDeploy.

Vielen Dank im Voraus!

+1

Im Allgemeinen, wenn Leute auf Microservices verweisen, sprechen sie über AWS Lambda oder Azure-Funktionen. Im Fall von Lambda können die Funktionen direkt vom API-Gateway extern aufgerufen werden, dann entweder SQS-Aufgaben ausführen oder andere Lambda-Funktionen direkt anstoßen. Außerdem sehe ich keine Notwendigkeit für eine VPC, es sei denn, Sie verbinden die VPC mit einer lokalen Infrastruktur und lassen die Lambda-Funktionen auf diese Assets zugreifen. – Jordan

Antwort

7

Ich werde die Punkte beantworten, die nicht Meinung basieren:

  1. Elastic Beanstalk bekommt Sub-Domain auf Anwendungserstellung. Diese Subdomäne sollte von API Gateway mit Integrationstyp verwendet werden: AWS Service, in Aktion Konfiguration - Habe ich Recht?

Nein, AWS-Service-Integration nur dann gelten, wenn Sie tatsächlich den anruf wurden Elastic Beanstalk-Service. Sie würden Ihre eigene Bohnenstange Instanz nennen, also würden Sie HTTP-Integration verwenden.

  1. Was würde einen einzigen Microservice darstellen? Eine Anwendung von Elastic Beanstalk ist ein spezifischer skalierbarer Microservice?

Dies ist bis zu Ihnen, aber wie in den Kommentaren erwähnt, entscheiden sich viele Kunden dies über Lambda-Funktionen zu tun, anstatt Bohnenstengel Anwendungen. Die Verwendung von Lambda hat den Vorteil, dass Sie die Skalierung Ihrer Bohnenanbau-Anwendung nicht verwalten müssen.

  1. Testumgebung: Welche Struktur soll ich in der Testumgebung (oder env Inszenierung.)? Ich denke darüber nach, separate VPC mit einem anderen Elastic Beanstalk und anderen Amazon-Diensten zu erstellen.

Nur eine Notiz hier kann API-Gateway kontaktiert Ressourcen derzeit nicht in Ihrer VPC. Jede Beanstalk-Instanz müsste öffentlich zugänglich sein.

  1. Testumgebung und API-Gateway: Wie sollte ich ein API-Gateway einrichten? Es sollte Clients erlauben, auf die Microservices in der Testumgebung zuzugreifen, wenn die Anfrage eine bestimmte Subdomain hat, wie zum Beispiel: test.mydomain.com/hello_world/say_hello. Ich bin nicht sicher, wie man API Gateway in CI/CD verwendet, um es schnell und einfach zu machen, ohne manuell einige Konfigurationen von der Teststufe in die Produktionsphase zu kopieren. (Ich erwarte keine komplexe Lösung, nur einige Hinweise darauf, welche Komponenten, Teile, Konzepte ich dafür verwenden könnte. Mehr Details finde ich alleine).

Sie sollten bei stage variables einen Blick darauf werfen. Auf diese Weise können Sie die Basiskonfiguration mit den Unterschieden zwischen dev/test/prod verwenden, die in diesen Variablen gespeichert sind.

+0

Danke! Ich möchte Docker verwenden, aber Lambda unterstützt es nicht direkt - ich müsste es mit ECS kombinieren. Beanstalk in der Multicontainer-Konfiguration arbeitet an der Spitze von ECS, daher denke ich, dass Beanstalk die bessere Lösung für mich ist. – nicq

+0

Unterstützt AWS VPC immer noch nicht direkt hinter dem API-Gateway? Lambda zu durchlaufen, fügt einfach mehr Komplexität hinzu und jeder Dienst muss sich erneut um Auth kümmern. – gabel

+1

@gabel Es wird immer noch nicht unterstützt, ist aber eine der am höchsten geforderten Funktionen und wir arbeiten daran, diese Anwendungsfälle zukünftig zu unterstützen. –

Verwandte Themen