• No se han encontrado resultados

CURSOS DE VERANO 2014

N/A
N/A
Protected

Academic year: 2021

Share "CURSOS DE VERANO 2014"

Copied!
7
0
0

Texto completo

(1)

Google App Engine

CURSOS DE VERANO 2014

CLOUD COMPUTING: LA INFORMÁTICA

COMO SERVICIO EN INTERNET

La plataforma Google Cloud Platform.

Google App Engine

Pedro A. Castillo Valdivieso

Universidad de Granada

(2)

Google App Engine

La plataforma Google Cloud Platform

La plataforma Cloud de Google es una de las más avanzadas del mundo

contando con miles de kilómetros de fibra óptica, grandes redes informáticas y servicios de almacenamiento muy avanzados. Incluso tienen su propio cable de fibra óptica bajo el Océano Pacífico.

Google Cloud Platform pone a nuestra disposición todos los servicios que necesita la arquitectura de la aplicación que estemos desarrollando:

• Máquinas Virtuales

• Plataforma administrada

• Almacenamiento de blob

• Almacenamiento por bloques

• Almacén de datos NoSQL

• Base de datos MySQL

• Análisis de Big Data

Podemos distinguir los servicios por plataformas:

• App Engine: nos proporciona herramientas para el desarrollo de nuestro

código sin preocuparnos por las revisiones ni el mantenimiento.

• Compute Engine: que nos permite el acceso a máquinas virtuales RAW.

• Cloud SQL y Cloud Datastore: Para obtener bases de datos MySQL ó

NoSQL sin esquema. Cloud Storage: Nos proporciona almacenamiento flexible de objetos con almacenamiento en la memoria caché perimetral global.

• Google también nos permite utilizar su API para habilitar rápidamente

una amplia gama de funciones para la aplicación.

Introducción a la plataforma Google Compute Engine

Google Compute Engine es un producto que ofrece máquinas virtuales flexibles y autoadministradas alojadas en la nube de Google. Incluye máquinas virtuales basadas en Linux que se ejecutan en KVM. Consta de opciones de

almacenamiento local y permanente una sencilla API basada en REST para la configuración y el control. Con Google Compute Engine se pueden resolver problemas analíticos y de procesamiento a gran escala en la infraestructura de procesamiento, almacenamiento y redes de Google.

Google Compute Engine usa como servicio IaaS (Infraestructura como servicio), es una componente de la plataforma de la nube de Google. Compute Engine permite a los usuarios lanzar máquinas virtuales bajo demanda. Cada máquina virtual se cobra por un mínimo de 10 minutos, seguido por incrementos de 1

(3)

Google App Engine

minuto.

Los servicios que ofrece Google Compute Engine son:

• Creación de máquinas virtuales con diferentes configuraciones:

o Puedes iniciar una imagen de arranque de Ubuntu 12.04 o CentOS

6.2 o puedes crear tu propia imagen.

o Creación de instancias de máquinas virtuales.

• Mantenimiento y almacenamiento de datos en almacenamiento de

bloques persistente:

o En Google Compute Engine se pueden montar discos persistentes

que mantengan el estado de las máquinas, los datos de estos discos se conservan aunque la máquina virtual sufra algún error o se deje sin conexión. Estos datos también se replican para tener más redundancia.

• Administración del acceso de red a las máquinas virtuales:

o La máquinas se pueden utilizar independientemente o

conectándolas para formar clúster de procesamiento.

o Las máquinas virtuales se pueden conectar a Internet con

direcciones IPv4 estáticas y efímeras para las instancias.

o Utilización de cortafuegos.

o Creación de redes interna de máquinas virtuales.

o Ofrece un sólido aislamiento para proteger las instancias frente a

accesos no deseados.

• Uso de varias herramientas y autenticación OAuth 2.0 para administrar

las máquinas virtuales:

o Aprovecha las funciones de OAuth 2.0 para realizar la

autenticación en la API de RESTful a fin de crear y eliminar instancias, discos y otros recursos de las máquinas virtuales.

o Utilizar identidades de cuenta de servicio para autenticar las

instancias en otros servicios y eliminar la necesidad de insertar claves en las instancias de máquina virtual.

En Google Compute Engine, instancia es el término que se utiliza para nombrar a las máquinas virtuales. Cada instancia, va a ejecutar el sistema operativo que decidamos proporcionado en forma de imagen estándar por Google Compute Engine o bien proporcionada y modificada por el usuario. Opcionalmente, el usuario puede especificar el número de CPUs, memoria RAM y otras

propiedades de la máquina.

Para realizar la configuración y administración de una instancia de una forma básica, se puede usar la herramienta que nos ofrece Google Compute Engine, el API de REST, o la propia consola web. Se puede acceder a la instancia mediante SSH teniendo así un control total. Esto nos brinda la posibilidad de instalar todos los paquetes que necesitemos en esa instancia, realizar copias de

(4)

Google App Engine

seguridad, gestionar errores, etc. Un proyecto puede tener una o varias instancias que además se pueden comunicar entre sí pero, una instancia solamente puede pertenecer a un proyecto. Cuando se inicie una instancia, se debe de especificar a qué proyecto va a pertenecer.

Introducción a Google App Engine

Google App Engine es la propuesta de alojamiento web que ofrece Google. Es un servicio de “Plataforma como Servicio” (se ofrece un entorno de desarrollo que consiste en una abstracción del medio en el que se ejecuta la aplicación, es decir, el desarrollador no tiene que preocuparse en la instalación y optimización de software para ejecutar su aplicación, sino que tan solo tiene que coger las bibliotecas y recursos que le son ofrecidos).

Una de las características más importantes es su fácil escalabilidad. El servicio que te ofrece se ajusta a medida de que el tráfico va subiendo. Es sencillo mantener y crear aplicaciones en AppEngine, ya que no hay que preocuparse de mantener ninguna infraestructura, solo de diseñar y programar la aplicación. Dispone de cuatro lenguajes: PHP, Python, Go y Java (realmente cualquiera que ejecute sobre JVM). Las ventajas que nos pueden ofrecer son:

• Go: es un lenguaje desarrollado por Google. Es concurrente y está muy

orientado a la nube. Como principal problema, se encuentra en fase experimental y los cambios son constantes, por lo que las

actualizaciones de Google traen inestabilidad a las aplicaciones desarrolladas en este lenguaje

• PHP: es un lenguaje de programación de propósito general en el lado del

servidor. Es el más extendido en la Red. Su integración con Google App Engine aún se encuentra en fase de pruebas, por lo que también ofrece cierta inestabilidad.

• Java: es un lenguaje de propósito general, concurrente, orientado a

objetos y basado en clases.

• Python: es un lenguaje de programación orientado a objetos e

imperativo. Su filosofía se basa en un código legible.

Dispone de un modelo gratuito en el que dichas cuentas tienen un límite de 500 megabyte de almacenamiento permanente y la suficiente cantidad de ancho de banda y CPU para cinco millones de visitas mensuales, y si la aplicación supera estas cuotas, se pueden comprar cuotas adicionales. Entre sus características, están:

(5)

Google App Engine

• Soporte para diversos framewoks (en el caso de Python, soporta

CherryPy, Pylons, Flask y Django 0.96 y 1.2).

• Solo se puede ejecutar código a través de consultas HTTP.

• No soporta sesiones persistentes, solo sesiones replicadas a las que

además se les aplican ciertos límites.

• Utilización de memoria caché distribuida.

• API para el envío de mensajes de correo electrónico.

• Escalabilidad gracias a la utilización de instancias.

• Integrable con otros servicios de Google.

Por otro lado, la plataforma presenta algunas restricciones:

• El acceso al sistema de archivos que usa AppEngine es de sólo lectura,

es decir, no se permite la escritura de archivos en el sistema.

• Las aplicaciones no tienen acceso a Internet directamente. Si quieren

acceder a algún recurso deben usar el servicio que hay preparado a tal efecto.

• Ningún lenguaje de programación puede puede usar librerías externas

que no sean propias del lenguaje. Por ejemplo usar librerías C o tener extensiones con código previamente compilado.

• Las aplicaciones tienen un límite de tiempo. Una aplicación iniciada en un

servidor, no puede tardar en responder una petición más de un tiempo determinado, en este caso 60 segundos.

• En el modo gratuito sólo se pueden crear hasta 25 aplicaciones, que se

pueden registrar desde https://appengine.google.com/ utilizando una cuenta de Google.

Servicios más importantes de los que dispone

Datastore

El almacén de datos que ofrece Google para AppEngine es un almacén que utiliza un esquema basado en NoSQL. Aun así, dicho almacén

garantiza las características ACID (Atomicidad, Consistencia, Aislamiento y Durabilidad). Además es transparentemente escalable.

Se pueden realizar consultas usando la API de clases y funciones que hay disponible en todos los lenguajes de programación. Adicionalmente algunas de ellas se pueden escribir en un lenguaje denominado GQL, muy parecido a un SQL básico. En las consultas a las bases de datos, no se encuentra disponible la sentencia JOIN, es preferible desnormalizar los datos por eficiencia. Para el almacenamiento de datos, se usa en la actualidad High Replication Datastore (HRD), en los que se replica los datos en varios centros distribuidos por todo el planeta.

(6)

Google App Engine

Blobstore

Blobstore permite al usuario que su aplicación pueda almacenar objetos de gran tamaño. Estos objetos se llaman blobs. Los blobs se suelen usar para almacenar archivos como sustitutivo del sistema de archivos. Memcache

Un almacén en memoria extremadamente rápido que te permite guardar valores en caché asociados a una clave. No ofrece ninguna garantía de permanencia de los datos, pero permite al desarrollador optimizar su aplicación hasta límites de escalabilidad insospechados.

URL fetch

Como se ha explicado anteriormente, una aplicación no tiene acceso a internet. Para solucionar el problema, existe el servicio URL Fetch. Dicho servicio permite hacer peticiones a direcciones URL y recibir la

respuesta.

El servidor no te da la respuesta hasta que no termina de recibirla. Es decir, no sirve para leer streamings o tecnologías similares.

Taskqueue

AppEngine pone a la disposición del usuario una cola de tareas, en la que se pueden realizar trabajos en segundo plano.

MapReduce

MapReduce es un algoritmo propietario de Google pero extremadamente útil para procesar grandes volúmenes de datos en relativamente poco tiempo. Permite paralelizar también automáticamente ese procesamiento dentro de los centros de datos. Con esta herramienta Google nos da acceso a este algoritmo. Podemos especificar los datos de origen, los manejadores que se encargarán del “map” y del “reduce”, y los datos de salida. De todo lo demás se encarga el propio AppEngine ofreciéndonos incluso una consola donde podemos ir viendo el estado actual y qué trabajos lleva ya hechos.

Backends

Se pueden reservar instancias que se estén ejecutando continuamente sin apagarse ni escalar. Estas instancias se denominan backends. Servidor de desarrollo

Google pone a disposición del usuario un servidor de desarrollo. Dicho servidor, es una réplica del servidor real de producción, pero mucho más pequeño y menos potente. Su función es permitir a los usuarios probar y desarrollar sus aplicaciones en un entorno local, sin la

(7)

Google App Engine

necesidad de estar subiendo de forma permanente el código de la aplicación al servidor real.

El servidor sólo está preparado para realizar pruebas de desarrollo, por lo que Google ofrece un servidor sin escalabilidad. Tampoco es un seguro, ya que no aporta protección alguna.

Referencias

https://cloud.google.com/products/compute­engine/ https://cygwin.com/install.html https://developers.google.com/compute/docs/gcutil/?hl=es­ES https://developers.google.com/compute/docs/hello_world?hl=es­ES https://developers.google.com/compute/docs/overview?hl=es­ES https://developers.google.com/compute/docs/?hl=es­ES https://developers.google.com/compute/docs/signup

http://stackoverflow.com/questions/3647569/how­do­i­install­curl­on­cygwin http://spain.emc.com/corporate/glossary/platform-as-a-service.htm https://developers.google.com/appengine/features/ https://developers.google.com/appengine/docs/quotas https://developers.google.com/appengine/downloads https://developers.google.com/appengine/docs/php/refdocs/ https://developers.google.com/appengine/training/

Referencias

Documento similar

(1886-1887) encajarían bien en una antología de textos históricos. Sólo que para él la literatura es la que debe influir en la historia y no a la inversa, pues la verdad litera- ria

Habiendo organizado un movimiento revolucionario en Valencia a principios de 1929 y persistido en las reuniones conspirativo-constitucionalistas desde entonces —cierto que a aquellas

De hecho, este sometimiento periódico al voto, esta decisión periódica de los electores sobre la gestión ha sido uno de los componentes teóricos más interesantes de la

In medicinal products containing more than one manufactured item (e.g., contraceptive having different strengths and fixed dose combination as part of the same medicinal

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

This section provides guidance with examples on encoding medicinal product packaging information, together with the relationship between Pack Size, Package Item (container)

Package Item (Container) Type : Vial (100000073563) Quantity Operator: equal to (100000000049) Package Item (Container) Quantity : 1 Material : Glass type I (200000003204)