Wednesday, 14 August 2013

What is a Bottleneck problem in BPM(S)

As per wiki "A bottleneck is a phenomenon where the performance or capacity of an entire system is limited by a single or limited number of components or resources". It comes from the story of putting in marbles in a bottle with narrow neck. When you insert the marbles all of them go easily. Each marble is smaller than the width of the bottle neck and so ideally when the bottle is turned upside down the marbles should come out easily. However, this does not happen, you will see that a number of marbles will try to come out together and create  “JAM” in the neck.  When too many things try to go through a limited resource path, bottleneck happens.
In Business process Management you could run into a bottleneck situation in a number of scenarios. Given below are some cases, examples and what you could do to avoid them.

 People or Performer based bottlenecks

Perhaps the most common case. This happens when a limited number of people are trying to do too many tasks together. For example,
  • An account opening workflow for an investment banking firm where the Trade Support Group is getting more account opening requests than they could handle
  • A fingerprinting booth on a VISA center where each finger printing takes 5 minutes and the number of people asking for VISA is in thousands

How do you indentify a performer based bottleneck?

 For a quick calculation find out how long it takes to complete the task and then find out how many requests are coming each day. When multiplied if it comes more than 8 hours you do have a bottleneck. Now here I am assuming you do not have an SLA. If you do have that, then rather than 8 hours  take the SLA duration.
Another good way could be to use BPM based simulations. When you specify the workload for each workstep, simulation results can give you data on where the bottleneck exists

How do you get rid of this bottleneck?

Well you cannot get rid of it completely. At the most you can reduce the impact of it. You can
  • Adjust resources (or may be add) based on volume
  • Change your SLA
  • Have shifts with more people during peak periods
  • Automate processes which do not need human intervention (like IVR based verification)

System based bottlenecks

These happen when you are not using your resources correctly. Some examples are
  • Your SAP/ERP connection pool allows at most 20 connections at a time. You have more than 50 requests running simultaneously
  • Capacity of your fingerprinting machine is to take 60 scans in an hour

How do you indentify a system based bottleneck?

Technically, you will need to go through your logs. Check if you have processes waiting. If your users are complaining that the email comes to them about the task but it takes a couple of minutes for the link on the email to be active, you probably have a bottleneck there.  If you are getting connection pool full or Thread pool issues that is again an indication

How do you get rid of this bottleneck?

You will need to get in touch with your IT for this. Here are some options
  • Add more machines/devices if the load on a device is increasing
  •  Increase number of connection pools (without killing your third party system)
  • Do a code review and see if developers are doing efficient coding
  • Do Horizontal or Vertical scaling if your BPMS is causing the bottleneck.
There could be other types of bottlenecks depending on what your solution architecture is. In some cases there could be a dependency on an action being performed externally for the process to go ahead. In this case the bottleneck would be the external system.  Fine tuning it could be helpful.
BPM Simulations are a really good way to get idea of what bottlenecks you could run into. This helps you to plan earlier without making changes in your strategy.

No comments:

Post a Comment

Note: only a member of this blog may post a comment.