4.2.2 El rol del Software de Código Abierto




La iniciativa de código abierto utiliza la definición de código abierto para determinar si una licencia de software realmente puede considerarse de código abierto. La definición se basa en las directrices de software libre de Debian, escrito y adaptado principalmente por Bruce Perens. Según la definición de Perens, el término fuente abierta describe ampliamente un tipo general de licencia de software que hace que el código fuente disponible para el público sea sin restricciones significativas de derechos de autor. Los principios definidos no dicen nada sobre el uso de marcas registradas o patentes y no requieren cooperación para garantizar que cualquier régimen común de auditoría o autorización se aplique a las obras derivadas. Se considera una característica explícita del código abierto que no puede imponer restricciones al uso o distribución por parte de cualquier organización o usuario. Prohíbe esto, en principio, para garantizar el acceso continuo a obras derivadas incluso de los principales contribuyentes originales.

Durante la última década, el software de código abierto ha alcanzado un gran porcentaje de todo el software a nivel mundial. En está década ha existido siempre una demanda de software que sea gratuito, confiable y esté disponible para que cualquiera pueda modificarlo y adaptarlo a sus necesidades individuales. Distribuciones de código abierto como Red Hat, OpenSuSE y BSD, junto con aplicaciones de código abierto como Apache, MySQL y muchos otros se han utilizado durante mucho tiempo para bases de datos de energía, web, correo electrónico y servidores de archivos. Sin embargo, algo que tiene tanto impacto como las aplicaciones utilizadas en un centro de datos ha causado que muchos de los implementadores duden en adoptar software de código abierto, hasta ahora. Recientemente, más de unos pocos usuarios se han convertido en firmes defensores de que el código abierto puede funcionar y funciona en el entorno del centro de datos. En una artículo, Robert Wiseman, director de tecnología de Sabre Holdings (una empresa de tecnología de marketing y distribución de viajes en Southlake, Texas, que utiliza software de código abierto en más de 5000 servidores) declaró:

Es cierto que con los productos de código abierto, los usuarios generalmente pierden la seguridad de los equipos de soporte profesional para ayudar a resolver sus problemas rápidamente. Pero en nuestro entorno, casi siempre compramos soporte para nuestros productos de código abierto de proveedores de alta calidad. Esto, por supuesto, reduce algunas de las ventajas de costos de usar código fuente, pero las ventajas son lo suficientemente grandes como para que todavía haya muchas sobras, y la seguridad que obtenemos de un contrato de servicio nos permite dormir mejor por la noche.

Sabre Holdings utiliza un bus de servicio empresarial para la transformación, el enrutamiento y otras tareas de los mensajes. Un bus de servicio empresarial (ESB) se refiere a una construcción de arquitectura de software que normalmente se implementa mediante tecnologías vistas como un tipo de infraestructura de middleware. Los ESB generalmente se basan en estándares reconocidos y brindan servicios fundamentales para arquitecturas complejas a través de un motor de mensajería basado en estándares e impulsado por eventos (llamado buses ya que transforman y transportan los mensajes a través de la arquitectura).

Un ejemplo de ESB de código abierto es Apache Synapse, este es un sistema ESB fácil de usar y además liviano, que ofrece una amplia gama de administración, enrutamiento y capacidades de transformación. Con soporte para HTTP, SOAP, SMTP, JMS, FTP y transportes del sistema de archivos, se considera bastante versátil y puede ser aplicado en una amplia variedad de entornos. Es compatible con estándares como WS-Addressing, Web Services Security (WSS), Web Services Reliable Messaging (WSRM), adjuntos binarios eficientes (MTOM / XOP), así como estándares de transformación clave como XSLT, XPath y XQuery. Sinapsis admite una serie de funciones útiles listas para usar, sin programación, pero también se puede ampliar utilizando lenguajes de programación populares como Java, JavaScript, Ruby y Groovy.

Otro ejemplo es un proyecto llamado Open ESB, que implementa un tiempo de ejecución del bus de servicio empresarial con motores de servicio de muestra y enlace de componentes. Open ESB permite una fácil integración de aplicaciones empresariales y servicios web como aplicaciones compuestas poco acopladas. Esto permite a una empresa componer y recomponer aplicaciones compuestas sin problemas, obteniendo los beneficios de una verdadera arquitectura orientada a servicios. 

Hoy en día, la mayoría de los usuarios de código abierto están de acuerdo en que estos productos ahora alcanzaran un nivel de madurez igual y, en algunos casos, mejor que sus contrapartes comerciales. Los productos de código abierto han obligado a proveedores para competir en precio y calidad de servicio. Porque el código abierto es transparente, los desarrolladores pueden solucionar problemas y descubrir cómo otros desarrolladores han abordado los problemas. Los usuarios obtienen la libertad de utilizar estos productos en sus organizaciones, en todo el mundo, sin preocuparse por el seguimiento de las licencias de los clientes.


¿Dónde se utiliza el Software de Código Abierto?

Quizás debido a la gran flexibilidad del código abierto, que facilita la esfuerzos de grandes usuarios comerciales, implementadores de la nube y proveedores, la mayoría de todas las aplicaciones exitosas de código abierto han evolucionado desde dentro de los consorcios. Estos consorcios emplean otros medios, como las marcas comerciales, para controlar lanzamientos, documentación, etc., y requieren garantías específicas de desempeño por parte de sus miembros para asegurar la reintegración de las mejoras. En consecuencia, los consorcios no quieren ni necesitan cláusulas potencialmente conflictivas en sus licencias. La definición de código abierto de Perens ha dado lugar a una proliferación de otros tipos de licencias que afirman ser de código abierto pero que no satisfarían el porcentaje provisión similar que el software libre y las licencias de contenido abierto.

Una licencia alternativa de uso común es la Licencia Creative Commons, esta requiere que los usuarios comerciales adquieran una licencia separada cuando el el producto se utiliza con fines de lucro. Esto contradice los principios de código abierto, porque discrimina un tipo de uso o usuario. Sin embargo, el requisito impuesto por el software libre para redistribuir de manera confiable los trabajos derivados no viola estos principios. En consecuencia, el software libre y las licencias de consorcios son una variante de código abierto, mientras que una licencia de contenido abierto no lo es.

Ahora que entendemos exactamente qué es el código abierto, veamos cómo
en la computación en la nube se utiliza algún software de código abierto.

Presencia en la Web

La presencia en la Web se refiere a la aparición de una entidad en la World Wide Web. Se dice que una empresa tiene presencia en la web si se puede acceder a ella en la WWW. A la medida común de presencia en la web tiende a ser el número de páginas o sitios de la que una entidad es propietaria. Esta presencia en la web puede incluir sitios web, redes sociales, perfiles y ranking de motores de búsqueda, tráfico, popularidad y enlaces. El software abierto de origen que se usa comúnmente para ayudar en la presencia en la web incluye Apache, Zend Framework y Jetty. Finalmente, los estándares incluyen un modelo de privacidad de servicios web que describe cómo habilitar los servicios web y solicitantes para indicar las preferencias de privacidad del sujeto y la privacidad de la organización así como las declaraciones de práctica.


Presencia a nivel de Base de Datos

Si una aplicación reside en un escritorio o está virtualizada en una nube en algún lugar, cuando se utilizan o almacenan datos, a menudo se requiere el uso de una base de datos. Una base de datos es una colección estructurada de registros o datos que se almacena en un sistema informático. Una base de datos se basa en un software conocido como sistema de gestión de bases de datos (DBMS) para organizar, almacenar y recuperar datos. Los sistemas de Gestión de Base de Datos se clasifican según el modelo de base de datos en que se apoyen. El modelo elegido a menudo determina el tipo de lenguaje de consulta (a menudo estructurado) que se utiliza para acceder a la base de datos. La estructura se logra organizando los datos de acuerdo con un modelo de base de datos. El modelo usado comúnmente hoy en día es el modelo de base de datos relacional. Otros modelos, como el modelo jerárquico y el modelo de red, utilizan un modelo más explícito en la representación de relaciones, pero no se utilizan comúnmente en los ambientes de nube.

Gran parte de la ingeniería interna de un DBMS se realiza independientemente del modelo de datos que admite. Mientras que el almacenamiento de datos, el acceso y la recuperación son importantes, la mayoría de las veces se definen por estándares. Una implementación de DBMS a menudo se preocupa menos por cómo se accede y recupera los datos y está más preocupada con la gestión del rendimiento, la concurrencia, la integridad y la recuperación de fallas de hardware. En estas áreas, existen grandes diferencias entre casi todos los productos. Son estas diferencias las que los separan entre sí.

Algunos ejemplos de sistemas de gestión de bases de datos de código abierto son: MySQL, PostgreSQL, entre otros.


Presencia a nivel de Aplicación

Una arquitectura de varios niveles (o arquitectura de n niveles) es una arquitectura cliente-servidor en el que la presentación, el procesamiento de la solicitud y la gestión de datos son procesos lógicamente separados. muy a menudo, la arquitectura de varios niveles se refiere a la arquitectura de tres niveles, es decir, niveles de presentación, aplicación y datos.

El nivel de presentación es el nivel superior de la aplicación. El nivel de presentación muestra información al usuario, a menudo a través de un navegador web o un formulario con ventana, se comunica con otros niveles transfiriendo entrada de datos y resultados a los otros niveles de la arquitectura. 

El nivel de aplicación a veces se denomina nivel de lógica empresarial. Controla la funcionalidad de una aplicación realizando un procesamiento detallado para satisfacer requisitos específicos.

Finalmente, el nivel de datos consiste en un servidor o servidores de base de datos que se utilizan para almacenar y recuperar datos. Este nivel mantiene todos los datos independientes de la aplicación o del nivel de lógica empresarial y del nivel de presentación. 

Algunos ejemplos de software de código abierto presentes en aplicaciones son: Zope, Zope Contente Management Framework, Plone, AJAX, Apache Struts, etc.


Presencia a nivel de Gestión de Redes y Sistemas

El software de código abierto ha desarrollado fuertes raíces en la comunidad de la nube. Gran parte de la nube opera en un espacio de misión crítica, por lo que a menudo hay gran inquietud acerca de si la inversión en una aplicación comercial puede ser una mejor opción. Sin embargo, muchos desarrolladores se han dado cuenta que el punto óptimo para el código abierto es en realidad ese espacio de misión crítica. Dada la alta confiabilidad y madurez de muchas de las soluciones de código abierto más conocidas disponibles, hay muchas razones por las que los implementadores han comenzando a dar al código abierto más que una mirada de pasada al evaluar opciones. Muchas de las ofertas comerciales disponibles ofrecen código abierto, soluciones y hacen su dinero proporcionando mejoras a la fuente, al servicio y el soporte, además de otros tipos de servicios que mejoran la adopción de su producto por parte del cliente.

Sin embargo, el código abierto no ha sido aceptado del todo. Muchos expertos todavía aconsejan precaución a la hora de adoptar soluciones de código abierto. Ellos discuten que los usuarios de software de código abierto pueden potencialmente arriesgarse a encontrar problemas de seguridad porque los componentes internos del software son muy conocidos. Los adoptantes son animados a investigar qué software de potencia industrial está disponible para su entorno particular de misión crítica y para comparar el potencial de candidatos de código abierto. Para entornos de misión crítica, especialmente en en el contexto de la computación en la nube, encontramos varias categorías principales:

  1. Aplicaciones administrativas y de gestión.
  2. Aplicaciones de rendimiento.
  3. Aplicaciones de vigilancia y seguridad.
  4. Aplicaciones de virtualización.





Fuentes Consultadas:

Rittinghouse J, Ransome J - CRC Press, United States. (2010). Cloud Computing - Implementation Management and SecurityISBN 978-1-4398- 0680-7.

Gómez Jorge | U-GOB. u-gob.com. (13 de noviembre de 2017). El papel del Software Libre y de Código Abierto en la Transformación Digital.

De Fuenmayor Alejandro | Think Big / Empresas. (05 de marzo de 2020). Software libre no es (solo) Linux.