Computación de quinta generación
Acabo de terminar mi tarea de ingeniería de software, y este es el resultado. Un pequeño compendio de lo que yo creo que será la quinta generación de la informática y la computación.
Investigación especulativa sobre la quinta generación de la computación
Manuel Amador (Rudd-O) <rudd-o@amautacorp.com>
5 de Abril de 2002
Introducción
En mi opinión personal, la quinta generación de la informática vendrá pavimentada por los siguientes avances:
Software libre/de fuente abierta
El software libre/de fuente abierta será la piedra base de la infraestructura del futuro, tal y como lo ha sido para generaciones anteriores y la presente. Todo el software que sostiene a la Internet es parte o completamente derivada de software de fuente abierta, y la gran mayoría de instalaciones de servidores son instalaciones de servidores de software de fuente abierta (Sendmail/Postfix para el correo electrónico, Squid para las cachés aceleradoras Web, Linux/BSD para ruteos y QoS - quality of service,
Apache para servicio de páginas Web, BIND para servicio DNS - todos los servidores DNS raíz corren BIND) por los siguientes motivos:
- el código fuente abierto es fuertemente probado en instalaciones de producción, por muchas personas, gracias a su disponibilidad abierta
- el código fuente abierto es corregido rápidamente por la colaboración de todos lo que lo prueban (es muy difícil que se escape un error que comprometa la seguridad o el rendimiento de un sistema estando bajo el escrutinio de millones de personas)
- el incentivo para mejorar un software de fuente abierta es grande ya que de una mejora se benefician todos inmediatamente
- las respuestas a ataques de seguridad por parte de los vendedores son más veloces y transparentes
De este software libre infrastructural (p. ej. sistemas operativos enteros avaluados en billones de dólares de inversión en desarrollo colectivo) nacen la mayor parte de los avances que representarán la informática de quinta generación:
Computación peer to peer/grid
La computación peer to peer, definida como la colaboración de servientes (clientes/servidores simultáneos) para compartición de recursos, sea procesamiento o almacenamiento, que tiene una característica única de descentralización, juega una parte central del partido para ganar la quinta generación. En este momento tenemos sistemas de almacenamiento distribuido con inteligencia neuronal (Gnutella, Freenet, FastTrack) en instalaciones gigantescas con Terabytes de datos disponibles. En el futuro veremos sistemas operativos distribuidos (grid/distributed computing) que podrán compartir recursos, y granjas de computación que vendan sus ciclos de computación al por mayor a quienes lo necesiten, optimizando así el uso de los recursos. Esto, naturalmente, depende de una infraestructura de red firmemente distribuida, lo cual ya se está dando con la aparición y la adopción de IPV6 e Internet2.
Paralelismo escalable con componentes "commodity"
En el ámbito de la computación de clustering, tecnologías libremente disponibles en la actualidad harán mucho más sencillo que los consumidores aumenten su carga de procesamiento potencial horizontalmente, en lugar de verticalmente. Un buen ejemplo de esto es MOSIX, que es una extensión open-source al núcleo Linux, mediante la cual el usuario puede crear un cluster totalmente transparente, y añadir equipos al cluster sobre la marcha sin necesidad de cambiar nada en el resto de los equipos, añadiendo así efectivamente capacidad computacional con equipos por menos de USD 500, en lugar de invertir en servidores SMP.
Portabilidad integrada en el diseño de sistemas
Paralelo al desarrollo de tecnologías peer-to-peer, con el propósito de abarcar completamente la diversidad informática de plataformas, las abstracciones estilo Java y lenguajes interpretados se convierten en alternativas reales para el desarrollo de tecnologías. Un ejemplo de esto es JXTA, un juego de componentes para interacción peer-to-peer
Semánticas de base de datos en sistemas operativos
Como parte de la explosión de datos disponibles y de la capacidad de los medios de almacenamiento, cada día se hace más difícil encontrar y organizar la información suelta que cada uno posee dentro de sus equipos. Las metáforas de GUI y jerarquías de directorios resultan en fricción para grandes volúmenes de datos ya que son exclusivas y son parte del modelo de herencia Clase base (Java), en lugar de corresponder con el modelo Bosque (C++). Puesto que el modelo Bosque tampoco satisface la necesidad de organización de datos debido a su volumen, tenemos que buscar asistencia automatizada en asociaciones sencillas.
De acuerdo al paper presentado por Hans Reiser (escritor del ReiserFS, un sistema de archivos base de datos orientado a objetos de alto rendimiento para Linux, y fundamento de varias bases de datos), sería un error emprender una tarea de categorización de datos relacional, ya que la selectividad de los operadores de búsqueda de datos relacionales (SQL) es mala, producto directo de nuestra propia semántica de búsqueda de datos. El cerebro humano suele establecer relaciones de forma libre entre objetos (Juan/Pedro), y sólo después de establecerlas les asigna categorías y/o etiquetas a los tipos de relaciones (Juan es padre de Pedro).
Hans Reiser propone una solución a nivel de sistema operativo para el almacenamiento y la indexación de documentos automática en el sistema de archivos, que permite encontrar cualquier documento de un conjunto enorme de forma determinística con una altísima selectividad. Esta solución ya está disponible en Linux, sin embargo la compatibilidad POSIX y la falta de APIs para aplicaciones no permite que las mismas aplicaciones aprovechen estas características. Una vez que las aplicaciones las aprovechen, el usuario podrá preguntarle al sistema operativo, por ejemplo, que busque todos los [e-mails] relacionados con [Afganistán] y redactados por [alguien cuyo nombre contiene Juan], convirtiendo al sistema operativo en una verdadera extensión sin fricción del cerebro.
Microsoft, notando el apoyo incremental de la industria, está impulsando (2) una característica similar en Longhorn (su siguiente versión de OS), pero la tecnología que opera en él es relacional, así que muy probablemente tenga mucha menos selectividad y/o rendimiento.
Servicios Web
Como una forma de tercerizar costos, dejar de lado los formatos propietarios y aumentar la interoperabilidad, el consorcio WWW (w3c) está trabajando bajo presión para crear estándares de servicios Web, principalmente mediante la creación de DTDs XML. Los servicios Web, primitivamente presentes en este momento, permiten exponer una serie de métodos y propiedades en equipos remotos para operar sobre conjuntos de datos en diferentes partes. En este momento ya existe un transporte designado para la interoperabilidad de sistemas orientados a objetos (SOAP/XML-RPC), es popular ver servicios de Blog, servicios de sindicación (RDF, RSS), y se está desarrollando un estándar de negocios (Business XML) para poder satisfacer las necesidades de comunicación. También hay tecnologías de directorios para el descubrimiento de servicios Web (UDDI).