Ich habe mich gefragt, was der Unterschied zwischen App Engine & Compute Engine ist. Kann mir das jemand erklären?
Antworten
Zu viele Anzeigen?Wie bereits erklärt, ist Google Compute Engine (GCE) die Infrastructure as a Service (IaaS), während Google App Engine (GAE) die Platform as a Service (PaaS) ist. Um den Unterschied besser zu verstehen, können Sie das folgende Diagramm überprüfen (entnommen und besser erklärt hier) -
Google Compute Engine
GCE ist ein wichtiger Service, der von der Google Cloud Platform (GCP) bereitgestellt wird, da die meisten GCP-Services GCE-Instanzen (VMs) unterhalb der Verwaltungsebene verwenden (nicht sicher, welche nicht). Dazu gehören App Engine, Cloud Functions, Kubernetes Engine (ehemals Container Engine), Cloud SQL usw. GCE-Instanzen sind die anpassbarste Einheit und sollten daher nur verwendet werden, wenn Ihre Anwendung nicht auf anderen GCP-Services ausgeführt werden kann. Die Leute verwenden oft GCE, um ihre On-Prem-Anwendungen zu GCP zu übertragen, da nur minimale Änderungen erforderlich sind. Später können sie sich entscheiden, andere GCP-Services für separate Komponenten ihrer Apps zu verwenden.
Google App Engine
GAE ist der erste Service, den GCP angeboten hat (Lange bevor Google im Cloud-Geschäft tätig wurde). Er skaliert automatisch von 0 auf unbegrenzte Instanzen (er verwendet GCE darunter). Es gibt 2 Varianten: Standardumgebung und Flexible Umgebung.
Die Standardumgebung ist sehr schnell, skaliert auf 0 Instanzen herunter, wenn niemand Ihre App verwendet, skaliert innerhalb von Sekunden hoch und runter und verfügt über dedizierte Google-Services und Bibliotheken für Caching, Authentifizierung usw. Der Nachteil der Standardumgebung ist, dass sie sehr restriktiv ist, da sie in einer Sandbox läuft. Sie müssen nur verwaltete Laufzeiten für bestimmte Programmiersprachen verwenden. Die neuesten Ergänzungen sind Node.js (8.x) und Python 3.x. Die älteren Laufzeiten sind für Go, PHP, Python 2.7, Java usw. verfügbar.
Die Flexible Umgebung ist offener, denn sie erlaubt die Verwendung benutzerdefinierter Laufzeiten, da sie Docker-Container verwendet. Wenn Ihre Laufzeit nicht in den bereitgestellten Laufzeiten verfügbar ist, können Sie immer Ihre eigene Docker-Datei für die Ausführungsumgebung erstellen. Der Nachteil dabei ist, dass mindestens 1 Instanz ausgeführt werden muss, selbst wenn niemand Ihre App verwendet, und das Hoch- und Herunterskalieren dauert einige Minuten.
Verwechseln Sie die Flexibilität von GAE nicht mit Kubernetes Engine, da letzteres tatsächliches Kubernetes verwendet und viel mehr Anpassungsmöglichkeiten und Funktionen bietet. GAE Flex ist nützlich, wenn Sie zustandslose Container wollen und Ihre Anwendung ausschließlich auf HTTP oder HTTPS-Protokollen basiert. Für andere Protokolle ist Kubernetes Engine (GKE) oder GCE Ihre einzige Wahl. Überprüfen Sie meine andere Antwort für eine bessere Erklärung.
Ich werde es erklären, auf eine Weise, die für mich Sinn ergibt:
-
Compute Engine: Wenn Sie gerne alles selbst machen oder ein IT-Team haben und einfach einen Computer in der Cloud mieten möchten, der ein spezifisches Betriebssystem hat (zum Beispiel Linux), dann entscheiden Sie sich für die Compute Engine. Sie müssen alles selbst machen.
-
App Engine: Wenn Sie (zum Beispiel) ein Python-Programmierer sind und einen vorinstallierten Computer in der Cloud mieten möchten, der Linux mit einem laufenden Webserver und dem neuesten Python 3 mit notwendigen Modulen sowie einigen Plug-Ins zum Integrieren mit anderen externen Diensten hat, dann entscheiden Sie sich für die App Engine.
-
Serverless Container (Cloud Run): Wenn Sie das genaue Abbild Ihrer lokalen Setup-Umgebung bereitstellen möchten (zum Beispiel: Python 3.7+Flask+Sklearn), aber keine Lust haben, sich mit Server, Skalierung usw. zu befassen. Sie erstellen einen Container auf Ihrem lokalen Rechner (mithilfe von Docker) und deployen ihn dann auf Google Run.
-
Serverless Microservice (Cloud Functions): Wenn Sie eine Reihe von APIs (Funktionen) schreiben möchten, die spezifische Aufgaben erledigen, dann entscheiden Sie sich für Google Cloud Functions. Sie konzentrieren sich nur auf diese spezifischen Funktionen, der Rest der Arbeit (Server, Wartung, Skalierung, usw.) wird für Sie erledigt, um Ihre Funktionen als Microservices bereitzustellen.
Je tiefer Sie einsteigen, desto weniger Flexibilität haben Sie, aber Sie müssen sich keine Sorgen um unnötige technische Aspekte machen. Sie bezahlen auch etwas mehr, sparen aber Zeit und Kosten (IT-Teil): jemand anderes (Google) erledigt die Arbeit für Sie.
Wenn Sie sich nicht um Lastenausgleich, Skalierung usw. kümmern möchten, ist es entscheidend, Ihre App in eine Reihe von "zustandslosen" Webservices aufzuteilen, die alles Persistente in einem separaten Speicher (Datenbank oder Blob-Speicher) schreiben. Dann werden Sie feststellen, wie großartig Cloud Run und Cloud Functions sind.
Persönlich halte ich Google Cloud Run für eine großartige Lösung, absolute Freiheit in der Entwicklung (solange es zustandslos ist), stellen Sie es als Webservice bereit, dockern Sie Ihre Lösung, deployen Sie sie mit Cloud Run. Lassen Sie Google Ihr IT- und DevOps-Team sein, Sie müssen sich nicht um Skalierung und Wartung kümmern.
Ich habe alle anderen Optionen ausprobiert und jede ist gut für einen anderen Zweck, aber Google Run ist einfach großartig. Für mich ist es das echte Serverless, ohne dabei Flexibilität in der Entwicklung zu verlieren.
Google Compute Engine (GCE)
Virtual Machines (VMs), die in der Cloud gehostet werden. Vor der Cloud wurden diese oft als Virtual Private Server (VPS) bezeichnet. Sie würden diese genauso verwenden wie einen physischen Server, auf dem Sie das Betriebssystem installieren und konfigurieren, Ihre Anwendung installieren, die Datenbank installieren, das Betriebssystem auf dem neuesten Stand halten usw. Dies wird als Infrastructure-as-a-Service (IaaS) bezeichnet.
VMs sind am nützlichsten, wenn Sie eine vorhandene Anwendung auf einem VM oder Server in Ihrem Rechenzentrum ausführen und sie einfach zu GCP migrieren möchten.
Google App Engine
App Engine hostet und führt Ihren Code aus, ohne dass Sie sich mit dem Betriebssystem, dem Netzwerk und vielen anderen Dingen befassen müssen, die Sie mit einem physischen Server oder VM verwalten müssten. Denken Sie an eine Laufzeitumgebung, die automatisch Ihre Anwendung bereitstellen, versionieren und skalieren kann. Dies wird als Platform-as-a-Service (PaaS) bezeichnet.
App Engine ist am nützlichsten, wenn Sie eine automatisierte Bereitstellung und Skalierung Ihrer Anwendung wünschen. Sofern Ihre Anwendung keine benutzerdefinierte Betriebssystemkonfiguration erfordert, ist App Engine oft vorteilhaft gegenüber der manuellen Konfiguration und Verwaltung von VMs.
App Engine gibt Entwicklern die Möglichkeit, Google Compute Engine-Kerne zu steuern und gleichzeitig eine webbasierte Benutzeroberfläche für Google Compute Engine-Datenverarbeitungsanwendungen bereitzustellen.
Andererseits bietet Compute Engine die direkte und vollständige Betriebssystemverwaltung Ihrer virtuellen Maschinen. Um Ihre App zu präsentieren, benötigen Sie Ressourcen, und Google Cloud Storage eignet sich ideal zum Speichern Ihrer Assets und Daten, ganz gleich wofür sie verwendet werden. Sie erhalten schnellen Datenzugriff mit Hosting auf der ganzen Welt. Die Zuverlässigkeit wird mit einer Betriebszeit von 99,95 % garantiert, und Google bietet auch die Möglichkeit, Ihre Daten zu sichern und wiederherzustellen, und glauben Sie es oder nicht, der Speicherplatz ist unbegrenzt.
Sie können Ihre Assets mit Google Cloud Storage verwalten, speichern, abrufen, anzeigen und löschen. Sie können auch schnell auf flache Datenblätter zugreifen, die in Cloud Storage gespeichert sind. Als nächstes in der Google Cloud-Reihe kommt BigQuery. Mit BigQuery können Sie riesige Datenmengen analysieren, wir sprechen von Millionen von Datensätzen, innerhalb von Sekunden. Der Zugriff erfolgt über eine benutzerfreundliche Benutzeroberfläche oder eine Representational State Transfer oder REST-Schnittstelle.
Datenspeicherung ist, wie Sie vermuten könnten, kein Problem und skalierbar auf Hunderte von TB. BigQuery ist über eine Vielzahl von Client-Bibliotheken zugänglich, einschließlich solcher für Java, .NET, Python, Go, Ruby, PHP und Javascript. Eine SQL-ähnliche Syntax namens NoSQL steht zur Verfügung, auf die über diese Client-Bibliotheken oder über eine Webbenutzeroberfläche zugegriffen werden kann. Schließlich wollen wir über die Google Cloud-Plattform-Datenbankoptionen, Cloud SQL und Cloud Datastore, sprechen.
Es gibt einen großen Unterschied. Cloud SQL ist für relationale Datenbanken, hauptsächlich MySQL, gedacht, während Cloud Datastore für nicht-relationale Datenbanken ohne SQL verwendet wird. Mit Cloud SQL haben Sie die Möglichkeit, entweder in den USA, Europa oder Asien zu hosten, mit 100 GB Speicher und 16 GB RAM pro Datenbankinstanz.
Cloud Datastore ist bis zu 50.000 Lese-/Schreibanweisungen pro Monat und 1 GB gespeicherter Daten pro Monat kostenlos. Es fällt jedoch eine Gebühr an, wenn Sie diese Quoten überschreiten. App Engine kann auch mit anderen weniger bekannten, gezielteren Mitgliedern der Google Cloud-Plattform zusammenarbeiten, darunter die Cloud Endpoints zur Erstellung von API-Backends, die Google Prediction API zur Datenanalyse und Trendvorhersage oder die Google Translate API für mehrsprachige Ausgabe.
Obwohl Sie mit App Engine alleine schon viel erreichen können, steigt Ihr Potenzial in die Höhe, wenn Sie die Fähigkeit berücksichtigen, problemlos und effizient mit den anderen Diensten der Google Cloud-Plattform zusammenzuarbeiten.