Archivo por meses: noviembre 2007

La conferencia de SOA que cambió el mundo

Hoy fui a la mejor conferencia de SOA que he ido jamás. En rigor he asistido en Chile y EEU a conferencias de SOA, curso y otras yerbas. Es más yo mismo he dictado varias conferencias de SOA para desarrolladores y arquitectos de la comunidad de Microsoft Local.

Esto ocurrió en la cuarta conferencia anual SEPG Latinoamérica organizada por el ESI. El tema de esta conferencia es Process Improvement: Achiving Competitiveness in the Global IT Market.

Como pueden ver esta conferencia es de mejora de procesos pero en uno de sus track me encontré con esta conferencia “Migración de Sistemas a Ambientes de Arquitecturas Orientadas a Servicios” dictada por Grace Lewis del SEI.

Puntos destacables de esta conferencia que la hacen diferente a las otras que he asistido:

  • Una explicación notable de las diferencias entre invocación estática y dinámica de servicios, pasando por la necesidad de generar una ontología en el caso de dinámicas.
  • Se presentó el modelo SOA RM del Oasis [1].
  • Una explicación notable sobre el confuso concepto Granularidad de Servicios.
  • Definición de cuatro pilares fundamentales para el desarrollo de un sistema bajo el estilo SOA: Alineamiento estratégico, SOA Governance, Evaluación tecnológica, Cambio de mentalidad.
  • La Necesidad de una adopción ordenada, por fases como propone Roy Shulte [2]
  • SOA governance es el conjunto de políticas, reglas y mecanismos de cumplimiento para el desarrollo, utilización y evolución de elementos de un sistema basado en SOA y el para el análisis de su valor para el negocio.
  • Governance aplica tanto en tiempo de diseño y ejecución.
  • Presentación de T-CHECK[3] cómo método de validación de pruebas de concepto. Experimento con el objetivo de verificar el comportamiento de una tecnología en un contexto específico
  • Presentación del método SMART, método que analiza la factibilidad de reutilizar componentes como la base para servicios, Service Migration and Reuse Technique (SMART)[4]

Referencias

[1] Reference Model for Service Oriented Architecture 1.0

[2] Four Pillars of Service-Oriented Architecture

[3] A Process for Context-Based Technology Evaluation

[4] SMART: The Service-Oriented Migration and Reuse Technique

[5] European Software Institute

[6] Software Engineering Institute

Salud de mi servidor Windows, la salud no es solo para humanos

Nuevamente recibo una pregunta interesante, los clientes son una fuente de inspiración inagotable. Qué pena no tener más tiempo para Bloger con más frecuencia.

Problema

El equipo de desarrollo he desarrollado una nueva aplicación y requiere saber si está aplicación puede o no ser instalada en un servidor que actualmente aloja otras aplicaciones. ¿Cómo saber si será capaz el servidor de soportar esta nueva aplicación?

Posible Solución

El sentido común dice que midiendo los recursos que actualmente usa el servidor se puede determinar la capacidad “ociosa” disponible para que la nueva aplicación se ejecute. Esto es verdad si y solo sí el uso de recursos fuera lineal.

No voy a entrar en la complejidad de lo que es un sistema lineal, pero en términos simples Un sistema lineal es un sistema que obedece las propiedades de escalado (homogeneidad) y de superposición (aditiva), mientras que un sistema no-lineal es cualquier sistema que no obedece al menos una de estas propiedades.

Asumiendo que los recursos se administran de manera lineal podemos declarar que los recursos usados hoy en el servidor al poner la nueva aplicación, no variaran sino que seguirán constante. Esto es la propiedad de superposición de los sistemas lineales. Esto no es verdad en el mundo real, pero es un supuesto que permite un análisis simple para obtener resultados aproximados evitando las complejidades de los sistemas no lineales.

Ahora, después de haber “forzado” la realidad nos queda medir el uso de recursos. Las mediciones más simples y al alcance de todos en la plataforma Windows se hacen utilizando la herramienta Performance Monitor [1].

Dependiendo del aspecto que se quiera observar son los contadores que debemos utilizar. En el artículo Key Performance Monitor Counters [3] explican que contadores utilizar para responder las siguientes preguntas:

 

  • ¿Cuánto es la disponibilidad del servidor?
  • ¿Cuán ocupado está el servidor?
  • ¿Está funcionando adecuadamente el Hardware?
  • ¿Tienes suficiente RAM? [Muy importante]
  • ¿El disco es lo suficientemente rápido?

La gracias de este análisis es que no requiere de un entendimiento profundo de lo que el sistema hace, o como está construido (Java, DotNEt, etc..) Pasa a ser una caja negra. Ahora, para los puristas eso es malo porque no te da razones solo describe comportamiento de el sistema como un todo.

Después de medir, se obtiene la capacidad ociosa del servidor de destino. Podemos representar eso como Recursos Disponibles (Rd).

Los recursos que la nueva aplicación utiliza deben ser medidos de la misma manera. Para medir estos recursos debemos en el ambiente de Test “cargar la aplicación” para poder medir así los recursos que utiliza. Representaremos eso como Recursos Nueva Aplicación (Rna).

Entonces, después de “forzar la realidad” podemos decir que:

 

  1.  Rd >> Rna => No tendremos mayores problemas.
  2. Sí Rd > Rna => no podemos decir nada con “responsabilidad”.
  3. Sí Rd <= Rna => No podemos instalar la nueva aplicación en el servidor.

Solo en el primer caso, esta prueba simplificada nos da una respuesta práctica. En los otros casos hay que utilizar técnicas más sofisticadas, las cuales deben ser realizadas por gente con más experticia que un desarrollador de software como yo  🙂

Un ejemplo del nivel de complejidad de las medidas para los casos no resueltos con este método pragmático se puede ver en este POST [4] específico para medir desempeño de Web Services construidos en ASPNET.

Referencias

1.- Performance Monitor.

2.- Sistemas Lineales.

3.- Key Performance Monitor Counters.

4.- Medir el desempeño de Servicios Web plataforma DotNet.

ASPNET Forms authentication ¿Cómo compartir datos cifrados entre aplicaciones?

 

Escenario

Para un cliente de la industria Bancaria implementamos autentificación utilizando formularios (Forms authentication) de ASPNET. Este formulario es único para todas las aplicaciones.

En el contexto de ese proyecto y buscando que sea lo más seguro posible utilizamos las opciones de cifrado de toda la información que se almacena en las cookies. Para ello utilizamos la opción <forms protection="All">.

Ahora, como el formulario es único para todas las aplicaciones, tuvimos que agregar el atributo <forms EnableCrossAppRedirects ="true"> para que así los clientes una vez autentificados regresaran a la aplicación que querían utilizar.

Solución

Para que esto funcione, ya que el formulario cifra los datos, es necesario que las aplicaciones y el formulario de autentificación compartan las llaves de cifrado. Esto nos obliga a generar y declarar explícitamente las llaves a utilizar. Esto se hace de la siguiente forma.

 

<machineKey validationKey="C50B3C89CB21F4F142…..5C07F6C36DB51F17C529AD3CABE"

decryptionKey="8A9BE8FD67AF697…………………AF2B72F"

validation="SHA1" />

Tabla1

Este TAG se debe agregar en el archivo de configuración tanto en el formulario de autentificación como en las aplicaciones que deben leer las cookies que generó el formulario.

Un problema común es cómo generar estas llaves. Como generar estas llaves programáticamente pueden verlo en este ejemplo [2] y desarrollar su generador o utilizar este [3] Free directo del WEB.

Enjoy!

Referencias

[1] Cómo: Proteger la autenticación de formularios en ASP.NET 2.0, http://www.microsoft.com/spanish/msdn/articulos/archivo/201205/voices/paght000012.mspx

[2] ASP.NET machineKey Generator, http://www.codeproject.com/aspnet/machineKey.asp

[3] ASP.NET machineKey Generator Software, http://www.developmentnow.com/articles/machinekey_generator.aspx

ISV Innovation Day, Desarrollo de Aplicaciones de Negocios basadas en Office System

El próximo miércoles participaré en el evento ISV Innovation Day organizado por Microsoft. En este evento revisaremos la arquitectura que se aplica al desarrollar soluciones que utilizan Office System como plataforma.

Para los interesados pueden revisar los siguientes links de información:

Un Diagrama de la arquitectura de Microsoft Office System 2007 se muestra en la siguiente figura.

Les paso la discreta invitación que se hizo para este evento, nos vemos.

 

Estimados socios desarrolladores,

Queremos invitarlos a participar de un nuevo ISV Innovation Day en Santiago, a realizarse el próximo día Miércoles 14 de Noviembre en el Hotel Ritz Carlton (El Alcalde 15, Las Condes).

En esta oportunidad, abordaremos el Desarrollo de Aplicaciones de Negocios basadas en Office System como plataforma (OBA = Office Business Applications) como tema principal de la actividad.

Esta será una excelente oportunidad para revisar profundamente los conceptos teóricos y ejemplos prácticos atrás de este tipo de aplicaciones empresariales.

Están invitados. Será el próximo Miércoles 14 de Noviembre en la mañana en el Hotel Ritz. Los esperamos !

Para poder inscribirse a esta actividad por favor enviar su confirmación a Katina Soto (t-kats@microsoft.com). Cupos limitados.

Horario: 09:00 a 13:00 horas

Lugar: Hotel Ritz Carlton, El Alcalde 15 – Las Condes. Con estacionamiento.

 

La Agenda Actulizada es la siguiente:

09:00 – 09:30 Bienvenida y Café

09:30 – 10:15 Introducción a los conceptos de Office Business Applications (OBA)

A cargo de Wilson Pais de Microsoft Cono Sur y Juan Pablo Garcia de Datco Chile

Más información sobre OBA en: http://www.obacentral.com y en http://msdn.microsoft.com/oba

Más información sobre Datco Chile en http://www.datco.cl

10:15 – 11:45 Tecnologías para desarrollar Office Business Applications

A cargo de Juan Suarez y equipo de desarrollo OBA de Arkano

Más información sobre Arkano en http://www.arkanosoft.com/html/home.html

Esta sesión pretende introducir distintas tecnologías para desarrollar aplicaciones que se integran con Microsoft Office System.

Se mostrarán ejemplos prácticos de cada una de ellas en un escenario real, siempre con el objetivo de llevarle al usuario información

de su negocio a un entorno amigable y conocido como Microsoft Office System.

Las tecnologías que se utilizarán serán: Visual Studio Tools for Office 2005 SE, MOSS, Excel Services.

11:45 – 12:15         Break con Café

12:15 – 13:00 Presentación y discusión sobre un ejemplo de desarrollo corporativo OBA

A cargo de Daniel Montero de Datco Chile

Más información sobre Datco Chile en http://www.datco.cl

Esta sesión pretende introducir un ejemplo real de OBA en el desarrollo de software corporativo empresarial. Preguntas & respuestas.

13:00 – 13:10 Cierre y sorteos entre los asistentes de Libros de Microsoft Press

Microsoft Workflow Foundation Rules Engine

En septiembre de este año participé en el evento Microsoft TechNet & MSDN Briefing exponiendo sobre Workflow Foundation de framework 3.0.

En esa conferencia hable muy superficialmente del motor de reglas de negocio que viene incluido en esta tecnología. Lamentablemente, el tiempo para explicar no era suficiente por lo que llegué a mi casa y describí en 3 post cómo usar ese motor de reglas.

Los post son esto:

1.- Windows Workflow Foundation, Rule Engine I ( 5 de septiembre)

2.- Windows Workflow Foundation, Rule Engine II (7 de septiembre)

3.- Windows Workflow Foundation, Rule Engine II (13 de septiembre)

El resultado de este trabajo quedó apto para escribir un solo artículo y postularlo para que sea publicado en el sitio de MSDN de Microsoft. Me fue bien con esa postulación por lo que comparto con ustedes aquello en el siguiente link:

Microsoft Workflow Foundation Rules Engine

Salu2