3

Ich habe eine einzige große Monolith-Anwendung, und jetzt ist es Zeit, einige Module zu Mikro-Dienste zu trennen! las ich viel über Pub/Sub und Microservices in Google Text & Tabellen, kann aber keine Antworten auf meine Fragen finden:Führen Sie Google App Engine-Anwendung mit Microservice

  1. Wie app.yaml Datei aussieht für mein Modul (Micro)?
  2. Wie app.yaml für meine App aussieht (ich meine, mit Microservice)
  3. Wo muss ich dieses Modul deklarieren - in der Anwendung app.yaml oder in beiden app.yaml?
  4. Wie kann ich einen einzelnen Datenspeicher mit meiner App und meinem Modul verwenden?

Mein app.yaml sieht nun wie:

application: my-application 
version: 1 
runtime: python27 
api_version: 1 
threadsafe: true 

mit einigen Referenzen und Libs.

Warten auf Ihre Antworten!

+1

Ich bin mir nicht sicher, was Sie fragen: Ein App Engine * Modul * (jetzt ein * Service * genannt) hat eine 'app.yaml' Datei. Ihr * Projekt * kann viele * Dienste * haben, jede mit ihrer eigenen 'app.yaml'. Die Weiterleitung erfolgt mit einem 'dispatch.yaml' und alle * Dienste * innerhalb des * Projekts * teilen sich den gleichen Datenspeicher. Wie monolithisch ist Ihre aktuelle Anwendung? – tx802

+0

Zum Beispiel: Ich habe einen APNS-Dienst in meiner App, und ich muss es als ein Microservice verschieben. Machen Sie es so: Ereignis passiert -> Ereignis erstellt -> Nachricht senden an Thema (Pub/Sub) -> APNS Microservice hören Thema -> APNS senden eine Push-Benachrichtigung –

Antwort

2

Eine monolithische App ist wirklich eine App mit einem einzigen Modul/Dienst (der Standard). Die app.yaml Konfiguration für solche App (wie die, die Sie gezeigt haben) ist wirklich die Konfigurationsdatei des Standardmoduls - es gibt keine "per-App" wie diese Konfig. Die Module sind „gebunden“ zusammen in eine bestimmte App von dieser Linie in ihren jeweiligen <module>.yaml:

application: <app_identifier> 

In einer Multi-Modul-App jedes Modul seine eigene <module>.yaml Konfigurationsdatei hat (der Name muss nicht app.yaml sein Es muss tatsächlich anders sein, wenn der Modulcode das gleiche Verzeichnis hat - aber ich würde bei der empfohlenen Verzeichnisstruktur bleiben - ein Modul pro Unterverzeichnis app).

Sehen Sie diese Q & A (die auch einige Beispiele enthält): Can a default service/module in a Google App Engine app be a sibling of a non-default one in terms of folder structure?

Der Modulname Standard kann/sollte nicht eingestellt werden. Alle anderen Modulnamen sind in den jeweiligen <module>.yaml Dateien konfiguriert, wie folgt aus:

module: <module_name> 

Alle Module in der gleichen App die gleiche Datenspeicher (also die gleiche index.html-Datei).

Beachten Sie, dass andere Konfigurationsdateien auch App-Level-Konfigurationen sind, also wirklich von allen Modulen geteilt werden (oder nur das Standardmodul, das zum Beispiel den Cron-Service ausführt), würde ich sie wie empfohlen platzieren Die oberste Ebene der App lautet: cron.yaml, dispatch.yaml, queue.yaml.