Friday, October 28, 2016

DynaTrace - Application Performance Management Solution

Recently I used DynaTrace, it’s a leading application performance management tool and is being widely used.It comes with advanced features for monitoring Java and .NET applications, which aids to identify bottlenecks or errors in the application easily. Pure Path technology used in DynaTrace provides end-to-end transaction level details; from browser, across all tiers and database. It helps to uncover performance issues even at the code level and also details of transactions invoking external services. This tool detects abnormalities in response time, transaction rate, through put and system usage
Magic of Pure Path:
A Pure Path is the horizontal view of a transaction in a monitored application environment and is the basis for top down analysis, which is defined by analyzing how an application or transaction is impacted by the underlying infrastructure.
Typically, a Pure Path is composed of data sent asynchronously by many different Dynatrace Agents, which then send the data to the Dynatrace Collector. The Collector buffers and enriches the data and passes it on to the Dynatrace Server, which is responsible for Pure Path construction, analysis, and offline storage. Pure Paths provide the superset of data for creating specific Business Transactions and high-level Measures
Once your Collector is configured, Agent is in place and Dynatrace Client is installed, In Navigation pane there will be options for Diagone Performance & Diagnose Runtime, these two are used for Pure Path analysis and Memory leak analysis…












Pure Path:
Go to Diagnose Performance à Pure Path menu item when double click on Pure path dash-let it opens dashboard, with option of filtering on last 5 minutes, 30 minutes, 1 day etc. With filter option last five minutes up, you need to  visit your application page then Dynatarce agent is going to capture every single request made to worker process and display result in very neat and clean tabular format as shown below



I have removed page name & server details but you can see its very simple table displaying response time for page, suspension time, GC Size etc .. When right click on any request you get option to see detailed drill down of request.. Dynatarce client capture request from every single request to the very end of response










You only need to scroll up and down.  You can always right click on each element to have more contextual information like on which server it was running on.  In our case we added the IP address of the remote user and its username.  By default it’s showing you only the relevant nodes (method calls where most of the time was spent) but you can chose to see all of them.
Check out the YouTube Tutorial they have on “PurePath Deep Dive” if you want to learn more about it.
Here I tried to cover basic steps for pure path analysis, in next blog of this series I will capture steps to analyze memory leak for identification of classes and objects causing memory leaks.

Courtesy: Several online blogs & other resources https://www.dynatrace.com/community/blogs/

Tuesday, April 12, 2016

Backlog Prioritization

Let's start with Agile Manifesto, it says
  1. Individuals and interactions over processes and tools
  2. Working software over comprehensive documentation
  3. Customer collaboration over contract negotiation
  4. Responding to change over following a plan
Where there is value in the items on the right, we value the items on the left more.  Reason is simple Agile focuses on Kaizen (Continuous Improvement), which is a strategy where employees at all levels of a company work together proactively to achieve regular, incremental improvements in the product.
Backlog grooming or refinement is the process which focuses on   Continuous Improvement on the product being developed.
What is product backlog refinement?
Product backlog refinement is the process through which product backlog items are reviewed by the Scrum team and revised, providing more detail and ensuring that there is greater clarity in the requirements for that item.
What product backlog items should be refined?
Any product backlog item should be refined as and when additional information is known about it. However, priority should be given to refining the product backlog items that are likely to be taken into the next sprint. This will ensure that enough information is known about each item to allow for it to be sized, for the plan to be generated during sprint planning as to how the selected product backlog item can be delivered, and to allow for the team to commit to delivering that and other items in the next sprint.
When should product backlog refinement take place?
Product backlog refinement should be an ongoing process. However, some teams find it useful to have a planned mid-sprint session that allows for product backlog items that are candidates for the next sprint to be discussed.
There are several ways to prioritize the requirements in the backlog. Some of the most popular ones include
1.     MoSCoW
M - MUST have this.
S - SHOULD have this if at all possible.
C - COULD have this if it does not affect anything else.
W - WON'T have this time but would like in the future.
Each requirement will have the priority which would be tagged to MSCW. "M" being the highest and "W" being the lowest.
2.   Business Value Based
In this case, each requirement carries a business value it could potentially generate to the company. The business value would be decided either by the Product Owner or the Product owner team.
The requirement with highest business value is implemented during earlier releases.
3.   Technology Risk Based
In this method, requirements are prioritized based on the risk associated in implementing it. The risk is typically based on the technology.
The requirement with highest technology risk is implemented during the earlier iterations. 
4.   Kano Model 
In this method, the requirements are prioritized based on the customer preferences. Mr. Noriaki Kano developed Kano model as valuable technique helping to recognize that. Applying this method the product owner can identify importance of stories by asking questions like these:
Is the feature mandatory? We will not earn additional revenue once we have it but without it the product doesn't fulfill existence principles.
Having a feature, will customer say: "Hey, that's nice! I like this approach and it seems to be really helpful." This feature is excitement. It is possible differentiator.
Well, guys improved a performance of the application. This is valuable.  Comparing to other products, this product is one I would like to use.
Hmm, this feature is indifferent. It doesn't matter if this feature is or is not implemented. If vendor provides it, ok, I accept it. If it's not implemented, no problem then.
This feature is really questionable. I am not sure if I am going to pay for product with such feature. It'll probably slower me. Also, I assume it will complicate usability in my company. Let's think about different product.
Ohhh no! Not the feature like that. You are kidding. These features reverse me to really find a different product. Such perspective is great way to identify priorities in complex backlog.
  • Attractive
  • One-Dimensional
  • One-Dimensional
  • Must-Be
  • Indifferent
  • Reverse

5.    Walking Skeleton 
In this method, the requirements are selected such that minimal carefully selected end to end features are built within a short span of time.

6. Validated Learning 
In this method, features are chosen based on the highest market risk i.e. something that is not experimented yet. Release it to the market, get the feedback and apply the learning onto the new feature
In this blog I covered basic definitions of Backlog Prioritization techniques ,  I would suggest please refer several blogs and eBooks available out there on internet for more details.

Please let me know you inputs, Suggestions or questions on this.

Courtesy: several online resources i.e. Blogs, Tutorials etc.