INSTITUTO TECNOLÓGICO DE TOLUCA

INGENIERÍA EN SISTEMAS COMPUTACIONALES


“Desarrollo de la aplicación”



ASIGNATURA
Fundamentos de Desarrollo de Sistemas



PROFESOR(A)
Dra. Citlalih Gutiérrez Estrada



POR:
Abigail Ahumada Hernández
Miguel Ángel Ramírez Bautista
Ulises Emmanuel Pérez García
Misael González Hernández






METEPEC, ESTADO DE MÉXICO A 09 DE DICIEMBRE DE 2011

SEP SNEST DGEST

2
RESUMEN

El presente documento muestra el proceso del proceso de la aplicación creada en un
lenguaje de java, php y html en la plataforma de eclipse, que se encuentra almacenada en
un servicio de cloud computing. En este caso utilizamos google app engine para la
ejecución de nuestra aplicación utilizando su infraestructura. Ya hecho todo el análisis y
teniendo la información suficiente, se puede proceder a lo que es la programación de
dicha aplicación. Algo que se tomo en cuenta fue cual proveedor de este servicio llamado
cloud computing nos convenía mas utilizar basándonos en las características y
requerimientos de nuestra aplicación. Nuestra mejor opción fue Google App Engine ya
que proporciona un entorno de aplicación completamente integrado, por lo que no
requiere ensamblajes ni procesos complicados. También nos permite utilizar hasta 500
MB de almacenamiento permanente, y su ancho de banda alcanza a soportar 5 millones
de visitas por mes. La seguridad de la información almacenada es de gran relevancia,
podemos asegurar que es confiable ya que google nos brinda cierta seguridad en lo que se
refiere al código y base de datos. Por último podemos decir que la aplicación no necesita
estar instalada en alguna computadora, y que no necesita un dispositivo especial para
ingresar. Y se puede acceder desde cualquier parte con cualquier computadora con
conexión a internet.













3

Índice




Introducción……………………………………………………………………4




Fundamentos………………………………………………………………….5




Método…………………………………………………………………………..9




Resultados………………………………………………………………………15





Fuentes Consultadas………………………………………………………17











4
Introducción


El cloud computing es una nueva tendencia tecnológica, es un concepto surgido de la
necesidad de desplazar a servidores en Internet, dedicados a este fin, todas las
aplicaciones y documentos que el usuario utiliza diariamente para su labor, con el objetivo
de que el mismo pueda disponer de dichos elementos en el momento que los necesite y
desde cualquier lugar del planeta, para poder cumplir con su trabajo más allá de la
situación en la que se encuentre.

Es decir, los programas ya no serán utilizados de la forma en que solemos hacerlo. Cabe
destacar que en este concepto las aplicaciones son consideradas en realidad servicios, a
los que podrá acceder el usuario siempre que se encuentre "online", es decir que
disponga de una conexión a Internet.

De esta forma, cualquier usuario más allá del lugar o momento en que se encuentre,
podrá utilizarlos y acceder a sus datos en la "nube".

Hace ya unos años, esta tecnología ha brindado ventajas impensables, cuando lo
realmente importante se centraba en el poder de cómputo del hardware, ya que para la
utilización de estos servicios o "Cloud Apps" no será necesario invertir grandes sumas de
dinero en sofisticados y poderosos equipos informáticos.

Si bien diversos destacados especialistas en la materia consideran a este fenómeno como
algo "pasajero", e incluso en algunos casos hasta se ha llegado a definir a la Cloud
Computing como "una trampa", lo cierto es que esta revolucionaria mirada sobre el futuro
de la informática no debe ser dejada de lado.





5
Fundamentos

Definición de Cloud Computing
El Cloud Computing, o Computación en la Nube, nace de los términos: Cloud y Computing
[1].
Cloud, o Nube, es el símbolo que se usa generalmente para representar la Internet.
Computing, o Computación, reúne los conceptos de informática, lógica de coordinación
y almacenamiento.

Es así como el Cloud Computing consiste en mover la computación del simple computador
personal o centro de datos convencional hacia Internet.
A continuación, se presenta la definición de Cloud Computing adoptada por la Mesa
Sectorial, la cual fue desarrollada por el Instituto Nacional de Estándares y Tecnología de
los Estados Unidos de América (NIST, 2009) [1]:
Cloud Computing es un modelo para habilitar el acceso a un conjunto de servicios
computacionales (e.g. Redes, servidores, almacenamiento, aplicaciones y servicios) de
manera conveniente y por demanda, que pueden ser rápidamente aprovisionados y
liberados con un esfuerzo administrativo y una interacción con el proveedor del servicio
mínimo.


Clasificación en capas

Cloud Computing es un concepto muy general y que es utilizado de diversas formas. Sin
embargo, parece que hay consenso con respecto a los tres tipos o capas fundamentales:
Software como Servicio o Software as a Service (SaaS), Plataforma como Servicio o
Platform as a Service (PaaS) e Infraestructura como Servicio o Infrastructure as a Service
(IaaS) [2].




6

 Software como servicio:
Modelo de distribución de software en el que una aplicación es ofrecida como un
servicio proporcionado a través de internet. Permite ofrecer una aplicación final
dentro de una infraestructura bajo demanda, totalmente escalable tanto en número
de usuarios como en requisitos de almacenamiento. En vez de instalar y mantener el
software, simplemente se accede a él a través de la red, liberando a los clientes de la
compleja administración de los sistemas. La empresa que aloja el software es la
encargada de mantener la información del cliente, además de proveer los recursos
necesarios para explotar dicha información.
 Plataforma como servicio (PaaS):
El Cloud Computing ha cambiado drásticamente la forma en que las aplicaciones son
construidas y ejecutadas. Se ha evolucionado a un modelo donde se ofrecen
plataformas para construcción y ejecución de aplicaciones personalizadas, un
concepto conocido como “Plataforma como servicio”. Aunque suele indentificarse
como una evolución del SaaS, es más bien un modelo que ofrece todo lo necesario
para soportar el ciclo de vida completo de construcción y puesta en marcha de
aplicaciones y servicios web completamente disponibles en internet.
En ningún momento controlamos las maquinas virtuales, ni atacamos al sistema de las
mismas, sino que utilizamos las API de cada nube y sus lenguajes de programación
para desarrollar software.
 Infraestructura como servicio (IaaS):
Modelo de distribución de infraestructura de computación como un servicio,
normalmente a través de una plataforma de virtualización (asignación de máquinas
virtuales bajo demanda). Incluye servidores, equipamiento de red, almacenamiento,…
Estos servicios son proporcionados a través de la web. Múltiples clientes coexisten en
la misma infraestructura y se paga por lo que se utiliza.


7
Dentro de las características esenciales tenemos [3]:
1. Auto-servicio por demanda: Un consumidor puede aprovisionar de manera
unilateral capacidades de cómputo, tales como tiempo de servidor y
almacenamiento en red, en la medida en que las requiera sin necesidad de
interacción humana por parte del proveedor del servicio.
2. Acceso amplio desde la red: Las capacidades están disponibles sobre la red y se
acceden a través de mecanismos estándares que promueven el uso desde
plataformas clientes heterogéneas, pesadas o livianas, como el PC, un teléfono
móvil o un navegador Internet. Es posible tener documentos almacenados en la
nube y consultarlos en alguno de estos tres dispositivos.
3. Conjunto de recursos: Los recursos computacionales del proveedor se habilitan
para servir a múltiples consumidores mediante un modelo “multi-tenant”, con
varios recursos tanto físicos como virtuales asignados y reasigandos de acuerdo
con los requerimientos de los consumidores.
4. Rápida elasticidad: Las capacidades pueden ser rápidamente y elásticamente
aprovisionadas, en algunos casos automáticamente, para escalar hacia fuera
rápidamente y también rápidamente liberadas para escalar hacia dentro también
de manera veloz. Para el consumidor, estas capacidades disponibles para
aprovisionar a menudo aparecen como ilimitadas y pueden ser compradas en
cualquier cantidad en cualquier momento.
5. Servicio medido: Los sistemas en la nube controlan automáticamente y optimizan
el uso de recursos mediante una capacidad de medición a algún nivel de
abstracción adecuado al tipo de servicio; por ejemplo, almacenamiento,
procesamiento, ancho de banda y cuentas de usuario activas. El uso de estos
recursos puede ser monitoreado, controlado y reportado, proporcionando
transparencia tanto para el proveedor como para el consumidor por el servicio
utilizado.


8
Google Apps Engine

Google App Engine te permite ejecutar tus aplicaciones web en la infraestructura de
Google. Las aplicaciones App Engine son fáciles de crear, de mantener y de ampliar al ir
aumentando el tráfico y las necesidades de almacenamiento de datos. Con App Engine no
necesitarás utilizar ningún servidor: solo tendrás que subir tu aplicación para que los
usuarios puedan empezar a utilizarla. Puedes proporcionar a la aplicación tu propio
nombre de dominio (como, por ejemplo, http://www.example.com/) a través de Google
Apps. También puedes proporcionarle un nombre que esté disponible en el dominio
appspot.com. Podrás compartir tu aplicación con todo el mundo o limitar el acceso a los
miembros de tu organización. Google App Engine admite aplicaciones escritas en varios
lenguajes de programación. Gracias al entorno de tiempo de ejecución Java de App
Engine, puedes crear tu aplicación a través de tecnologías Java estándar, que incluyen
JVM, servlets Java y el lenguaje de programación Java, o cualquier otro lenguaje que
utilice un intérprete o compilador basado en JVM como, por ejemplo, JavaScript o Ruby.
App Engine también ofrece un entorno de tiempo de ejecución Python dedicado, que
incluye un rápido interprete Python y la biblioteca estándar Python. Los entornos de
tiempo de ejecución Java y Python se generan para garantizar que tu aplicación se ejecute
de forma rápida, segura y sin interferencias de otras aplicaciones en el sistema. Con App
Engine, solo pagas lo que utilizas. No existen costes de configuración ni tarifas
recurrentes. Los recursos que utiliza tu aplicación como, por ejemplo, el almacenamiento
y el ancho de banda, se miden por gigabytes y se facturan a unas tarifas muy competitivas.
Controlas la cantidad máxima de recursos que consume tu aplicación, de modo que
siempre permanezcan dentro de tu presupuesto. Puedes empezar a utilizar App Engine de
forma totalmente gratuita. Todas las aplicaciones pueden utilizar hasta 500 MB de
almacenamiento y suficiente CPU y ancho de banda como para permitir un servicio eficaz
de alrededor de cinco millones de visitas a la página al mes, sin coste alguno. Cuando
habilitas la facturación para tu aplicación, se incrementan tus límites gratuitos y solo
pagas aquellos recursos que utilizas por encima de los niveles gratuitos [4].

9
Método

Descarga y configuración del entorno
Google App Engine ofrece Kits de Desarrollo para Python y para Java, para Java además
ofrece un potente plugin para Eclipse. En los artículos usaremos siempre este entorno.
Para desarrollar necesitaremos [5]:
- JDK 6: podéis descargarlo desde

- Eclipse (3.3 o superior): usaremos Eclipse 3.5, que podéis descargar desde

- GAE Plugin: para Eclipse 3.5 disponible desde http://dl.google.com/eclipse/plugin/3.5
1. Arrancamos nuestro Eclipse
2. En Help > Install New Software > añado

3. Elijo:

(*) GAE permite desplegar aplicaciones J2EE (JSP y Servlets,…) y aplicaciones GWT.
Aunque en este post no lo usaremos lo dejaremos configurado para futuros artículos.
4. Mientras se descarga puedo actualizar mi JDK en Window > Preferences:

10

5. Tras varios minutos de descarga tendré mi Eclipse configurado con GAE. GAE habrá
instalado una nueva barra
6. Reiniciamos el Eclipse.
Registro en GAE:
1. Para crear una aplicación tengo que registrarme en http://appengine.google.com
donde es necesario tener un cuenta Google (si no la tengo puedo crearla directamente
desde aquí):

2. Selecciono Crear una Aplicación:
Google me solicitará mi número de móvil, me enviará un código que debo registrar en la
siguiente pantalla.
3. Tras finalizar el registro ya puedo crear mi aplicación HelloWorld:
Me pedirán un Application Identifier que debe ser único

4. Tras registrar la aplicación puedo ir a mi DashBoard (Panel de Control), desde este
panel podré controlar las aplicaciones desplegadas, estadísticas,…

5. Aunque he registrado la aplicación esta aún no está creada ya que no la he desplegado
aún, de modo que si voy a http://lmgracia4helloworld.appspot.com/ veré:

11


Desarrollar mi aplicación:
1. En Eclipse selecciono File > New > Other > o bien elijo de la nueva barra GAE
2. En la página de crear aplicación Web elijo:

(deshabilito User Google Web Toolkit)
3. El aspecto de una aplicación GAE es este:

Automáticamente se ha creado un Servlet: AplicaciónGAEServlet

12
4. Abro el Servlet AplicacionGAEServlet
5. Abro el fichero web.xml y edito el url-pattern:

6. Creo una JSP helloWorld.jsp

A la que le añado:

7. Edito el index.html para que apunte a mi Servlet y a mi JSP

13

Probar localmente mi aplicación
Antes de desplegar en la infraestructura de Google probaré la aplicación en el servidor
local incluido en el plugin (Tomcat).
1. Elijo el proyecto y pulso botón derecho sobre él:

Esto compila y despliega mi aplicación sobre el servidor local y arranca el servidor en el
puerto 8888
2. Pincho en y accedo a http://localhost:8888/

Desplegar aplicación en el Cloud GAE:
1. Selecciono (Deploy App Engine Project). Me solicitará el mail y la password
registrada en GAE además del Application ID registrada en GAE, en nuestro caso
lmgracia4helloworld

14

2. En la consola va apareciendo el progreso:

Probar la aplicación en el Cloud GAE:
1. Como hemos dicho nuestra aplicación estará disponible en
http://lmgracia4helloworld.appspot.com/








15
Resultados
En la aplicación la siguiente imagen representa la ventana que nos permite acceder a la
información. Si el usuario esta registrado, solo tiene que ingresar su nombre y dirección al
en los campos correspondientes.

Si no se está registrado, se le da clic al icono que aparece en la esquina superior izquierda
para proceder con el registro. Donde se tendrán que llenar los siguientes campos.




















16
Al ya tener una cuenta y acceder a la pagina principal y nos aparece un mensaje como
este, significa que se a ingresado exitosamente.


La siguiente pagina es la pagina principal donde se encuantran los archivos y recursos que
se pueden compartir por el administrador de la aplicasion.






17
Un ejemplo de una de las pestañitas es que se llama subir tarea, permite a los usuarios
subir archivos y compartirlos con los demás miembros. La ventana es la siguiente.




Por último para salir de la aplicación solo hay que darle un clic al icono que se encuentra
en la parte superior derecha que dice cerrar sesión, y aparece el siguiente mensaje para
corroborar la salida de la aplicación.




18


Fuentes consultadas

*1+ Cloud Computing, mesa sectorial. “Cloud computing una perspectiva para Colombia”.
Colombia. 2010.

[2] Martos, Pablo. (2009). Ejecución de una base de datos distribuida sobre un entorno de
Cloud Computing. (Proyecto de fin de curso- Universidad Complutense de Madrid).


*3+ “NIST Definition of Cloud Computing v15” en la página Web Cloud Computing del NIST.
(http://csrc.nist.gov/groups/SNS/cloud-computing/cloud-def-v15.doc)

*4+ Google. “La seguridad es lo primero”. Google Apps Engine. [Consulta: 7 de Diciembre
de 2011]<http://code.google.com/intl/es/appengine/docs/whatisgoogleappengine.html>

[5] Google. Primeros Pasos con Google App Engine: Hello World. Articulo java mania. .
[Consulta: 7 de Diciembre de 2011].
<http://unpocodejava.wordpress.com/2010/05/16/primeros-pasos-con-google-app-
engine-hello-world/>