Hi Micke
Thanks for the detailed response.
I agree that we may want to model a hierarchy of business transactions, but each
transaction is likely to extend across multiple 'services' - just considering a
micro-service architecture for now. So it would be good to be able to obtain information
about those shared sub-business transactions in the context of the higher level
transactions.
Having said that, I believe we still need to be able to identify the individual component
parts of the architecture, whether services or resources, and from an operational
perspective be able to provide stats that are independent of the particular business
transaction instances - although those stats may need to be filtered to narrow in on
specific criteria, which may include focusing on a particular business transaction.
So having the ability to decompose the overall business transaction into a hierarchy of
sub transactions that are relevant to different parts of the organisation would be a great
idea.
Regards
Gary
----- Original Message -----
Hi,
Based on my previous experience, I'll make an example that I would've
considered important to me. This is coming from something that used to be
called "SaaS" or outsourced processing or pick any other neat word of the
time. The important part that I think you presented in the message is that
the users of BTM could provide different information to their customers and
to themselves.
So assuming the full service would have been: "we send invoice in, it gets
processed to the next company, archived and it's passthrough is monitored".
For internal use that means basically: "it's received by the front-end
server, transferred to the back-end server, processed in the invoicing
router, a copy is sent to the archiving process, one copy is sent to the
next party and the invoice router waits for acknowledgement message from
next party". These were very simple definitions of these two.
Thus, there are multiple transactions inside a transaction. For the customer
who pays, the transaction is a single one: "how long did it take until next
customer received it" and in some cases "how long did it take on the first
party to process it and ship it to the next destination" (different SLA on
both scenarios). And of course the most important "did all the messages get
processed and delivered"
For the internal monitoring usage, there are multiple cases. How long did it
take for each service to process something? How long did it take until the
invoice reached the next microservice (there could be asynchronous transfers
between services, lets not forget that not all communication is using
something like HTTP, there are many FTP batch jobs in the world still doing
the most important things in the world) ? Did the acknowledgement come from
the next party inside 24 hours?
I don't like the term "service" or "application" in this case a
lot, since
all of these are services, yet from different perspectives the size of the
service changes. However obviously we would need to call the application the
smallest part for example and service the larger part. However, there are
certainly micro-transactions inside the transactions which would need to be
linked to get all the relevant information (the acknowledgement processing
is sort of the same as the invoicing processing, including all the
front-end/back-end stuff as well, but it also plays a part in the larger
transaction).
So couldn't we just have tree of transaction-ids and not a definition of
"service/application" ? It would scale to any depth.
- Micke
----- Original Message -----
From: "Gary Brown" <gbrown(a)redhat.com>
To: "Discussions around Hawkular development"
<hawkular-dev(a)lists.jboss.org>
Sent: Wednesday, May 11, 2016 6:01:56 PM
Subject: [Hawkular-dev] Definition the concept of Application in Hawkular BTM
Hi
I would like to discuss how best to define the concept of an Application
within the BTM project, how it relates to the existing concept of a
"Business Transaction" and how it may link in with the concept of an
application in Hawkular/ManageIQ in general.
Firstly, for those not familiar with Hawkular BTM, without configuration the
project can capture and trace an invocation across multiple interconnected
services. The information can be used to provide stats on the individual
components used (endpoints, databases, ejbs, etc) as well as (in the next
version) present a graph showing the relationships between the communicating
services.
The project also enables "Business Transactions" to be configured - this
enables a particular invocation of an endpoint to be labelled with a
business transaction name (which is propagated to the fragments associated
with the invoked services), and also perform additional processing on the
messages, such as extract business properties, etc. Once a "Business
Transaction" has been defined, it is possible to view high level stats about
the complete "end to end" business transactions.
This is achieved by creating a configuration that identifies the initial
endpoint for the business transaction, using a regular expression, and then
a set of 'processors' that are used to perform various processing tasks
within the scope of that business transaction.
We now have a requirement to identify the concept of an Application, and be
able to present various stats about it. I believe that the Application can
be viewed as orthogonal to the Business Transaction concept - so an
Application represents the various operations that can be performed on a
particular architectural component, whereas the Business Transaction
represents a particular path through multiple Applications/Services, only
using a subset of the operations/endpoints supported by the Application.
However the requirements are very similar - when we detect some activity on a
particular endpoint we want to determine if it belongs to an Application, in
the same way as we currently do with Business Transactions. And similarly,
once classified as being associated with an Application, we may want to do
some application specific processing on the data.
Therefore what I am considering is making the existing Business Transaction
Configuration generic so that it is suitable for both tasks, with a simple
classifier to indicate whether it relates to a Business Transaction or
Application.
This will mean that the fragments of activity being recorded and sent to the
BTM server could now potentially have two names, one for the business
transaction (which is propagated across application/service boundaries) and
one for an application name (which is not propagated).
Where appropriate, the UI could then be updated to allow the user to also
filter information based on application - this may only make sense on the
APM page, but could be considered if useful elsewhere. We may also want to
make the current Business Transaction overview page more general to include
both Business Transactions and Applications, and then have a different type
of details page for applications.
The final point is how this may link into Hawkular/ManageIQ. Was thinking
that where possible, it would be good if a deployment event could be used to
trigger the configuration of the Application in Hawkular BTM - especially if
it is possible to obtain the web context for the application (or JMS
queue/topic), which can then be used to establish the regular expression. If
this level of integration was possible, then no user defined configuration
would be necessary to capture application information using the same name as
in Hawkular - allowing an integrated view of the information to be made
available.
Thoughts?
Regards
Gary
_______________________________________________
hawkular-dev mailing list
hawkular-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hawkular-dev
_______________________________________________
hawkular-dev mailing list
hawkular-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hawkular-dev