lunes, 18 de julio de 2011

Evaluación del performace de aplicaciones Web

El segundo tema consistió en mostrar los resultados del trabajo que se está haciendo para Softlogik respecto a la evaluación de desempeño de las aplicaciones. Para el caso el equipo de la teñarcera generación se dividió en dos grupos: 1) Evaluación del número de usuarios que para el proyecto en específico fueron 3000 usuarios, 2) La segunda parte del equipo evalúo el tiempo de carga de la página en función de su tamaño.

Respecto al primer punto, el equipo utilizó dos herramientas WAPT y JMeter. Los resultados que pueden obtenerse con este tipo de herramientas se describen a continuación...
  • En la primera medición de desempeño  con WApT (Web Aplication Testing), se llegó a tiempos de desempeño de 40 segundos. Se realizó una corrección del Timeout mayor a 15 segundos configurando el Apache, en la segunda medición hubo una mejora respecto a que 900 usuarios no tard aban más de 6 segundos en visualizar los resultados. 
  • Respecto a errores de red. Cuando 400 errores se tratan de acceder simultáneamente es xisten niveles de pruebas. Arriba de los 250 usuarios existen errores de red y los timeouts.
El contexto es que un usuario por casilla se conecta para capturar lo datos.
  • Se realizó otra prueba con JMeter. Para atender 3000 conexiones.
Observación: Se deben buscar referencias que permitan comparar cual es un estándar de performance para este tipo de aplicaciones. Buscar referencia de comparativos respecto a como estamos respecto a los demás.
  • De 0 a 6 segundos...  Excelentes.
  • De 6 a 15 segundos... Donde todavía el usuario podría esperar..
  • De 6 a 30 segundos... Podría
Observación Softlogik: Alejandro hace una referencia de Jacob Nielsen sobre de 0 a 1 segundo apenas se percibe por el ser humano. De 0 a 10 segundos el ser humano puede esperar pues existen múltiples factores que afectan el desempeño. Pero esto para aplicaciones comerciales. Para sitios Web altos en transacciones estos tiempos son mayores.

Métricas sugeridas::
  • La metra sería que 3000 usuarios puedan consultar en menos de 15 segundos.
  • Hay una suposición de que la red funciona perfectamente.
Observaciones desde el punto de vista de infraestructura:
  • En estos puntos ya se tienen que combinar con un buen diseño de la infraestructura que soporta el servicio. Se tiene que diseñar una capacidad para atender estos tipos de usuario.

Observaciones generales:
  • En cuanto al performance no se tenía una meta.
  • ¿Cuál podría ser la solución para que no existan errores de red?
  • Es necesario que los experimientos se planteen desde un punto de vista científico.

Respecto al segundo del ejercicio, la otra parte del equipo evalúo con dos herramientas el tamaño de la página a través de dos herramientas: YSlow y PageSpeed... A continuación algunas notas u observaciones del ejercicio:

Proceso: se instala la herramienta, se indica la página y se generan los resultados. Es un plug-in de Firefox. Los requerimientos son Mozilla Firefox. En la parte superior está la barra de navegacióno y así se presenta Yslow con la extensión de Mozilla y se hace una referencia. El desarrollador de YSlow (Steve Souder), encargado del grupo de alto rendimiento de Yahoo. Lo que hace es una recomendación de las mejors prácticas que se hacen a lo largo del tiempo.

En la primera revisión del sitio con Yslow surgieron varias recomendaciones como cargar css en el header, cargar javascript en la página. Al inicio la página medía 980 kb. Al final después de que el equipo de desarrollo realizó la última corrección ya con hojas de estilo incluidas el tamaño final de la aplicación quedaría en 278 kb. 
  • Con el uso de herramienta de PageSpeed la calificación de 1 a 100 obtuvo una calificación del 50 y tantos puntos. PageSpeed se enfoca mucho a las imágenes. Con imágenes comprimidas se puede hacer una calidad de la imagen. 
  • Después de aplicar las sugerencias la página se carga en un cuarto de segundo.

EVALUACIÓN DE LA SEGURIDAD BASADOS EN EL MODELO OWASP
  1. Inyección. Con consultas SQL se puede acceder directamente a los datos. Desde cualquier entrada es una posible vulnerabilidad de inyección.
  2. Secuencia de comandos en sitios cruzados (XSS). Es similar a la inyección SQL pero con lenguajes de scirpt.
  3. Pérdida de autenticación  y gestión de sesiones. Cuando sucede que no se elimina correctamente una sesión.
  4. Referencia directa insegura a objetos. Cuando un atacate modifica directamente directorios. La recomendación es sperar archivos en diferentes carpetas. De otra forma hay que dar permisos a cada uno de los archivos.
  5. Falsificación de peticiones en sitios cruzados. La característica del cinco es que utiliza páginas a donde estás logueado. Así se pueden realizar accionoes en tu nombre.
  6. Defectuosa configuración de seguridad. Cuando se nos olvida al pasar de producción eliminar contraseñas como admin admin.
  7. Almacenamiento criptográfico de la seguridad. Utilizar algoritmos ya existentes.
  8. Fallas de restricción de acceso a URL. Aquí se agrega por ejemplo una página con /admin.
  9. Protección insuficiente en la capa de transporte. Alguien puede capturar el tráfico de la red y puede ver lo que estamos enviando. Solución utilizar un certificado de seguridad.
  10. Re direcciones o reenvíos no validos. Con links enviar a páginas externas.
Fases de la investigación:
1. Ataque manual. El SQL injection y Cross Site Scripting comenzarón a utilizarlo a mano. Pero en el transcurso de la investigación encontrarón herramientas automáticos. En la página de ha.ckers.org/xss.html vienen más de cien combinaciones diferentes para probar si existía esa vulnerablidad. 
2. Herramientas de escaneo de vulnerabilidades (Accunetix, netsparker, N-Stalker, Grendel-Scan). De todas las herramientas que encontraron Accunetix revisa todas las vulnerabilidades. Pero se revisaron otras herramientas. Varios autores sugieren el utilizar para lograr una mayor confianza en los resultados. Accunetix, es la herramienta que provee mayores resultados, con más detalle y sugerencias realizadas.
  1. Los resultados proveídos por Accunetix, se basan en cuatro niveles: Alto, Medio, Bajo, Informacional. Se ralizaron tres pruebas a la aplicación X... La herramienta puede arrojar falsos positivos. Para la última revisión se eliminaron o hicieron las modificaciones pertinentes. El único problema detectado fue que se tenía acceso director para crear usuarios del sistema. 
  2. Con Netsparker se identificó un error de que el password puede ser robado por la red porque no se tiene un certificado de seguridad.
  3. N-Stalker dice que no tenemos la versión actual de Apache, por lo que debería realizarse.

ACCIONES TOMADAS EN BASE A LA AUDITORIA. El equipo de desarrollo implementó una serie de acciones para hacer la aplicación evaluada más segura. 
  • Para la inserción XSS. Se agregó YX ssFilter al framework y en cada controlador se manda llamar para habilitar el filtro.
  • El equipo de desarrollo valido además la página y restringió el acceso par ala captura de usuarios.
  • Se bloquaron los directorios de información del framework.
  • Actualización de la versión de Apache.
CONCLUSIONES: "Primero debemos de medir para luego mejorar nuestro desempeño".

Observaciones: ¿Cómo se pueden institucionalizar en Softlogik? 
Alex: En el Kanban hay una columna de integración en esa columna de integración se va a agregar a una lista de actividades. Deben de hacerse parte del proceso de desarrollo. En Softlogik es incluir está fase en Kanban.
Paty: Esto se realiza agregando mejores prácticas durante todo el proceso.

Observaciones de Pepe: Se puede implementar un enfoque preventivo?
Alex: No totalmente, "la optimización temprana es la raíz de todos los males". Se van incorporando mejores prácticas que se aplican... Pero tal vez lo ideal es que se apliquen a la mitad o al final del proceso.

Observación Dr. Lemus: Donde se aplican este tipo de herramientas. Se puede prevenir desde desarrollo?
Kike: Todo lo de inserción que es lo más peligroso se hace a través de la sanitización del código. Desde el desarrollo se pueden utilizar HTML purifying, encoders, etc. Hay listas blancas para verificar. El "eslabón más

Obervación con Dr. Lemus: Sería necesaria otra auditoría de seguridad. Si se desarrolla más.
Jesús: Solo se ralizaron pruebas de caja negra.

lunes, 4 de julio de 2011

BizAgi, herramienta para Gestión de Procesos de Negocio...

1era parte de la sesión a cargo de Edgar


Comenzamos con la conferencia de Softlogik y el primer punto es el referente al uso de BizAgi. Esta herramienta sirve para mapear procesos en primera instancia, con una versión gratuita, pero existe una solución que sirve para hacer administración de procesos de negocio (Bussiness Process Management o BPM). 

BizAgi tienen una historia interesantes. Esta herramienta fue diseñada para mapear los procesos de instituciones financieras. La empresa que desarrolla BizAgi es colombiana. La Gestión de Procesos de Negocio tiene por objetivos el reducir costos, mejorar los procesos continuamente, ser una lenguaje común para entendimiento de actividades de negocio.

Características de BizAgi

  • Con BizAgi además de mapear un proceso, se puede determinar para cada caso que camino del proceso siguió. 
  • Además cada caso puede tener un semáforo de notificaciones

Automatización de procesos con BizAgi...

  1. Diagrama de procesos. Esto lo hace el dueño del proceso.
  2. Datos del Proceso. Toda la info que lleva el proceso debe idcientificarse.
  3. Creación de formas
  4. Regla de negocio
  5. Asignación de recursos (que va a hacer quie, cuando y como lo va a desarrollar)
  6. Interconexión con otros sitemas (SOA)
  7. Verificación del proceso
  8. Aplicación Web de Impelemnta
  9. Indicadores de gestión del proceso

Ejemplo

Fase 1: Modelación del proceso

Hay una notación estándar para Gestión de Procesos de Negocio (BMPN). BizAgi utiliza la versión estándar 1. El modelado de sus procesos es sencillo. A partir de esta notación se define un diagrama de procesos de negocio. Un diagrama puede tener varios procesos o subprocesos anidados. Un procesos par bizagi consiste en una serie de actividades.  A continuación hago referencia a una tabla de la notación de BPM (http://bpt.hpi.uni-potsdam.de/pub/Public/BPMNCorner/BPMN1_1_Poster_EN.pdf).... Vale la pena darle una revisada.

En los diagramas de proceso existen pools que son contenedores que indican tiempo, puede haber entidades, fases y milestones. Los pools agrupan entidades. Las fases implican diferentes momentos del proceso y los milestones son fechas especificas de inicio, fin o fechas críticas del proceso. 

Fase 2: Modelado de datos

El modelo de datos que utiliza la herramienta es relacional. BizAgi asigna una llave a cada una de las tablas de información. El BizAgi no está desarrollado para expertos en ingeniería en computación.

Existen diferentes tipos de entidades:

  • Entidades maestras: Donde se almacena la info.
  • Entidades paramétricas: Solamente se llenan a través de la aplicación Web... aquí es donde se agregan los catálogos.
  • Entidades del sistema: Hay entidades que el propio BizAgi agrega a los modelos de datos.

Fase 3: Definición de formas


  • BizAgi permite hacer formas o generar formas para realizar aplicaciones Web. Toda esta aplicación está desarrollada sobre ASP y C#...  Las formas se basan en el modelado de datos y en el proceso.
  • Las tablas o formas generadas muestran información relativas al proceso.
  • Como resultado de la definición de formas. El usuario tiene disponible una forma para llenar información sobre la acción que el usuario está realizando de acuerdo al proceso. 
  • Existen validaciones para asegurarnos que los datos introducidos sean los correctos.
  • Además a los campos se les puede dar un formato adecuado.
  • Comportamiento y acciones. Son condiciones que se evalúan. Las evaluaciones se hacen en tiempo de ejecución.
  • Reglas de negocio. Se manejan en base a un estándar xPath basado en XML. Este lenguaje se maneja para tareas complejas. 
  • Expresiones. Condiciones o reglas que se deben cumplir dentro de la organización. Las expresiones se insertan en las condiciones de los mapas de procesos. También existen las asignaciones para establecer valores de inicio. Se puede establecer el formato de los campos.
  • Políticas. Las políticas son las reglas empresariales que aplican para los procesos de negocio. Una política puede ser incorporada en cualquier momento al proceso que es variable. Estas políticas son agregadas utilizando el estándar xPath. 
  • Vocabulario. Aquí se agregan todas las expresiones que se requieren para el funcionamiento de los procesos de la organización. Este vocabulario también es dinámico.

2da parte de la sesión a cargo de Karina

  • La aplicación está enfocada para mapear proceso de negocio por personas que no son expertas en tecnologías de información.
  • En BizAgi se puede establecer la estructura jerárquica de la empresa, se pueden dar de alta las áreas, la ubicación geográfica, la posición dentro del organigrama y los roles que desempeña una persona en la organización (cada usuario puede tener una o más posiciones).
  • Además cada usuario puede tener habilidades o privilegios, un usuario puede tener propiedades y horarios (permisos para ejecutar una acción en determinadas horas del día).
  • Se pueden establecer grupos de usuarios y esquema de días laborales.
  • La asignación de trabajo se realiza en base a diferentes esquemas de asignación como por orden, por cantidad de trabajo o al primero que la tome.Todo esto se hace automáticamente de acuerdo a las políticas que se agreguen.
  • Es muy amigable para crear cualquiera de las entidades o propiedades que se deseen crear. 

Integración con otras aplicaciones y otras características

  • Funciona con EIA y ESB. Este tipo de sw actúa como midleware entre los sitemas Core que involucran a otras aplicacioens empresariales como ERPs, SCMs, CRMs, etc.
  • Configuración de correo electrónico es amigable.
  • Tiene una alternativa para crear un itinerario de actividades tipo Kron.
  • La integración se puede hacer a dos niveles: nivel de datos y nivel de servicios.
  • Replicación de datos. 
  • Virtualización de datos. Se crea un conjunto de reglas para crear series de datos. Esto es complicado y requiere tiempo de procesamiento.
  • Respecto a la integración con SOA. De BizAgi se puede obtener directamente la lista de servicios. Y a nivel de diseño se puede utilizar servicios arrastrando elementos.
  • Autenticación se puede hacer directo con BizAgi o a través de Windows.

Ambientes de BizAgi
Desarrollo. Aquí se puede agregar.
Prueba. Aquí se prueba que lo modelado funcione.
Producción. Aquí se lleva al trabajo lo que realmente funcionó. Tiene una característica interesante. Todos los datos, formas y en general todo lo que no se usa del sistema no se incorpora al prototipo de producción.

Respecto al uso del BizAgi


  • El modeler es gratuito y lo seguirá siendo.
  • La versión express está en status de evaluación. Se puede utilizar siempre y cuando no se utilice para producir algún.
  • La versión empresarial también tiene costo.
  • BizAgi está desarrollado en .Net y funciona con SQL Server y Oracle.


Alternativas de Software Libre

  1. La versión para modelado de negocio es gratuita, la versión express o empresarial son de paga. Existen alternativas de Software Libre como BonitaSoft para tambien mapear procesos (http://www.bonitasoft.com/)...
  2. Otra alternativa no explorada es Intalio (http://www.intalio.com/). 


IDEAS, CONCLUSIONES y CUESTIONAMIENTOS (de los propios instructores)


  • El modeler es una buena alternativa para la empresa. Si se quiere utilizar para realizar una aplicación deben hacerla expertos en modelado.