Transaction
is any interesting unit of work that takes time to complete and may fail.
Basically, all data access across the boundary needs to be logged as a Transaction
since it may fail and time consuming. For example, URL request, disk IO, JDBC query, search query, HTTP request, 3rd party API call etc.
Sometime if A needs call B which is owned by another team, although A and B are deployed together without any physical boundary. To make the ownership clear, there could be some Transaction
logged when A calls B.
Most of Transaction
should be logged in the infrastructure level or framework level, which is transparent to the application.
All CAT message will be constructed as a message tree and send to back-end for further analysis, and for monitoring. Only Transaction
can be a tree node, all other message will be the tree leaf. The transaction without other messages nested is an atomic transaction.
@author Frankie Wu