-
-
-
-
URL copied!
Un desarrollo de software basado en una solución arquitectónica SOA se destaca generalmente por un sistema distribuido basado en la comunicación e interacción de servicios. Una arquitectura SOA puede incluir entonces distintas plataformas y tecnologías, por lo que el monitoreo de la comunicación entre los distintos servicios que proveen la funcionalidad del sistema es crucial para el éxito del sistema.
Un aspecto que sobresale en este contexto es el transaccional. Típicamente, el concepto de una transacción involucra una serie de pasos que tiene que cumplir la siguiente propiedad: o se hacen todos los pasos, o no se hace ninguno. Es decir, que si alguno de los pasos fallara, se debe volver atrás y deshacer las acciones realizadas hasta el momento. Todo debe quedar como si nunca nada hubiera pasado, para luego reintentar llevar a cabo la transacción. Un ejemplo canónico para ilustrar el concepto de transacciones es un sistema bancario, donde cada una de las operaciones debe cumplir esa característica transaccional: no puede ocurrir que un error deje en estado inconsistente el saldo de una cuenta. Formalmente, se dice que una transacción debe cumplir las propiedades ACID [1]: Atómica, Consistente, Aislada y Durable.
Claramente el concepto de transacciones en un entorno con un alto perfil distribuido como una solución SOA juega un rol preponderante, y debe prestarse especial atención a aquellos servicios que necesiten ejecutarse de manera transaccional.
Transacciones en SOA
Para implementar un servicio dentro de un esquema SOA con un perfil transaccional es clave monitorear todo el tiempo la comunicación entre los componentes. Es decir, el atributo de calidad conocido como disponibilidad, que se concentra en el manejo de fallas, tendrá un papel determinante.
Para llevar a cabo este monitoreo, empresas como SOA SOFTWARE (www.soa.com) ofrecen servicios y productos dedicados. Los mismos están basados en tres pilares: monitoreo, para poder tener conocimiento exacto del lugar de una falla, transaction tracking, para poder deshacer acciones previas una vez detectada una falla, y SLA (Service Level Agreement), para tener un contrato que establezca la calidad del servicio.
Patrones para la implementación de transacciones
Otra opción más artesanal surge de aplicar un patrón arquitectónico de SOA, como lo es el patrón Servicio Atómico Transaccional [2]. Este patrón ilustra una solución general para implementar servicios de manera transaccional. La descripción del patrón tiene 4 partes:
– Problema: cuando un servicio utiliza otros para su solución, y uno de ellos falla, el servicio debe deshacer todas las acciones realizadas para mantener la consistencia del sistema.
– Solución: encapsular los servicios invocados dentro de un servicio “wrapper” con capacidad de efectuar rollback: es decir, ir hasta el último estado consistente.
– Aplicación: Un sistema transaccional se incluye en la solución arquitectónica y es utilizado por aquellos servicios que lo requieran.
– Impacto: existe una sobrecarga en el consumo de memoria, ya que se requieren recursos para mantener el estado de cada uno de los servicios que será utilizado en caso de efectuar un rollback.
La figura 1 (obtenida desde [2]) muestra un ejemplo de este patrón. Los servicios A y B completan sus tareas de manera exitosa. Sin embargo, cada vez que lo hacen inician una transacción local, guardando en una base de datos su estado actual antes de realizar cualquier cambio (puntos 1 y 2 en sus figuras). Luego, una vez que el servicio C falla (punto 3 en la figura), los servicios A y B efectúan un rollback, para volver al último estado actual consistente (puntos 4 y 5).
Conclusiones
El manejo de transacciones nunca es trivial, y menos aún dentro de una arquitectura SOA, donde existe una alta frecuencia de interacción entre servicios conectados a través de distintas plataformas y tecnologías. Se debe proceder con cuidado en la detección de los servicios que requieran características transaccionales, y proceder a cumplir con la misma dentro de la solución. La correcta detección de estos servicios es clave para evitar una sobrecarga en los recursos y la calidad del sistema.
Referencias:
[1] http://es.wikipedia.org/wiki/ACID
[2] http://soapatterns.org/design_patterns/atomic_service_transaction
Top Insights
Escribiendo User Stories en Agile
AutomotiveCommunicationsConsumer and RetailFinancial ServicesHealthcareManufacturing and IndustrialMediaTechnologyWhat is TM Forum Frameworx and how to...
UncategorizedAutomotiveCommunicationsConsumer and RetailFinancial ServicesHealthcareManufacturing and IndustrialMediaTechnologyImpact Mapping en Metodologías ágiles
AutomotiveCommunicationsConsumer and RetailFinancial ServicesHealthcareManufacturing and IndustrialMediaTechnologyTrabajemos juntos
Contenido Relacionado
5 consejos para una planificación eficaz del sprint
La sprint planning es una de las ceremonias de Scrum en donde se define el objetivo de las siguientes semanas de trabajo. Debido a su importancia y complejidad, suele demorarse más que las otras ceremonias y puede ser difícil para el equipo sobrellevarla.
Conocer más
Pishing: 7 formas de prevenir los ataques
El phishing es la forma más frecuente de ciberdelincuencia, una realidad inquietante subrayada por asombrosas estadísticas. Se calcula que cada día 3.400 millones de correos electrónicos maliciosos inundan las bandejas de entrada de todo el mundo.
Conocer más
¿Es ChatGPT el fin de los desarrolladores?
ChatGPT, junto con otras herramientas de IA, ha cambiado la forma en que los desarrolladores interactúan con el código y agiliza el proceso de desarrollo de software. Estas herramientas están diseñadas para comprender y generar código, proporcionando asistencia valiosa a los programadores.
Conocer más
¿Cómo utilizar éticamente la IA? Los nuevos desafíos corporativos
El futuro se escribe con inteligencia artificial, pero la tecnología en constante desarrollo genera tanto beneficios como preocupaciones. Es por esto que las compañías deben buscar soluciones que controlen su utilización para brindar servicios más óptimos y éticos.
Conocer más
¿Puede la tecnología ponerle fin a las estafas y la inseguridad financiera?
La digitalización financiera es un proceso que está transformando la forma de interacción con el sistema financiero. Sin embargo, existe una percepción errónea de que la digitalización financiera aumenta los riesgos de seguridad.
Conocer más
Share this page:
-
-
-
-
URL copied!