Saturday, October 21, 2023

The "Bottleneck" in a Test Engineer's Eyes

 

Preference to Bottle Over Jar! Why?


Have you heard Jar Neck anytime when describing a problem or solution?

  • I have heard Bottleneck often and consistently; but, not Jar Neck .  Why? 
  • Be it in Software Engineering or day-to-day life problem solving description,
    • The Bottleneck is referenced and not a Jar Neck.

Looks like people want Bottle but not the Bottleneck speed and benefits.  Bottle without its neck is a jar?!



Bottleneck exist for better controllability
.

  • In a bottle, the bottleneck is a solution!  It is not a problem!
    • It is to mitigate any risk and problem that arises from the flow of content in the bottle.

Yet we describe, learn and communicate the neck of a bottle as a relativity and analogy to a problem.  


Are you aware of Gateway in the software system?

  • The Gateway can be seen as a neck of a bottle which controls the incoming requests and outgoing response.
  • Gateway is a necessity.
    • We need Gateway to be adaptable in size of its neck based on traffic volume it is handling.  Here, the gateway's neck size should adapt and scale contextually.
      • When describing a problem, we are talking about how this bottleneck size which is not adaptable for the context.
      • That adaptability has to be built in engineering to scale in any dimensions and magnitude.
        • When this is not done, we equate the software system's problem to a bottleneck as a analogy, which is incorrect!  The bottle has got its size and its neck size fixed for a purpose and as a solution.
          • The context of a bottle and today's any systems are different.
            • It is good to draw similarities from General Systems Thinking and observations.
            • But the solution cannot be generic to all systems; it has to be contextual.  The software system has to have its contextual solution.


So, next time when someone in your team or network talk about bottleneck, do share them bottleneck is for better controllability.  Having a contextually resizable and adaptable bottleneck is the need for Software Engineering; not the elimination of bottleneck.

In fact, a software system should have and will have a bottleneck in a point.  And, this bottleneck will be adaptable to the context for having what it should let through and process.

Is the runway of an airport a bottleneck when it is compared to a sky?  Is that a solution or a problem?  Likewise, the ship will have a defined route path and it does not sail without a route path.  Is this a bottleneck to ship and its business?  A elevator can accommodate the defined number of people or kilograms allowed, and not beyond that to move.  Is that a bottleneck?  The esophagus in human body has a size which medical science observes as normal and acceptable; any deviation from that size measurement, the medical science test investigates it as a risk and problem. Why?  Is the circumference size and length of esophagus a bottleneck to human anatomy and physiology system?

The engineering solution will and should have a bottleneck at a point.  Having a adaptable bottleneck to the context is one what tries to accomplish in a software system's scalability and operability.


Please, do not equate solving a "bottleneck" situation with Agile practice.  Does it look like a joke?  I will not be surprised if someone says bottleneck problem is solved if practiced Agile.


2 comments:

  1. The engineering team has to optimize how to operate and scale with that bottleneck. Air Traffic Controller and pilot communicates to land and take off in a synchronized order one after the other, so that, the runway does not look or become a bottleneck. This synchronous communication between these two ends makes it look like - it is going well for who watches it. But, the bottle is experienced by the pilot and ATC.

    Today, it is possible to create instances of a system. Which in turn will have replica of such bottleneck entry points, while the load balancer in distributed systems is communicating to balance the load between these bottlenecks. Yet, we see the bottlenecks and it is kept in a way, it can be managed - that is, engineering works to keep it in a manageable state.

    Bottlenecks cannot be eliminated; but it can only be managed well. It cannot be prevented, but it can be delayed! To identify and do this, the Test Engineer should be skilled to create and test, and correlate for further visualization. Without this skill, as a Test Engineer, I will be bottleneck to me for first. This is in gist to you, if I have to summarize.

    ReplyDelete
  2. The bottlenecks come in different forms. But, one tends to work or upscale the hardware infrastructure to solve the problems from bottleneck. This does not solve the root cause that is causing and leading to the bottleneck.

    Addressing the bottleneck is important. Like there is a Technical Debt, we have Testing Debt and also the Performance Debt.

    ReplyDelete

Please, do write your comment on the read information. Thank you.