Programa de Disponibilidad de un Web

0
23345

Análisis de disponibilidad de un Web

Cuando somos responsables de un Web empresarial, debemos cuidar el nivel de
servicio que proporcionamos a nuestros clientes. Normalmente se da la
circunstancia de que cuando se cae nuestro Web nos enteramos por una
protesta de un cliente o un usuario de negocio.

Hay veces que contratamos un Hosting y llegamos a un acuerdo de nivel de
servicio (SLA). Más habitualmente de lo que me gustaría poder contar, estos
niveles de servicio no se respetan.

Debemos tener la capacidad de medir estos servicios por nuestros propios
medios. Hace no mucho, os mostrábamos un tutorial sobre una herramienta
profesional que cubre de sobra esta funcionalidad, llamada e-test (Rendimiento
de aplicaciones Web
).

A mi personalmente me gusta tener la capacidad de verificar por mis propios
medios (y desde mi casa con ADSL) si el sistema funciona bien o mal. Os
recomiendo una herramienta llamada WebSupervisor,
que puede cubrir esta funcionalidad.

Si sabéis un poco de Java, es bastante sencillo construir un pequeño
programa para este propósito… y con algún valor añadido.

Vamos a empezar a hacerlo paso a paso. El objetivo es construir el esqueleto
de lo que podrá ser una herramienta de monitorización y mostrar algunas notas
para poder darle continuidad.

Creación de la funcionalidad básica

Creamos un nuevo proyecto en NetBeans 3.6

Debemos ser consciente que el interfaz de usuario es lo menos importante a la
hora de diseñar un programa. Debemos intentar acotar la funcionalidad y hacerla
independiente de como sea invocada.

Con la función anterior, tenemos la capacidad de conectarnos a una URL y
recuperar el código de retorno, e incluso recuperar el contenido de la página
(//respuesta += recuperaContenido(enlace);)

El diseño inicial no es muy bueno así que tenedlo en cuenta en vuestros
desarrollos (esto solo es un tutorial parcial) :

  • La URL esta fija y dentro del código
  • No se gestionan ni propagan excepciones

Temporizar una función

Java dispone de una clase para planificar la ejecución de una función de un
modo periódico, sin bajar al detalle de los hilos (Threads) Timer

 

Creación del Interfaz de Usuario

Usando las capacidades de NetBeans, vamos a crear un interfaz sencillo

NetBeans es un entorno bastante intuitivo, aunque puede costar un poco
cogerle el tacto…

Como primera aproximación podemos obtener el siguiente código

Ejecución

Si ejecutamos el programa, obtenemos la siguiente respuesta… Nuestro
Hosting de www.adictosaltrabajo.com
es bastante estable.

 

Otros usos adicionales

Si somos un poco hábiles, podemos determinar las dependencias de nuestro
sistema Web a otros subsistemas y crear un pequeño JSP/PHP/ASP que sea capaz de
probar si tenemos acceso a ellos:

  • LDAP
  • Base de Datos
  • Host transaccional
  • Servidor de Aplicaciones
  • Sistema remoto de ficheros
  • Middleware
  • etc…

Podríamos también modificar nuestro programa para que, al encontrar un
error en la página probada, recorriendo cada una de las rutinas que prueban
cada subsistema individualmente, analizase quién lo está produciendo.

De este modo, cuando se produzca un problema en producción, desde vuestra
casa podréis prever errores (siempre y cuando lo que falle no sea el propio
servidor Web).

Con un sistema de estas características (que se puede desarrollar en día)
podéis tanto medir la estabilidad del sistema como adelantaros a la llamada del
usuario de negocio cabreado porque la aplicación, en medio de una demo, lleva
media hora sin funcionar. Además, si cuando se produce un error, mandáis un
email a una pasarela SMS, te enterarás sin tener que estar atento al correo.

Otra mejora puede consistir en monitorizar al mismo tiempo un Web muy estable
(como google) y solo considerar los datos como válidos cuando esté último de
una respuesta correcta ….  ya que sería una pena que lo que fallase
fuera nuestra configuración local ;-))

  • Enlace ADSL
  • Red Inalámbrica
  • Configuración TCP/IP
  • Desconexión de algún cable (que pasa muy habitualmente)

Conclusiones

Muchos sabréis que hay un montón de causas por las que fallan las
aplicaciones y normalmente es por falta de procedimientos organizativos a la
hora de operar sistemas:

  • Lagunas de memoria en programas (normalmente construidos por nosostros).
  • Cambios de contraseñas en un turno que se aplican al rea-rrancar en otro.
  • Caducidad de certificados digitales.
  • Modificaciones aparentemente inocuas del LDAP.
  • Llenado de los discos o espacio de tablas de base de datos.
  • Borrado accidental de ficheros/campos.
  • Falta de pruebas automáticas de regresión funcional
  • Y un largo etc …..

Ampliando este ejemplo un poquito, las posibilidades son interesantes:

  • Obtener una gráfica de disponibilidad
  • Enviar un correo electrónico cuando el código de retorno la petición
    cambie
  • Analizar el contenido HTML para verificar que no cambia… o es sustituido
    (nos han jaqueado)
  • Asegurarnos que nuestras fuentes de contenido (sindicado o alimentado por
    autores) funcionan correctamente

Determinar la disponibilidad, rendimiento y capacidad de los sistemas,
requiere de práctica y técnica.

Adquirir una herramienta puede ser muchas veces más interesante que
construirla aunque puede ser un negocio rentable (o un buen proyecto de fin de
carrera con salida comercial) para la demanda creciente de estos servicios …..

Sobre el
Autor ..

Dejar respuesta

Please enter your comment!
Please enter your name here