Utilización de software libre como única tecnología para el

Anuncio
Utilización de software libre como única tecnología para el desarrollo
de portales web
Daniel Gayo Avello, Benjamín López Pérez, Luis Vinuesa Martínez, José E. Labra Gayo, Juan
M. Cueva Lovelle
Universidad de Oviedo, Departamento de Informática,
Oviedo, España, 33007
{dani,benja,vinuesa,labra,cueva}@lsi.uniovi.es
ABSTRACT
People use of web as an information resource is growing, specially to browse last minute news. This fact is pushing the
web towards popularity levels similar to other mass media like TV or press. In spite of this, web is different since
resources required to build a site are much simpler.
This paper will show the most essential parts in any dynamic web information service and it will introduce different
technological choices in order to develop such a site (operating system, web server, database engine and programming
language) provided that all of them must be free software.
At the end, we will show a case of use: EUITIO’s website, fully developed by using only free software; website’s
requirements will be described, the way they were solved and some conclusions reached through this project.
Keywords: free software, web site, web server, database, dynamic pages.
RESUMEN
Los ciudadanos utilizan cada vez más el web como fuente de información, especialmente para acceder a noticias de
última hora; este hecho está situando al web a un nivel similar al de medios de masas tan poderosos como la televisión o
la prensa escrita. A pesar de ello, una característica que diferencia al web de otros medios de comunicación es la
sencillez de las infraestructuras necesarias para la construcción de un sitio.
En el presente artículo se mostrarán los aspectos esenciales que debe cubrir un sistema de información dinámica en el
web y se presentarán diferentes alternativas tecnológicas para la implantación de un sitio semejante (sistema operativo,
servidor web, motor de base de datos y lenguaje de programación) pero con la restricción de que todas ellas serán
software libre.
Para terminar se expondrá brevemente un caso práctico desarrollado íntegramente con software de este tipo: el portal de
la Escuela Universitaria de Ingeniería Técnica en Informática de Oviedo; se describirán las necesidades del sitio web, la
forma en que fueron solucionadas mediante la integración de las distintas tecnologías y las conclusiones que se
alcanzaron a través de dicho trabajo.
Palabras claves: software libre, portal web, servidor web, base de datos, páginas dinámicas.
1
1
INTRODUCCIÓN
Cuando nos planteamos el montar un portal web, uno de los factores fundamentales a tener en cuenta son los recursos
financieros disponibles para hacer frente al proyecto. En el caso de que dichos recursos sean escasos (o nulos), la opción
respecto al software está clara: hay que decantarse por utilizar software libre.
Pero, en el caso de que se disponga de dinero para invertir en el software, cabe preguntarse si el software propietario es
una opción mejor que el software libre. Tradicionalmente se ha asociado software libre con software de baja calidad,
pensando que no ofrece ninguna garantía porque no ha pasado por controles de calidad, no ofrece soporte, etc. Sin
embargo, hoy en día hay muchas razones que obligan a replantearse la certeza de tal afirmación.
En la actualidad el software libre goza de mucha aceptación; por un lado, importantes empresas comerciales se han
decidido a dar soporte a alguno de estos productos libres; por otro, los mejores proyectos de software libre cuentan con
una amplia base de colaboradores, lo que lleva a que el software que finalmente ve la luz esté altamente probado e
incluya las peticiones de una inmensa mayoría de usuarios. La gratuidad del software lleva a que una mayor cantidad de
gente pueda probarlo, pudiendo ser detectados los posibles fallos de forma rápida. Al contar con una amplia base de
usuarios y colaboradores / desarrolladores que pueden examinar el código fuente, nuevas versiones y parches ven la luz
con mayor rapidez que en el caso de software propietario.
Por todo ello es necesario plantearse la cuestión de si, aún en el caso de poder pagarse licencias de software propietario,
sería ésta la mejor solución; los autores son de la opinión de que hoy en día es posible montar un portal web utilizando
únicamente software libre, no sólo no mermando la calidad del portal sino resultando ésta mayor que en el caso de
utilizar sólo software propietario.
2
SOFTWARE LIBRE
Durante los últimos años se ha hablado mucho sobre el software libre, su razón de ser, sus ventajas e inconvenientes o la
fiabilidad del mismo de cara a realizar grandes proyectos. En este punto se tratará de exponer brevemente las
características del software libre así como las diferencias existentes entre software libre, código abierto y software
gratuito; por último, se presentarán las características esenciales del software libre que lo hacen, a ojos de los autores, un
elemento extraordinariamente interesante para el desarrollo de aplicaciones en Internet.
Diferencias entre Software Libre, Código Abierto y freeware
Con frecuencia los términos freeware, Software Libre y Código Abierto se utilizan de forma indistinta para referirse a
un software que, en teoría:
o
Es gratuito,
o
no tiene propietario y
o
carece de soporte.
En primer lugar, todas esas presuntas características del software libre son falsas o, cuando menos, inexactas; en
segundo lugar, aún cuando algunos aspectos finales relativos a la distribución del software y sus fuentes pueden ser
similares, iniciativas como la del Software Libre y el Código Abierto son muy diferentes en cuanto a sus puntos de
partida.
Software Libre (Free Software)
Según la Free Software Foundation, el término Software Libre hace referencia a la libertad de acceso al software, no a
su precio; la FSF establece cuatro libertades relativas al software [3]:
1.
Libertad de ejecución del software.
2.
Libertad de análisis del software (el código fuente debe estar, por tanto, disponible).
3.
Libertad de redistribución del software.
4.
Libertad de modificación del software (nuevamente, la disponibilidad del código fuente es un requisito).
Una aplicación puede calificarse como Software Libre si cumple esos cuatro requisitos.
2
Código Abierto (Open Source)
La iniciativa Open Source [16] nació a partir de la FSF y aunque gran parte de las características de los programas Open
Source son virtualmente equivalentes a las del Software Libre ambos movimientos tienen puntos de vista totalmente
diferentes. En primer lugar, la piedra angular de la FSF es la Libertad, libertad de ejecución, distribución, análisis y
modificación; la iniciativa Open Source carece de esa connotación ética y utiliza como fundamento de la “libertad” del
software la posibilidad de examinar (y, por añadidura, modificar y redistribuir) el código fuente, además de especificar
una licencia de distribución del software que extiende esta ambigua definición.
Es necesario destacar que una de las razones que llevaron a la constitución de la iniciativa Open Source fueron las
connotaciones negativas del Software Libre, especialmente, en el mundo empresarial. Según los miembros de Open
Source el término free (libre) era un handicap que podía frenar el desarrollo comercial del software libre; la FSF, por el
contrario, considera que el hecho de que se pudiera tener como objetivo principal del software garantizar la libertad de
los usuarios intranquilizaba a las empresas y una versión menos “combativa” podía resultar comercialmente más
interesante.
Al margen de estas diferencias de planteamiento y, a efectos prácticos, el Código Abierto puede ser considerado
software libre, con minúsculas, por contraposición al Software Libre, con mayúsculas.
Freeware y shareware
Ambos términos hacen referencia a la forma en que una aplicación específica es distribuida y a las condiciones bajo las
cuales el usuario deberá pagar por su utilización.
Bajo el término freeware se suelen incluir aquellos programas que pueden redistribuirse sin pagar por ellos; sin
embargo, aún cuando el freeware garantiza dos de las cuatro libertades exigidas por la definición de Software Libre de la
FSF no existe la libertad de análisis ni la de modificación (puesto que el código fuente no se suele distribuir). Por esa
razón, el freeware no es Software Libre (ni Código Abierto).
El shareware es similar pues permite la redistribución gratuita del software, sin embargo, exige el pago del software por
parte del usuario si éste desea hacer un uso continuado del mismo; como se puede comprobar, el shareware además de
las limitaciones del freeware elimina la libertad de ejecución estando, por tanto, fuera de la categoría de Software Libre.
Nuestra propia definición de software libre
Como se puede ver dentro del mundo del software libre existen dos tendencias bien definidas, por un lado el Software
Libre y, por otro, el Código Abierto; a efectos prácticos ambas son extremadamente similares aunque difieren en
aspectos de base. Dejando a un lado esas diferencias ético-filosóficas, los desarrolladores están interesados en el
software como herramienta de trabajo, así pues, en aras del pragmatismo se hace necesario dar una definición del
software libre más abierta que las propuestas por FSF y la iniciativa Open Source pero lo suficientemente restrictiva
como para dejar fuera soluciones propietarias y cerradas; así, una posible definición de software libre podría ser la
siguiente:
Es software libre aquel que puede utilizarse y distribuirse libremente, mediante el pago de unas tasas o de
forma gratuita; cuyo código fuente es accesible o, en caso contrario, está construido de acuerdo con unas
especificaciones públicas y cuyo desarrollo es llevado a cabo por la comunidad de usuarios o cuenta con
las aportaciones de los mismos.
Como se puede apreciar, en nuestra definición de software libre tiene cabida tanto el Software Libre o el Código Abierto
como iniciativas comerciales como Java o PHP. A partir de este momento y durante el resto del documento el término
software libre hará referencia a esta nueva definición.
Software libre es software de calidad
Una de las cuestiones que con mayor frecuencia se plantean al referirse al software libre es la referente a su calidad. A
priori podría pensarse que un software que es desarrollado por una comunidad de usuarios sin ánimo de lucro estará
pobremente desarrollado y será escasamente fiable; nada más lejos de la realidad, el software libre tiende a ser más
fiable, robusto y eficiente que el software propietario.
Algunas de las razones que permiten esa mayor calidad son las siguientes:
•
La razón de ser del software libre no es el lucro sino la resolución de problemas con lo cual el software es
desarrollado para funcionar de manera adecuada.
3
•
El software libre es sometido a prueba por los usuarios en condiciones muy distintas con lo cual los fallos
son localizados más rápidamente.
•
La libre distribución del código fuente hace posible que un número enorme de desarrolladores pueda
examinarlo, localizar los fallos y proporcionar parches para los mismos con mayor rapidez que un equipo
de desarrollo reducido (siempre menor que una comunidad internacional de usuarios).
•
Al disponerse del código fuente es posible comprobar que un software hace lo que debe hacer, esto es, el
software libre facilita la auditoría del código, algo imposible con software propietario.
Por todo ello, el software libre es una posibilidad muy a tener en cuenta a la hora de desarrollar proyectos reales
independientemente de los recursos económicos disponibles; de hecho las razones fundamentales por las que
organizaciones y empresas de todo tipo están optando por utilizar software libre (principalmente para el desarrollo en
Internet) son la mayor fiabilidad, mejor rendimiento, mayor seguridad y mejor escalabilidad del software libre frente a
soluciones propietarias equivalentes (fundamentalmente sistemas operativos, servidores web y bases de datos).
3
ELEMENTOS SOFTWARE PARA LA CONSTRUCCIÓN DE UN WEBSITE
Para la implantación de un sitio web deben considerarse los distintos elementos software que permitirán configurar el
sitio con todas las funcionalidades requeridas (presentación estática de contenidos, transacciones, contenidos dinámicos,
seguridad, etc). Estos artefactos software pueden formar parte del sistema operativo o del software de aplicaciones que
debemos añadir al mismo para alcanzar las funcionalidades requeridas.
Normalmente se piensa en un sitio web, desde el punto de vista arquitectónico, como un programa que se encarga de
servir paginas HTML. De tal forma que nos basta con un simple editor para construir los contenidos en formato HTML
y colocarlos en el lugar adecuado para que el servidor web pueda proporcionárselos al cliente (browser o navegador) que
los solicite.
Pero con esta simple funcionalidad (como ocurría en los inicios del web) no sería posible alcanzar los objetivos que
requiere hoy en día un portal (adaptación de contenidos al usuario, intercambio de información con el cliente,
computación en la parte del cliente o del servidor, etc). Para ello se debe disponer de una plataforma mas compleja
(Fig.1), proporcionada bien por el propio sistema operativo, el servidor web o aplicaciones adicionales que interactúen
con ambos proporcionando los servicios adicionales (acceso a datos, desarrollo de lógica de control, generación
dinámica de contenidos, etc).
Fig.1 - Elementos software necesarios para el desarrollo de un website.
Las prestaciones del sistema operativo, del servidor web, o de módulos adicionales, la integración entre ellos, su
rendimiento en conjunto, así como el coste de todos los elementos software necesarios serán criterios a considerar a la
hora de seleccionar la plataforma.
4
4
SOFTWARE LIBRE PARA LA CONSTRUCCIÓN DE UN WEBSITE
Sistema operativo
En la actualidad existen sólo dos paradigmas fundamentales de sistemas operativos: el intérprete de línea de comandos
(UNIX, DOS), y la interfaz gráfica (Macintosh OS, OS/2, Familia S.O. Windows). Mientras que la última es claramente
más intuitiva y preferida por la mayoría de los usuarios, la industria debe ahora tomar otra medida hacia el sistema
operativo ideal. La siguiente generación de sistemas operativos utilizará las nuevas herramientas desarrolladas como
programación orientada a objetos (OOP), y nueva tecnología hardware, para crear un ambiente que beneficie a los
programadores así como a los usuarios; sin embargo, para el desarrollo de aplicaciones en Internet se hace necesario
apostar por sistemas operativos probados, ampliamente utilizados, que ofrezcan la mayor funcionalidad, estabilidad y
fiabilidad posible, así como un optimo rendimiento, sencillez en la administración y, a ser posible, disponibles como
software libre.
Las alternativas más habituales a la hora de establecer un sitio web son Windows NT (software propietario) y alguna de
las variantes de UNIX (disponibles tanto como software propietario como libre); aunque sea de forma muy breve, es
necesario destacar algunos puntos que hacen más aconsejable la utilización de un sistema operativo UNIX frente al uso
de un servidor NT:
•
Existen multitud de proveedores de sistemas operativos UNIX, muchos de ellos distribuidos como software
libre.
•
UNIX es fácilmente escalable
•
UNIX hace uso de los recursos más eficientemente que Windows NT.
•
Los estándares de UNIX son independientes de los proveedores.
•
Windows NT sólo brinda restricciones; sólo corre en plataformas Intel o Alpha y la mayor parte del software es
propietario mientras que UNIX está disponible para múltiples plataformas y existe gran cantidad de software
libre.
•
Windows NT es estático, es decir no es posible construir un kernel apropiado mientras que UNIX es dinámico,
se puede configurar un kernel apropiado a las necesidades del usuario.
Como se puede apreciar, son muchos los aspectos que hacen más interesante un sistema operativo UNIX que un sistema
NT para el servidor de una aplicación Internet. Ya se ha mencionado que existen muchas distribuciones de operativos
UNIX disponibles como software libre; algunas de las más conocidas son Linux [4], NetBSD [15] y FreeBSD [14].
Linux
Linux es un clon de UNIX inicialmente desarrollado por Linus Torvalds y mantenido por una comunidad internacional
de desarrolladores que soporta el software de libre distribución de GNU.
Dispone de todas las características que se encuentran en sus parientes comerciales y otras muchas. El sistema corre
sobre ordenadores personales basados en Intel y en estaciones de trabajo basadas en Sparc; no obstante, hay
adaptaciones de Linux para Power-PC, Motorola 68000, MIPS y Alpha. Soporta una gran cantidad de periféricos y
software, incluyendo el sistema de ventanas X, Emacs, TCP/IP, etc. Linux satisface los estándares más importantes de la
industria como POSIX y el estándar de C.
NetBSD
El proyecto NetBSD surgió como resultado del esfuerzo de un gran número de personas que tenían como meta producir
un sistema operativo tipo UNIX accesible y libremente distribuible. NetBSD está basado en una gran variedad de
software de libre distribución.
NetBSD está disponible para gran variedad de plataformas (i386, Amiga, Atari, Alpha, Sparc, etc.) Soporta muchas e
importantes mejoras y se tiene la intención de satisfacer los estándares más importantes de la industria como POSIX y el
estándar de C.
FreeBSD
FreeBSD es un sistema operativo UNIX basado en la versión 4.4 BSD-lite de la Universidad de Berkeley desarrollado
5
para máquinas i386 (ordenadores personales con microprocesadores 386, 486 y Pentium). Originalmente, su desarrollo
se basó en la versión Net/2, también conocida como 386BSD de William Jolitz, aunque en estos momentos no quede
prácticamente nada del código original.
Una de las grandes ventajas de FreeBSD sobre otros sistemas, como Linux, es que existe una sola distribución
coordinada por un grupo de trabajo dedicado a ello, haciendo el sistema más homogéneo, controlado y estándar. Esto no
quiere decir que sea un sistema cerrado, ya que los grupos son totalmente abiertos, aceptándose la colaboración de todo
el mundo.
Servidor web
La piedra angular de cualquier portal es, con toda seguridad, el servidor web; el software encargado de atender las
peticiones de los clientes y enviarles las páginas web solicitadas. Existen multitud de paquetes software para montar
servidores web, muchos de ellos distribuidos como software libre y siendo, sin lugar a dudas, el más popular de todos
Apache [1].
El servidor Apache es el producto de un equipo de desarrolladores que, de forma desinteresada, construyen un servidor
HTTP robusto, de alta calidad y disponible de forma libre. Apache se basó inicialmente en el servidor desarrollado en la
NCSA (National Center for Supercomputing Applications) al que se le fueron añadiendo parches y diversas
ampliaciones. Menos de un año después del inicio del proyecto, Apache superó al servidor de la NCSA como servidor
más utilizado en Internet, teniendo en la actualidad un porcentaje de utilización superior al 60%.
Motor de base de datos
Debido al requisito impuesto inicialmente (utilización de software libre), opciones como Oracle, Sybase o DB2 deben
ser descartadas aún cuando son las que cuentan con una base de usuarios más extendida en la actualidad. Esta situación,
sin embargo, comienza a cambiar, pues aunque hoy en día los SGBD propietarios tienen gran parte del mercado, en los
últimos tiempos se está viendo cómo los SGBD libres están creciendo en prestaciones y presencia en el mercado, de tal
manera que en poco tiempo podrán estar en condiciones de luchar de igual a igual con los grandes SGBD propietarios.
Prueba de ello es la reciente aparición de un kit de migración de MySQL a Oracle, lo que viene a demostrar la
importancia que esta empresa comienza a dar a estos “competidores”.
Entre las alternativas disponibles dentro del software libre se decidió analizar las siguientes opciones:
o
MySQL [7].
o
InterBase [2].
o
PostgreSQL [12].
No se trató de un estudio exhaustivo sino que se procedió a realizar una búsqueda de análisis y comparativas de los tres
productos en Internet, donde se puede encontrar sobrada documentación al respecto.
MySQL
MySQL es una base de datos cuyo principal objetivo es la velocidad. Por esa razón en un principio sus desarrolladores
decidieron sacrificar ciertas prestaciones. Así, transacciones, foreign keys, subselects, etc. no existen en MySQL, a
cambio de obtener un mayor rendimiento. Por otro lado, cuenta con una gran cantidad de herramientas que permiten
administrar de manera cómoda la base de datos. En las últimas versiones de MySQL se han ido incorporando algunas de
las carencias que se habían visto, como son las transacciones (incluidas parcialmente en la versión 3.23). En un futuro se
prevé que sea 100% compatible ANSI SQL, pero sin olvidar el objetivo del rendimiento, por lo que se permitirá al
usuario configurar el funcionamiento de tal manera que pueda elegir entre rendimiento y las nuevas características.
MySQL, por otro lado, tiene un sistema de bloqueos por tabla en las operaciones de inserción, esto provoca que al
realizar una inserción, toda la tabla quede bloqueada, lo que en entornos con muchos usuarios puede llevar al colapso de
la base de datos. Este es un gran handicap de MySQL [9].
Cabe resaltar además que, aunque a veces la base de datos puede colgarse, normalmente no se produce ninguna
corrupción de la información, lo que es realmente importante cuando se está en un sistema en explotación.
InterBase
InterBase nació como una base de datos de código propietario, pero recientemente, a partir de la versión 6, Inprise (la
6
empresa propietaria) proporcionó una versión de la base de datos con el código libre, intentando que nuevos
desarrolladores se uniesen al proyecto. Ésta es una base de datos relacional consolidada, en las ultimas versiones se han
añadido características de SQL avanzado y se han mejorado las herramientas de administración y de configuración.
InterBase se comporta de un modo rápido con pocos usuarios, pero debido a su arquitectura no compartida, si el número
de usuarios aumenta, el rendimiento cae de forma drástica [6]. Se espera poder solucionar este problema en próximas
versiones de la base de datos, a medida que más desarrolladores se incorporen al proyecto (actualmente se encuentra
disponible la versión 6.1). El tamaño máximo de una fila de una tabla es de 64 KB, lo que puede ser una limitación
importante a la hora de almacenar cierto tipo de contenidos en la base de datos [2].
PostgreSQL
PostgreSQL es una base de datos relacional basada en objetos. Esta base de datos comienza su andadura en 1986, como
un sucesor de Ingres y en los últimos años se ha ido desarrollando gracias a un equipo de voluntarios a través de
Internet. Actualmente es totalmente compatible con el ANSI SQL92, incluyendo subselects, foreign keys, etc.
En la versión 7.0 de esta base datos existe una limitación en el tamaño de las filas de una tabla que puede variar entre los
8 y los 32KB (esta última opción penaliza el rendimiento) [9][12], siendo ésta una limitación importante dependiendo
del tipo de datos que se deseen almacenar en la base de datos. Esta restricción ha sido eliminada en la versión 7.1,
permitiendo un tamaño de filas prácticamente ilimitado.
Hay que hacer notar que el consumo de recursos por parte de PostgreSQL es muy elevado y carga el sistema, si se
compara con un sistema mucho más sencillo como es MySQL, pero en cambio y debido a su arquitectura de diseño,
escala muy bien al aumentar el número de CPUs y la memoria RAM disponible.
Quizá el principal problema que se le achacaba a PostgreSQL es que tradicionalmente ha sido lento, pero esto ha
cambiado con la aparición de la versión 7.0 y, sobre todo, de la versión, 7.1, las cuales demuestran en los benchmarks
realizados que actualmente PostgreSQL es, al menos, tan rápida como MySQL o InterBase, e incluso se puede comparar
con las bases de datos de código propietario [10].
Conclusiones
Aquí conviene resaltar que la elección de uno u otro SGBD vendrá dada por las necesidades específicas del web que se
quiera implementar, y en muchos casos será una decisión “subjetiva”.
A fecha de hoy, la versión libre de InterBase aún ofrece un rendimiento pobre en entornos con gran número de usuarios
concurrentes por lo que las opciones principales son MySQL y PostgreSQL; la diferencia fundamental entre ambos
SGBD’s es la implementación de SQL y la velocidad, si se necesita rapidez y características sencillas la elección es
MySQL mientras que en el caso de sistemas complejos en los que el rendimiento es una cuestión secundaria debería
optarse por PostgreSQL.
Es interesante hacer notar que en las ultimas versiones de ambos SGBD, se está tendiendo hacia un punto común.
MySQL está incorporando transacciones e intentando ser 100% ANSI 92 compatible, mientras que PostgreSQL, además
de ciertas mejoras, como el aumento del tamaño máximo de una fila, está poniendo especial énfasis en mejorar el
rendimiento, habiendo conseguido en su versión 7.1.x grandes mejoras en este terreno.
Por otro lado InterBase, a pesar de su escaso rendimiento actual, se ha incorporado al software libre recientemente y
cuenta con perspectivas de crecimiento rápidas, que le pueden hacer en un futuro muy cercano ser un firme candidato
frente a las dos bases de datos libres más consolidadas.
Como se puede ver, el software libre ofrece muchas posibilidades dentro de los SGBD’s, pudiendo encontrarse sistemas
completos que cumplan todos los requisitos de cualquier proyecto. Además, las perspectivas de futuros desarrollos no
hacen sino anunciar una mayor cantidad de prestaciones de todos los sistemas estudiados, así como mejores
rendimientos. Por todo ello, se puede afirmar que es posible optar por un SGBD libre en lugar de uno propietario sin
temor a ninguna merma de funcionalidad.
Lenguaje de programación de las páginas dinámicas
El último elemento imprescindible en el desarrollo de un portal es el lenguaje de programación utilizado para la
generación dinámica de las páginas; fundamentalmente existen tres posibilidades: CGI, Servlets (Java) y lenguajes
incrustados. A continuación se describirán de forma somera cada una de esas posibilidades.
7
CGI (Common Gateway Interface)
CGI no es un lenguaje, se trata de una especificación para la transferencia de información entre un servidor web y un
programa que puede estar escrito en cualquier lenguaje, siendo Perl [8] y Python [13] los más habituales. Un problema
que se suele plantear es el de la lentitud de ejecución debido a la necesidad de iniciar un nuevo proceso cada vez que se
invoca un script CGI; proceso que, en el caso de Perl o Python, es interpretado. Se suelen mencionar los servlets como
una alternativa más eficiente que CGI, sin embargo, existe una extensión para este interfaz, conocida como FastCGI, que
permite scripts persistentes, con lo cual el problema de crear un nuevo proceso por cada invocación desaparece; FastCGI
es una opción más que recomendable para aquellos desarrolladores con gran cantidad de código CGI heredado.
Servlets (Java)
Los servlets son el planteamiento ofrecido por la plataforma Java para extender servidores web; los servlets son
independientes de la plataforma y del servidor y pueden acceder a todos los APIs de Java, posibilitando el desarrollo de
verdaderas aplicaciones en la web.
La diferencia fundamental entre CGI y los servlets es la persistencia1; esto quiere decir que una vez un servlet ha sido
lanzado permanece en memoria y puede atender múltiples peticiones de servicios, por esa razón esta alternativa es más
rápida que el CGI tradicional al no necesitar lanzar un nuevo proceso cada vez que se realiza una petición.
Lenguajes incrustados
Un inconveniente del CGI y de los servlets es la necesidad de generar todo el código HTML de la página desde el
programa, los lenguajes incrustados ofrecen una aproximación diferente. En primer lugar, el código ejecutable no está
separado del código HTML sino que éste es incrustado en el código HTML mediante etiquetas específicas; en segundo
lugar, la ejecución es llevada a cabo por el servidor web dentro de su propio hilo.
Dentro de los lenguajes incrustados existen diferentes alternativas; entre las más conocidas están:
o
ASP (Active Server Pages) de Microsoft: en realidad, ASP no es un lenguaje sino una tecnología de código
incrustado para el servidor web MS-Internet Information Server, los desarrolladores pueden utilizar diferentes
lenguajes de programación para desarrollar ASP, por ejemplo VBScript o JScript (JavaScript).
o
JSP (Java Server Pages): JSP es una extensión de los servlets desarrollada por Sun como alternativa al ASP de
Microsoft; básicamente, permite la introducción de código Java dentro del código HTML, dicho código Java
puede llevar a cabo diversas tareas, como por ejemplo utilizar servicios proporcionados por servlets.
o
PHP (PHP Hypertext Preprocessor) [11]: PHP sí es un lenguaje específico desarrollado para la generación de
páginas dinámicas; tiene una sintaxis similar a la de C y Tcl y es interpretado por un plug-in que se debe añadir
al servidor web.
¿Conclusiones?
A la vista de lo anterior, ¿cuál es la tecnología más adecuada? Lo cierto es que esa pregunta no tiene una respuesta
sencilla puesto que, en esencia, todos los lenguajes pueden llevar a cabo las mismas tareas y con prestaciones muy
similares: velocidad de ejecución, interfaces para bases de datos, incrustación de código en HTML, etc. En realidad,
como en todas las “guerras de religión” el problema radica en una pregunta engañosa: no existe la tecnología más
adecuada, sino la tecnología más adecuada para un problema concreto. De hecho, ni siquiera eso es totalmente cierto,
puesto que todas las alternativas disponibles adolecen de un grave problema: la imposibilidad de separar de una forma
adecuada la presentación de la lógica de control; por esa razón, no existe una tecnología adecuada sino una solución no
tan mala para un problema en particular.
5
CASO PRÁCTICO: PROTOTIPO DE PORTAL PARA LA EUITIO
Situación actual y necesidades
El sitio web de la E.U. de Ingeniería Técnica Informática de Oviedo se inauguró a comienzos del curso 96/97 y durante
los últimos tres años de funcionamiento se ha convertido en el referente fundamental en cuanto a temas académicos,
1
Aunque, como ya se mencionó, CGI permite la existencia de scripts persistentes mediante el uso de FastCGI.
8
formativos, profesionales e incluso lúdicos relacionados con el Centro y sus miembros.
Sin embargo, este sitio padecía una dolencia que, por desgracia, es aún frecuente en muchas de las organizaciones con
presencia en la web: la limitada mantenibilidad del mismo debido a una gestión totalmente manual de la información.
Este problema suponía que los servicios ofrecidos por el Centro en la web eran muy limitados y, aún así, requerían un
esfuerzo considerable por parte de los encargados de administrar y mantener el sitio.
A principios del curso 1999/2000 se toma la decisión de reconstruir enteramente el sitio, debía abandonarse el enfoque
seguido hasta ese momento que lo reducía a un mero repositorio de documentos y adoptar otro que implicaba el
desarrollo de una serie de aplicaciones web que proporcionasen las herramientas necesarias para poder administrar un
portal con publicación on-line [5] que, en definitiva, era en lo que se había convertido el sitio de la Escuela.
Además, ese planteamiento del sitio web como aplicación Internet favorecería la futura prestación de nuevos servicios;
por ejemplo: la diversificación de personas que pudieran “publicar” además de los administradores (dirección,
profesores, etc.), la posibilidad de ofrecer un interfaz web más adecuado para los alumnos (personalizable según sus
asignaturas y preferencias, posibilidad de realizar ciertos trámites on-line, ...), así como las ventajas para implementar
ciertas aplicaciones “ubicuas”.
Software seleccionado
Para desarrollar este sitio se decidió utilizar únicamente software libre, todos los elementos constitutivos del portal
debían cumplir dicho requisito; en los apartados anteriores se han mostrado distintas posibilidades disponibles (Fig.2), a
continuación se explicarán las razones que llevaron a los autores a decidirse por una solución o por otra en función de
los requisitos y características del proyecto a desarrollar.
Servidores
HTTP
ASP
JDBC/ODBC
CGI (Perl/Python)
HTML
IIS
Apache
PHP
Servlets
Cliente
SGBD
JSP
Servidor
Fig.2 - Distintas posibilidades tecnológicas para el desarrollo de un portal web.
Sistema operativo y servidor web
La selección de sistema operativo y servidor HTTP fue muy sencilla, como se mencionó anteriormente existen dos
alternativas respecto al operativo: Windows NT y UNIX, el primero debía descartarse por ser propietario, en cuanto a
UNIX existían diversas posibilidades libres (Linux, NetBSD y FreeBSD), se optó por Linux puesto que los autores
tenían mayor experiencia con dicha variante y sabían que satisfacía los requisitos del proyecto. Por lo que respecta al
servidor web Apache era una decisión obvia, no por ser el servidor más utilizado sino porque ese porcentaje de
utilización es un indicador de su estabilidad y calidad.
Base de datos
En principio y tras ver tres sistemas (MySQL, PostgreSQL e InterBase) que eran capaces de soportar, en mayor o menor
grado, todos los requerimientos de funcionamiento, se descartó InterBase, por su pobre rendimiento en ambientes con
muchos usuarios concurrentes, como lo es una aplicación web, y por la limitación encontrada en el tamaño máximo que
puede tener una fila de una tabla, que en este caso era un tema importante; por lo tanto la elección se centraba entre
MySQL y PostgreSQL.
Ambos SGBD cuentan con una base de usuarios bastante extendida, con multitud de interfaces, APIs y documentación.
Ambos son portables a una gran cantidad de plataformas.
MySQL ofrece en principio una mayor velocidad, pero por otro lado, su sistema de bloqueo de la tabla entera en
9
operaciones de inserción puede provocar un bloqueo en la base de datos si muchos usuarios proceden a realizar este tipo
de operaciones simultáneamente, y una aplicación web es un claro ejemplo de aplicación en la que muchos usuarios
concurrentes deben poder trabajar con los mismos datos. Otro punto a tener en cuenta son las carencias de MySQL
respecto a transacciones (incorporadas en la versión 3.23), subselects, triggers, foreign keys, etc.
En el otro lado estaba PostgreSQL, que es compatible con ANSI SQL92, la cual pese a ser más lenta en general, cuenta
con ventajas como soportar una mayor carga de trabajo, contar con triggers, subselects, transacciones, etc. así como con
un sistema de bloqueo de tablas a nivel de fila, lo que permite realizar multitud de operaciones concurrentes sobre la
misma tabla sin producir un retardo.
En MySQL la responsabilidad de controlar toda la consistencia e integridad de la información recae sobre la aplicación,
lo que penaliza el tiempo de desarrollo, en cambio en PostgreSQL al poder hacer uso de foreign keys, transacciones, etc.
es el SGBD el que se ocupa de estos temas quedando el programador liberado de ellos, lo que lleva a un mayor aumento
de la productividad.
Por lo tanto para elegir entre uno u otro SGBD, lo primero que se debe saber son las necesidades del sistema a
desarrollar (transacciones, foreign keys, etc.). Si se necesita un sistema rápido, con pocos usuarios concurrentes y sin
necesidad de transacciones, triggers, etc. se puede optar por MySQL, pero PostgreSQL proporciona un entorno más
robusto, las cuestiones de rendimiento están siendo mejoradas rápidamente y en las últimas versiones los resultados son
muy satisfactorios.
En nuestro caso en particular nos decantamos por PostgreSQL, debido a la posibilidad de hacer uso de las transacciones
(en ese momento la versión 3.23 de MySQL no era estable), implementar triggers, subselects, foreign keys, etc. Y a que
la velocidad de proceso, pese a ser un factor a tener en cuenta, no era determinante para la elección.
Lenguaje de programación
Por lo que respecta al lenguaje de programación se optó entre tres posibilidades, Perl, Java y PHP, todos ellos podían
servir perfectamente para las necesidades del proyecto a desarrollar, sin embargo, existía una peculiaridad respecto a
dicho proyecto que es necesario mencionar.
La peculiaridad en cuestión se refiere al personal encargado del futuro mantenimiento de este nuevo sitio web; dicho
personal está constituido por becarios (alumnos de último curso con pocas asignaturas pendientes) que, además de otras
muchas tareas, deberán dedicar algo de tiempo al servidor web. Un becario podría, teóricamente, prestar sus servicios
durante dos años académicos pero, en general, dichos servicios se prolongan durante unos nueve meses.
Cada lenguaje pasó entonces a considerarse a la luz de dicho punto:
o
Perl: los scripts escritos en Perl son crípticos y difíciles de mantener incluso por el autor de los mismos,
pretender que un proyecto como un sitio web académico fuera desarrollado en Perl por un becario distinto cada
año y se mantuviera comprensible y mantenible parecía difícil de creer, así que se decidió desechar este
lenguaje.
o
Java: un lenguaje muy potente y una de las elecciones más adecuadas para un desarrollo como el descrito. Sin
embargo, tampoco fue el lenguaje elegido; la razón fue coyuntural: los becarios encargados del mantenimiento
y futuro desarrollo del sitio web de la EUITIO son alumnos de los últimos cursos que no tienen por qué conocer
nada de tecnologías Internet; un proyecto como éste desarrollado íntegramente en Java podía resultar
demasiado ambicioso para un solo alumno trabajando de forma discontinua. No obstante, en el futuro próximo
los alumnos adquirirán de forma cada vez más temprana conocimientos sobre Java y desarrollo en Internet,
momento en el cual habrá que plantearse la posibilidad de migrar el sistema a un entorno basado en servlets.
o
PHP: la última esperanza, para ser de utilidad con los requisitos planteados dicho lenguaje tendría que tener una
curva de aprendizaje poco pronunciada y un período de entrenamiento corto; además, tendría que tener una
sintaxis fácilmente comprensible y facilitar en cierta medida el mantenimiento. ¿Era esto así? Por suerte sí, la
sintaxis de PHP se asemeja a la del lenguaje C y a los típicos lenguajes de script como Tcl, resulta sencillo de
comprender y de mantener; por otra parte, la gran calidad de la documentación disponible y el enorme número
de funciones que proporciona hacen realmente sencillo su empleo. Para comprobar la validez de esta hipótesis
se planteó un período de aprendizaje de un par de semanas al término del cual se decidiría si el sistema se
implementaría en dicho lenguaje, al finalizar este período la respuesta fue afirmativa y comenzó todo el proceso
de desarrollo.
10
Integración final
Por último, la integración final de todos los elementos es relativamente sencilla. Tanto Apache como PostgreSQL
proporcionan dos servidores que serán los encargados de atender las peticiones recibidas de los clientes web y las
consultas SQL recibidas a través de la red, respectivamente.
Por su parte, el código PHP será interpretado por un módulo que se integra en Apache de tal forma que, una vez
configurado el servidor web, los documentos con una extensión determinada serán preprocesados por dicho módulo, que
interpretará el código PHP que haya en los mismos, para generar un documento HTML que será enviado por el servidor
hacia el cliente. Por lo que respecta a las consultas SQL que ejecutará el módulo de PHP contra la base de datos, estas
serán llevadas a cabo mediante una comunicación TCP/IP que establecerá el propio módulo con el servidor del SGBD.
6
CONCLUSIONES
En la actualidad existen gran cantidad de tecnologías disponibles para el desarrollo de sitios proveedores de información
dinámica; tecnologías que varían enormemente en términos de coste, calidad y dificultad de desarrollo. Este artículo ha
tratado de mostrar las posibilidades existentes utilizando únicamente software libre, no por razones de coste sino
fundamentalmente por aspectos como la fiabilidad y el rendimiento.
Creemos que es posible desarrollar portales web utilizando únicamente software libre y que, en particular, el conjunto
Linux-Apache-postgreSQL-PHP puede resultar perfectamente satisfactorio para el desarrollo de portales o la prestación
de servicios a través del web por parte de organizaciones pequeñas y medianas.
7
REFERENCIAS
1.
Apache Software Foundation. Apache. http://www.apache.org
2.
Borland Software Corporation. Interbase. http://www.borland.com/interbase
3.
Free Software Foundation. The Free Software Definition. http://www.fsf.org/philosophy/free-sw.html.
4.
Free Software Foundation. Linux and the GNU Project. http://www.fsf.org/gnu/linux-and-gnu.html.
5.
Gayo Avello, D., López Pérez, B., Labra Gayo, J.E. Desarrollo del portal web de la E.U. de Ingeniería Técnica
en Informática de Oviedo. VII Jornadas sobre la Enseñanza Universitaria en Informática. JENUI 2001. Palma
de Mallorca, España. Julio, 16-18, 2001.
6.
Lilly, N. PostgreSQL: Taking E-Business Up a Notch. http://www.webtechniques.com/archives/2001/01/lilly/,
2001.
7.
MySQL AB. MySQL. http://www.mysql.com
8.
O'Reilly & Associates, Inc. Perl. http://www.perl.org
9.
Perdue, T. MySQL and PostgreSQL Compared.
http://www.phpbuilder.com/columns/tim20000705.php3?page=1&print_mode=1, 2000.
10. Perdue, T. Open Source Databases: As The Tables Turn.
http://www.phpbuilder.com/columns/tim20001112.php3?print_mode=1, 2000.
11. PHP Development Team. PHP: Hypertext Preprocessor. http://www.php.net
12. PostgreSQL Global Development Group. PostgreSQL. http://www.postgresql.org
13. Python Software Foundation. Python. http://www.python.org.
14. The FreeBSD Project. The FreeBSD Project. http://www.freebsd.org.
15. The NetBSD Foundation, Inc. The NetBSD Project. http://www.netbsd.org.
16. The Open Source Initiative. The Open Source Initiative. http://www.opensource.org.
11
Descargar