47
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 http://bit.ly/unia2014 1

CURSOS DE VERANO 2014mercurio.ugr.es/pedro/tutoriales/googleappengine/presentacion1... · MySQL ó NoSQL sin esquema. ! ... Un proyecto puede tener una o varias instancias comunicadas

  • Upload
    vunhu

  • View
    215

  • Download
    0

Embed Size (px)

Citation preview

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 http://bit.ly/unia2014 1

Presentación

2

Presentación

3

Índice Parte teórica

La plataforma Google Cloud Platform Introducción a la plataforma Google Compute Engine Introducción a Google App Engine Ventajas de Google App Engine Restricciones de Google App Engine Servicios más importantes de los que dispone

Parte práctica Instalación del SDK de Google App Engine Crear la primera aplicación Crear formularios Aplicación con contenido estático Usar servicios de Google Entorno de ejecución PHP

4

Índice. Parte teórica

!  La plataforma Google Cloud Platform

Introducción a la plataforma Google Compute Engine

Introducción a Google App Engine

Ventajas de Google App Engine

Restricciones de Google App Engine

Servicios más importantes de los que dispone

5

Google Cloud Platform

La plataforma Cloud de Google.

Miles de kilómetros de fibra óptica.

Grandes redes informáticas.

Servicios de almacenamiento avanzados.

Cable de fibra óptica propio bajo el Océano Pacífico.

6

Google Cloud Platform

Servicios disponibles para la arquitectura de una aplicación:

!  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

7

Google Cloud Platform

Servicios ofrecidos:

!  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 uso de máquinas virtuales. !  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.

8

Niveles en el Cloud Computing

Servicios ofrecidos:

!  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 uso de máquinas virtuales. !  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.

9

Índice. Parte teórica

La plataforma Google Cloud Platform

!  Introducción a la plataforma Google Compute Engine

Introducción a Google App Engine

Ventajas de Google App Engine

Restricciones de Google App Engine

Servicios más importantes de los que dispone

10

Google Compute Engine

IaaS (Infraestructura como servicio)

Ofrece máquinas virtuales flexibles y autoadministradas alojadas en la nube de Google.

Lanzar máquinas virtuales bajo demanda.

Máquinas virtuales basadas en Linux que se ejecutan en KVM.

Procesamiento a gran escala.

Cada máquina virtual se cobra por un mínimo de 10 minutos, seguido por incrementos de 1 minuto.

11

Google Compute Engine

Los servicios que ofrece Google Compute Engine son (I)

!  Creación de máquinas virtuales con diferentes configuraciones: !  Imagen de arranque de Ubuntu 12.04, CentOS 6.2, o imagen propia. !  Creación de instancias de máquinas virtuales.

!  Mantenimiento y almacenamiento de datos en almacenamiento de bloques persistente: !  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.

12

Google Compute Engine

Los servicios que ofrece Google Compute Engine son (II)

!  Administración del acceso de red a las máquinas virtuales: !  La máquinas se pueden utilizar independientemente o conectándolas

para formar clúster de procesamiento. !  Las máquinas virtuales se pueden conectar a Internet con direcciones

IPv4 estáticas o dinámicas. !  Utilización de cortafuegos + aislamiento para proteger las instancias. !  Creación de redes interna de máquinas virtuales.

!  Uso de varias herramientas y autenticación OAuth 2.0 para administrar las máquinas virtuales: !  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.

!  Utilizar identidades de cuenta de servicio para autenticar las instancias en otros servicios y eliminar la necesidad de insertar claves.

13

Google Compute Engine

Instancia es el término que se utiliza para nombrar a las máquinas virtuales.

Cada instancia ejecuta el sistema operativo que decidamos.

El usuario puede especificar el número de CPUs, memoria RAM y otras propiedades de la máquina.

Usar la herramienta de Google Compute Engine, el API de REST, o la propia consola web.

Acceso mediante SSH.

Un proyecto puede tener una o varias instancias comunicadas entre sí. 14

Índice. Parte teórica

La plataforma Google Cloud Platform

Introducción a la plataforma Google Compute Engine

!  Introducción a Google App Engine

Ventajas de Google App Engine

Restricciones de Google App Engine

Servicios más importantes de los que dispone

15

Google App Engine (GAE)

Herramienta para el alojamiento de aplicaciones web escalables sobre la infraestructura de Google.

Permitir al desarrollador web crear aplicaciones web escalables sin ser un experto en sistemas.

Servicio de PaaS (Plataforma como Servicio).

Entorno de desarrollo que consiste en una abstracción del medio en el que se ejecuta la aplicación.

El desarrollador solo tiene que usar las bibliotecas y recursos que le son ofrecidos.

16

Google App Engine (GAE)

¿Por qué esta plataforma?

!  Más de 250000 desarrolladores. !  Más de 250 millones de páginas servidas diariamente. !  Más de 10000 aplicaciones. !  Más de 62 millones de usuarios.

17

Pero, ¿por qué GAE?

¿Por qué esta plataforma?

!  Más de 250000 desarrolladores. !  Más de 250 millones de páginas servidas diariamente. !  Más de 10000 aplicaciones. !  Más de 62 millones de usuarios.

18

Pero, ¿por qué GAE?

Porque abarcarlo todo es complicado.

Dificultades y complicaciones para mantener la disponibilidad del servicio.

Costes que salen cuando quieres hacerlo todo: !  Mantener el software actualizado !  Precio de licencias !  Mantenimiento !  Ancho de banda y tráfico !  Actualizaciones del hardware

19

¿Qué ofrece GAE?

SDK, herramientas.

Alta disponibilidad.

Tolerancia a fallos.

Balanceo de carga.

Servicios en la nube.

Desarrollo en varios lenguajes.

20

Google App Engine (GAE)

Carácterísticas (I):

!  Limita la responsabilidad del programador al desarrollo y primer despliegue: GAE provee recursos computacionales dinámicamente

!  Toma control de los picos de tráfico: Si nuestro portal crece en popularidad, no es necesario actualizar nuestra infraestructura (servidores, BBDD).

21

Google App Engine (GAE)

Carácterísticas (II):

!  Ofrece replicación y balanceo de carga automática.

!  Fácilmente integrable con otros servicios de Google: Se pueden usar componentes existentes y la librería de APIs de Google (email, autenticación, pagos, etc.)

22

Google App Engine (GAE)

Carácterísticas (III):

!  Ofrece una plataforma completa para el alojamiento y escalado automático de aplicaciones, consistiendo en: !  Servidores de aplicaciones Python, Java, Go, PHP !  La base de datos BigTable !  El sistema de almacenamiento GFT

!  Como desarrollador sólo hay que subir el código a Google, lanzar la aplicación, y monitorizar el uso y otras métricas.

23

Google App Engine (GAE)

Carácterísticas (IV):

!  Incluye librerías estándar de Python, Java, Go y PHP.

!  No todas las acciones se permiten (acceso a ficheros, llamadas al SO, algunas llamadas de red).

!  Ejecución en un entorno restringido para permitir que las aplicaciones escalen.

24

Google App Engine (GAE)

!  Estructura de componentes de la plataforma.

!  Ejecución en el “sandbox”.

!  Acceso a los servicios de Google.

!  Énfasis en la seguridad.

25

Google App Engine

Facturación: !  Hasta 25 aplicaciones gratuitas con 500 MB de almacenamiento y 5

millones de visitas al mes cada una. !  Página de presupuestado y facturación de recursos: https://developers.google.com/appengine/pricing?hl=es !  Detalles sobre las cuotas en: https://developers.google.com/appengine/docs/quotas?hl=es

26

Google App Engine

Parte gratuita:

!  ~ 5 millones de páginas servidas al mes !  6.5 horas de CPU por día !  1 GB almacenamiento !  650K peticiones de URL al día !  2000 destinatarios de email !  1 GB de ancho de banda al día !  100000 tareas en cola !  650K mensajes XMPP por día

27

Índice. Parte teórica

La plataforma Google Cloud Platform

Introducción a la plataforma Google Compute Engine

Introducción a Google App Engine

!  Ventajas de Google App Engine

Restricciones de Google App Engine

Servicios más importantes de los que dispone

28

Ventajas del GAE

!  Una de las características más importantes es su fácil escalabilidad.

!  El servicio que ofrece se ajusta a medida de que el tráfico va subiendo.

!  Facilidad para mantener y crear aplicaciones en AppEngine.

!  No hay que preocuparse de mantener ninguna infraestructura, solo de diseñar y programar la aplicación.

29

Ventajas del GAE

Lenguajes disponibles:

!  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 Internet. Su integración con Google App Engine aún se encuentra en fase de pruebas, por lo que también ofrece cierta inestabilidad.

30

Ventajas del GAE

Lenguajes disponibles:

!  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.

31

Ventajas del GAE

Modelo gratuito en el que dichas cuentas tienen: !  un límite de 500 MB de almacenamiento permanente !  suficiente ancho de banda y CPU para cinco millones de visitas

mensuales

Se pueden comprar cuotas adicionales.

Posibilidad de usar los métodos de almacenamiento de Google.

Soporte para diversos framewoks (en el caso de Python, soporta CherryPy, Pylons, Flask y Django 0.96 y 1.2).

32

Ventajas del GAE

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.

33

Índice. Parte teórica

La plataforma Google Cloud Platform

Introducción a la plataforma Google Compute Engine

Introducción a Google App Engine

Ventajas de Google App Engine

!  Restricciones de Google App Engine

Servicios más importantes de los que dispone

34

Restricciones del GAE

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 usar librerías externas que no sean propias del lenguaje. Por ejemplo usar librerías C o tener extensiones con código previamente compilado.

35

Restricciones del GAE

Restricciones:

!  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 igual a 60 segundos.

!  En el modo gratuito sólo se pueden crear hasta 25 aplicaciones, que se pueden registrar utilizando una cuenta de Google.

!  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.

36

Índice. Parte teórica

La plataforma Google Cloud Platform

Introducción a la plataforma Google Compute Engine

Introducción a Google App Engine

Ventajas de Google App Engine

Restricciones de Google App Engine

!  Servicios más importantes

37

Servicios del GAE

!  Datastore

!  Blobstore

!  Memcache

!  URL fetch

!  Taskqueue

!  MapReduce

38

Servicios del GAE

!  Datastore El almacén de datos que ofrece Google para AppEngine es un

almacén que utiliza un esquema basado en NoSQL.

Garantiza las características de Atomicidad, Consistencia, Aislamiento y Durabilidad.

Es transparentemente escalable.

Se pueden realizar consultas usando la API de clases y funciones que hay disponible en todos los lenguajes de programación.

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.

39

Servicios del GAE

!  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.

40

Servicios del GAE

!  Memcache Un almacén en memoria extremadamente rápido que permite

guardar valores en caché asociados a una clave.

No ofrece ninguna garantía de permanencia de los datos.

Permite al desarrollador optimizar su aplicación.

41

Servicios del GAE

!  URL fetch Como la aplicación no tiene acceso a internet, se usa este

servicio para hacer peticiones a direcciones URL y recibir la respuesta.

El servidor no da la respuesta hasta que no termina de recibirla.

42

Servicios del GAE

!  MapReduce Algoritmo muy útil para procesar grandes volúmenes de datos en

relativamente poco tiempo.

Permite paralelizar ese procesamiento entre los centros de datos.

Se pueden especificar los datos de origen, los manejadores y los datos de salida.

Se ofrece una consola donde podemos ir viendo el estado actual y qué trabajos lleva hechos.

43

Servicios del GAE

!  Taskqueue Este servicio pone a la disposición del usuario una cola de tareas,

en la que se pueden realizar trabajos en segundo plano.

!  Backends Se pueden reservar instancias que se estén ejecutando

continuamente sin apagarse ni escalar.

Estas instancias se denominan backends.

44

Servicios del GAE

!  Servidor de desarrollo Google pone a disposición del usuario un servidor de desarrollo.

Es una réplica del servidor real de producción, pero mucho más pequeño y menos potente.

Permite a los usuarios probar y desarrollar sus aplicaciones en un entorno local, sin la necesidad de estar subiendo de forma permanente el código de la aplicación al servidor real.

Se usa para pruebas de desarrollo, pero no aporta protección ni escalabilidad.

45

Referencias y materiales adicionales http://www.kumo.com.co/portal/index.php/pages/blog/175-ventajas-y-desventajas-del-cloud-computing http://cloud-computing.findthebest.com/compare/5-15-17/Amazon-Inc-vs-Google-App-Engine-vs-Microsoft

http://en.wikipedia.org/wiki/Infrastructure_as_a_Service http://en.wikipedia.org/wiki/Google_Compute_Engine http://en.wikipedia.org/wiki/Google_App_Engine

Lenguaje YAML: http://www.yaml.org Lenguaje de programació ́n Go (web oficial): http://golang.org Lenguaje de programación PHP (web oficial): http://www.php.net Lenguaje de programación Java (web oficial): http://www.java.com

https://cloud.google.com/products/compute-engine/ https://cloud.google.com/customers/?hl=es-NI

https://developers.google.com/appengine/ https://developers.google.com/appengine/features/ https://developers.google.com/appengine/docs/whatisgoogleappengine

https://developers.google.com/compute/docs/overview https://developers.google.com/compute/docs/faq?hl=es https://developers.google.com/compute/docs/?hl=es-ES https://developers.google.com/compute/docs/overview?hl=es-ES

https://gae-php-tips.appspot.com 46

Índice Parte teórica

La plataforma Google Cloud Platform Introducción a la plataforma Google Compute Engine Introducción a Google App Engine Ventajas de Google App Engine Restricciones de Google App Engine Servicios más importantes de los que dispone

Parte práctica Instalación del SDK de Google App Engine Crear la primera aplicación Crear formularios Aplicación con contenido estático Usar servicios de Google Entorno de ejecución PHP

47