1. FASE DE DEFINICIÓN, PLANEACIÓN Y ORGANIZACIÓN
1.2. ALCANCE Y LIMITACIONES
1.5.1.7. Herramientas para el desarrollo del clúster de alta disponibilidad
1.5.1.7.1. Sistemas operativos
Windows 10
Windows 10 es el último y vigente sistema operativo desarrollado por Microsoft
como parte de la familia de sistemas operativos Windows NT.25 Fue dado a conocer
oficialmente en septiembre de 2014, seguido por una breve presentación de demostración en la conferencia Build 2014. Entró en fase beta de prueba en octubre de 2014 y fue lanzado al público en general el 29 de julio de 2015.
Microsoft ofrece gratuitamente este sistema operativo para aquellos usuarios que cuenten con copias originales de Windows 7 y Windows 8.1 Update. La versión Windows 10 es una edición súper completa diseñado para toda la familia de los productos Microsoft tales como: laptops, tabletas, teléfonos inteligentes, Xbox One, entre otros. Esto se da gracias a su código casi idéntico que le permite tener tal compatibilidad.
Windows 10 cuenta con un interfaz que va orientada a cada uno de los dispositivos que tiene la compañía, teniendo una orientada al ratón y otra a los dispositivos táctiles. Estas dos interfaces cuentan con un menú de inicio muy parecido al de Windows 7, además, se le incorporó un sistema de escritorio virtual, el navegador de Microsoft Edge y la vista de tareas, entre otras nuevas aplicaciones y algunas viejas pero actualizadas. Otra innovación es que a la hora de iniciar sesión puede ser a través de la huella digital o reconocimiento facial, conocido también con el
nombre de Windows Hello.26
25 Wikipedia la enciclopedia libre. Windows 10, Definición. Wikipedia [en línea]. 01 de octubre de 2018.
Disponible en internet: https://es.wikipedia.org/wiki/Windows_10
26 Venemedia Comunicaciones C.A. CONCEPTODEFINICION.DE. Definición de Windows 10. 2016. Disponible
38
Windows Server 2016
Windows Server 2016 es hasta ahora “la última versión de Microsoft
Windows Server, línea de sistemas operativos desarrollada por Microsoft para su uso en servidores. Su desarrollo se ha llevado a cabo simultáneamente junto a su
homólogo Windows 10.”27 Algunas de sus características son:
o Active Directory Federation Services: permite configurar AD FS para autenticar a los usuarios almacenados en directorios sin AD, como X.500 compatible con directorios y bases de datos SQL de Lightweight Directory Access Protocol (LDAP).
o Servicios de Escritorio remoto: soporte para OpenGL 4.4 y OpenCL 1.1,
mejoras de rendimiento y estabilidad; Función de Servicios MultiPoint Server.
o Failover Clustering: clúster de actualización gradual del sistema
operativo, réplicas de almacenamiento.
o Web Application Proxy: autenticación previa para la publicación HTTP Aplicación básica, la publicación de dominio comodín de aplicaciones, HTTP a HTTPS redirección, Propagación de cliente de dirección IP para aplicaciones de back-end.
o IIS 10: Soporte para HTTP / 2
o Windows PowerShell 5.0
o Reinicio suave: es una característica de Windows para acelerar el proceso de arranque saltarse la inicialización del hardware, y reiniciar el software sólo. [10]
o El Servidor Telnet no está incluido
Ubuntu
Ubuntu es un sistema operativo de código abierto para computadores. Es una distribución de Linux basada en la arquitectura de Debian. Actualmente corre en computadores de escritorio y servidores, en arquitecturas Intel, AMD y ARM. Está orientado al usuario promedio, con un fuerte enfoque en la facilidad de uso y en mejorar la experiencia del usuario. Está compuesto de múltiple software normalmente distribuido bajo una licencia libre o de código abierto. Estadísticas web sugieren que la cuota de mercado de Ubuntu dentro de las distribuciones Linux es, aproximadamente, del 52%,34 y con una tendencia a aumentar como servidor web.28
Ubuntu Server
27 Wikipedia la enciclopedia libre. Windows Server 2016, Definición. Wikipedia [en línea]. 29 de septiembre
de 2018. Disponible en internet: https://es.wikipedia.org/wiki/Windows_Server_2016
28 Wikipedia la enciclopedia libre. Ubuntu. Wikipedia [en línea]. 28 de octubre de 2018. Disponible en internet:
39
Ubuntu Server es una variante de Ubuntu que sale con cada versión y está dedicada especialmente para su uso en servidores. El uso de Ubuntu como servidor se ha extendido mucho en los últimos años, sobre todo para el uso de servidores web, de un modo tanto particular como profesional.29
Un servidor es una máquina que nos proporciona algún servicio. Pueden ser de diferentes tipos, servidor web, servidor de base de datos, servidor de archivos, u otras diferentes funciones, incluso varias a la vez. No tienen por qué ser grandes y potentes máquinas, podemos tener montado un servidor en casa en un ordenador antiguo, que nos sirva para tener guardados todos nuestros datos importantes y acceder a ellos desde cualquier otro ordenador o dispositivo desde nuestra casa, o incluso desde cualquier lugar.
1.5.1.7.2. Programación
En contexto de programación y pasos de mensajes y eventos entre nodos, la tecnología y/o lenguaje de programación es JavaScript con su entorno de ejecución en tiempo real llamado Node.js.
JavaScript
JavaScript es “un lenguaje de programación interpretado, dialecto del estándar ECMAScript. Se define como orientado a objetos, basado en prototipos, imperativo, débilmente tipado y dinámico”.30
JavaScript es un lenguaje con muchas posibilidades, utilizado para crear pequeños programas que luego son insertados en una página web y en programas más grandes, orientados a objetos mucho más complejos. Con JavaScript podemos crear diferentes efectos e interactuar con nuestros usuarios.31
Este lenguaje posee varias características, entre ellas podemos mencionar que es un lenguaje basado en acciones que posee menos restricciones. Además, es un lenguaje que utiliza Windows y sistemas X-Windows, gran parte de la programación en este lenguaje está centrada en describir objetos, escribir funciones que respondan a movimientos del mouse, aperturas, utilización de teclas, cargas de páginas entre otros.
29 Ubuntu Server. Ubuntu Fácil [en línea]. 17 de abril de 2013. Disponible en internet:
http://www.ubuntufacil.com/2013/04/ubuntu-server/
30 Wikipedia la enciclopedia libre. JavaScript. Wikipedia [en línea]. 03 de septiembre de 2018. Disponible en
internet: https://es.wikipedia.org/wiki/JavaScript
31 PÉREZ VALDÉS, Damián. ¿Qué es JavaScript? Maestros del Web [en línea].03 de julio de 2007. Disponible en
40
Es necesario resaltar que hay dos tipos de JavaScript: por un lado, está el que se ejecuta en el cliente, este es el JavaScript propiamente dicho, aunque técnicamente se denomina Navigator JavaScript. Pero también existe un JavaScript que se ejecuta en el servidor, es más reciente y se denomina LiveWire JavaScript.
Node.js
Por definición, Node.js es “un entorno en tiempo de ejecución multiplataforma, de
código abierto, para la capa del servidor (pero no limitándose a ello) basado en el lenguaje de programación ECMAScript, asíncrono, con I/O de datos en una arquitectura orientada a eventos y basado en el motor V8 de Google”.32
Concebido como un entorno de ejecución de JavaScript orientado a eventos asíncronos, Node.js está diseñado para construir aplicaciones en red escalables. En la siguiente aplicación de ejemplo "hola mundo", se pueden manejar muchas conexiones concurrentes. Por cada conexión el callback será ejecutado, sin
embargo, si no hay trabajo que hacer Node.js estará durmiendo.33
Esto contrasta con el modelo de concurrencia más común hoy en día, donde se usan hilos del Sistema Operativo. Las operaciones de redes basadas en hilos son relativamente ineficientes y son muy difíciles de usar. Además, los usuarios de Node.js están libres de preocupaciones sobre el bloqueo del proceso, ya que no existe. Casi ninguna función en Node.js realiza I/O directamente, así que el proceso nunca se bloquea. Debido a que no hay bloqueo es muy razonable desarrollar sistemas escalables en Node.js
1.5.1.7.3. Bases de datos
MongoDB
MongoDB es una base de datos orientada a documentos. Esto quiere decir que, en lugar de guardar los datos en registros, guarda los datos en documentos. Estos documentos son almacenados en BSON, que es una representación binaria de JSON. Una de las diferencias más importantes con respecto a las bases de datos relacionales, es que no es necesario seguir un esquema. Los documentos de una misma colección - concepto similar a una tabla de una base de datos relacional -, pueden tener esquemas diferentes.34 MongoDB está escrito en C++, aunque las
32 Wikipedia la enciclopedia libre. Node.js. Wikipedia [en línea]. 28 de agosto de 2018. Disponible en internet:
https://es.wikipedia.org/wiki/JavaScript
33 Acerca de Node.js®. nodejs [en línea]. Disponible en internet: https://nodejs.org/es/
34 MongoDB: qué es, cómo funciona y cuándo podemos usarlo (o no). Genbeta. 03 de febrero de 2014.
Disponible en internet: https://www.genbeta.com/desarrollo/mongodb-que-es-como-funciona-y-cuando- podemos-usarlo-o-no
41
consultas se hacen pasando objetos JSON como parámetro. Es algo bastante lógico, dado que los propios documentos se almacenan en BSON.
MongoDB viene de serie con una consola desde la que podemos ejecutar los distintos comandos. Esta consola está construida sobre JavaScript, por lo que las consultas se realizan utilizando ese lenguaje. Además de las funciones de MongoDB, podemos utilizar muchas de las funciones propias de JavaScript. En la consola también podemos definir variables, funciones o utilizar bucles.
Si queremos usar nuestro lenguaje de programación favorito, existen drivers para un gran número de ellos. Hay drivers oficiales para C#, Java, Node.js, PHP, Python, Ruby, C, C++, Perl o Scala. Aunque estos drivers están soportados por MongoDB, no todos están en el mismo estado de madurez. Por ejemplo, el de C es una versión Alpha. Si queremos utilizar un lenguaje concreto, es mejor revisar los drivers disponibles para comprobar si son adecuados para un entorno de producción.
1.5.1.7.4. Middleware
Un Middleware es “software que se sitúa entre un sistema operativo y las aplicaciones que se ejecutan en él. Básicamente, funciona como una capa de traducción oculta para permitir la comunicación y la administración de datos en aplicaciones distribuidas.”35 A veces, se le denomina “plumbing” (tuberías), porque conecta dos aplicaciones para que se puedan pasar fácilmente datos y bases de datos por una “canalización”. El uso de middleware permite a los usuarios hacer solicitudes como el envío de formularios en un explorador web o permitir que un servidor web devuelva páginas web dinámicas en función del perfil de un usuario.
NGINX
Nginx es un servidor web/proxy inverso ligero de alto rendimiento y un proxy para
protocolos de correo electrónico (IMAP/POP3). 36
Es software libre y de código abierto, licenciado bajo la Licencia BSD simplificada; también existe una versión comercial distribuida bajo el nombre de Nginx Plus.5 Es multiplataforma, por lo que corre en sistemas tipo Unix (GNU/Linux, BSD, Solaris, Mac OS X, etc.) y Windows.
NGINX está diseñado para ofrecer un bajo uso de memoria y alta concurrencia. En lugar de crear nuevos procesos para cada solicitud web, NGINX usa un enfoque asincrónico basado en eventos donde las solicitudes se manejan en un solo hilo
35 ¿Qué es middleware?. Microsoft Azure. 14 de Julio de 2018. Disponible en internet:
https://azure.microsoft.com/es-es/overview/what-is-middleware/
36 Wikipedia la enciclopedia libre. Nginx (informática), Definición. Wikipedia [en línea]. 17 de agosto de 2018.
42
(single-thread). Por otro lado, una alternativa como el servidor web Apache crearía un hilo separado para cada proceso.
Con NGINX, un proceso maestro puede controlar múltiples procesos de trabajo. El proceso maestro mantiene los procesos de trabajo, y son estos lo que hacen el procesamiento real. Debido a que NGINX es asíncrono, cada solicitud se ejecuta por el proceso de trabajo de forma concurrente sin bloquear otras solicitudes.37
1.5.1.8. Metodología
Las metodologías que se van a trabajar son: la metodología Top-Down y la metodología de James McCab, en el siguiente cuadro se describe las etapas que se van a trabajar de cada una de las metodologías. A continuación, se muestra una tabla con la notación de actividades de estas dos metodologías.
ETAPA ACTIVIDADES METODOLOGÍA
Análisis de Requerimiento
Análisis de los objetivos y restricciones del negocio.
Análisis de los objetivos técnicos y sus restricciones.
Caracterización de redes existentes. Caracterización del tráfico de la red.
Top-Down
Análisis de requerimientos
Caracterización de aplicaciones de ejecución distribuida.
Caracterización de usuarios de aplicación.
James McCabe
Diseño Lógico
Diseño de topología de red.
Diseño de modelos de direccionamiento. Diseño de dominios y hostnames
Selección de protocolos para switching y routing
Estrategias de seguridad
Estrategias de administración de red
Top-Down
Evaluación y selección de tecnologías. Selección del software de distribución.
Integración de mecanismos de interconexión. Análisis de riesgos y planificación de contingencias.
James McCabe
Diseño Físico
Selección de tecnologías y dispositivos para
la red. Top-Down
37 Kinsta. ¿Qué Es NGINX y Cómo Funciona? 23 de julio de 2018. Disponible en internet:
43 Diagrama físico de la red.
Estrategias de enrutamiento y distribución de la red.
Optimización para flujos de enrutamiento. Asignación de direcciones.
James McCabe
Pruebas del Diseño
Pruebas del diseño de red. Optimización del diseño de red.
Documentación del diseño Top-Down
Implementación
Cronograma de implementación. Implementación del diseño de red. Implementación de servicios. Realizar pila de pruebas
Top-Down
Monitoreo y Optimización
Operación de la red en estado activo. Monitoreo de la red.
Optimización de la red.
Top-Down
Tabla 3: Metodología de desarrollo
1.5.2. Marco conceptual
Se listan a continuación el conjunto de términos que permiten la operación del contexto teórico de desarrollo sobre el cual se construye este documento:
CLÚSTER: Son los conglomerados informáticos que se construyen a partir de piezas de hardware compartidas que impulsan el comportamiento de todas las unidades tal como si fuesen una sola. Este tipo de conjuntos se utilizan en áreas científicas, de la ingeniería y de diverso tipo de investigación para operaciones a gran escala.38
PYME: Término utilizado en Colombia para definir toda empresa dedicada a la explotación económica que cumpla con los criterios establecidos en la Ley que describen según el tamaño a la Micro, Pequeña y Mediana empresa. (Congreso de Colombia, 2004). E-Commerce (Comercio Electrónico): El autor José María Obando lo define como “el intercambio de ofertas y transacciones, generadoras de contratos redactados sobre un formato informático”. (Obando, 2000).
DISPONIBILIDAD: Se define como como la capacidad de garantizar que tanto el sistema como los datos van a estar disponibles al usuario en todo momento. La disponibilidad implica que debe protegerse la información de forma tal que se pueda disponer de ella para su gestión en el tiempo y la forma requeridos por el usuario.39
38 Definición ABC. Definición de Clúster. 2018. https://www.definicionabc.com/tecnologia/cluster.php
39 Infosegur. Objetivos de la seguridad informática. 10 de noviembre de 2013. Disponible en internet:
44
SISTEMA: Es el conjunto constituido por los elementos físicos y lógicos (software) necesarios para captar información, almacenarla y procesarlo, además de realizar operaciones con ella.40
E-COMMERCE: Es un término anglosajón que se refiere al comercio realizado electrónicamente, el comúnmente llamado comercio online. Aunque existen conceptos similares, como el e-business, debemos tener claro que el e-commerce o comercio electrónico se refiere a la propia transacción comercial como tal, esto es, al cambio de un bien, producto o servicio por dinero u otro bien similar.41
RETAIL: Es un término de la lengua inglesa que se emplea para nombrar a la venta minorista y/o comercialización de productos al por menor, este suele vincularse a la venta de grandes cantidades, pero a muchos compradores diferentes. De este modo se diferencia de la venta mayorista, que implica la venta de un elevado volumen de
unidades a un mismo comprador.42
PAGO ONLINE: Es un servicio que ofrecen algunas empresas para gestionar el envío y recibo de pagos en Internet. Este tipo de servicios ofrecen una intermediación entre el cliente y el vendedor, de tal forma que el primero nunca tiene que compartir información privada (número de tarjeta, CVC, fecha de caducidad de la tarjeta, entre otros) con el segundo.43
INTEROPERABILIDAD: Es la capacidad que tiene un producto o un sistema, cuyas interfaces son totalmente conocidas, para funcionar con otros productos o sistemas existentes o futuros y eso sin restricción de acceso o de implementación.44
1.6. FACTIBILIDAD
1.6.1. Factibilidad técnica
Desde el punto de vista técnico, para la realización del proyecto son necesarios algunos recursos tecnológicos, como computadores y dispositivos externos, como conmutadores y un posible enrutador y algún tipo de software libre para el desarrollo de los componentes web para el funcionamiento del clúster y otros para la implementación del componente del negocio.
40 Sistemas.com. Definición de Sistema en Informática. Mayo de 2018. Disponible en internet:
https://sistemas.com/sistema-informatica.php
41 Sistemas.com. Definición de e-commerce. Junio de 2016. Disponible en internet: https://sistemas.com/e-
commerce.php
42 MERINO, Maria. Definicion.De. Definición de Retail. 2014. https://definicion.de/retail/.
43 Codeeta. ¿Qué es pago online? 10 de septiembre de 2012. Disponible en internet:
http://help.codeeta.com/pagos/pago-online-y-pagos-offline-widget-de-pagos/
44 Interoperability Working Group. Definición de la Interoperabilidad. Disponible en internet:
45
Para el desarrollo de este proyecto se ha planteado la idea de implementar un clúster de alta disponibilidad, que se define como software de libre estado que permite la escalabilidad de un negocio de comercio electrónico para pymes en Bogotá, en otra parte se debe disponer de la fácil operación el sistema. En términos generales el clúster deberá disponer de gran cantidad de computadores, por lo posible un computador por servicio, y su duplicidad de servicios en integración de estos, además componentes agregados al computador, como dispositivos externos, que permitan la interacción del usuario con cada interfaz.
Este sistema también deberá disponer de una red y núcleo distribuido que lleva el negocio para el comercio electrónico, y una red extendida, como la internet, que permite disponer servicios para peticiones de usuarios remotos, todo esto con el fin permitir alta disponibilidad en diferentes sistemas de comercio electrónico para pymes.
Sistema operativo Windows 7, Windows 10, Windows server
2013, Ubuntu 18
Servidor bases de datos MongoDB
Servidor web y aplicaciones Node.js
Lenguaje de programación JavaScript y HTML
Middleware Node.js y Nginx
Tabla 4: Recursos técnicos de desarrollo Fuente: Elaboración propia y Formulación propia
1.6.2. Factibilidad económica
Determinados los factores técnicos que se plantean para el desarrollo de un aula virtual se establece factores económicos, correspondientes a cada una los recursos que se deberán tener en cuenta a la hora de implementar el software y su metodología. Tales recursos deberán estar disponibles para cada institución educativa, y en consecuente para cada aula virtual.
Para los costos físicos, se tiene en cuenta papelería, impresiones y libros, como se muestra a continuación:
CONCEPTO TIEMPO COSTO
Copias a libros de consultas e impresiones Equivalente al tiempo en que se desarrolle la aplicación $110.000
Tabla 5: Costos de recursos físicos
46
Los servicios de cada participante y/o actor desarrollador del proyecto, se evalúan en costos, como se muestra a continuación:
CARGO NOMBRE No HORAS VALOR HORA VALOR TOTAL
Tutor
Ing. Miguel Ángel Leguizamón
104 horas $ 25.000 $ 2.600.000
Desarrollador Diego Chacón
Gómez 720 horas $ 20.000 $ 14.400.000
Desarrollador Alejandro Tique
Cifuentes 720 horas $ 20.000 $ 14.400.000
TOTAL 31.400.000
Tabla 6: Costos de recursos humanos Fuente: Elaboración propia y Formulación propia
Los costos para los bienes no materiales, como lo es el software en términos de sistemas operativos, lenguajes de programación y servidores web, se evalúan a continuación:
CONCEPTO CANTIDAD VALOR UNITARIO VALOR TOTAL
Computadores portátiles 7 $ 1.300.000 $ 9.100.000 Sistema operativo (Windows Server 2016 Essentials) 2 $ 1.730.000 $ 3.460.000 Sistema operativo (Windows Desktop) 4 $ 550.000 $ 2.200.000 Sistema operativo (Ubuntu) 1 $ 0 $ 0 JavaScript 5 $ 0 $ 0 MongoDB 2 $ 0 $ 0
Servidor web (Node.js) 3 $ 0 $ 0
Tabla 7: Costos del software
47 1.6.3. Factibilidad operativa
Desde el punto de vista operativo, El desarrollo de este tipo de sistema debe comprender una probabilidad de que se use correctamente y se implemente como se supone. Para tal hecho se debe considerar algunos aspectos para este tipo de