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