Quizás este post debería estar más del lado de Tuzoftware .... Pero se vale... ;)
¿cuantas veces les ha tocado hacer un cambio en una aplicación? ¿Cuantas veces pensamos en las aplicaciones que se verán afectadas cuando cambiamos algo? ¿Quienes de nosotros tenemos un control de nuestras aplicaciones así como las dependencias que tenemos con otros sistemas?
¿Cuantas veces no les ha pasado que alguna área cambia versión de aplicación y las nuestras dejan de funcionar correctamente? nunca !!.. que bien!!! ... pero a los que nos ha pasado eso y fuera de los dolores de cabeza, a los jefes esperando, el tiempo encima.... todo, todo es desesperante.......... ahora combinen esa situación con una solución de integración mmm digamos ..... Mainframe si Mainframe, pantallas verdes, screen scraping, emuladores 3270... ¿Interesante escenario?
La finalidad de este post es tratar de mostrar una de las debilidades pienso yo, que existe en la integración de aplicaciones basada en captura de pantallas o screen scraping. Cabe resaltar que este tipo de integración tiene una ventaja importante: no es intrusivo en las aplicaciones a las que se trata de integrar.
Aquí en la empresa, tenemos varias interfaces basadas en este estilo de integración (échale un vistazo a esta liga ); como veras nosotros utilizamos Iway Telnet 3270, que es una serie de APIs que permiten interactuar con las pantallas verdes del mainframe... bien pues el punto flaco de estas interfaces es que están altamente acopladas por decirlo de alguna manera a las coordenadas, quien ha trabajado alguna vez con COBOL sabe de que le estoy hablando...
Bajo este esquema hasta un guión"-" te puede afectar (y mas si lo agregan de un día a otro :S, ahh y en la noche), sí, literalmente un guión te puede afectar.... eso fue lo que nos paso recientemente... se agrego un carácter a una pantalla de una aplicación dentro del mainframe y esto ocasiono que se movieran las posiciones de los campos, es decir, si para mi el campo 76 era NSS, ahora se había recorrido hasta la 78.... el punto delicado aquí es que la producción estaba parada mientras se detectaba el error, una vez que se detecto se dio marcha atrás a la versión de la aplicación mainframe....... mientras todo esto ocurría la operación se detuvo por al rededor de 3 horas...
Se aplico el cambio tal y como se debió de hacer desde un principio, es decir nos colocaron la versión de la aplicación mainframe en DESARROLLO hicimos los ajustes en nuestra interfase y liberamos a la par las nuevas versiones...
Todo el cuento anterior se pudo evitar teniendo un buen CONTROL DE CAMBIOS... se escucha tan sencillo y a veces trillado cuando nos hablan de esto en CMM, ITIL, RUP, en lo que ustedes quieran.... pero créanme que es muy importante...
Para muestra basta un botón... ¿recuerdas cuantos millones perdió TELCEL hace unos meses debido a un problema en su sistema?
Por una integración mejor, hasta la vista!!!
Tuzo
miércoles, 12 de septiembre de 2007
Entre change management y pantallas verdes
lunes, 3 de septiembre de 2007
Bitácoras, Trazas, Logs, Logging
¿quién dijo que poner System.out.println (javeros) o Console.WriteLine (.net) por cada línea es manejar una bitácora? No lo sé, pero en los ambientes java (que es lo que tengo más cercano) tenemos mega-archivos log de cientos de megabytes generados con poderosos System.out.println statements. Logging is cool!
Pero, eso no es logging. En casi cada aplicación "grande" o "empresarial" (lo que sea que significa esto) se incluye algún mecanismo de bitácoras. Agregar sentencias de rastreo es un mecanismo de "bajo nivel" para depurar código. Puede ser que sea la única opción por no existir un depurador para la plataforma o por que ya se trata de un ambiente multitarea/multihilos.
En el caso de una aplicación ejecutándose en un ambiente de producción, tampoco se puede hacer uso de herramientas de desarrollo o depuración. Casos así requieren que se le otorgue a los administradores u operadores herramientas que les permitan monitorear el comportamiento de los sistemas.
Para hablar de logging se requiere cumplir una serie de requisitos. Uno de ellos son los "contextos", entidades que contienen la información precisa de la ejecución de la aplicación. También se requiere distinguir diferentes niveles de severidad, desde el error fatal hasta mensajes de depuración; estas características deben poder configurarse fuera del código de la aplicación, es decir, en los programas incluimos todas las llamadas de rastreo que consideremos pero dependiendo de la configuración se van ir grabando las seleccionadas.
También tiene sus desventajas. El registro de entradas en archivos o bases de datos consume tiempo de procesador, llamadas a dispositivos que finalmente se ve como un cierto grado de lentitud en la aplicación. Si se registran demasiadas entradas, el log se torna ilegible. Si se filtran demasiados niveles de severidad, puede ser que se pierdan elementos que podrían auxiliar a resolver problemas.
Como ya es costumbre, el mundo java ha pasado por esto antes y gracias a la colaboración de muchas personas se construyó un framework para este tipo de necesidades. Ha sido tal el éxito de esta iniciativa que se desarrollaron componentes similares para otras plataformas y lenguajes (C++/PHP/Ruby) e incluso se incluye en algunos productos comerciales, BEA WebLogic Server por ejemplo (aunque ninguno de los programadores que conozco lo usan, siguen con sus pinchis println's) y obvio, también se construyo para .NET.
En este caso, log4net respeta todos los principios de su ancestro log4j y tenemos archivos de configuración, contextos, jerarquía de loggers e implementaciones de "appenders" que nos permiten tener diferentes destinos para nuestros logs. Ahora si, "logs".
El primer ejercicio de muestra del uso de log4net lo pueden encontrar en mi repositorio de ideas Google Code. Mediante subversion pueden obtener una copia de trabajo y trastear un rato con él.
Finito.
jueves, 23 de agosto de 2007
De vuelta
Hola que tal
Por acá de vuelta a estos rollos (después de que ya que el buen Gus se canso de hacer posts y el buen Chillicoder de copiar-pegar lo que pone en su blog :P)..Bueno pues hay muchas cosas interesantes que poner; digo después de mes y cacho de no escribir... segurito algo debió de haber ocurrido.. ;)
Esta semana me invito el buen Gus a un curso de ITIL Foundation en HP - instalaciones en el bello basurero de Santa Fe (que por cierto ya mero convierten en sapo a Gustavo, que dizque "por invitarme" chaft!!) , sinceramente es el primer contacto que tengo con este tema y se me ha hecho harto interesante.
Para los que están como yo.. ósea que es su primera vez en este tema, solo me limitare a comentar que es un marco de referencia que consta de varios libros que ofrecen una guía para la administración de servicios de Tecnología de Información... entiéndase por servicio de TI a todo aquello que permite llevar a cabo la operación de una empresa, dígase hardware, software, componentes, etc. en otra ocasión hablare un poquito mas de este tema, así de como ITIL puede ayudarnos a mejorar nuestra administración de servicios TI.
Saludos
Bonus Track: Lenguaje PURASPE
En el desarrollo del curso de ITIL nuestro instructor nos hablo de un lenguaje que el bautizo como PURASPE, que no es otra cosa que hablar en otro idioma diferente al que hablan nuestros usuarios ... le hablamos de web services, de applications server, de firewalls, algunos pochismos.. eso es PURASPE en acción, curiosamente el comentario lo reforzó un doctor especialista que se encuentra también tomando el curso y menciono lo siguiente "ha veces llegan los de TI y empiezan a decir: que el CMMI, que Web Server, que SOAP... pobres chamaquitos, creen que con hablar con muchos tecnicismos van a impresionar a un doctor especialista" en cierta medida tiene razón… aunque posteriormente el doctor estaba dando unos ejemplos de su ramo y nos hablo en PURASPE.... a lo que un compañero le dijo "y no crea que por hablar así va a impresionar a un ingeniero" jaja, en fin aquí nadie sabe mas ni menos.. Ya lo dice el principio de Peter "Todos llegamos a un nivel de incompetencia"
Aquí el mensaje es tal como dice el buen chillicoder... "ENTRE SERVICIOS TE VEAS..."
Va pues saludos... ah por cierto PURASPE significa - Puras Pendejadas
La construcción de los Helpers
Se ha vuelto un concepto casi obligado el utilizar un framework de objetos de negocio pero ¿qué entendemos por esto? Un conjunto de clases que permiten modelar los objetos de un dominio y nos permitan olvidarnos de las tareas mundanas. La idea de fondo es utilizar la mayor parte de nuestra energía solucionando problemas de negocio y la menos posible en los problemas de tecnología.
Así han aparecido en el medio infinidad de frameworks con este objetivo, en todos los lenguajes y en todas las plataformas. Hasta parece que ya se ha llegado a un punto de saturación para estos proyectos. Sin embargo siguen apareciendo.
No existe el framework perfecto, como tampoco el lenguaje perfecto ni la plataforma perfecta. Y siguiendo nuestro inevitable anhelo de perfección vamos creando más proyectos tratando de solventar los errores que encontramos en otros.
No existe una metodología perfecta para construir un framework, generalmente la construcción es influenciada por el tema de moda: aspectos, programación orientada a objetos, inyección de dependencias, objetos auto-suficientes. Algunas empresas han publicado documentos para describir como han concebido y construido los frameworks que ofrecen. Entre estas últimas aparece notoriamente Microsoft.
Después de lanzar al mercado la tecnología .NET, Microsoft ha batallado duramente para posicionarla como una tecnología empresarial (cualquiera que sea su significado). Parte de esos esfuerzos ha sido el desarrollo de bibliotecas de componentes que faciliten el desarrollo de aplicaciones. El esfuerzo inicial dio como resultados los elementos que se conocieron como Application Blocks.
Estos eran conjuntos de clases con un objetivo delimitado. Lo más interesante fue que las construyeron a partir de un análisis que compartieron en forma de guías. En estos documentos exponen los elementos que se consideraron durante el diseño describiendo detalladamente los escenarios y la manera de aplicar la tecnología .NET para construir estas bibliotecas.
Estas bibliotecas fueron rápidamente adoptadas por la comunidad de desarrolladores quienes además fueron enriqueciendo con sus experiencias propias la funcionalidad de las clases incluidas e incluso se combinaron en un nuevo producto que se conoce como Enterprise Library. Sin embargo, tras la aparición del proyecto Mono, que permite la ejecución de programas desarrollados con .NET en plataformas no Windows, se incluyó en la licencia una cláusula que impide la ejecución de los Application Blocks en sistemas operativos distintos a los construidos por Microsoft.
Así que ahora, a pesar de ser elementos tan útiles, los Application Blocks no pueden ser utilizados en Linux o Mac OSX. Existen en el mundo del código abierto cada vez más proyectos basados en .NET y algunos de ellos pudieran resolver los mismos escenarios que se presentan en el diseño de las bibliotecas de Microsoft el ejemplo de inicio es log4net, una biblioteca de clases para registrar entradas en diferentes destinos que forma parte del proyecto Logging Services de la Fundación Apache.
Y también existen otros proyectos que ofrecen alternativas para los otros Application Blocks existentes sin embargo la principal ventaja de la oferta de Microsoft es la unificación que han conseguido y que en los proyectos de software libre se encuentran dispersos e inmersos en otros proyectos y una implementación sencilla, directa y única simplemente no existe.
Así que esta iniciativa (si, una más) es la de tener en un solo conjunto esta funcionalidad partiendo en primer lugar de proyectos ya existentes, como log4net, mostrando como es que se cumplen los escenarios descritos en la documentación de Microsoft y construyendo los elementos necesarios retomando código o creando nuevo para satisfacer las necesidades planteadas por las guías de referencia.
Y si no fuera suficiente... habrá más sobre el tema.
Finito.
martes, 26 de junio de 2007
PartnerApi Library: Por fin ve la luz
El objetivo que se me presentó en mi mente fue crear una biblioteca que simplificara el uso de esta PartnerApi y pues después de mmuuuucho tiempo aquí está.
Acabo de publicar el código, licenciado bajo LGPL, para que todo mundo lo revise, lo use y ojalá y contribuya a este proyecto.
Cualquier comentario, sugerencia o pregunta son bienvenidas.
Finito.
Enterprise Architecture
Hola que tal!!!
Hace unos meses escuche el termino Arquitectura Empresarial y como buen técnico de entrada pensé que hablaba de arquitectura de software, de componentes en fin todo relacionado con tecnología y no es que estuviera mal, pero en una empresa no todo es tecnología... el buen Gus siempre hacia énfasis en ver todas las perspectivas que encontramos dentro de una organización.... lo que le da vida....
Si quisiera hablar de Arquitectura empresarial en una frase la dejaría como sigue: "Se refiere a el conjunto de PROCESOS DE NEGOCIO de una organización, como estos procesos son implementados con TECNOLOGIA y como son llevados a cabo por PERSONAS", quizá gus, o muchos de ustedes complementaran esta frase... , como pueden ver este tridente PERSONAS-PROCESOS-TECNOLOGIA es el alma de una empresa...
Para la empresa lo mas importante son sus PROCESOS de negocio... todos y cada uno de ellos desde procesos bancarios, procesos de pagos, procesos de nomina... en fin los que se les ocurran.... por otra parte están las PERSONAS el lado humano el lado que echa a andar los procesos, cumpliendo tareas especificas que permitirán lograr los objetivos de la organización.... y soportando ambas cosas esta
Un Framework muy interesante es el llamado Framework de Zachman para Arquitectura empresarial, el cual define diferentes perspectivas como Que (datos), Como (funciones), Donde (ubicación), Quien (personas), Cuando (tiempo) y Porque(Motivación), a su vez estas perspectivas pueden cruzarse con el Alcance (objetivos estratégicos de la organización), Modelo Empresarial (Modelado de procesos de negocio), el Modelo del Sistema(Modelos Lógicos), Modelo Tecnológico (Definición y desarrollo de la solución), Componentes y los Sistemas en operación (Empresa Funcionando)....
Si algún día necesitan realizar un diagnostico de
Ahora veamos la famosa pregunta ¿como alinear TI a los objetivos de la organización?.. Quizá la respuesta la encontremos en la arquitectura empresarial....
Saludos!!!
Tuzo
jueves, 14 de junio de 2007
The role of ESBs
Cuando hablamos de implementar una solucion ESB en alguna organizacion, nos viene a la mente lo costoso que implicara hacer este tipo de proyectos..... en el mercado existen una serie de productos comerciales que ofrecen todas las capacidades que nos entrega un ESB, por mencionar algunos Sonic ESB, Aqualogic Service Bus... ya hasta microsoft ofrece con BizTalk una solucion ESB (segun je je.. sorry)... y el punto aqui es que las licencias anuales se facturan en millones de dolares.... me pregunto... ¿las soluciones ESB estan solo al alcance de grandes companias en el mundo? .. lo que no hemos hecho muchos de nosostros es voltear al mundo open source y ver que tenemos alternativas realmente interesantes como Mule ESB, Celtix, Service Mix, etc.. que bien implementadas se puede obtener un resultado realmente interesante comparado con las soluciones comerciales...
Mas preguntas....¿Como poder justificar una compra de una herramienta que cuesta millones de pesos? ¿Como justificar realmente el valor del modelo SOA? ..... para los que estan trabajando en dependencias gubernamentales (y con esto del decreto de austeridad) ..¿ como se puede de verdad reducir costos anuales de uso de licencias de software?...... quiza estas respuestas estan en las soluciones opensource ... ¿sera?
Bueno pues aqui les dejo una interesante entrevista en la que habla Ross Mason fundador de Mule ESB, acerca del rol de los ESBs...
Por una integracion mejor, hasta la vista!!
Tuzo... Campeon