• Micha Boller

Entwicklung und Betrieb von Cloud Native Applikation auf GCP


Google Cloud bietet verschiedene Compute Services, um eine Cloud Native Applikation zum Beispiel bestehend aus einem Angular Frontend und einem Go Backend (REST APIs) zur Verfügung zu stellen.


Die Compute Services haben ihre jeweiligen Eigenschaften mit entsprechenden Vor- und Nachteilen. Es gilt, die Services zu analysieren und anhand der Anforderungen den richtigen Service zu wählen.


Um es sich einfach zu machen und sich nicht um die Wartung und den Betrieb eines Clusters (wie z.B. Google Kubernetes Engine) kümmern zu müssen, gibt es die Möglichkeit eine Serverless Container Plattform zu nutzen. Der entsprechende Service auf GCP heisst Cloud Run und bietet eine hoch skalierbare Container Plattform. Dazu werden entsprechende Dockerfiles jeweils für das Frontend und das Backend erstellt. Aus diesen werden von der Build Infrastruktur entsprechende Container Images erstellt, die in einem nächsten Schritt auf Cloud Run deployed werden.


Nebst den Compute Services sind auch die CI/CD und Infrastruktur Services wie ein git Repository oder eine Build Infrastruktur relevant für die Entwicklung einer Cloud Native Applikation.


Ein git Repository kann via GCP Source Repositories Service zur Verfügung gestellt werden. Sobald auf einem Branch etwas commited wird, kann via GCP Cloud Build Trigger eine entsprechende Build Pipeline angestossen werden. Die Schritte der Pipeline werden im cloudbuild.yaml konfiguriert. Die Schritte sind der Pipeline sind folgende:

  1. Docker Build

  2. Docker Image ins Artifact Repository laden

  3. Docker Image in Cloud Run deployen


Cloud Run bietet die Möglichkeit, ein «gradual rollout» zu machen (auch Blue / Green Deployment genannt), wo die neue Revision nicht von Anfang an 100% vom Traffic erhält. Nun kann via Cloud Monitoring, Logging und Error Reporting die neue Revision beobachtet werden (Errors, Latenz etc.). Verhält sich alles wie erwartet, kann der Traffic auf die neue Revision nach und nach erhöht werden.