Ich habe mich gefragt, was der Unterschied zwischen App Engine und Compute Engine ist. Kann mir jemand den Unterschied erklären?
Ich habe mich gefragt, was der Unterschied zwischen App Engine und Compute Engine ist. Kann mir jemand den Unterschied erklären?
Antworten:
App Engine ist eine Platform-as-a-Service. Dies bedeutet, dass Sie einfach Ihren Code bereitstellen und die Plattform alles andere für Sie erledigt. Wenn Ihre App beispielsweise sehr erfolgreich wird, erstellt App Engine automatisch weitere Instanzen, um das erhöhte Volumen zu bewältigen.
Lesen Sie mehr über App Engine
Compute Engine ist eine Infrastructure-as-a-Service. Sie müssen Ihre eigenen Instanzen der virtuellen Maschine erstellen und konfigurieren. Es bietet Ihnen mehr Flexibilität und kostet im Allgemeinen viel weniger als App Engine. Der Nachteil ist, dass Sie Ihre App und Ihre virtuellen Maschinen selbst verwalten müssen.
Lesen Sie mehr über Compute Engine
Bei Bedarf können Sie sowohl App Engine als auch Compute Engine mischen. Beide funktionieren gut mit den anderen Teilen der Google Cloud Platform .
EDIT (Mai 2016):
Eine weitere wichtige Unterscheidung: Projekte, die mit App Engine ausgeführt werden, können auf null Instanzen verkleinert werden, wenn keine Anforderungen eingehen. Dies ist in der Entwicklungsphase äußerst nützlich, da Sie wochenlang arbeiten können, ohne das großzügige kostenlose Kontingent an Instanzstunden zu überschreiten. Für eine flexible Laufzeit (dh "verwaltete VMs") muss mindestens eine Instanz ständig ausgeführt werden.
EDIT (April 2017):
Cloud-Funktionen (derzeit in der Beta-Version) sind in Bezug auf die Abstraktion die nächste Stufe von App Engine - keine Instanzen! Entwickler können mundgerechte Codeteile bereitstellen, die als Reaktion auf verschiedene Ereignisse ausgeführt werden, darunter HTTP-Anforderungen, Änderungen im Cloud-Speicher usw.
Der größte Unterschied zu App Engine besteht darin, dass die Preise für Funktionen pro 100 Millisekunden festgelegt werden, während die Instanzen von App Engine erst nach 15 Minuten Inaktivität heruntergefahren werden. Ein weiterer Vorteil ist, dass Cloud-Funktionen sofort ausgeführt werden, während für einen Aufruf von App Engine möglicherweise eine neue Instanz erforderlich ist. Das Kaltstarten einer neuen Instanz kann einige Sekunden oder länger dauern (abhängig von der Laufzeit und Ihrem Code).
Dies macht Cloud-Funktionen ideal für (a) seltene Anrufe - keine Notwendigkeit, eine Instanz für den Fall, dass etwas passiert, am Leben zu halten, (b) sich schnell ändernde Lasten, bei denen sich Instanzen häufig drehen und herunterfahren, und möglicherweise mehr Anwendungsfälle.
Der grundlegende Unterschied besteht darin, dass Google App Engine ( GAE ) eine Plattform als Service ( PaaS ) ist, während Google Compute Engine ( GCE ) eine Infrastruktur als Service ( IaaS ) ist .
Um Ihre Anwendung in GAE auszuführen, müssen Sie nur Ihren Code schreiben und in GAE bereitstellen, ohne weitere Probleme. Da GAE vollständig skalierbar ist, werden automatisch mehr Instanzen erfasst, falls der Datenverkehr steigt, und die Instanzen werden verringert, wenn der Datenverkehr abnimmt. Ihnen werden die Ressourcen in Rechnung gestellt, die Sie wirklich verwenden . Ich meine, Ihnen werden die Instanzstunden , die übertragenen Daten , der Speicher usw. in Rechnung gestellt, die Ihre App wirklich verwendet hat. Die Einschränkung ist jedoch, dass Sie Ihre Anwendung nur in Python, PHP, Java, NodeJS, .NET, Ruby und ** Go erstellen können .
Auf der anderen Seite bietet Ihnen GCE eine vollständige Infrastruktur in Form einer virtuellen Maschine . Sie haben die vollständige Kontrolle über die Umgebung und Laufzeit dieser VMs, da Sie dort jedes Programm schreiben oder installieren können. Tatsächlich ist GCE die Möglichkeit, Google Data Center virtuell zu nutzen. In GCE müssen Sie Ihre Infrastruktur manuell konfigurieren, um die Skalierbarkeit mithilfe von Load Balancer zu gewährleisten .
Sowohl GAE als auch GCE sind Teil der Google Cloud Platform .
Update: Im März 2014 kündigte Google unter App Engine einen neuen Dienst namens Managed Virtual Machine an . Verwaltete VMs bieten App Engine-Anwendungen etwas mehr Flexibilität gegenüber App-Plattform-, CPU- und Speicheroptionen. Wie bei GCE können Sie in diesen VMs eine benutzerdefinierte Laufzeitumgebung für App Engine-Anwendungen erstellen. Tatsächlich verwaltete VMs von App Engine verwischen die Grenze zwischen IAAS und PAAS in gewissem Maße.
Einfach ausgedrückt: Mit der Compute Engine erhalten Sie einen Server, für den Sie die volle Kontrolle / Verantwortung haben. Sie haben direkten Zugriff auf das Betriebssystem und installieren die gesamte gewünschte Software, bei der es sich normalerweise um einen Webserver, eine Datenbank usw. handelt.
In der App Engine verwalten Sie nicht das Betriebssystem einer der zugrunde liegenden Software. Sie laden nur Code (Java, PHP, Python oder Go) und voila hoch - es läuft nur ...
Die App-Engine erspart Tonnen von Kopfschmerzen, insbesondere für unerfahrene Personen, hat jedoch zwei wesentliche Nachteile: 1. teurer (aber es gibt eine kostenlose Quote, die die Compute-Engine nicht hat) 2. Sie haben weniger Kontrolle, daher sind bestimmte Dinge einfach nicht möglich oder nur auf eine bestimmte Weise möglich (zum Beispiel Speichern und Schreiben von Dateien).
Oder um es noch einfacher zu machen (da wir manchmal nicht zwischen GAE Standard und GAE Flex unterscheiden können):
Compute Engine ist analog zu einem virtuellen PC, auf dem Sie beispielsweise eine kleine Website + Datenbank bereitstellen würden. Sie verwalten alles, einschließlich der Steuerung der installierten Laufwerke. Wenn Sie eine Website bereitstellen, sind Sie für die Einrichtung von DNS usw. verantwortlich.
Google App Engine (Standard) ist wie ein schreibgeschützter Sandbox-Ordner, in den Sie Code hochladen, aus dem er ausgeführt werden soll, und sich nicht um den Rest kümmern müssen (ja: schreibgeschützt - es sind feste Bibliotheken für Sie installiert, die Sie nicht bereitstellen können Bibliotheken von Drittanbietern nach Belieben). DNS / Sub-Domains usw. sind viel einfacher zuzuordnen.
Google App Engine (flexibel) ist in der Tat wie ein ganzes Dateisystem (nicht nur ein gesperrter Ordner), in dem Sie mehr Leistung als die Standard-Engine haben, z. B. Lese- / Schreibberechtigungen (aber weniger im Vergleich zu einer Compute Engine) ). Im GAE-Standard ist ein fester Satz von Bibliotheken für Sie installiert, und Sie können keine Bibliotheken von Drittanbietern nach Belieben bereitstellen. In der flexiblen Umgebung können Sie jede Bibliothek installieren, von der Ihre App abhängt, einschließlich benutzerdefinierter Build-Umgebungen (wie Python 3).
Obwohl es sehr umständlich ist, mit GAE Standard umzugehen (obwohl Google es einfach klingt), lässt es sich unter Druck sehr gut skalieren. Dies ist umständlich, da Sie die Kompatibilität mit der gesperrten Umgebung testen und sicherstellen müssen und sicherstellen müssen, dass von Ihnen verwendete Drittanbieter-Bibliotheken keine anderen Drittanbieter-Bibliotheken verwenden, von denen Sie nicht wissen, dass sie möglicherweise nicht mit dem GAE-Standard funktionieren. Das Einrichten in der Praxis dauert länger, kann sich jedoch auf längere Sicht für einfache Bereitstellungen lohnen.
Zusätzlich zu den obigen Anmerkungen zu App Engine und Compute Engine enthält die Liste hier auch einen Vergleich mit Google Kubernete Engine und einige Hinweise, die auf Erfahrungen mit einer Vielzahl von Apps von klein bis sehr groß basieren. Weitere Informationen finden Sie in der allgemeinen Beschreibung der Funktionen in App Engine Standard und Flex auf der Seite Auswählen einer App Engine-Umgebung in der Dokumentation zur Google Cloud Platform . Einen weiteren Vergleich der Bereitstellung von App Engine und Kubernetes finden Sie im Beitrag von Daz Wilkin App Engine Flex oder Kubernetes Engine .
App Engine Standard
Vorteile
Nachteile
App Engine Flex
Vorteile
Nachteile
Google Kubernetes Engine
Vorteile
Nachteile
Compute Engine
Vorteile
Nachteile
Wie bereits erläutert, ist Google Compute Engine (GCE) die Infrastruktur als Dienst (IaaS), während Google App Engine (GAE) die Plattform als Dienst (PaaS) ist. Sie können das folgende Diagramm überprüfen den Unterschied in einer besseren Art und Weise (Entnommen und besser erklärt zu verstehen , hier ) -
Google Compute Engine
GCE ist ein wichtiger Dienst, der von der Google Cloud Platform (GCP) bereitgestellt wird, da die meisten GCP-Dienste GCE-Instanzen (VMs) unterhalb der Verwaltungsebene verwenden (nicht sicher, welche nicht). Dies umfasst App Engine, Cloud-Funktionen, Kubernetes Engine (frühere Container Engine), Cloud SQL usw. GCE-Instanzen sind die am besten anpassbare Einheit und sollten daher nur verwendet werden, wenn Ihre Anwendung nicht auf anderen GCP-Diensten ausgeführt werden kann. Meistens verwenden Benutzer GCE, um ihre On-Prem-Anwendungen an GCP zu übertragen, da nur minimale Änderungen erforderlich sind. Später können sie andere GCP-Dienste für separate Komponenten ihrer Apps verwenden.
Google App Engine
GAE ist der erste von GCP angebotene Dienst (lange bevor Google zum Cloud-Geschäft kam). Es skaliert automatisch von 0 auf unbegrenzte Instanzen (es verwendet GCE darunter). Es kommt mit 2 Geschmacksrichtungen Standardumgebung und flexible Umgebung.
Die Standardumgebung ist sehr schnell, wird auf 0 reduziert, wenn niemand Ihre App verwendet, in Sekunden auf und ab skaliert und verfügt über dedizierte Google-Dienste und -Bibliotheken für Caching, Authentifizierung usw. Die Einschränkung bei der Standardumgebung besteht darin, dass sie sehr restriktiv ist da läuft es in einem sandkasten. Sie müssen verwaltete Laufzeiten nur 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, da Sie benutzerdefinierte Laufzeiten verwenden können, da Docker-Container verwendet werden. Wenn Ihre Laufzeit in den angegebenen Laufzeiten nicht verfügbar ist, können Sie jederzeit eine eigene Docker-Datei für die Ausführungsumgebung erstellen. Die Einschränkung besteht darin, dass mindestens eine Instanz ausgeführt werden muss, auch wenn niemand Ihre App verwendet. Außerdem dauert das Vergrößern und Verkleinern einige Minuten.
Verwechseln Sie GAE flexible nicht mit Kubernetes Engine, da die spätere Version die tatsächlichen Kubernetes verwendet und viel mehr Anpassungen und Funktionen bietet. GAE Flex ist nützlich, wenn Sie zustandslose Container möchten und Ihre Anwendung nur 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.
App Engine bietet Entwicklern die Möglichkeit, Google Compute Engine-Kerne zu steuern und ein Web-Front-End für Datenverarbeitungsanwendungen von Google Compute Engine bereitzustellen.
Auf der anderen Seite bietet Compute Engine eine direkte und vollständige Betriebssystemverwaltung Ihrer virtuellen Maschinen. Um Ihre App zu präsentieren, benötigen Sie Ressourcen. Google Cloud Storage ist ideal zum Speichern Ihrer Assets und Daten, unabhängig davon, wofür sie verwendet werden. Mit Hosting rund um den Globus erhalten Sie schnellen Datenzugriff. Die Zuverlässigkeit wird bei einer Verfügbarkeit von 99,95% garantiert. Google bietet außerdem die Möglichkeit, Ihre Daten zu sichern und wiederherzustellen. Ob Sie es glauben 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 flache Datenblätter lesen und schreiben, die im Cloud-Speicher gespeichert sind. Als nächstes in der Google Cloud-Reihe steht BigQuery. Mit BigQuery können Sie riesige Datenmengen analysieren. Wir sprechen von Millionen von Datensätzen innerhalb von Sekunden. Der Zugriff erfolgt über eine unkomplizierte Benutzeroberfläche oder eine REST-Schnittstelle (Representational State Transfer).
Die Datenspeicherung ist, wie Sie vielleicht vermuten, kein Problem und lässt sich auf Hunderte von TB skalieren. Auf BigQuery kann über eine Vielzahl von Client-Bibliotheken zugegriffen werden, einschließlich derer für Java, .NET, Python, Go, Ruby, PHP und Javascript. Es steht eine SQL-ähnliche Syntax namens NoSQL zur Verfügung, auf die über diese Clientbibliotheken oder über eine Webbenutzeroberfläche zugegriffen werden kann. Lassen Sie uns abschließend über die Datenbankoptionen der Google Cloud-Plattform, Cloud SQL und Cloud Datastore sprechen.
Es gibt einen großen Unterschied. Cloud SQL ist für relationale Datenbanken vorgesehen, hauptsächlich MySQL, während Cloud Datastore für nicht relationale Datenbanken mit noSQL vorgesehen ist. Mit Cloud SQL haben Sie die Wahl zwischen Hosting in den USA, Europa oder Asien mit 100 GB Speicher und 16 GB RAM pro Datenbankinstanz.
Der Cloud-Datenspeicher ist kostenlos für bis zu 50.000 Lese- / Schreibanweisungen pro Monat und 1 GB Daten verfügbar, die ebenfalls pro Monat gespeichert werden. Wenn Sie diese Quoten überschreiten, wird jedoch eine Gebühr erhoben. App Engine kann auch mit anderen weniger bekannten, gezielteren Mitgliedern der Google Cloud-Plattform zusammenarbeiten, einschließlich der Cloud-Endpunkte zum Erstellen von API-Backends, der Google Prediction-API für Datenanalyse und Trendprognose oder der Google Translate-API für mehrsprachige Ausgabe.
Mit App Engine können Sie zwar eine ganze Menge selbst erledigen, aber das Potenzial steigt sprunghaft, wenn Sie die Fähigkeit berücksichtigen, einfach und effizient mit den anderen Google Cloud-Plattformdiensten zu arbeiten.
Ich werde es auf eine Weise erklären, die für mich Sinn machte:
Compute Engine : Wenn Sie eine Do-it-yourself-Person sind oder ein IT-Team haben und nur einen Computer in einer Cloud mit einem bestimmten Betriebssystem (z. B. Linux) mieten möchten, entscheiden Sie sich für die Compute Engine. Du musst alles selbst machen.
App Engine : Wenn Sie (zum Beispiel) ein Python-Programmierer sind und einen vorkonfigurierten Computer in einer Cloud mit Linux mit einem laufenden Webserver und dem neuesten Python 3 mit den erforderlichen Modulen und einigen Plug-Ins zur Integration mieten möchten Bei anderen externen Diensten entscheiden Sie sich für die App Engine.
Serverloser Container (Cloud Run) : Wenn Sie das genaue Image Ihrer lokalen Setup-Umgebung bereitstellen möchten (z. B. Python 3.7 + Flask + Sklearn), sich aber nicht mit Server, Skalierung usw. befassen möchten, erstellen Sie einen Container auf Ihrem lokalen Computer (über Docker) und stellen Sie es dann für Google Run bereit.
Serverloser Microservice (Cloud-Funktionen) : Wenn Sie eine Reihe von APIs (Funktionen) schreiben möchten, die bestimmte Aufgaben ausführen, wählen Sie Google Cloud-Funktionen. Sie konzentrieren sich nur auf diese spezifischen Funktionen. Der Rest des Auftrags (Server, Wartung, Skalierung usw.) wird für Sie erledigt, um Ihre Funktionen als Microservices verfügbar zu machen.
Wenn Sie tiefer gehen, verlieren Sie etwas an Flexibilität, aber Sie machen sich keine Sorgen über unnötige technische Aspekte. Sie zahlen auch etwas mehr, sparen aber Zeit und Kosten (IT-Teil): Jemand anderes (Google) erledigt das für Sie.
Wenn Sie sich nicht um Lastausgleich, Skalierung usw. kümmern möchten, ist es wichtig, Ihre App in mehrere "zustandslose" Webdienste aufzuteilen, die alles, was dauerhaft ist, in einen separaten Speicher (Datenbank- oder Blob-Speicher) schreiben. Dann werden Sie feststellen, wie großartig Cloud Run und Cloud-Funktionen sind.
Persönlich fand ich Google Cloud Run eine großartige Lösung, absolute Entwicklungsfreiheit (solange sie zustandslos ist), sie als Webdienst verfügbar macht, Ihre Lösung andockt und sie mit Cloud Run bereitstellt. Lassen Sie Google Ihre IT und DevOps sein, Sie müssen sich nicht um Skalierung und Wartung kümmern.
Ich habe alle anderen Optionen ausprobiert und jede ist für einen anderen Zweck geeignet, aber Google Run ist einfach fantastisch. Für mich ist es das echte Serverless, ohne an Flexibilität bei der Entwicklung zu verlieren.
In der Cloud gehostete virtuelle Maschinen (VMs). Vor der Cloud wurden diese häufig 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 Infrastruktur bezeichnet. as-a-Service (IaaS).
VMs sind am nützlichsten, wenn eine vorhandene Anwendung auf einer VM oder einem Server in Ihrem Rechenzentrum ausgeführt wird und Sie diese problemlos auf GCP migrieren möchten.
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 einer physischen VM verwalten müssen. Stellen Sie sich das als Laufzeit vor, die Ihre Anwendung automatisch 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 automatisierte Skalierung Ihrer Anwendung wünschen. Sofern für Ihre Anwendung keine benutzerdefinierte Betriebssystemkonfiguration erforderlich ist, ist App Engine häufig vorteilhaft gegenüber der manuellen Konfiguration und Verwaltung von VMs.