Transactions and SOA
There are 2 types of TXs (and they are not atomic and longrunning)
1- Within my borders
2- Across borders
1- Within my borders means that simply I have control overall the resources and parties that take place in this TX. It is within myborders so I should be able to control it, but again THIS IS NOT ATOMIC TX.
In this type I can use either atomic TX or long running. Both of them pass the autonomy test of SOA . everysystem tries to control its own resources. I don’t accept someone fromoutside to control my own resources or lock them. So all systems within myborders are controlled by me. The main point here is to define the border.
2- Across borders means that I have to fire a call to aremote system outside my border, eg online purchase where many systems areinvolved.
a. Can atomic TX works here ? normally no because most probable we will get time out .but is this the only reason , NO. let’s take a look on a simple example:system1 initiates a TX and is calling system2 to include its resources in theTX. Will system2 accepts that system1 puts locks on its internal resources .this violates the Autonomy tenet of SOA. Even if I trust you , I cannot giveyou locks over my resources, which you might hold forever. And even if I do trust you , the whole TX might timeout because of cross bordering. the whole question here is not about trust, because even if i trust, you can hold my resources forever.
Any Solutions ?
1- Reservation Pattern: you go to airlines andtry to book a seat in a flight. Do they lock the seat for you if you didn’tpay for the ticket ? NO , they just give you a reservation number and a date .if you come later than this date then your reservation is cancelled. You don’tcontrol their resources or have locks on them.
2- OkOk . I will pay for the ticket then. Would you please lock the seat for me(locka resource on your system for me) ? JJ JJ JJ JJ JJ JJ JJ JJ JJ
They reply: sure J J
Then you go late on yourtravel day (1hr before the flight) and you find the flight over booked and theytell you SORRY,FLIGHT IS OVERBOOKED. WHAT ? WHERE IS MY LOCK THEN ?
Or you buy somethingonline and after sometimes , they tell you SORRY . we don’t have stocknow. As soon as we get it , we will ship it for you.
In all cases what they aredoing is lying in the first place , then TRY to compensate you .
Lying/Compensating Pattern: you have to lie in thiscase by deceiving the calling system that asks for locks and says “ok itis locked for you” then later on if anything goes wrong , you compensate.Do you want your money back? Sorry for the flight , we will upgrade you tobusiness class next flight for free (Compensation).
3- Irresponsible/CompensatingPattern: warn the customer from beginning about losing aflight so please come 3 hrs early we are not responsible if you come late(stillnot 100% guarantee coz flight might be overbooked), etc.. but still thesystem has to compensate by some way or another.
Summary:
1- Know your borders. So you can identify which type of TXare you using.
2- If it is type1 “Within Border”, try to useAtomic TX as you can , if you will not get time out
3- If type2 , then think proactively and carefully aboutcompensation.