In the last five to six years, I had
a chance to work in a few applications which are
into CRM and financial closure domains.
While working as a QA Lead and the Scrum Master, I was able to work as
the performance tester as well. Fortunately, in these applications, our
customers are willing to spend some time
on performance engineering and monitoring through different Application
Performance Management Systems which targeting application performance and infrastructure
monitoring. Other than the APM systems, I was able to setup CI environments and
dashboards.
From this article, I would like
to share my experience with the
application performance monitoring and how it is connected with Performance
Engineering. First of all, I will start with the main performance approaches and
talk about how we can connect tools, etc. Then all can clearly understand what I am going
to be discussed.
Three Performance Engineering Approaches:
In Performance Engineering, we have
3 approaches which we can present the entire
life cycle. Those are Reactive, Proactive and Pridictive.
First: Reactive approach
When we are dealing with software
applications, there a lot of sudden performance concerns due to various issues
such as the requirements are not identified properly (SLA), customer database related
issues, problems in the user groups or user personas and issues when the user
load getting increased unexpectedly. This approach is needed, but not encourage
to categorize as the best way of ensuring the product performance. Hence we are
looking for the second approach.
Second: Proactive approach
In this, we are targeting a sustainable way of ensuring the product performance.
Nowadays, when we are going to start a software product implementation, we need
to think about the non-functional aspects more than ever. Specially performance engineering aspects as it
will trigger issues such as we may need to change the entire application
architecture at the last stages. Hence, starting the performance assessments in
the early stages of the life cycle is a must. In an agile environment, we can
say it should be started from Sprint 0. Not only that, it should go throughout
all the sprints.
Furthermore, we need to focus
more on continuous performance assessments and monitoring (Unit and functional level)
rather than doing manual assessments by developers or testers. By using
continues approach, we can eliminate the poor cost of quality and its remedies
more effectively and efficiently. Using a monitoring dashboard, we can see the
release or commit wise performance figures to detect issues ASAP. And
it will increase the visibility for the customers who bother about the
application performance and improvements. Say for an example, if we can
establish a CI environment which triggers in the nightly build, we can find the
performance issues easily by spotting the trend graphs rather than waiting till
hardening sprint or system tests at the end of the release. As depicted in the
following images, we can display figures on the dashboard:
Following is the figure I took
from the daily performance monitoring dashboard which configured in Jenkins
with JMeter plugin. Every morning, it will be triggered and pass all the data
to the dashboard plugin.
Some of the useful links to configure the dashboard as follows:
Third: Predictive approach
Now I am going to talk about the
approach that most of the project teams, customers and stakeholders
are neglected. However, if you noticed the topic of the third approach, it will
give you the whole idea behind this. When our application is in the production,
it’s not enough to deal with the development and continues CI environments.
Hence, we must work on the production figures and trends to analyze the current
user behaviors to identify the usage
patterns. In other words, we should be able to predict or forecast the future
loads and the impact (Ex: To indentify seasons or dates such as Black Friday, etc).
As I told you in the first
paragraph, there are a lot of APM (Application Performance Management) systems
in the market to get these valuable data and deliver great digital customer
experience. Therefore real user relations and critical transactions can be
monitored and analyzed down to code level. So we can categorize those as
standalone applications and systems that coming with the cloud platforms.
Following are some standalone APM systems that we can use on the market
(Only a few).
I had a chance to work with New Relic tool and it has most of the features
which intended to have in such application. Very good visualization and data analysis, including find the most cumbersome SQL queries, etc. Following is a sample dashboard
which used New Relic insights:
If we are using cloud platforms, then we can use Application Insights
with Azure and CloudWatch with AWS.
Both Azure and AWS have a built
in solutions for keeping data and tracking of metrics with the online alerting system. These tools are there
to see the big picture of what is going on with your platform as a service
environment, like standing on the Mount Everest and watching everything below. If
we talk about Azure application insights, we can make its own Dashboard or show the data through the PowerBI.
The first thing you see after you log in to the Azure portal is the dashboard. Here you can bring together the charts (Server responce Time, page view Load Time, Errors, etc) that are most important to you and to your stakeholders.
*Following are the areas of the dashboard:
- Navigate to specific resources such as your app in Application Insights: Use the left bar.
- Return to the current dashboard, or switch to other recent views: Use the drop-down menu at top left.
- Switch dashboards: Use the drop-down menu on the dashboard title
- Create, edit, and share dashboards in the dashboard toolbar.
- Edit the dashboard: Hover over a tile and then use its top bar to move, customize, or remove it.
If the Azure dashboard is not good enough for you, as I told you earlier, we can use PowerBI tool easily.
Power BI is a suite of business analytics tools to analyze and share data. Its dashboards provide a wideangle view for business users with their most important metrics in one place.
Some of the useful links to configure PBI:
Not only the PowerBI standard reports (adapter),
but also we can get the data via Export Analytics queries and Azure Stream
Analytics. In this way, we can write any query you want to use and export it to
Power BI. In our current project, we are basically working with Azure Stream Analytics as it has good control of data.
Hope you understood the difference between these approaches and what are the places which we can use
monitoring systems and dashboards to upgrade the customer visibility, application performance and
product quality.
No comments:
Post a Comment