Sistema de nombres de dominio (DNS)

La solicitud va al servidor DNS, que responde con una dirección IP. Cloud DNS es la infraestructura de Google para servicio de DNS autoritativo de gran volumen que ofrece ANS al 100% (es decir, nunca deja de funcionar). Utiliza la red global de Google de servidores de nombres anycast para brindar servicio a zonas de DNS desde ubicaciones redundantes en todo el mundo, de modo que brinda una alta disponibilidad y baja latencia a tus usuarios.

Sistema de nombres de dominio (DNS)

La solicitud va al servidor DNS, que responde con una dirección IP. Cloud DNS es la infraestructura de Google para servicio de DNS autoritativo de gran volumen que ofrece ANS al 100% (es decir, nunca deja de funcionar). Utiliza la red global de Google de servidores de nombres anycast para brindar servicio a zonas de DNS desde ubicaciones redundantes en todo el mundo, de modo que brinda una alta disponibilidad y baja latencia a tus usuarios.

Servidores web y de apps

La computadora del usuario utiliza la dirección IP que se obtiene del DNS para conectarse con el servidor web donde se implementa el código del frontend de foo.com. La lógica empresarial de la app se implementa en el servidor de apps. Esto incluye funcionalidades como servicio de autenticación, inventario y servicio de pago, entre otras. Las solicitudes a los servidores de esta app suelen limitarse a los servidores web y los servicios internos. Los servidores web y de apps se encuentran en la VPC, que brinda funcionalidades de redes administradas a todos los recursos de Google Cloud.
Arquitectura de la app
Haz clic para agrandar

En Cloud Run, App Engine, GKE y Compute Engine, tienes varias opciones para los servidores web y de apps. Echa un vistazo a dónde deberías ejecutar tus creaciones para obtener más detalles.

  • Sin servidores: Si tienes un equipo de desarrolladores, te conviene que se concentren en la codificación y no en las tareas de infraestructura y escalamiento. Cloud Run y App Engine serían excelentes elecciones. Ambas opciones funcionan sin servidores y escalan de bajo a alto tráfico según sea necesario. Si quieres ejecutar contenedores sin servidores para arquitecturas de microservicios web y basadas en eventos, te recomendamos usar Cloud Run. Cloud Run debería funcionar bien en la mayoría de los casos de uso, pero puedes echarle un vistazo a App Engine si estás desarrollando sitios web con hosting de archivos estáticos integrado.

  • Google Kubernetes Engine (GKE): Si quieres ejecutar apps en contenedores con más opciones de configuración y flexibilidad, puedes usar GKE. Ayuda a implementar apps en contenedores de manera sencilla con Kubernetes, y te brinda control de la configuración de los nodos. Escalar también es fácil: puedes definir el número de nodos a los que escalar a medida que aumenta el tráfico. A su vez, GKE ofrece autopiloto si necesitas flexibilidad y control, pero tienes operaciones y soporte de ingeniería limitados.

  • Compute Engine: Compute Engine es otra opción de máximo control. Se trata de máquinas virtuales (MV), por lo que puedes definir la configuración de tus máquinas con precisión dependiendo de la cantidad de memoria y CPU que necesites. Sin embargo, este nivel de control implica una mayor responsabilidad de tu parte a la hora de escalar, administrar, corregir y mantener las MV según sea necesario. Compute Engine funciona bien para apps antiguas con necesidades específicas y en situaciones en las que es absolutamente necesario tener un control total.

Base de datos

Por supuesto, foo.com necesita una o más bases de datos para almacenar información. Puede tratarse de una base de datos relacional o no relacional, según el tipo de datos y el caso de uso. (Para obtener lineamientos más detallados sobre cómo elegir la base de datos correcta para tu caso de uso, echa un vistazo a Tus opciones de bases de datos de Google Cloud.)

Las bases de datos relacionales de Google Cloud incluyen Cloud SQL y Cloud Spanner, y ambas son administradas.

  • Cloud SQL es ideal para cubrir necesidades genéricas de SQL (MySQL, PostgreSQL y servidor SQL).

  • Spanner es mejor para bases de datos relacionales gigantescas que necesitan escalabilidad horizontal. (Con “gigantesco”, nos referimos a miles de escrituras por segundo y cientos de miles de lecturas por segundo, a la vez que se brinda soporte a transacciones ACID.)

Para bases de datos no relacionales, Google Cloud cuenta con tres opciones principales: Firestore, Bigtable y Memorystore.

  • Firestore es una base de datos de documentos sin servidores que brinda coherencia sólida, es compatible con transacciones ACID y ofrece resultados rápidos a consultas complejas. También es compatible con datos y sincronizaciones sin conexión, por lo que es una gran opción para casos de uso móviles, así como aquellos vinculados con la Web, la IoT y los videojuegos.

  • Bigtable es una base de datos NoSQL de columnas anchas, compatible con lecturas y escrituras pesadas con una latencia extremadamente baja. Es la opción ideal para eventos, datos de serie temporal de dispositivos de IoT, datos de flujo de clics, eventos de anuncios, detección de fraude, recomendaciones y otros casos de uso relacionados con la personalización.

  • Memorystore es un servicio de almacenamiento de datos en una memoria, completamente administrado para Redis y Memcached. Es ideal para almacenamiento temporal y en caché de base de datos.

Balanceo de cargas and escalamiento

A medida que aumente el tráfico, deberás escalar los servidores web y de apps. Y a medida que aumente el número de servidores, necesitarás un balanceador de cargas para guiar al tráfico a los servidores web y de apps. Cloud Load Balancing es un sistema definido por software y completamente distribuido que se basa en direcciones IP anycast. Esto implica que puedes configurar tu frontend con una sola dirección IP. También es global, por lo que puede brindar contenido a tus usuarios tan cerca de ellos como sea posible y responder a un millón de consultas por segundo. Puedes configurar decisiones de enrutamiento basadas en contenido según atributos como el encabezado HTTP y el identificador de recursos uniforme. A su vez, ofrece balanceo de cargas integral para los servidores de apps internos, de manera que puedas dirigir el tráfico a cada uno de ellos según sea necesario.

Red de distribución de contenidos (CDN)

Los archivos estáticos no suelen cambiar, por lo que se utiliza la CDN para almacenar esos archivos en caché y ponerlos a disposición desde la ubicación más cercana al usuario, lo que ayuda a disminuir la latencia. Con el balanceador de cargas, tienes la opción de habilitar Cloud CDN para almacenar en caché aquellos medios solicitados con mucha frecuencia y el contenido web en la periferia de la ubicación más cercana al usuario. Esto reduce la latencia y optimiza el rendimiento en las últimas etapas. También ayuda a ahorrar en costos, ya que se atienden las solicitudes en la periferia para que no sea necesario que las administre el backend.

Almacén de objetos

Todos los archivos estáticos de foo.com, como los archivos de medios y las imágenes, así como CSS y JavaScript, pueden almacenarse en un almacén de objetos. En Google Cloud, Cloud Storage es el almacén de objetos indicado para cubrir tus necesidades a corto y largo plazo.

Funciones sin servidores

Digamos, por ejemplo, que foo.com también está disponible en dispositivos móviles, donde se necesita que las imágenes se muestren en formato más pequeño. Puedes separar estas funcionalidades del servidor web y convertirlas en funciones como servicio con Cloud Functions. Este abordaje también te permite aplicar tu lógica de redimensionamiento de imágenes a otras apps. Puedes activar la función sin servidor tan pronto como se agregue un archivo Cloud Storage y convertir el archivo a múltiples formatos, para luego guardarlos de nuevo en el almacenamiento, donde los utiliza el servidor web. También puedes usar funciones sin servidores para otros casos de uso, como la búsqueda de direcciones, los chatbots y el aprendizaje automático, entre otros.

Eventos

Es posible que en ciertas situaciones foo.com necesite enviar mensajes, notificaciones al usuario o eventos entre varios microservicios. En esos casos, se puede utilizar un servicio de mensajería asíncrono, como Cloud Pub/Sub, para enviar notificaciones a un tema y hacer que otros servicios suscriban a ese tema y tomen las medidas apropiadas de manera asíncrona.

Análisis de datos

Las apps como foo.com generan datos en tiempo real (por ejemplo, los datos sobre el flujo de clics) y datos en lote (por ejemplo, los registros). Es necesario ingerir, procesar y preparar esos datos para los sistemas descendentes en el almacén de datos. Desde allí, los analistas de datos, científicos de datos e ingenieros de AA pueden analizarlos para obtener información y hacer predicciones. Puedes ingerir lotes de datos con Cloud Storage o BigQuery y datos en tiempo real de la app con Pub/Sub, así como escalar a la ingesta de millones de eventos por segundo. Dataflow, basado en el modelo de código abierto Apache Beam, se puede usar para procesar y enriquecer los datos en lote y de transmisión. Si te encuentras en el ecosistema Hadoop, puedes usar Dataproc para tareas de procesamiento. Es una plataforma administrad de Hadoop y Spark que te permite concentrarte en el análisis de datos, en lugar de preocuparte por administrar y poner en marcha tu clúster de Hadoop.

Para almacenar los datos procesados, se necesita un almacén de datos. BigQuery es un almacén de datos sin servidores que es compatible con consultas SQL y puede alcanzar hasta un petabyte de almacenamiento. También funciona como un almacenamiento y data lake a largo plazo junto con Cloud Storage. Puedes usar datos de BigQuery para crear un panel de control en Looker y Data Studio. Con BigQuery ML puedes crear modelos de AA y hacer predicciones con consultas estándar de SQL.

Aprendizaje automático

Puedes utilizar BigQuery en tus proyectos de AA/IA para entrenar modelos en Vertex AI. Tus conjuntos de datos multimedia, imágenes y otros archivos estáticos de Cloud Storage pueden importarse directo a Vertex IA. Puedes crear tu propio modelo personalizado o utilizar modelos preentrenados. Es una buena idea comenzar con un modelo preentrenado y ver si funciona. Los casos de uso más comunes están cubiertos (imágenes, texto, video y datos tabulares). Si un modelo preentrenado no funciona para tu caso de uso, puedes usar el modelo de AutoML en Vertex AI para entrenar un modelo personalizado con tu propio conjunto de datos. AutoML es compatible con los casos de uso más comunes y no necesita código. Si tienes mucha experiencia interna en AA y ciencia de datos, tal vez decidas escribir el código de tu propio modelo personalizado en el framework que prefieras. Hablaremos más sobre este tema en la próxima entrada.

Operaciones

En foo.com necesitamos un seguimiento integral para asegurarnos de que los servidores y cada elemento de la arquitectura funcionan correctamente. La suite de operaciones de Google Cloud cuenta con todas las herramientas necesarias para registras, supervisar, depurar y solucionar problemas en tu app e infraestructura.

DevOps

También debes asegurarte de que los equipos de desarrollo y operaciones de foo.com tengan el acceso y las herramientas indicados para desarrollar e implementar la app. A medida que los desarrolladores escriben el código de la app, pueden utilizar Cloud Code dentro del IDE para enviar el código a Cloud Build, que luego lo empaqueta y lo prueba, ejecuta escaneos de vulnerabilidad en el código, invoca autorización binaria para comprobar si hay imágenes de contenedor de confianza y, una vez superadas las pruebas, implementa el paquete para la etapa de pruebas. A partir de allí, puedes crear un proceso de revisión y pasar a la producción. Las imágenes del contenedor se almacenan en Artifact Registry, desde donde se las puede implementar en GKE o Cloud Run. Las imágenes de Compute Engine se almacenan en tu proyecto.

Seguridad

foo.com necesita seguridad en torno a los datos, la app, los usuarios e identidades, la infraestructura y el cumplimiento. Hablaremos en detalle sobre este tema en otra entrada.

Conclusiones

Esta es una de las maneras de desarrollar una app web como foo.com en Google Cloud. Es un punto de partida, pero las posibilidades a partir de allí son infinitas. ¿Quieres dar tus primeros pasos en el desarrollo de sitios web en Google Cloud? Echa un vistazo a estos recursos. Para obtener más contenido sobre #GCPSketchnote y la nube, sígueme en Twitter @pvergadia y no dejes de ver thecloudgirl.dev.


Publicado por Greg Hartrell, director de producto, Games on Play/Android

Google for Games Developer Summit 

Con el paso del tiempo, vimos que los juegos y las apps no son solo experiencias: son negocios, liderados por personas talentosas como ustedes. Por lo tanto, nuestro objetivo es seguir apoyando sus empresas para que liberen aún más su potencial. En nuestra más reciente Google for Games Developer Summit, compartimos cómo los equipos de Google siguen compilando la nueva generación de servicios, herramientas y funciones a fin de ayudarlos a crear y monetizar experiencias de alta calidad; más programas adaptados a sus necesidades, y más recursos educativos sobre prácticas recomendadas. 


Publicado por Greg Hartrell, director de producto, Games on Play/Android

Google for Games Developer Summit 

Con el paso del tiempo, vimos que los juegos y las apps no son solo experiencias: son negocios, liderados por personas talentosas como ustedes. Por lo tanto, nuestro objetivo es seguir apoyando sus empresas para que liberen aún más su potencial. En nuestra más reciente Google for Games Developer Summit, compartimos cómo los equipos de Google siguen compilando la nueva generación de servicios, herramientas y funciones a fin de ayudarlos a crear y monetizar experiencias de alta calidad; más programas adaptados a sus necesidades, y más recursos educativos sobre prácticas recomendadas. 

Queremos ayudarlos durante todo el ciclo de vida de desarrollo de juegos facilitando la creación de títulos de alta calidad y la publicación de experiencias increíbles a un creciente número de personas y dispositivos.


Facilitamos la implementación de juegos en más pantallas 
Para habilitar juegos en más pantallas y dispositivos, queremos ayudarlos a localizar a los jugadores y ofrecerles la posibilidad de jugar donde quieran. 

  • El juego en tablets, dispositivos plegables y Chromebooks está en ascenso, por lo que tienen la oportunidad de brindar experiencias más interesantes y envolventes que nunca. En 2021, el uso de Android en CrOS creción un 50%, en comparación con el anterior, gracias a los juegos. 
  • En enero, lanzamos la beta de Google Play Juegos para PC en Corea del Sur, Taiwán y Hong Kong. Esta aplicación independiente para Windows PC compilada por Google les permite a los usuarios jugar un catálogo de títulos de Google Play de alta calidad sin interrupciones en sus teléfonos móviles, tablets, Chromebooks y (ahora) Windows PC. Obtengan más información a fin de comenzar a optimizar sus juegos para más pantallas.
  • El año pasado, anunciamos el programa beta Play as you download (Juega mientras descargas) y pronto lo pondremos a disposición de todos los usuarios de Android 12. Este programa les permite a los usuarios entrar al juego en segundos, mientras se descargan los elementos en segundo plano, y solo requiere realizar unos pequeños cambios a la implementación subyacente. Pueden registrarse para acceder a la beta aquí.

Facilitamos el desarrollo de juegos de alta calidad

Nos comprometemos a apoyar la compilación de juegos para Android de alta calidad enfocándonos en herramientas y SDK que simplifiquen el desarrollo y brinden estadísticas sobre los juegos; además, nos asociamos con motores de juego como los c/c++ nativos particulares. El año pasado, lanzamos el kit para desarrolladores de juegos para Android (AGDK), un conjunto de herramientas y bibliotecas para mejorar la eficiencia del desarrollo de juegos para Android, y realizamos varias mejoras en función de los comentarios de los desarrolladores.

  • La Android Game Development Extension les permite a los desarrolladores compilar para Android directamente desde Visual Studio. Para facilitar la depuración en Java y C, AGDE ahora incluirá compatibilidad cruzada con Android Studio y Visual Studio a fin de que puedan abrir y editar sus proyectos de AGDE en el depurador de Android Studio. 
  • La nueva biblioteca de la API de Memory Advie (beta) que se agregó a AGDK ayuda a los desarrolladores a comprender el consumo de memoria combinando los mejores indicadores en un determinado dispositivo a fin de determinar las probabilidades de cierre por baja memoria.
  • Finalmente, lanzamos el perfilador de fotogramas de Android GPU Inspector para ayudarlos a comprender cuándo su juego cae en cuello de botella entre la GPU y la CPU, y optimizar la tasa de fotogramas y la duración de batería.

Más herramientas para alcanzar el éxito en Google Play

Play Console es un invaluable recurso en el ciclo de vida de un juego, ya que tiene herramientas y estadísticas que sirven tanto antes como después del lanzamiento. 

  • Seguimos invirtiendo en programas para ayudar a desarrolladores de todos los tamaños a expandir sus empresas en Google Play. Para nuestros desarrolladores más grandes, lanzamos el Google Play Partner Program for Games, que ofrece herramientas de crecimiento y servicios premium adicionales personalizados para las necesidades exclusivas de los desarrolladores de ese calibre.
  • Reach and devices ayuda a tomar decisiones fundamentales sobre para qué dispositivos compilar, dónde realizar el lanzamiento y qué probar tanto antes como después del lanzamiento. Ya muestra las distribuciones de instalaciones y problemas en una variedad de atributos de dispositivo. Hoy, lanzaremos las distribuciones de ingresos y de incremento de ingresos en Google Play para sus juegos y sus pares a fin de que puedan compilar casos comerciales basados en los ingresos y resolver problemas relacionados o realizar segmentación de dispositivos, si esta opción se adapta más a su modelo comercial que las instalaciones.
  • Hace poco, lanzamos una guía estratégica en Console, que brinda una forma intuitiva de evaluar el rendimiento de monetización de un juego a fin de buscar oportunidades para incrementar los ingresos. Podríamos decir que Reach & devices ayuda a comprender las oportunidades de ingresos desde una perspectiva técnica, mientras que la guía estratégica lo hace desde una perspectiva comerical. Por lo tanto, pueden combinar ambas herramientas y obtener un panorama holístico de sus fuentes de ingresos de compras directas desde la aplicación.
  • Android vitals permite supervisar y mejorar la estabilidad de los juegos en Google Play. Para aquellos que tienen juegos con presencia global, acabamos de lanzar desgloses por país y filtros para las métricas vitales, por lo que será más fácil priorizar y resolver problemas de estabilidad. Además, hoy lanzaremos la API de Developer Reporting, que brinda acceso programático a las principales métricas de Android vitals y datos de problemas, incluidos índices de fallos y ANR, clústeres y stack traces.

Obtengan más información sobre todo lo que compartimos en Google for Games Developer Summit y visiten g.co/android/games para obtener documentación y recursos adicionales. Seguimos con nuestro compromiso de apoyar el ecosistema de desarrolladores y apreciamos mucho su flujo continuo de comentarios y sus inversiones en pos de crear experiencias de juego de alta calidad para los jugadores de todo el mundo.