You are on page 1of 63

Ao del Centenario de Machu Picchu para el Mundo

Carrera profesional de Computacin e Informtica

Proyecto de Implementacin de Servidores Web con Uso de Tecnologas Tornado y MongoDB

TRABAJO TERICO PRCTICO Presentado por: Aguirre Paucar, Miguel Oscar Bolaos Victoria, Ivn Arturo De La Cruz Vilcahuaman, Teresa Yaneth Para Optar el ttulo profesional de: TCNICO EN COMPUTACIN E INFORMTICA

Huancayo Per 2011

ASESOR: Ing. Jess Alberto Zea Salas

A: Nuestros padres con amor y cario por su apoyo incondicional que cada da nos brindan.

NDICE Portada Asesora Dedicatoria ndice Introduccin Captulo I MARCO METODOLGICO 1.1. El problema de investigacin 1.1.1. El problema 1.1.2. Los Objetivos 1.1.3. La Justificacin 1.2. Metodologa 1.2.1. Marco Metodolgico 1.2.2. Tcnicas 1.2.3. Instrumentos 6 6 7 8 10 10 11 11 i ii iii iv vii

Captulo II MARCO TERICO 2.1. Antecedentes de Proyecto 2.2. Descripcin del tema del Proyecto 2.3. Terminologa Bsica 12 12 13

Captulo III DESARROLLO DEL PROYECTO 3.1. Descripcin operativa del proyecto 3.1.1. Estructura y funcionamiento de un servidor Web 3.1.2. Estructura y funcionamiento de un gestor de base de datos 3.1.3. Estructura y funcionamiento de un Framework 3.1.4. Tecnologas para implementar Servidores Web 3.1.4.1 Modelado de la aplicacin del ejemplo 3.1.4.2 Implementacin en LAMP 22 22 23 29 33 34 36 38 41 43 54 54 57 59

3.1.4.3 Implementacin con tecnologas Microsoft 3.1.4.4 Implementacin con Tornado y MongoDB 3.1.4.5 Comparativa entre las soluciones propuestas 3.2. Resultados Obtenidos 3.2.1. Anlisis y evaluacin final CONCLUSIONES SUGERENCIAS

BIBLIOGRAFIA ANEXOS

60 61

INTRODUCCIN El presente trabajo trata de enfocar los nuevos problemas que van surgiendo debido al alto incremento de usuarios en los sistemas y aplicaciones basadas en web. Los portales de mayor relevancia tienen problemas para atender a un nmero elevado de usuarios ya que sus servicios no estn preparados para esta tarea, haciendo que se tenga que crecer a nivel de hardware ocasionando altos gastos hacia la empresa o entidad. Por lo tanto el objetivo del proyecto es tener los lineamientos para implementar servicios web que sean capaces de mantenerse en ejecucin con un rendimiento aceptable ante el incremento de la carga de trabajo sin necesidad de tener que incrementar nuestros costos de hardware usando las tecnologas Tornado y MongoDB. Para desarrollar el trabajo se ha realizado una investigacin en base a diversas fuentes bibliogrficas analizando los conceptos de servicios web, lenguajes de programacin, framework y bases de datos aplicables. Posteriormente se consideran las caractersticas en funcionamiento de diversas metodologas de trabajo con diversas tecnologas presentes en el mercado actual. Finalmente se realiza la implementacin del servicio en funcin al servidor web/framework Tornado y al gestor de bases de datos MongoDB.

Captulo I MARCO METODOLGICO

1.1. El problema de investigacin 1.1.1. El problema Actualmente las Empresas y personas buscan tener un espacio en Internet donde puedan publicitar sus productos o expresar sus ideas, muchas veces estas pginas estn diseadas para soportar un pequeo nmero de usuarios, y muchas veces no consideran que en el futuro su nmero de usuarios podra incrementarse considerablemente. Algunas pginas se han desarrollado pensado en un cierto nmero de usuario, con el pasar del tiempo han recibido un incremento considerable de sus usuarios lo que ocasiona que el servicio no est en la capacidad de responder a todas las peticiones al mismo tiempo haciendo que sus sitios web no estn disponibles temporalmente y en ocasiones que los servidores sufran un colapso. Podemos mencionar el caso del sitio web del Diario El Comercio el cual estuvo fuera de servicio en las elecciones PERU - 2011 a causa del alto nmero de personas que consultaban los resultados electorales. Debido al auge de Internet en la actualidad los sitios web se volvieron de gran importancia en el mundo, por ello el inters por abordar el problema de mantener la disponibilidad al momento en el

cual

la

carga

de

trabajo

del

servidor

se

incremente

considerablemente. Por esto se busca plantear los lineamientos para poder implementar un servidor web que sea capaz de soportar un incremento de su carga de trabajo usando la tecnologa del servidor web escalable, no bloqueante Tornado Web y la base de datos escalable de alto rendimiento MongoDB. 1.1.2. Los Objetivos Objetivo General Demostrar que la implementacin de un servicio web usando las tecnologas tornado y MongoDB nos permite manejar un alto nmero de usuario concurrentes sin perder redimiendo y velocidad en nuestra aplicacin. Objetivos Especficos Comprender como trabaja un servicio web. Estudiar y conocer cules son las ventajas y desventajas de trabajar con una base de datos MongoDB en comparacin a MS SQL Server y MySQL. Estudiar y conocer cules son las ventajas y desventajas de trabajar con un Framework web. Llevar a cabo una breve comparativa del rendimiento de los conjuntos de soluciones LAMP (Linux, Apache, MySQL y PHP), IIS (Internet Informacin Server) con .Net y Tornado con MongoDB. Modelar un Sitio Web y sus interfaces, en base a las tecnologas Tornado y MongoDB.

Implementar un sitio web MongoDB con Tornado.

1.1.3. La Justificacin Las empresas crecen ms cada da y su presencia en internet resulta de gran importancia para incrementar su presencia en el mercado cada vez mas fragmentado, ya que en la actualidad la mayora de las personas cuentan con una conexin a internet en sus casas. Al crecer el nmero de usuarios de un servicio web determinado se hace ms difcil manejar la gran cantidad de trfico en sus servicios y la cantidad de datos que deben almacenar en sus

bases de datos, lo que termina ocasionando costos en cuestin de incremento de caractersticas de los servidores para poder atender este incremento. Por lo tanto se plantea el uso de tecnologas actuales que estn preparadas para los problemas de la ltima dcada y que estn en constante avance, como son el caso de Tornado un servidor web y framework desarrollado en el lenguaje de programacin Python en cual nos ofrece ser capaz de atender a ms de diez mil usuarios concurrentes con una estructura escalable y dinmica, adems de traer consigo un framework de desarrollo web para el mismo lenguaje lo cual lo hace una de las herramientas ms importante al momento de buscar servicios web escalables capaces de atender un gran incremento de usuario sin agregar recursos adicionales y capaz de mantenerse en el tiempo. Adems se plantea el uso del gestor de base de datos no-SQL (que no usa sentencias tipo SQL para la insercin, actualizacin y seleccin de datos) como es MongoDB el cual es un gestor de base de datos gil, escalable, de alto rendimiento y orientado a objetos que al ser open source cuenta con una gran comunidad de desarrollo. Este Gestor de base de datos nos brinda la ventaja de

atender un mayor nmero de consultas concurrentes y de manejar una mayor cantidad de datos, es tambin capaz de mantener su rendimiento en el caso de un alto incremento de sus usuarios y datos por lo cual se hace ideal al momento de elegirlo pensando en el futuro de los servicios web. Por lo tanto el uso de estas dos tecnologas, generan beneficios expresados en la optimizacin de los procesos y la mejora del rendimiento de los servicios web adems de la capacidad de atender un gran incremento de usuarios y datos sin perder rendimiento, a fin de mejorar la calidad beneficiando tanto a los usuarios como a los empresarios que apuesten por estas tecnologas.

Desde el punto de vista prctico, se plantearan los lineamientos y caractersticas que hay que tener en cuenta para implementar una solucin con estas tecnologas y se realizara una comparacin con otros modelos ms conocidos en el mercado.

Desde el punto de vista terico, esta investigacin generar reflexin y discusin tanto sobre el conocimiento existente del rea investigada, como dentro del mbito de la tecnologa web, ya que de alguna manera u otra, se confrontan teoras (en nuestro caso se analizara desde las mejoras que traen consigo las nuevas tecnologas y se buscara que la opcin de tornado y mongodb se plantee como una opcin a tomar en cuenta en el momento de planear un proyecto web ), lo cual necesariamente conlleva hacer epistemologa del conocimiento existente.

Desde el punto de vista metodolgico, esta investigacin est generando la aplicacin de un nuevo mtodo para obtener

conocimiento vlido y confiable dentro del rea de la Tecnologas de la informacin de las organizaciones.

10

Por otra parte, en cuanto a su alcance, esta investigacin abrir nuevos caminos para empresas que presenten situaciones similares a la que se plantea, sirviendo como marco referencial a estas.

Por

ltimo,

profesionalmente

pondr

en

manifiesto

los

conocimientos adquiridos durante la carrera y permitir sentar las bases para otros estudios que surjan partiendo de la problemtica especificada.

1.2. Metodologa 1.2.1. Marco Metodolgico Mtodos, tcnicas e instrumentos utilizados Los mtodos que se emplearon para la ejecucin de las prcticas fueron:

Mtodo Descriptivo: Se utiliz cuando el emisor se propone a transmitir al receptor las imgenes y sirven tanto para el modo narrativo como el modo expositivo por su naturaleza descriptiva.

Mtodo dialctico: Busca una explicacin de las contradicciones y conflictos en la sociedad, formulando de esta manera una relacin dialctica respecto al objeto.

Mtodo Lgico Deductivo: Mediante el cual se aplican los principios descubiertos a casos particulares, a partir de una enlace de juicios.

Mtodo Comparativo: Porque nos permiti establecer diferencias entre las diversas tecnologas usadas para montar sitios web.

11

Mtodo Inductivo: Es el razonamiento que, partiendo de casos particulares se eleva a conocimientos generales, Este mtodo permite la formacin de hiptesis, investigacin de leyes cientficas, y las demostraciones. Mtodo sinttico: Consiste en la reunin racional de varios elementos dispersos en una nueva totalidad, este se presenta ms en el planteamiento de la hiptesis. 1.2.2. Tcnicas Las tcnicas que se emplearon para la ejecucin de las prcticas fueron: Tcnicas de evaluacin: (estrategia que utilizamos y lo que estamos proponiendo) Son las que sirven para evaluar y tomar decisiones sobre el desarrollo de un proceso grupal. Se pueden usar tambin para modificar estrategias.

Tcnica de entrevistas: Es la tcnica ms usual y da muchos resultados exitosos. 1.2.3. Instrumentos Los instrumentos que se emplearon fueron: Gua de observacin: Las observaciones se efectan para comprobar o refutar alguna teora, y slo se registran las observaciones cuando se consideran relevantes para alcanzar tal fin. Lluvia de Ideas: Desarrollar y ejercitar la imaginacin creadora; crear un clima informal, libre de tensiones; desarrollar actitudes espontneas; Actuar con autonoma, originalidad. Se deja que las personas acten en un clima totalmente informal, con absoluta libertad para expresarse y pensar, con el fin de obtener ideas originales y soluciones nuevas.

12

Captulo II MARCO TERICO 2.1. Antecedentes de Proyecto Actualmente en el Per se utiliza estructuras de servidores web con LAMP o ASP.NET, SQL Server con IIS y cuando tiene alta concurrencia (caso el Comercio en eventos importantes como las elecciones) tienden a bloquearse, sin embargo hay soluciones que obtienen una mejor performance como es el caso de Tornado con MongoDB, por ello implementamos esta herramienta para que as las pginas web que tengan alto nmero de usuario puedan guiarse de este trabajo para obtener menores tiempos de respuesta.

2.2. Descripcin del tema del Proyecto Este proyecto pretende mostrar las diferentes tecnologas que se usan para la implementacin de sitios web y hacer nfasis en tecnologas actuales que sean capaces de manejar un gran flujo de trabajo y que sean capaces de responder ante un gran nmero de usuarios concurrentes.

Para el desarrollo del proyecto nos enfocaramos en tecnologas Open Source de ltima generacin que son Tornado Web, un framework y servidor web escalable no bloqueante y MongoDB un gestor de base de datos no SQL no relacional

13

2.3. Terminologa Bsica Internet.- es un conjunto descentralizado de redes de comunicacin interconectadas que utilizan la familia de protocolos TCP/IP, garantizando que las redes fsicas heterogneas que la componen funcionen como una red lgica nica, de alcance mundial. Uno de los servicios que ms xito ha tenido en Internet ha sido la World Wide Web (WWW, o "la Web"), hasta tal punto que es habitual la confusin entre ambos trminos.

La World Wide Web.- Es un sistema de distribucin de informacin basado en hipertexto o hipermedios enlazados y accesibles a travs de Internet. Con un navegador web, un usuario visualiza sitios web compuestos de pginas web que pueden contener texto, imgenes, videos u otros contenidos multimedia, y navega a travs de ellas usando hiperenlaces.

Navegador o navegador web.- ( web browser) Es una aplicacin que opera a travs de Internet, interpretando la informacin de archivos y sitios web para que podamos leerla, (ya se encuentre sta alojada en un servidor dentro de la World Wide Web o en un servidor local). El navegador interpreta el cdigo, HTML generalmente, en el que est escrita la pgina web y lo presenta en pantalla permitiendo al usuario interactuar con su contenido y navegar hacia otros lugares de la red mediante enlaces o hipervnculos.

Servidores Web.- Un servidor web es un programa que se ejecuta continuamente en un computador, mantenindose a la espera de peticiones de ejecucin que le har un cliente o un usuario de Internet. El servidor web se encarga de contestar a estas peticiones de forma adecuada, entregando como resultado una pgina web o informacin de todo tipo de acuerdo a los comandos solicitados.

14

Aplicaciones Web.- En la ingeniera de software se denomina aplicacin web a aquellas aplicaciones que los usuarios pueden utilizar accediendo a un servidor web a travs de Internet o de una intranet mediante un navegador. En otras palabras, es una aplicacin software que se codifica en un lenguaje soportado por los navegadores web en la que se confa la ejecucin al navegador.

Cliente-servidor.- La arquitectura cliente-servidor es un modelo de aplicacin distribuida en el que las tareas se reparten entre los proveedores de recursos o servicios, llamados servidores, y los demandantes, llamados clientes. Un cliente realiza peticiones a otro programa, el servidor, que le da respuesta. Esta idea tambin se puede aplicar a programas que se ejecutan sobre una sola computadora, aunque es ms ventajosa en un sistema operativo multiusuario distribuido a travs de una red de computadoras.

Modelo TCP/IP.- Es un modelo de descripcin de protocolos de red creado en la dcada de 1970 por DARPA, una agencia del Departamento de Defensa de los Estados Unidos. El modelo TCP/IP, describe un conjunto de guas generales de diseo e implementacin de protocolos de red especficos para permitir que una computadora pueda comunicarse en una red. TCP/IP provee conectividad de extremo a extremo especificando como los datos deberan ser formateados, direccionados, transmitidos, enrutados y recibidos por el destinatario. Existen protocolos para los diferentes tipos de servicios de comunicacin entre computadoras.

HTML.- HTML, siglas de HyperText Marckup Language (Lenguaje de Marcado de Hipertexto), es el lenguaje de marcado predominante para la elaboracin de pginas web. Es usado para describir la estructura y el contenido en forma de texto, as como para complementar el texto con objetos tales como imgenes. HTML se escribe en forma de etiquetas, rodeadas por corchetes angulares (<,>). HTML tambin puede describir, hasta un cierto punto, la apariencia de un documento, y puede incluir un

15

script (por ejemplo JavaScript), el cual puede afectar el comportamiento de navegadores web y otros procesadores de HTML.

HTTP.- Hypertext Transfer Protocol o HTTP (en espaol protocolo de transferencia de hipertexto) es el protocolo usado en cada transaccin de la World Wide Web. Es un protocolo orientado a transacciones y sigue el esquema peticin-respuesta entre un cliente y un servidor. Al cliente que efecta la peticin (un navegador web o un spider) se lo conoce como "user agent" (agente del usuario). A la informacin transmitida se la llama recurso y se la identifica mediante un localizador uniforme de recursos (URL). Base de datos SQL.- El lenguaje de consulta estructurado o SQL, es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones en stas. Una de sus caractersticas es el manejo del lgebra y el clculo relacional permitiendo efectuar consultas con el fin de recuperar -de una forma sencillainformacin de inters de una base de datos, as como tambin hacer cambios sobre ella. Base de datos no SQL.- No SQL es un trmino usado en informtica para agrupar una serie de almacenes de datos no relacionales que no proporcionan garantas ACID. Normalmente no tienen esquemas fijos de tablas ni sentencias "join". El trmino ACID hace referencia a un conjunto de caractersticas necesarias para que una serie de instrucciones puedan ser consideradas como una transaccin. Estos sistemas responden a las necesidades de escalabilidad horizontal que tienen cada vez ms empresas.

Microsoft SQL Server.- Es un sistema para la gestin de bases de datos producido por Microsoft basado en el modelo relacional. Sus lenguajes para consultas son T-SQL y ANSI SQL. Microsoft SQL Server constituye

16

la alternativa de Microsoft a otros potentes sistemas gestores de bases de datos como son Oracle o Postgre SQL o MySQL.

MySQL.- Es un sistema de gestin de bases de datos relacional, multi-hilo y multiusuario con ms de seis millones de instalaciones. MySQL AB desde enero de 2008 una subsidiaria de Sun Microsystems y sta a su vez de Oracle Corporation desde abril de 2009 desarrolla MySQL como software libre en un esquema de licenciamiento dual.

MongoDB.- Es un sistema de base de datos multiplataforma orientado a documentos, de esquema libre. Las caractersticas que ms destacara de MongoDB son su velocidad y su rico pero sencillo sistema de consulta de los contenidos de la base de datos. Se podra decir que alcanza un balance perfecto entre rendimiento y funcionalidad,

incorporando muchos de los tipos de consulta que utilizaramos en nuestro sistema relacional preferido, pero sin sacrificar en rendimiento.

LAMP.- El acrnimo 'LAMP' se refiere a un conjunto de subsistemas de software necesarios para alcanzar una solucin global, en este caso configurar sitios web o servidores dinmicos con un esfuerzo reducido. En las tecnologas LAMP esto se consigue mediante la unin de las siguientes tecnologas: Linux, el sistema operativo; En algunos casos tambin se refiere a LDAP. Apache, el servidor web; MySQL, el gestor de bases de datos; Perl, PHP, o Python, los lenguajes de programacin.

Frameworks de desarrollo.- En el desarrollo de software, un framework es una estructura conceptual y tecnolgica de soporte definida, normalmente con artefactos o mdulos de software concretos, con base en la cual otro proyecto de software puede ser organizado y desarrollado. Tpicamente, puede incluir soporte de programas, bibliotecas y un lenguaje

17

interpretado entre otros programas para ayudar a desarrollar y unir los diferentes componentes de un proyecto.

IIS.- Internet Information Services o IIS es un servidor web y un conjunto de servicios para el sistema operativo Microsoft Windows. Originalmente era parte del Option Pack para Windows NT. Luego fue integrado en otros sistemas operativos de Microsoft destinados a ofrecer servicios, como Windows 2000 o Windows Server 2003. Windows XP Profesional incluye una versin limitada de IIS. Los servicios que ofrece son: FTP, SMTP, NNTP y HTTP/HTTPS. Este servicio convierte a una PC en un servidor web para Internet o una intranet, es decir que en las computadoras que tienen este servicio instalado se pueden publicar pginas web tanto local como remotamente.

ASP.Net y IIS.- Las aplicaciones ASP.NET se suelen ejecutar con IIS (Servicios de Internet Information Server) como servidor Web.

Tornado.- Es un servidor web escalable no-bloqueante. A la vez es un framework similar a Google WebApps pero con herramientas adicionales que sacan ventaja de la infraestructura no-bloqueante.

Microsoft .NET.- Es un framework de Microsoft que hace un nfasis en la transparencia de redes, con independencia de plataforma de hardware y que permita un rpido desarrollo de aplicaciones. Basado en ella, la empresa intenta desarrollar una estrategia horizontal que integre todos sus productos, desde el sistema operativo hasta las herramientas de mercado. Visual Basic.- Es un lenguaje de programacin dirigido por eventos, desarrollado por el alemn Alan Cooper para Microsoft. Este lenguaje de programacin es un dialecto de BASIC, con importantes agregados. Su primera versin fue presentada en 1991, con la intencin de simplificar la programacin utilizando un ambiente de desarrollo completamente grfico que facilitara la creacin de interfaces grficas y, en cierta medida, tambin la programacin misma.

18

C Sharp.- C# (pronunciado si sharp en ingls) es un lenguaje de programacin orientado a objetos desarrollado y estandarizado por Microsoft como parte de su plataforma .NET, que despus fue aprobado como un estndar por la ECMA (ECMA-334) e ISO (ISO/IEC 23270). C# es uno de los lenguajes de programacin diseados para la infraestructura de lenguaje comn. Su sintaxis bsica deriva de C/C++ y utiliza el modelo de objetos de la plataforma .NET, similar al de Java, aunque incluye mejoras derivadas de otros lenguajes.

Python.- Es un lenguaje de programacin de alto nivel cuya filosofa hace hincapi en una sintaxis muy limpia y que favorezca un cdigo legible. Se trata de un lenguaje de programacin multiparadigma ya que soporta orientacin a objetos, programacin imperativa y, en menor medida, programacin funcional. Es un lenguaje interpretado, usa tipado dinmico, es fuertemente tipado y multiplataforma.

JSON.- JSON, acrnimo de JavaScript Object Notation, es un formato ligero para el intercambio de datos. JSON es un subconjunto de la notacin literal de objetos de JavaScript que no requiere el uso de XML. La simplicidad de JSON ha dado lugar a la generalizacin de su uso, especialmente como alternativa a XML en AJAX. Una de las supuestas ventajas de JSON sobre XML como formato de intercambio de datos en este contexto es que es mucho ms sencillo escribir un analizador semntico de JSON.

JavaScript.- JavaScript es un lenguaje de programacin utilizado para crear pequeos programitas encargados de realizar acciones dentro del mbito de una pgina web. Con JavaScript podemos crear efectos especiales en las pginas y definir interactividades con el usuario. El navegador del cliente es el encargado de interpretar las instrucciones JavaScript y ejecutarlas para realizar estos efectos e interactividades, de modo que el mayor recurso, y tal vez el nico, con que cuenta este lenguaje es el propio navegador.

19

CSS.- CSS son las siglas de Cascading Style Sheets - Hojas de Estilo en Cascada - que es un lenguaje que describe la presentacin de los documentos estructurados en hojas de estilo para diferentes mtodos de interpretacin, es decir, describe cmo se va a mostrar un documento en pantalla, por impresora, por voz (cuando la informacin es pronunciada a travs de un dispositivo de lectura) o en dispositivos tctiles basados en Braille.

PHP.- PHP Hypertext Pre-processor (PHP) es una de las tecnologas Web ms extendida en la actualidad, muy sencillo de aprender, realizado inicialmente para trabajar sobre Linux con servidor Apache, pero hoy en da puede alojarse en cualquier servidor. El cdigo fuente est abierto, por los que los problemas que se presentan son rpidamente controlados, y solucionados; excelente biblioteca de funciones que permite realizar cualquier. Su sintaxis es muy similar a la C y Perl. Se comunica con bases de datos sin necesidad de usar ODBC, una de las caractersticas ms relevante que tiene.

ASP.- Active Server Pages (ASP) es la tecnologa pionera en las aplicaciones Web que se ejecutan en el servidor, Desarrollado por Microsoft y optimizado para su ejecucin en servidores Windows con tecnologa NT bajo IIS. Al ser una tecnologa propietaria, no tiene la gran cantidad de mdulos que PHP, aunque mediante los objetos COM, trabaja fcilmente con archivos dll. Es un tanto desorganizado, utiliza lenguajes de scripting no tipados como VBScript o JScript. No hay una distincin formal entre el contenido de una pgina y su comportamiento, se pone contenido y esperamos a ver qu ocurre. ASP.NET.- Es un conjunto de tecnologas de desarrollo de aplicaciones web comercializado por Microsoft. Rompe totalmente con el pensamiento script que se tena hasta el momento; el cambio en la arquitectura es radical. Dado que la Web no se lee secuencial, sino que se compila, lo primero que llama la atencin es el enorme incremento de velocidad de respuesta del servidor; adems el incremento en seguridad y fortaleza es

20

muy grande. ASP.NET introduce el concepto del code-behind, por el que una misma pgina se compone de dos ficheros: el de la interfaz de usuario y el de cdigo. Ajax.viene de: Asynchronous JavaScript and XML, y describe una

tcnica desarrollada para crear aplicaciones web interactivas. La finalidad es lograr una sensacin de interactividad total al realizar intercambios de informacin con el servidor sin la necesidad de recargar toda la pgina web. sta tcnica usa una combinacin de varios elementos, como lo son: XHTML o HTML y CSS para desplegar y estilizar la informacin. El DOM accesado por medio de lenguajes de script del lado del cliente, como son JavaScript y JScript. El objeto XMLHttpRequest para intercambiar los datos con el servidor web. XML que es comnmente el formato usado para realizar los intercambios de informacin, aunque cualquier formato puede ser usado.

Finalmente el propsito es brindarle al usuario una manera ms sencilla de realizar la navegacin, pues con AJAX puedes realizar cambios sin la necesidad de cargar toda la pgina web nuevamente.

Servidor HTTP Apache.- Es un servidor web HTTP de cdigo abierto para plataformas Unix (BSD, GNU/Linux, etc.), Microsoft Windows, Macintosh y otras, que implementa el protocolo HTTP/1.1 y la nocin de sitio virtual. Apache presenta entre otras caractersticas altamente configurables, bases de datos de autenticacin y negociado de contenido, pero fue criticado por la falta de una interfaz grfica que ayude en su configuracin.

Sistema de gestin de base de datos.- son un tipo de software muy especfico, dedicado a servir de interfaz entre la base de datos, el usuario y las aplicaciones que la utilizan. El propsito general de los sistemas de gestin de bases de datos es el de manejar de manera clara, sencilla y

21

ordenada un conjunto de datos que posteriormente se convertirn en informacin relevante para una organizacin.

Tecnologas.- es el conjunto de conocimientos tcnicos, ordenados cientficamente, que permiten disear y crear bienes y servicios que facilitan la adaptacin al medio ambiente y satisfacer tanto las necesidades esenciales como los deseos de las personas.

OpenSource.- Cdigo abierto es el trmino con el que se conoce al software distribuido y desarrollado libremente. El cdigo abierto tiene un punto de vista ms orientado a los beneficios prcticos de compartir el cdigo que a las cuestiones morales y/o filosficas las cuales destacan en el llamado software libre.

Implementacin.-

Es la realizacin de una especificacin tcnica o

algoritmos como un programa, componente software, u otro sistema de cmputo. Muchas implementaciones son dadas segn a una especificacin o un estndar. Por ejemplo, un navegador web respeta (o debe respetar) en su implementacin, las especificaciones recomendadas segn el World Wide Web Consortium, y las herramientas de desarrollo del software contienen implementaciones de lenguajes de programacin.

Concurrencia de usuarios.- Se llama concurrencia cuando varios usuarios intentan acceder a determinada aplicacin al mismo tiempo

22

Captulo III DESARROLLO DEL PROYECTO 3.1. Descripcin operativa del proyecto 3.1.1. Estructura y funcionamiento de Un servidor Web Un servidor web o servidor HTTP es un programa que procesa cualquier aplicacin del lado del servidor realizando conexiones bidireccionales y/o unidireccionales y sncronas o asncronas con el cliente generando o cediendo una respuesta en cualquier lenguaje o Aplicacin del lado del cliente. El cdigo recibido por el cliente suele ser compilado y ejecutado por un navegador web. Para la transmisin de todos estos datos suele utilizarse algn protocolo. Generalmente se utiliza el protocolo HTTP para estas

comunicaciones, perteneciente a la capa de aplicacin del modelo OSI. El trmino tambin se emplea para referirse al ordenador que ejecuta el programa.

GRFICO N 01 ESTRUCTURA Y FUNCIONAMIENTO DE UN SERVIDOR WEB

23

Funcionamiento El Servidor web se ejecuta en un ordenador mantenindose a la espera de peticiones por parte de un cliente (un navegador web) y que responde a estas peticiones adecuadamente, mediante una pgina web que se exhibir en el navegador o mostrando el respectivo mensaje si se detect algn error. A modo de ejemplo, al teclear www.wikipedia.org en nuestro navegador, ste realiza una peticin HTTP al servidor de dicha direccin. El servidor responde al cliente enviando el cdigo HTML de la pgina; el cliente, una vez recibido el cdigo, lo interpreta y lo exhibe en pantalla. Como vemos con este ejemplo, el cliente es el encargado de interpretar el cdigo HTML, es decir, de mostrar las fuentes, los colores y la disposicin de los textos y objetos de la pgina; el servidor tan slo se limita a transferir el cdigo de la pgina sin llevar a cabo ninguna interpretacin de la misma. GRFICO N 02

3.1.2. Estructura y funcionamiento de un Gestor de base de datos Una base de datos o banco de datos (en ocasiones abreviada con la sigla BD o con la abreviatura b. d.) es un conjunto de datos

24

pertenecientes

un

mismo

contexto

almacenados

sistemticamente para su posterior uso. En este sentido, una biblioteca puede considerarse una base de datos compuesta en su mayora por documentos y textos impresos en papel e indexados para su consulta. En la actualidad, y debido al desarrollo tecnolgico de campos como la informtica y la electrnica, la mayora de las bases de datos estn en formato digital (electrnico), que ofrece un amplio rango de soluciones al problema de almacenar datos. Existen programas denominados sistemas gestores de bases de datos, abreviados SGBD, que permiten almacenar y posteriormente acceder a los datos de forma rpida y estructurada. Las propiedades de estos SGBD, as como su utilizacin y

administracin, se estudian dentro del mbito de la informtica. Las aplicaciones ms usuales son para la gestin de empresas e instituciones pblicas. Tambin son ampliamente utilizadas en entornos cientficos con el objeto de almacenar la informacin experimental. SQL (de primera generacin) Base de Datos Relacional Una base de datos relacional es un conjunto de una o ms tablas estructuradas en registros (lneas) y campos (columnas), que se vinculan entre s por un campo en comn, en ambos casos posee las mismas caractersticas como por ejemplo el nombre de campo, tipo y longitud; a este campo generalmente se le denomina ID, identificador o clave. A esta manera de construir bases de datos se le denomina modelo relacional. Estrictamente hablando el trmino se refiere a una coleccin especfica de datos pero a menudo se le usa, en forma errnea como sinnimo del software usado para gestionar esa coleccin de datos. Ese software se conoce como SGBD (sistema gestor de base de datos) relacional o RDBMS (del ingls relational database management system).

25

Las bases de datos relacionales pasan por un proceso al que se le conoce como normalizacin de una base de datos, el cual es entendido como el proceso necesario para que una base de datos sea utilizada de manera ptima. Entre las ventajas de este modelo estn: Garantiza herramientas para evitar la duplicidad de registros, a travs de campos claves o llaves. Garantiza la integridad referencial: As al eliminar un registro elimina todos los registros relacionados dependientes. Favorece la normalizacin por ser ms comprensible y aplicable.

SQL El lenguaje de consulta estructurado o SQL (por sus siglas en ingls structured query language) es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones en stas. Una de sus

caractersticas es el manejo del lgebra y el clculo relacional permitiendo efectuar consultas con el fin de recuperar -de una forma sencilla- informacin de inters de una base de datos, as como tambin hacer cambios sobre ella.

Caractersticas generales del SQL El SQL es un lenguaje de acceso a bases de datos que explota la flexibilidad y potencia de los sistemas relacionales permitiendo gran variedad de operaciones en stos ltimos. Es un lenguaje declarativo de "alto nivel" o "de no

procedimiento", que gracias a su fuerte base terica y su orientacin al manejo de conjuntos de registros, y no a registros individuales, permite una alta productividad en codificacin y la orientacin a objetos. De esta forma una sola sentencia puede equivaler a uno o ms programas que se utilizaran en un lenguaje de bajo nivel orientado a registros.

26

Lenguaje de definicin de datos (DDL) El lenguaje de definicin de datos (en ingls Data Definition Language, o DDL), es el que se encarga de la modificacin de la estructura de los objetos de la base de datos. Existen cuatro operaciones bsicas: CREATE, ALTER, DROP y TRUNCATE.

Lenguaje de manipulacin de datos DML (Data Manipulation Language) Un lenguaje de manipulacin de datos (Data Manipulation Language, o DML en ingls) es un lenguaje proporcionado por el sistema de gestin de base de datos que permite a los usuarios llevar a cabo las tareas de consulta o manipulacin de los datos, organizados por el modelo de datos adecuado. El lenguaje de manipulacin de datos ms popular hoy da es SQL, usado para recuperar y manipular datos en una base de datos relacional.

INSERT Una sentencia INSERT de SQL agrega uno o ms registros a una (y slo una) tabla en una base de datos relacional. Forma bsica INSERT INTO ''tabla'' (''columna1'', [''columna2,... '']) VALUES (''valor1'', [''valor2,...'']) Ejemplo INSERT INTO agenda_telefonica (nombre, numero) VALUES ('Roberto Jeldrez', 4886850); UPDATE Una sentencia UPDATE de SQL es utilizada para modificar los valores de un conjunto de registros existentes en una tabla. Forma bsica SQL="UPDATE ''tabla'' SET columna1=valor1 WHERE

''columna1'' = ''valor1''" Ejemplo

27

UPDATE My_table SET field1 = 'updated value asd' WHERE field2 = 'N'; DELETE Una sentencia DELETE de SQL borra uno o ms registros existentes en una tabla. Forma bsica SQL="DELETE FROM ''tabla'' WHERE ''columna1'' = ''valor1''" Ejemplo DELETE FROM My_table WHERE field2 = 'N'; Sistemas de gestin de base de datos Los sistemas de gestin de base de datos con soporte SQL ms utilizados son, por orden alfabtico: a) DB2 b) Firebird c) Informix d) Interbase e) Microsoft SQL Server f) MySQL g) Oracle h) PostgreSQL i) PervasiveSQL j) SQLite k) SQL Server l) Sybase ASE No SQL (de segunda generacin) No SQL es un trmino usado en informtica para agrupar una serie de almacenes de datos no relacionales que no

proporcionan garantas ACID. Normalmente no tienen esquemas fijos de tablas ni sentencias "join" Ventajas Estos sistemas responden a las necesidades de escalabilidad horizontal que tienen cada vez ms empresas

28

Arquitectura Tpico de bases de datos relacionales modernos han mostrado un pobre desempeo en ciertas aplicaciones intensivas de datos, incluyendo la indexacin de un gran nmero de documentos, servicio de pginas en los sitios web de alto trfico, y la entrega de medios de streaming. Las implementaciones tpicas RDBMS se afinan ya sea para leer pequeas pero frecuentes / escritura de las transacciones y para las operaciones en bloque de gran tamao con los accesos de escritura rara. No SQL, por el contrario, puede dar servicio pesado de lectura / escritura cargas de trabajo. Despliegues del mundo real No SQL incluyen 3 Digg TB para las insignias verdes y Facebook es 50 TB bandeja de entrada para la bsqueda. Arquitecturas No SQL suelen ofrecer garantas de consistencia dbil, tales como la consistencia eventual, o las operaciones restringidas de elementos de datos individuales. Algunos sistemas, sin embargo, ofrecer plenas garantas de ACID, en algunos casos mediante la adicin de una capa de middleware adicionales (por ejemplo, AppScale y CloudTPS). Varios sistemas de No SQL emplean una arquitectura

distribuida, con los datos en poder de una manera redundante en varios servidores, a menudo usando una tabla hash distribuidas. De esta manera, el sistema puede escalar fcilmente mediante la adicin de ms servidores, y el fracaso de un servidor puede ser tolerado. Algunos defensores de No SQL. Promueven interfaces muy simples, tales como arrays asociativos o pares de clave y valor. Otros sistemas, tales como bases de datos XML nativa, promover el apoyo del estndar XQuery. Los sistemas ms modernos, como tambin el apoyo CloudTPS consultas de unin. Para crear una tabla es implcita por que podras ingresar de la forma siguiente para crear una coleccin, que es equivalente a una tabla.

29

Insertar datos a una coleccin db.users.insert({a:3,b:5})

Seleccionar datos de una coleccin db.users.insert({a:3,b:5})

Seleccionar solo una coincidencia db.users.findOne()

Seleccionar datos distintos db.users.distinct('last_name') Contar las coincidencias db.users.find({age: {'gt': 30}}).count ()

Actualizar datos db.users.update({b:'q'},{$set:{a:1}},false,true)

Eliminar datos db.users.remove ({z:'abc'});

Sistemas: Cassandra, de Apache The Apache Cassandra BigTable, de Google Dynamo, de Amazon CouchDB, de Apache Apache CouchDB MongoDB, de 10gen MongoDB 3.1.3. Estructura y funcionamiento de un Framework Un framework es una estructura conceptual y tecnolgica de soporte definida, normalmente con artefactos o mdulos de software concretos, con base en la cual otro proyecto de software puede ser organizado y desarrollado. Tpicamente, puede incluir soporte de programas, bibliotecas y un lenguaje interpretado entre

30

otros programas para ayudar a desarrollar y unir los diferentes componentes de un proyecto. Son diseados con la intencin de facilitar el desarrollo de software, permitiendo a los diseadores y programadores pasar ms tiempo identificando requerimientos de software que tratando con los tediosos detalles de bajo nivel de proveer un sistema funcional. Por ejemplo, un equipo que usa Apache Struts para desarrollar un sitio web de un banco, puede enfocarse en cmo los retiros de ahorros van a funcionar en lugar de preocuparse de cmo se controla la navegacin entre las pginas en una forma libre de errores. Sin embargo, hay quejas comunes acerca de que el uso de frameworks aade cdigo innecesario y que la preponderancia de frameworks competitivos y complementarios significa que el tiempo que se pasaba programando y diseando ahora se gasta en aprender a usar frameworks. Fuera de las aplicaciones en la informtica, puede ser considerado como el conjunto de procesos y tecnologas usados para resolver un problema complejo. Es el esqueleto sobre el cual varios objetos son integrados para una solucin dada. Despus de todo, un framework no debe ser consciente de todos estos requerimientos sin tener que ser intrusivo con las aplicaciones que permite dentro de s mismo. A esto le sumamos la capacidad de extenderse sin prejuicios para diversificar la expresin del programa mismo as.

Arquitectura Dentro de este aspecto, podemos basarnos en el modelo MVC (Controlador => Modelo => Vista) ya que debemos fragmentar nuestra programacin. Tenemos que contemplar estos aspectos bsicos en cuanto a la implementacin de nuestro sistema:

31

GRFICO N 03

Controlador: Con este apartado podemos controlar el acceso (incluso todo) a nuestra aplicacin, esto pueden ser: archivos, scripts o programas; cualquier tipo de informacin que permita la interfaz. As, podremos diversificar nuestro contenido de forma dinmica, y esttica (a la vez); pues, slo debemos controlar ciertos aspectos (como se ha mencionado antes). Modelo: Este miembro del controlador maneja las operaciones lgicas, y de manejo de informacin (previamente enviada por su ancestro) para resultar de una forma explicable, y sin titubeos. Cada miembro debe ser meticulosamente llamado, en su correcto nombre y en principio, con su verdadera naturaleza: el manejo de informacin, su complementacin directa. Vista: Al final, a este miembro de la familia le corresponde dibujar, o expresar la ltima forma de los datos: la interfaz grfica que

32

interacta con el usuario final del programa (GUI). Despus de todo, a este miembro le toca evidenciar la informacin obtenida hasta hacerla llegar con el controlador. Solo (e inicialmente), nos espera demostrar la informacin. Estructura Dentro del controlador, modelo o vista podemos manejar lo siguiente: datos. Depende de nosotros como interpretar y manejar estos 'datos'. Ahora, sabemos que el nico dato de una direccin esttica web es: conseguir un archivo fsico en el disco duro o de internet, etc. he interpretado o no, el servidor responde. El modelo, al igual que el controlador y la vista, maneja todos los datos que se relacionen consigo (solo es el proceso medio de la separacin por capas que ofrece la arquitectura MVC). Y slo la vista, puede demostrar dicha informacin. Con lo cual ya hemos generado la jerarqua de nuestro programa: Controlador, Modelo y Vista. Lgica Al parecer, debemos inyectar ciertos objetos dentro de sus parientes en esta aplicacin, solo as compartirn herencia y coherencia en su aplicacin. Rpidamente, para una aplicacin web sencilla debemos establecer estos objetos:

Una base (MVC) o Controlador: ste debe ser capaz de manejar rutas, archivos, clases, mtodos y funciones. o Modelo: es como un script habitual en el servidor, solo que agrupado bajo un 'modelo' reutilizable. o Vista: como incluyendo cualquier archivo en nuestra

ejecucin, muy simple.

33

Un sistema o Ruteador: con l podemos dividir nuestras peticiones sin tantas condicionales. o Cargador 3.1.4. Tecnologas para implementar Servidores Web En la actualidad el mbito de los servidores web y tecnologas adyacentes a esta estn dominadas por soluciones Open Source, generalmente por el ya conocido LAMP (Linux, Apache, MySQL y PHP) con una participacin en el mercado del 65.18% para Agosto del 2011 siendo seguido por las soluciones brindadas por Microsoft con una participacin del 15.86%. Por lo cual se plantea el uso de estas soluciones as como la implementacin y comparacin con la solucin propuesta (Tornado y MongoDB).

GRFICO N 04

34

Developer Julio 2011 Apache Microsoft nginx Google

Porcentaje Agosto 2011 Porcentaje Cambio 301,771,518 73,415,916 35,533,439 17,061,003 65.18% 15.86% 7.67% 3.68% -0.69 -0.96 1.14 -0.69

235,326,985 65.86% 60,086,346 23,357,497 15,641,574 16.82% 6.54% 4.38%

FUENTE: NetCraft ah agosto del 2011

3.1.4.1 Modelado de la aplicacin del ejemplo Para la aplicacin de ejemplo se plantea un escenario minimalista para poder hacer las pruebas respectivas se cuenta con dos entidades: Empleado: Persona que trabaja en un determinada organizacin y pertenece a un rea. rea: el rea de trabajo en el cual se desarrolla el empleado.

GRFICO N 05

35

Se cuenta con tres vistas (pgina web): Principal: Muestra una lista de todos los empleados y te permite buscar a un empleado especifico, o listar todos los empleados de determinada rea.

GRFICO N 06

Detalles de Empleado: detalla los datos del empleado.

GRFICO N 07

36

rea: lista todos los empleados de esa rea y sus datos respectivos.

GRFICO N 08

Se

realizar

la

implementacin

de

este modelo

propuesto teniendo en cuento el modelo de datos las vistas y la funcionalidad para luego compararlos y recoger altos relevantes para el desarrollo del proyecto. 3.1.4.2 Implementacin en LAMP Para la implementacin en LAMP se us el framework MVC escrito en PHP llamado Symfony. Modelo: El esquema de la base de datos se desarroll de acuerdo al modelo especificado, en el cual se plantean las entidades y relaciones. Adems se genera una capa de abstraccin en la cual se aplican filtros de seguridad y clases que facilitan la obtencin, actualizacin, insercin y eliminacin de datos por parte del controlador.

37

Vista: la vista se renderiza tomando en layout (plantilla principal) sobre la cual se reenderizan las plantillas de cada accin (pginas web) GRFICO N 09

Controlador: se tomas las peticiones desde la vista para luego llamar al modelo y pedirle los datos requeridos los cuales ser enviados a las plantillas las cuales renderizaran y se la regresaran al navegador en formato HTML.

Implementacin: Debian GNU/Linux: GNU/Linux o Linux tiene una gran cantidad de cubrir mltiples distribuciones (versiones) para necesidades y con mltiples

caractersticas, para el desarrollo de este proyecto se eligi debian GNU/Linux porque es una distribucin segura y muy organizada, es usada por empresas y universidades adems Cuenta con un gran nmero de paquetes

(aplicaciones) instalacin de debian: ver anexo X

Apache: Al ser Open Source est apoyado por una gran comunidad que se encarga de hacerlo cada vez ms seguro y confiable, lo cual se refleja en su alto

38

uso siendo el servidor web predominante en internet desde hace muchos aos instalacin en debian 6.0: # apt-get install apache2 #apt-get install libapache2-mod-php5 MySQL: instalacin en debian 6.0: apt-get install mysql-server PHP: instalacin en debian 6.0 #apt-get install php5 #apt-get install php5-mysql

Se desarroll haciendo uso del IDE de desarrollo NetBeans con las libreras para PHP5 y usando el framework Symfony - se crea el proyecto de symfony (ver anexo X) el modelo de la base de datos se crea en un archivo de configuracin. (Ver anexo X) - el modelo se genera con la utilizacin de la librera doctrine lo que nos crea las clases para la abstraccin de datos (ver anexo X) - se crea la aplicacin a desarrollar lo cual genera la estructura de archivos necesarias para empezar el desarrollo (ver anexo X) - se procede con la programacin (ver anexo X) 3.1.4.3 Implementacin con tecnologas Microsoft Instalacin de visual estudio .NET 2010

39

Instalacin de SQL Server 2008

40

instalacin de IIS

Descripcin de los procesos de la implementacin. Creacin de la base de datos empresa Creacin de las tablas empleado y rea Creacin de los procedimientos buscar Empleados y buscar por reas que Realizaran la bsqueda en las tablas por nombre de los empleados y Creacin del proyecto en asp.net con visual Basic por las reas. Creacin del dataset en asp.net Creacin del script index.aspx donde estarn las consultas Buscar Empleados y buscar por reas. Una vez realizada la aplicacin web la llevamos a c://inetpub/wwwroot donde trabajara con IIS

41

3.1.4.4 Implementacin con Tornado y MongoDB Se necesit descarga el archivo de mongoDB ya que es veloz y de alto rendimiento, escogemos el que va con ti arquitectura, ya sea de 32 64 bits. Una vez que ya haya este descargado: Lo descomprimimos: tar -xzvf ARCHIVO.tgz Donde ARCHIVO es el nombre del archivo que descargaste, 1.8.1.tgz Una vez que se acab de descomprimir el archivo, se debe crear el directorio que usa MongoDB para almacenar los datos, el cual es /data/db. Se crea de la siguiente manera (Como sper usuario). # mkdir -p /data/db mkdir sirve para crear directorios desde la consola de Linux, y el parmetro p es para que si se da una ruta larga y las carpetas padres no existen, se por ejemplo mongodb-linux-x86_64-

creen automticamente. Despus se cambian los permisos: # chown USUARIO /data/db Donde USUARIO es tu nombre de usuario en Linux. Si no sabes cul es, puede probar ejecutando como usuario normal el comando whoami

Una vez cambiado el usuario a la carpeta /data/db, se debe ir a los archivos extrados de mongo y entrar a la carpeta bin, y ejecutar (como usuario) la aplicacin: / MongoDB Si no aparece el mensaje "really exiting now" entonces se est ejecutando el demonio de MongoDB y est listo para conectarse en el puerto 27017, y tambin tiene una interfaz web que puede consultarse en

http://localhost:28017.

42

Para finalizar el demonio se presiona control + c, para poder hacer consultas desde consola de debe usar otra terminal. En la otra terminal se debe ir a la misma carpeta donde se descomprimi MongoDB, y entrar a la carpeta bin y esta vez ejecutar la aplicacin. ./mongo y nos debe regresar el siguiente prompt Para ver las bases de datos: show dbs Para ver la base de datos actual: Db

Para cambiar de base de datos: use NOMBRE Para buscar las colecciones de la base de datos actual: show collections Para mostrar ayuda: Help Vamos a buscar en una base de datos de prueba: db.foo.find() Y al darle enter, no nos dar resultados, por lo que vamos a ingresar un dato de la siguiente manera: db.foo.save({ a : 1 }) Y de nuevo vamos a buscar con db.foo.find() Y nos dar como resultado: { "_id" : bjectId("4da264a9ae5a73975e992d25"), "a" : 1} Eso significa que ya est para el uso respectivo Para la instalacin de tornado web

43

Se necesit descargar el archivo de tornado pero antes tenemos que tener python en versiones superiores a 2.5. Para descargarlo: http://www.tornadoweb.org/ Lo descomprimimos. $ tar xvzf tornado-0.2.tar.gz Lo podemos ver en la consola. $ cd tornado-0.2 Y ya est fcil para el uso respectivo. Ahora si se podr usar los dos componentes para el uso respectivo. 3.1.4.5 Comparativa entre las soluciones propuestas Se mostrara una comparativa entre lo propuesto y Microsoft Pruebas Lam Para 100 usuarios concurrentes: rbol datos de los archivos

44

Grfico del Informe Agregado

Grfico de resultado

45

Para 1000 usuarios rbol datos de los archivos

46

Grfico del informe agregado

Grfico de resultados

47

Para 10000 usuarios rbol datos de los archivos

48

Grfico del informe agregado

Grfico de resultado

49

Pruebas con tornado y mongoDB Para 100 usuarios rbol datos de los archivos

50

Grfico del informe agregado

Grfico de resultado

Para 1000 usuarios rbol datos de los archivos

51

Grfico del informe agregado

Grfico de resultado

52

Para 10000 usuarios rbol datos de los archivos

53

Grfico del informe agregado

Grfico de resultado

54

Se analiz lo propuesto y vimos que lo propuesto es ms til y rpido para hacer los fines prcticos

Cuadro de resultados finales

Peticiones Tiempo y LAMP (concurrentes) Error


100 1000 10000 Tiempo % Error Tiempo % Error Tiempo % Error 238-2373 0% 339-94470 0.30 % 0-241376 74.64%

IIS
273-297 0% 210-5068 0% 26-14197 71.64%

Tornado
16-614 0% 73-46931 0% 0-269270 65.65 %

Como se puede observar en la imagen anterior el tiempo de respuesta, a una amplia cantidad de usuarios de la estructura del servidor web basado en tornado y mongoDB da un bajo porcentaje de errores. 3.2. Resultados Obtenidos 3.2.1. Anlisis y evaluacin final Se implement nuestro modelo de aplicacin web en tres entornos y tecnologas de trabajo distintas sobre la misma mquina para analizar el modo en el cual cada tecnologa facilita o no en desarrollo de la aplicacin, medir el rendimiento y la tolerancia a un gran nmero de carga de trabajo

El mtodo de Desarrollo que se usa para realizar un aplicacin LAMP varia de un mtodo tradicional escribiendo las clases y funciones desde cero a el uso de framework el cual te facilita la abstraccin de datos la seguridad y separa la vista de la lgica del negocio

Por otro lado el desarrollo en Visual Studio .NET te brinda herramientas visuales de fcil manejo en el aspecto de UI, sin embargo al momento de manejar aspectos internos de un sistema el entorno de desarrollo de Microsoft pasa a ser pesado

55

y fastidioso en el sentido del uso de libreras y handlers y su puesta en marcha El desarrollo usando el framework de tornado resulta sencillo y rpido si bien no cuenta con herramientas visuales si es necesario se puede usar algn ide con soporte para python.

Para probar el rendimiento y la tolerancia a errores se us la herramienta jmeter con la cual se prob cada aplicacin con 10, 100, y 1000 consultas concurrentes. Esta prueba de estrs nos dio como resultado que el uso del conjunto de tecnologas tornado y mongoDB nos brindan mayor velocidad confiabilidad y tolerancia a una mayor carga de trabajo. Escenario de pruebas Las pruebas se realizaron sobre una laptop hp con las siguientes caractersticas:

Nombre del producto Procesador Memoria Disco duro Tarjeta de red Conectividad inalmbrica

HDX X16-1060ES Intel core 2 duo 4096 MB 320 GB (5400 rpm) LAN Ethernet Gigabit 10/100/1000 integrada Intel WiFi Link 5100 Bluetooth

El software usado para cada caso probado fue:

LAMP sistema operativo debian GNU/Linux 6.0

Tecnologas Microsoft MS Windows 7

Tornad/ mongoDB debian GNU/Linux 6.0

56

Servidor web Base de Datos Framework Lenguaje de programacin

apache 2 MySQL 5.5 Synfony 1.4 PHP 5

IIS 7 Ms SQL Server 2008 net Framework 4 Visual Basic

Tornado 2.0 HTTP server MongoDB Tornado 2.0 web python 2.7

Comprobacin de la hiptesis Segn los resultados obtenidos en las pruebas realizadas se tiene que:

en un entorno no optimizado para la puesta en produccin de un servidor web la capacidad de la red limita el acceso a un gran nmero de usuario concurrentes

El Servidor web Tornado est mejor preparado para atender mltiples requet en menor tiempo y con mejor uso de los recursos del ordenador.

57

CONCLUSIONES Se logr demostrar que el conjunto de tecnologas Tornado y mongoDB nos brindan un rendimiento mayor a las otras tecnologas usadas, ya que el servidor web Tornado nos permite manejar un mayor nmero de usuarios concurrentes y la base de datos mongoDB nos permite una mayor velocidad en las consultas realizadas. Se logr entender que cuando alguna organizacin realiza un aplicativo web debe de mirarse al futuro y pensar si su aplicativo puede llegar a tener una gran concurrencia de usuarios, esta debe de realizarse con un diseo q provea esto. En el caso de la base de datos se optara por una base de datos no-sql por las rpidas respuestas que presenta ante consultas que tenga que ver con un amplia cantidad de datos. Se logr entender que los frameworks permiten reducir el tiempo de desarrollo y que nos brindan un gran nmero de herramientas para procesos repetitivos. esto ya que cuenta con pre procesos que te agilizan todo el proceso de desarrollo. Se logr realizar la comparativa de las tres estructuras web LAMP, IIS y ASP.NET y Tornado con Mongodb con lo cual se demuestra como la estructura de tornado con Mongodb da menores casos de que el servidor web no responda a las peticiones y responde con mayor velocidad.

58

Al modelar una aplicacin web podemos darnos cuenta que estos diseos se pueden implementar con distintas tecnologas afines a las soluciones web.

Al implementar un sitio web con tornado y Mongodb podemos ver que estas soluciones nos reducen el tiempo de desarrollo y nos da como resultado una aplicacin con mejor rendimiento y mayor capacidad para crecer horizontalmente tambin se encontr con el problema del mantenimiento ya que al ser tecnologas nuevas y pocas conocidas no tienen amplio soporte.

59

SUGERENCIAS Que, se mire al futuro y no solo basarse en tecnologas antiguas sino que tambin hay que tener en cuenta las tecnologas modernas con visin a futuro como en el caso de Tornado y MongoDB Que, se tome en serio la escalabilidad de la base de datos y pensar en que el futura la aplicacin puede albergar una gran cantidad de informacin asiendo difcil manejar toda esta carga. Que, los programadores o estudiantes tengan en cuenta que la

tecnologa va avanzado y los framework son el modelo de facto en la actualidad para el desarrollo de aplicaciones. Que, se implemente Tornado y MongoDB para realizar aplicaciones web pensadas a futuro, pues a medida que estas crezcan el costo de mantenimiento se mantendr estable o con una variacin mnima. Que, se modele las soluciones planteadas antes de empezar el desarrollo. Que, se tenga en cuenta la documentacin oficial de las tecnologas con las que se desarrolla la aplicacin ya que en estas se encuentra toda la informacin necesario para el desarrollo del mismo, tambin se sugiere revisar foros y blogs relacionados ya que brindan soluciones a problemas tpicos lo cual no permitir ahorrar tiempo. Que, se usen modelos modernos de desarrollo ya que estos estn preparados para las tecnologas actuales y las que vengan.

60

BIBLIOGRAFA I. Libros: 1) Michael Dory, Adam Parrish y Brendan Berg 2010 Introduccin a Tornado, Estados Unidos Editorial 2) Amazon

Jennifer Campbell, Paul Gries, Jason Montojo y Greg Wilson 2004 An Introduction to Computer Science Using Python, Estados Unidos Editorial Amazon

3)

Alex Martelli, Anna Ravenscroft y David Ascher 2005 Python Cookbook, Estados Unidos Editorial Amazon

4)

Kristina Chodorow y Michael Dirolf 2010 Scaling MongoDB Estados Unidos Editorial Amazon

5)

Kyle Banker 2006 MongoDB in Action Estados Unidos Editorial Amazon

6)

Charles B. Weinstock y John B. Goodenough 2006 On System Scalability

II. URLS:

http://www.amazon.com http://es.wikipedia.org/ http://www.tornadoweb.org/ http://www.mongodb.org/ http://www.python.org/ http://www.linux-es.org/ http://news.netcraft.com http://www.linux.org/

61

ANEXOS

Diagrama entidad relacion de MongoDB

Diagrama de entidad relacin de Tornado Web