On Wed, May 11, 2016 at 5:01 PM, Gary Brown <gbrown(a)redhat.com> wrote:
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.
I quite agree here, except that I would map an application to *several*
achitectural components (for instance N microservices).
Now if you have 2 logical applications (say e-commerce and brand website),
a same architecture component may be shared (say user registration) in the
2 apps.
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.
So here if an activity on a user registration endpoint is recorded, would
it record for each segment with app it referred to ?
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?
In general from the very high level view (ManageIQ), I would want to be
able to define a logical notion of "application" for monitoring purposes,
I would expect to be able to add "entities" to that logical view. It may
just be a war file (and in the case of BTM, I would likely be interested by
all entry points to that application) or it could be an "OpenShift Project"
with all its dependencies (all docker containers + everything in it), or it
could be a selection of MW servers...
In the end, the user should be able to dig into infrastructure details (and
he already has that, he can see details about the infrastructure: a
container, a host, a MW server (coming soon), a MW deployment (coming
soon)...) + details on Business transactions but also have that synthetic
view where he knows that all services that makes his online store are
running fine, and have a few KPI such as the Apdex for all user-facing
interactions, the N slowest URLs or DB requests...
(This definitely goes beyond BTM, and we likely need to simplify and work
on iterations of those ideas (or better ideas))
That's what I dream of, as a user.
Thomas
Regards
Gary
_______________________________________________
hawkular-dev mailing list
hawkular-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hawkular-dev