• No se han encontrado resultados

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

Documento similar