pricing - ¿Cuál es la diferencia entre Google App Engine y Google Compute Engine?
google cloud datastore pricing (6)
Me preguntaba cuál es la diferencia entre App Engine y Compute Engine. ¿Alguien puede explicarme la diferencia?
Además de las notas de App Engine vs Compute Engine que se encuentran arriba de la lista, aquí también se incluye una comparación con Google Kubernete Engine y algunas notas basadas en la experiencia con una amplia gama de aplicaciones, desde pequeñas a muy grandes. Para obtener más puntos, consulte la descripción de alto nivel de la documentación de Google Cloud Platform de las funciones en App Engine Standard y Flex en la página Elección de un entorno de App Engine . Para otra comparación de la implementación de App Engine y Kubernetes, vea la publicación de Daz Wilkin App Engine Flex o Kubernetes Engine .
App Engine Standard
Pros
- Muy económico para aplicaciones de bajo tráfico en términos de costos directos y también el costo de mantener la aplicación.
- La escala automática es rápida. El escalado automático en App Engine se basa en las clases de instancia ligera F1-F4 .
- La gestión de versiones y la división del tráfico son rápidas y convenientes. Estas características están integradas en App Engine (tanto estándar como flexible) de forma nativa.
- Gestión mínima, los desarrolladores necesitan centrarse solo en su aplicación. Los desarrolladores no tienen que preocuparse por administrar VMs de manera confiable, como en GCE, o aprender sobre clusters, como con GKE.
- El acceso al almacén de datos es rápido. Cuando se lanzó App Engine por primera vez, el tiempo de ejecución se ubicó junto con Datastore. Posteriormente, Datastore se dividió como el producto independiente Cloud Datastore, pero la ubicación conjunta de App Engine Standard que sirve con Datastore permanece.
- El acceso a Memcache es compatible.
- El sandbox de App Engine es muy seguro. En comparación con el desarrollo en GCE u otras máquinas virtuales, donde debe hacer su propia diligencia para evitar que la máquina virtual sea tomada en el nivel del sistema operativo, el entorno de pruebas estándar de App Engine es relativamente seguro por defecto.
Contras
- Generalmente más restringido que otros entornos. Las instancias son más pequeñas. Aunque esto es bueno para la autoescala rápida, muchas aplicaciones pueden beneficiarse de instancias más grandes, como los tamaños de instancia GCE de hasta 96 núcleos.
- La red no está integrada con GCE
- No se puede poner App Engine detrás de Google Cloud Load Balancer. Limitado a los tiempos de ejecución admitidos: Python 2.7, Java 7 y 8, Go 1.6-1.9 y PHP 5.5. En Java, hay algún soporte para Servlets pero no el estándar J2EE completo.
App Engine Flex
Pros
- Puede usar un tiempo de ejecución personalizado
- Integración nativa con redes GCE
- La gestión de versiones y tráfico es conveniente, igual que la estándar
- Los tamaños de instancia más grandes pueden ser más adecuados para grandes aplicaciones complejas, especialmente aplicaciones Java que pueden usar mucha memoria
Contras
- La integración de la red no es perfecta: no hay integración con balanceadores de carga internos o nubes privadas virtuales compartidas
- El acceso a Memcache administrado no está disponible en general.
Motor Google Kubernetes
Pros
- La integración nativa con contenedores permite tiempos de ejecución personalizados y un mayor control sobre la configuración del clúster.
- Incorpora muchas de las mejores prácticas que trabajan con máquinas virtuales, como entornos de tiempo de ejecución inmutables y la posibilidad de revertir a versiones anteriores
- Proporciona un marco de implementación consistente y repetible
- Basado en estándares abiertos, especialmente Kubernetes, para la portabilidad entre nubes y locales.
- La administración de versiones se puede lograr con los contenedores Docker y el registro de contenedor de Google.
Contras
- La división y la gestión del tráfico se realiza por sí mismo, posiblemente aprovechando Istio y Envoy
- Algunos gastos generales de gestión
- Algún tiempo para aumentar los conceptos de Kubernetes, como pods, implementaciones, servicios, ingreso y espacios de nombres.
- Debe exponer algunas direcciones IP públicas a menos que el uso de clústeres privados , ahora en versión beta, elimine esa necesidad, pero aún debe proporcionar acceso a las ubicaciones desde donde se ejecutarán los comandos de kubectl.
- La integración de monitoreo no es perfecta
- Si bien el equilibrio de carga interno de L3 se admite de forma nativa en el motor Kubernetes, el equilibrio de carga interno de L7 se hace por sí mismo, posiblemente aprovechando Envoy
Motor de cómputo
Pros
- Fácil de incrementar: no es necesario aumentar la velocidad en Kubernetes o App Engine, solo reutilice lo que sepa de la experiencia anterior. Esta es probablemente la razón principal para usar Compute Engine directamente.
- Control completo: puede aprovechar muchas funciones de Compute Engine directamente e instalar lo último de todas sus cosas favoritas para mantenerse a la vanguardia.
- No hay necesidad de IP públicas. Algunos programas heredados pueden ser demasiado difíciles de bloquear si algo está expuesto en IP públicas.
- Puede aprovechar el sistema operativo optimizado para contenedores para ejecutar contenedores de Docker
Contras
- Principalmente, hágalo usted mismo, lo cual puede ser un desafío para la confiabilidad y la seguridad, aunque puede reutilizar soluciones de varios lugares, incluido el Cloud Launcher.
- Más gastos generales de gestión. Existen muchas herramientas de administración para Compute Engine pero no necesariamente entenderán cómo ha implementado su aplicación, como hacen App Engine y Kubernetes Engine.
- El autoescalado se basa en instancias de GCE, que pueden ser más lentas que App Engine
- La tendencia es instalar software en instancias GCE de copo de nieve, lo que puede ser un esfuerzo para mantener
App Engine ofrece a los desarrolladores la capacidad de controlar los núcleos de Google Compute Engine, así como también proporcionar una interfaz web para las aplicaciones de procesamiento de datos de Google Compute Engine.
Por otro lado, Compute Engine ofrece la administración directa y completa del sistema operativo de sus máquinas virtuales. Para presentar su aplicación, necesitará recursos, y Google Cloud Storage es ideal para almacenar sus activos y datos, para cualquier uso que se haga. Usted obtiene un acceso rápido a los datos con el alojamiento en todo el mundo. La confiabilidad está garantizada en un tiempo de 99,95%, y Google también brinda la posibilidad de realizar copias de seguridad y restaurar sus datos, y créalo o no, el almacenamiento es ilimitado.
Puede administrar sus activos con Google Cloud Storage, almacenándolos, recuperándolos, mostrándolos y eliminándolos. También puede leer y escribir rápidamente en hojas de datos planas que se guardan en Cloud Storage. Siguiente en la alineación de Google Cloud es BigQuery. Con BigQuery, puede analizar grandes cantidades de datos, estamos hablando de millones de registros, en segundos. El acceso se maneja a través de una interfaz de usuario simple, una transferencia de estado representacional o una interfaz REST.
El almacenamiento de datos es, como puede sospechar, no es un problema y se escala a cientos de TB. Se puede acceder a BigQuery a través de una gran cantidad de bibliotecas cliente, incluidas las de Java, .NET, Python, Go, Ruby, PHP y Javascript. Hay disponible una sintaxis similar a SQL llamada NoSQL, a la que se puede acceder a través de estas bibliotecas cliente o a través de una interfaz web de usuario. Finalmente, hablemos de las opciones de base de datos de la plataforma Google Cloud, Cloud SQL y Cloud Datastore.
Hay una gran diferencia. Cloud SQL es para bases de datos relacionales, principalmente MySQL, mientras que Cloud Datastore es para bases de datos no relacionales que usan noSQL. Con Cloud SQL, puede elegir entre hospedaje en los Estados Unidos, Europa o Asia, con 100 GB de almacenamiento y 16 GB de RAM por instancia de base de datos.
El almacén de datos en la nube está disponible sin cargo por hasta 50 K de instrucciones de lectura / escritura por mes y 1 GB de datos almacenados también por mes. Sin embargo, hay una tarifa si excede estas cuotas. App Engine también puede trabajar con otros miembros menos conocidos y más específicos de la plataforma Google Cloud, incluidos los puntos finales de la nube para crear backends de API, la API de predicción de Google para análisis de datos y previsión de tendencias, o la API de Google Translate, para resultados multilingües.
Si bien puede hacer una cantidad justa con App Engine por sí solo, su potencial se dispara cuando se considera su capacidad para trabajar de manera fácil y eficiente con sus otros servicios de la plataforma Google Cloud.
En pocas palabras: el motor de cómputo le brinda un servidor para el que tiene total control y responsabilidad. Tiene acceso directo al sistema operativo e instala todo el software que desea, que suele ser un servidor web, una base de datos, etc.
En el motor de aplicaciones no administras el sistema operativo de ningún software subyacente. Solo carga código (Java, PHP, Python o Go) y listo, simplemente se ejecuta ...
El motor de aplicaciones ahorra toneladas de dolor de cabeza, especialmente para las personas sin experiencia, pero tiene 2 inconvenientes importantes: 1. más caro (pero tiene una cuota gratuita que el motor de cómputo no) 2. tienes menos control, por lo tanto, ciertas cosas simplemente no son posible, o solo posible de una manera específica (por ejemplo, guardar y escribir archivos).
La diferencia básica es que Google App Engine ( GAE ) es una plataforma como servicio ( PaaS ), mientras que Google Compute Engine ( GCE ) es una infraestructura como servicio ( IaaS ) .
Para ejecutar su aplicación en GAE, solo necesita escribir su código e implementarlo en GAE, sin otro dolor de cabeza. Dado que GAE es completamente escalable, adquirirá automáticamente más instancias en caso de que el tráfico aumente y disminuya las instancias cuando el tráfico disminuya. Se le cobrará por los recursos que realmente usa , es decir, se le facturará por las horas de instancia , los datos transferidos , el almacenamiento , etc. que su aplicación realmente usó. Pero la restricción es que puedes crear tu aplicación solo en Python, PHP, Java, NodeJS, .NET, Ruby y ** Go .
Por otro lado, GCE le proporciona una infraestructura completa en forma de máquina virtual . Usted tiene control completo sobre el entorno y el tiempo de ejecución de esas máquinas virtuales, ya que puede escribir o instalar cualquier programa allí. En realidad, GCE es la forma de utilizar los centros de datos de Google de forma virtual. En GCE, debe configurar manualmente su infraestructura para manejar la escalabilidad mediante el uso de Load Balancer .
Tanto GAE como GCE son parte de Google Cloud Platform .
Actualización: En marzo de 2014, Google anunció un nuevo servicio en App Engine llamado Managed Virtual Machine . Las VM administradas ofrecen a las aplicaciones del motor de aplicaciones un poco más de flexibilidad sobre la plataforma de aplicaciones, la CPU y las opciones de memoria. Al igual que GCE, puede crear un entorno de tiempo de ejecución personalizado en estas máquinas virtuales para la aplicación del motor de aplicaciones. En realidad, las máquinas virtuales gestionadas de App Engine desdibujan la frontera entre IAAS y PAAS en cierta medida.
O para hacerlo aún más simple (ya que a veces no podemos diferenciar entre GAE Standard y GAE Flex):
Compute Engine es análogo a una PC virtual, donde implementaría un pequeño sitio web + base de datos, por ejemplo. Usted gestiona todo, incluido el control de las unidades de disco instaladas. Si implementa un sitio web, está a cargo de configurar el DNS, etc.
Google App Engine (estándar) es como una carpeta de espacio de almacenamiento de solo lectura en la que puedes cargar código para ejecutar y no te preocupes por el resto (sí: solo lectura). DNS / Subdominios, etc. es mucho más fácil de asignar.
Google App Engine (Flexible) es de hecho como un sistema de archivos completo (no solo una carpeta bloqueada), donde tiene más poder que el motor estándar, por ejemplo, tiene permisos de lectura / escritura, (pero menos en comparación con un motor de cómputo). ). En el estándar GAE, tiene un conjunto fijo de bibliotecas instaladas para usted y no puede implementar bibliotecas de terceros a voluntad. En el entorno flexible, puede instalar cualquier biblioteca de la que dependa su aplicación, incluidos los entornos de compilación personalizados (como Python 3).
Aunque es muy difícil lidiar con GAE Standard (aunque Google lo hace parecer simple), se escala muy bien cuando se lo presiona. Es engorroso porque necesita probar y asegurar la compatibilidad con el entorno bloqueado y asegurarse de que cualquier biblioteca de terceros que utilice no utilice ninguna otra biblioteca de terceros de la que no tenga conocimiento, lo que puede no funcionar con el estándar GAE. Lleva más tiempo configurarlo en la práctica, pero puede ser más gratificante a largo plazo para implementaciones simples.
App Engine es una plataforma como servicio. Significa que simplemente implementas tu código, y la plataforma hace todo lo demás por ti. Por ejemplo, si su aplicación se vuelve muy exitosa, App Engine creará automáticamente más instancias para manejar el aumento del volumen.
Compute Engine es una infraestructura como servicio. Tienes que crear y configurar tus propias instancias de máquinas virtuales. Le ofrece más flexibilidad y generalmente cuesta mucho menos que App Engine. El inconveniente es que usted mismo tiene que administrar su aplicación y sus máquinas virtuales.
Puede mezclar tanto App Engine como Compute Engine, si es necesario. Ambos funcionan bien con las otras partes de la plataforma Google Cloud .
EDITAR (mayo 2016):
Una distinción más importante: los proyectos que se ejecutan en App Engine pueden reducirse a cero instancias si no se reciben solicitudes. Esto es extremadamente útil en la etapa de desarrollo, ya que puede pasar semanas sin pasar por la generosa cuota de horas de instancia. El tiempo de ejecución flexible (es decir, "máquinas virtuales gestionadas") requiere al menos una instancia para ejecutarse constantemente.
EDITAR (abril 2017):
Cloud Functions (actualmente en versión beta) es el siguiente nivel desde App Engine en términos de abstracción, ¡sin instancias! Permite a los desarrolladores desplegar fragmentos de código de tamaño que se ejecutan en respuesta a diferentes eventos, que pueden incluir solicitudes HTTP, cambios en el almacenamiento en la nube, etc.
La mayor diferencia con App Engine es que el precio de las funciones es de 100 milisegundos, mientras que las instancias de App Engine se cierran solo después de 15 minutos de inactividad. Otra ventaja es que Cloud Functions se ejecuta inmediatamente, mientras que una llamada a App Engine puede requerir una nueva instancia, y el inicio en frío de una nueva instancia puede demorar unos segundos o más (según el tiempo de ejecución y su código).
Esto hace que Cloud Functions sea ideal para (a) llamadas raras: no hay necesidad de mantener una instancia en vivo en caso de que ocurra algo, (b) cargas que cambian rápidamente donde las instancias a menudo giran y se cierran, y posiblemente más casos de uso.