jueves, 31 de julio de 2008

Analisis en SOA

Hace tiempo que vengo estudiando como es el mejor camino para implementar un analisis SOA.
Aca escribo un poco de lo que estuve viendo.
  • La metodologia de IBM SOMA
  • La de Thomas Erl (la mejorcita) MSOAM y otro link de lo mismo
  • Las de ciclo de vida de los servicios de BEA (que no me dejo mucho) y
  • Las recomendadas por las SOA practitioners guide
De la SOA Practitioners Guide, rescato la parte 3 que es un documento muy, pero muy bueno.

En fin, parece que para el analisis y la entrega de servicios en una metodologia SOA existen dos caminos posibles. TOP-DOWN y BOTTOM-UP. Pueden verlos aqui
Cuando lo lei, asocie la forma de delivery BOTTOM-UP a la forma de analisis orientada a la necesidad actual cuando los requerimientos provienen de sistemas legacy y los procesos de negocio no estan definidos; y la TOP-DOWN, cuando se parte del analisis basado en entidades de negocio, procesos de negocio y demas descomposiciones, que se pueden ver aqui
Igual, se debe tener en claro que todo el proceso tendera tarde o temprano a ser un TOP-DOWN, de lo contrario no se llegara a una Arquitectura SOA ideal, donde IT este alineado al negocio.

Otra cosa que dice MSOAM es que el analista funcional debe trabajar en conjunto con el tecnico (aqui).
Con los analistas tecnicos deben trabajar si o si, ya que estos son los que conocen las restricciones tecnologicas, los patrones de diseño y podran modelar los servicios de manera acorde a los estandares empresariales. Un analista funcional no podra modelar las entradas, salidas y capacidades de un servicio por si mismo; especialmente hoy en dia, que la vision orientada a servicios es escaza.
Cuando se habla de analistas funcionales son analistas cross al negocio. Eso quiere decir que el analista no debe conocer UNA aplicacion o UN proceso de negocio, sino meterse en todos los procesos y conocer un poco de tooooodo IT en la empresa.
Es por eso que el analista SOA debe trabajar (o consultar antes de definir, al menos) con la gente que modela y documenta los procesos de negocio.

El ciclo de vida de servicios debe estar bien definido y se deben formalizar los pasos para la creacion, eliminacion o modificacion de un servicio, como tambien los pedidos para su consumicion. Sin esto, no se podran generar politicas adecuadas para el repositorio...

Para un correcto analisis, se debe poseer un repositorio de entidades de negocio y de servicios Y con un proceso de GOVERNANCE bien definido es fundamental.
La existencia del repositorio y la definicion de la metadata de cada servicio sera lo que permita modelarlos y centralizar la informacion de servicios en toda la empresa.
No se habla unicamente de UDDI, ya que este estandar es limitado. Se habla de un repositorio a nivel de analisis y diseño, que permita automatizar el proceso de modelado y descubrimiento de servicios, como tambien asi su aprobacion por parte de la SOA BOARD (que sera el sector/comision/grupo de sectore que tendran el governance de los servicios en la empresa y definiran los estandares).

El proceso de Governance debe estar bien definido, y los estandares y modelado de negocio tambien. Aqui hay un articulo sobre la importancia del governance

La metodologia de analisis debe ser iterativa!!!! no se debe querer relevar tooooooda la informacion de tooooooodos los procesos para comenzar a definir servicios que sean reutilizables.
Los servicios son altamente modificables y apuntan a la reutilizacion, por lo que se debe analizar por partes a los procesos de negocio/procesos de la empresa para poder entregar los primeros servicios. Luego, estos se iran modificando con la aparicion de nuevos requerimientos, para eso se definio un repositorio y un ciclo de vida de servicios.


Con los links y la metodologia en si, hay bastante para profundizar. SOA Es una metodologia que sigue cambiando y que cada consultor hace, hoy en dia, como mas le parece.
Es importante tener una metodologia de analisis que se ajuste a las necesidades de la empresa, dependiendo su grado de madurez (me gusta la piramide de ese link, es muy clara). El grado 3 de madurez, es el mas dificil de lograr, el resto sale con fritas.


Saludos.

Oracle BEA, como sera la fusion

En este link que pongo a continuacion esta el roadmap que va a tomar la gente de Oracle.

http://www.espaciosoa.net/2008/07/02/conversion-de-productos-de-bea-y-oracle/

Por suerte, van a quedarse con JRockit como VM de los aplicattion server fusionados, lejos, lo mejor de BEA

Van a seguir teniendo la BAM de oracle, por lo que solo se podra implementar sobre un server con windows instalado. Uno de sus tantos requisitos es ese.

Saludos.

lunes, 7 de julio de 2008

REST

Para los que no conocen REST, es una forma de intercambio de informacion al estilo web service, basada en comandos comunes de HTTP como son el GET y el POST.
Este es el caballito de batalla de todos los que opinan que SOAP es un estandar pesado y agrandado en vano (comparto que se han realizado estandares que nadie respeta y que SOAP es mucho mas flexible de lo que deberia ser).
De forma Simple, REST combate los largos pedidos XML para hacer pedidos via URL y Query String, retornando solo lo necesario, sin ningun adorno adicional.

Actualmente existen frameworks de Web Services que soportan implementaciones SOAP o REST de forma trasparente (Apache CSF por ejemplo) e incluso existen ESB's REST :D.
Al fin y al cabo, son Web Services, lo unico que cambia es como lo transportan.

Les adjunto un par de links para que sigan el tema.



Que lo disfruten!
Saludos.

Ataques comunes a aplicaciones con Web Services

Existen ciertas vulnerabilidades que pueden ser explotadas en las aplicaciones que consumen o exponen a web services.
Muchas, estan resumidas en el siguiente documento que efectua un top ten de los ataques mas comunes. Es un pdf.
Aca tienen un documento de OWASP sobre como proteger aplicaciones que consumen/exponen WEB Services. Es una presentacion de powerpoint.

Para mencionar algunos:
  • XPATH Injection. Un ataque bastante simple y si una aplicacion usa el XPATH de esta manera (por ejemplo, con el uso de condiciones de XSLT para mostrar contenido sensible) merece ser castigada con este ataque. El link que les adjunto tiene un ejemplo que puede explicarlo mejor que yo.
  • XML Bomb. Este es complicado. Hace que el XSD o DTD asociado sea recursivo y tolere una cantidad remota muy grande de elementos. Esto hace que el parser de XML (si tiene activa la validacion del XML al parsear) se cuelgue y provoque, en el peor de los casos una caida por consumo de memoria o un Denial of Service (DoS). Si se llega a incluir un DTD o XSD de contenido exponencial en un mensaje, la unica forma de corregirlo es deshabilitando la validacion de XSD's o DTD's, trayendo otros inconvenientes y teniendo que validar los inputs la aplicacion.
  • XXE (External Entity Atacks). Es cuando realizan un ataque con un cambio de alias, ruteando los xsd's/dtd's que importamos en nuestros XML's hacia otro lugar, que hace que el contenido del atacante sea valido. Esto quiere decir que podremos colocar numeros donde no se permitia, strings que estaban prohibidas, etc...
  • Large Payloads. Como el nombre lo dice, un XML gigantesco que trata de provocar un DoS.
Los estandares de WS-Security solo apuntan a XML Encryption y Tokens de autenticacion, asi que olvidense de buscar una solucion para estos temas.
Estos problemas son propios del trabajo con XML, por lo que deben tenerse en cuenta y se debe hacer un analisis de la exposicion al riesgo que estamos dispuestos a afrontar, buscando una solucion que los mitigue (dentro de los costos planeados).

Que lo disfruten!
Saludos.

Issue de Spring Batch

Spring Batch es una aplicacion para realizar procesos batch's de manera "simple", o por lo menos asi deberia ser.

El framework no es malo, aunque es escazo en documentacion, ejemplos y tiene una API muy extensa en cuanto a jerarquias de objetos. Aun asi, parece que la consultora que lo creo (Accenture) posee mas ejemplos que los que estan publicados, posiblemente de trabajos internos en la creacion del framework o de trabajos para clientes.

El unico tema a tener en cuenta es con los mapeos en memoria, no son thread safe, por lo que en un ambiente de produccion, con un batch multithreading, se debe configurar la persistencia del framework (mantiene los estados de los procesos y otras configuraciones) contra una BD y no contra memoria. link al respecto

"The Map*Daos were never designed to be thread safe. To be honest, we only ever thought they would be used for testing. They can be made thread safe if you open an issue in JIRA. (N.B. this is not related to the original topic of this thread.)".
Todavia no son thread safe.

OWASP

OWASP (The Open Web Application Security Project) es una asociación sin ánimo de lucro que proporciona recursos, documentación, software, etc, para promover la seguridad entre los desarrolladores de aplicaciones web.
Contiene las guias para la segurizacion de las aplicaciones y cada tanto recopila las vulnerabilidades mas afectadas y efectua un Top Ten, hicieron uno en el 2007 y otro en el 2004.

La pagina es http://www.owasp.org

Es un recurso muy util para cualquier sector de seguridad informatica y para los desarrolladores.
  • Para los primeros, les da un framework de referencia y una lista de vulnerabilidades y formas de corregirlas.
  • Para los segundos los capacita en el desarrollo de aplicaciones mas seguras, ya que la seguridad es un proceso que debe estar presente desde el analisis de un software y debe estar pensado en su desarrollo. Planearlo para mas adelante aumenta los costos en el proceso de construccion.
Para el que quiera aprender (a como hacer aplicaciones mas seguras ;) ;) ), puede encontrar un:
Que lo disfruten!
Saludos.