miércoles, 15 de junio de 2016

Escalabilidad y disponibilidad

En la anterior entrada sobre qué es una plataforma web, mencionaba al final la escalabilidad y la disponibilidad como requisitos a tener en cuenta.

Pero ¿qué son estos conceptos y por qué son importantes?


La escalabilidad debe formar parte del proceso de diseño de cualquier aplicación web y también de la plataforma donde se ejecute. Es muy importante tenerla en cuenta desde el primer momento en la fase de inicio porque no es una característica que se pueda agregar después.

La escalabilidad es la capacidad de mejorar recursos para ofrecer una mejora lineal en la capacidad de servicio: una aplicación escalable sólo requiere recursos adicionales (ej: más disco duro, más procesador, más RAM...) en lugar de una modificación extensiva de la aplicación en sí (este tipo de escalado se denomina vertical y es más caro y rápido).


La disponibilidad es un protocolo asociado al diseño del sistema y su implementación asegura un cierto grado de continuidad durante un determinado período de medición. La disponibilidad es la capacidad de un grupo usuarios para acceder al sistema o plataforma. El término tiempo de inactividad (en inglés downtime) es usado para definir cuándo el sistema no está disponible.

La disponibilidad suele representarse como un porcentaje del tiempo de funcionamiento en un año dado. En un año dado, el número de minutos de tiempo de inactividad no planeado es registrado para un sistema, el tiempo de inactividad no planificado agregado es dividido por el número total de minutos en un año (aproximadamente 525.600) produciendo un porcentaje de tiempo de inactividad; el complemento es el porcentaje de tiempo de funcionamiento el cual es lo que denominamos como disponibilidad del sistema. Valores comunes de disponibilidad, típicamente enunciado como número de "nueves" para sistemas altamente disponibles son:

99,9% = 43.8 minutos/mes u 8,76 horas/año 

99,99% = 4.38 minutos/mes o 52.6 minutos/año 

99,999% = 0.44 minutos/mes o 5.26 minutos/año 


Tiempo de funcionamiento y disponibilidad no son sinónimos: un sistema puede estar en funcionamiento y no disponible como en el caso de un fallo de red.



lunes, 6 de junio de 2016

Qué es una plataforma web

Una plataforma web es  el entorno software de desarrollo empleado para diseñar y ejecutar un sitio web dinámico, que accede a una o más bases de datos  (Mysql por ejemplo)y interactúa con ellas por medio de lenguajes de programación (PHP por ejemplo).

Los elementos fundamentales de una plataforma web son:
  • El sistema operativo instalado en el equipo servidor donde se aloja el sitio web y que representa la base misma del funcionamiento. En ocasiones puede limitar la elección de determinados componentes por ser incompatibles con determinados sistemas operativos y versiones.
  • El servidor web es el software que gestiona las peticiones de los usuarios con sus navegadores a través de Internet. Para las páginas estáticas o sólo html, el servidor web entrega directamente el archivo solicitado, mostrándose en el navegador del usuario. Si se trata de sitios dinámicos, el servidor web gestiona las solicitudes a la base de datos y compone en ese momento la página a enviar al usuario de acuerdo a una serie de parámetros y condiciones establecidas en cada petición.
  • El motor de bases de datos es el encargado de almacenar los registros de datos a los que la aplicación web accederá para interactuar con ellos en distinas formas: consultar, crear, modificar o eliminar.
  • Un lenguaje de programación interpretado que gestiona las aplicaciones de software que se ejecutan en el sitio web.

La plataforma más habitual es la basada en XAMP (Cualquier sistema operativo+Apache+Mysql+PHP), siendo la más conocida la LAMP (Linux + Apache + MySql + PHP) aunque hay otras combinaciones: WAMP (Windows+Apache+Mysql+PHP) o MAMP (Mac OS+Apache+Mysql+PHP).

El sistema de información que forma parte del sitio web está basado en una arquitectura cliente-servidor, donde las consultas de los usuarios son enviadas por el navegador (cliente), son procesadas y las páginas web se generan y muestran correctamente de acuerdo a cada solicitud por el servidor web.

El navegador web es el cliente del sistema y es independiente del software de la aplicación web y del servidor web, es la herramienta de acceso del usuario final para enviar las solicitudes al servidor web. 

En el análisis, diseño y desarrollo de  una plataforma web debe tenerse en cuenta siempre que cumpla los requisitos de escalibilidad y disponibilidad (los cuales trataré en una próxima entrada).