Teach

Aprendes más si compartes

Teach

Integración de sistemas: Puntos claves y consideraciones en el desarrollo

28 Sep

By: Kevin Álvarez, Software Developer

Kevin Álvarez
Integración de sistemas: Puntos claves y consideraciones en el desarrollo

Hoy en día, una parte fundamental del desarrollo de software se basa en la integración de diferentes sistemas independientes que permiten a su vez el funcionamiento de un sistema más complejo, comúnmente utilizado para apoyar procesos de negocio para lograr una mayor eficiencia y productividad. 

Un punto clave en la integración de sistemas es la comunicación entre ellos, esta debe ser simple, precisa y rápida, esto con el objetivo de que la interacción entre los sistemas sea expedita, además de, evitar posibles riesgos.

Para realizar esta comunicación se debe configurar un ambiente en el cual los sistemas puedan enviarse mensajes entre ellos para intercambiar información: con esto será posible hacer solicitudes para procesar, pedir y/o almacenar datos o gatillar algún proceso.

Actualmente, la forma común de integración es a través de APIs que intercambian mensajes para realizar peticiones y con ello entregar o pedir datos, existen diferentes tipos de tecnologías que permiten estructurar estos mensajes, siendo algunas de estas SOAP, REST, gRPC (Protocol Buffer).

Si bien las tecnologías existentes ayudan a abstraerse de manejar el intercambio de mensaje a un nivel específico, es importante estructurar el contenido del mensaje, o también llamada interfaz, para que las peticiones sean precisas de acuerdo a lo requerido. En este punto se tienen que tomar decisiones con respecto a la data del mensaje, envío de errores y posiblemente metadata que se requiera enviar.

Teniendo una perspectiva general del diseño de una integración, existen consideraciones para cubrir puntos de riesgo. Estos riesgos pueden existir en múltiples partes del proceso, pero de forma genérica podemos reconocer dos: las entradas y los errores (ya sean internos o por errores de software de terceros). 

Control de entradas

Controlar las entradas puede parecer una tarea sencilla, pero muchas veces se complica, ya que se debe balancear entre la flexibilidad de la interfaz y el riesgo sobre el ingreso de datos incorrectos. Comúnmente se apuesta por una interfaz rígida con tipos y largos definidos, rechazando todo dato que no cumpla con las reglas, lo cual minimiza la posibilidad de ingreso de datos incorrectos o indeseables.

Si todo parece indicar que esta es la mejor opción… ¿por qué considerar una interfaz más flexible? Algunas veces no se tiene claro cómo serán los datos a ingresar, siendo el caso común cuando se utilizan bases de datos de documentos o key-value, donde se almacenan los datos en estructuras más permisivas. También existe la posibilidad de solo se quiera recibir el mensaje y almacenarlo, con el objetivo de procesarlo más adelante por temas de rendimiento.

En definitiva, todo depende de los requerimientos que se tengan y los procesos definidos bajo los cuales debe funcionar la solución de integración.


Control de errores

Otro punto importante es controlar los posibles errores que ocurran dentro de los procedimientos. La integración puede estar ligada a procedimientos que utilicen software de terceros o tengan que realizar consultas a servicios externos, es por ello que siempre se debe considerar la posibilidad de falla en estos componentes. Estas fallas pueden darse por errores internos en la implementación, o errores externos que retornen los servicios consultados, sea cual sea el motivo, se debe tener en cuenta estos errores y tener una forma de manejarlos.

Manejar los errores no siempre significa tener una forma de seguir en caso de ocurrir, puede darse el caso que un error por no disponibilidad de un servicio no permita continuar un procedimiento, en este caso el manejo del error debe ser para poder capturar el caso y poder almacenarlo para su posterior revisión, ya sea para observar el comportamiento nuevamente o volver a procesar la solicitud en cuestión. 

Por ejemplo, supongamos que se tiene un middleware encargado de recibir los pedidos desde un Ecommerce que serán dirigidos posteriormente hacia un ERP, se debe realizar la integración de la función capaz de realizar el ingreso del pedido en el sistema, este es un punto de error en el cual resulta útil generar un checkpoint (registro) para verificar el mensaje enviado y la respuesta obtenida, de esta forma se puede capturar el error en caso de ocurrir y poder registrarlo para un análisis posterior.

De lo último mencionado entra en juego un punto sumamente importante para todo sistema, y se trata del monitoreo, el cual puede darse en múltiples niveles, desde el mismo caso planteado anteriormente (captura de errores) hasta monitoreo a nivel de hardware para verificar la salud de la infraestructura.

Monitoreo a través de Logs

Existen muchas formas de monitoreo de software, pero para esta instancia se tomará en cuenta la más común: el registro de mensajes (o también llamados Logs). Este tipo de monitoreo se realiza mediante la impresión de mensajes que permiten realizar trazas en diferentes procedimientos.

Los Logs asociados a un mensaje de “avance” permiten el registro de checkpoints, que a su vez permite un trazado, esto quiere decir que a través del seguimiento de estos mensajes se podría observar el avance en algún procedimiento en específico. A nivel de desarrollo esto es muy utilizado para verificar que una implementación está funcionando hasta un punto determinado, así mismo cuando se tiene que depurar (o debuggear) para encontrar un error, también sirve con el mismo propósito.

Si bien los Logs son beneficiosos, también se tiene que considerar el costo que tienen, hay que recordar que cada acción de código tiene un costo en rendimiento, que para efectos simples se puede considerar como tiempo. Se debe balancear entre el detalle del seguimiento y el costo de rendimiento del registro de estos mensajes. Para efectos prácticos comúnmente se realizan Logs para ingresos de entradas, checkpoints específicos en puntos claves (como por ejemplo, mensaje enviados a otros servicios y respuestas obtenidas de ellos) y registro de errores, todo esto para ayudar a trazar el procedimiento, con el objetivo de tener un seguimiento para analizar casos de errores.


En definitiva, la integración de sistemas no es algo que se deba tomar a la ligera, o que se tome una tecnología X y se le dé la tarea a una persona/equipo en específico para la implementación, es algo que debe ser planificado y detallado al igual que cualquier otro proyecto de software. 

Considerar puntos como los mencionados anteriormente y la interacción de la integración con sistemas en el ambiente que debe funcionar será clave para que el desarrollo del componente sea exitoso, su futuro soporte no sea complicado y que entregue valor en los procesos que participa.

Así toda la inversión que destinamos a un desarrollo logrará el mejor resultado posible y responderá correctamente a todas las necesidades iniciales pero con una solución robusta, sustentable, escalable y que potencie tu negocio.

 

Fotografía de portada: Freepik

¿Te gustó este artículo
emoji
? Si la respuesta es SÍ: dale amor apretando el corazón de abajo o compártelo en tus redes (porque compartir es bueno, se sabe)

Compartir

Más artículos para ti
emoji
Metaverso, ¿En qué momento nuestra realidad se nos quedó pequeña?
Teach - Aprendes más si compartes
Teach

Metaverso, ¿En qué momento nuestra realidad se nos quedó pequeña?

En los últimos años vemos cómo grandes magnates del mundo dedican sus esfuerzos a lo que pareciera escapar de la realidad. No solo Zuckerberg con la idea de crear una realidad virtual paralela, sino también Musk y su obsesión con buscar opciones fuera de la Tierra para vivir. Como si lo presente y tangible ya no valiera mucho. 

De practicante a Tactecher: mi experiencia
People - El alma de Tactech
People

De practicante a Tactecher: mi experiencia

Hace exactamente un año, empecé con la búsqueda de práctica profesional para así poder finalizar mi ciclo universitario, para dar mi examen de grado en Ingeniería Comercial… busqué en varias empresas pero ninguna me llenaba las expectativas o me llamaba la atención. Hasta que un día encontré por LinkedIn a Tactech. Postulé y a los días me llamaron para agendar mi entrevista la cual fue vía meet. 

De practicante a Tactecher: mi experiencia
People - El alma de Tactech
People

De practicante a Tactecher: mi experiencia

Hace exactamente un año, empecé con la búsqueda de práctica profesional para así poder finalizar mi ciclo universitario, para dar mi examen de grado en Ingeniería Comercial… busqué en varias empresas pero ninguna me llenaba las expectativas o me llamaba la atención. Hasta que un día encontré por LinkedIn a Tactech. Postulé y a los días me llamaron para agendar mi entrevista la cual fue vía meet.