I’m about ready to commit the first iteration of the Solr benchmark module.

It is meant to target both micro and macro benchmarks, though it is
additive to, not a replacement for, Gatling and a full performance cluster.

The inner workings of Solr and SolrCloud have always been something of a
mystery to me. Benchmarking has been as well. Not that I ever spent any
time thinking clearly about that.

If I had, I wouldn’t have had an alternative plan to rectify it. And it
didn’t matter. It didn’t affect me getting work. It didn’t affect my bonus
from the boss.

Over the past few years I did start to learn something about these
mysteries though. Not with a genius plan of attack. Not with a strategy I
can write down on the wiki and successfully share with you. I did it by
attacking everything in sight. And then improving my sight.

If some genius computer God once said “don’t do this”, I did and found out
why not. If something looked huge effort for unlikely reasonable return, I
did it. And maybe scrapped it. If something took literally 16 hours just to
manually process the code changes with 0 thought the whole time and
repetitive pain and loud expletives accompanying the final hours, I did it.
And sometimes maybe scrapped it later.  If there was a rabbit hole, I went
down it.

I used the tests to chase features and code and surface area I’d never have
touched or even known existed. I spent hundreds of hours or more building
tools and hundreds more coopting existing tools to expand my grasp and
view. I went after other code bases with a similar attack and less depth to
raise my vantage point.

And I could go on, except that illustrates my point and there is little
value in doing so.

So I learned a couple things on that journey. And I found an answer or two.
Formed an opinion or three. And I’ve had to think. Think about how I can
turn that into some value for Apache Solr. I chose to do that work, but I
was also paid during that time. Paid for work that is supposed to end up
returning value. The basic employer / employee contract.

I will never march down that path again. The destination was never really
the point. No sane developer would or could join the full trip.

I have to use that journey to plot a new one.

Thought one: there was huge value in playing around with the system. Trying
a wide range of things simply. Getting valuable and low effort feedback and
introspection easily.

Thought two: I did not play around or explore much before, or see it done,
because it was high effort to explore even a small surface area. Even more
effort to properly vet or ensure getting quality results or information
from it.

Thought three: Continuing on thought two, setting up good experiments is
very difficult. Collecting results and evaluating the quality of those
results is very difficult. More difficult than many developers who would
immediately agree with those statements even know. In the way that Elon
Musk knew fully self driving cars would be difficult. But he didn’t know it
would be “that” difficult. Of course a smaller percentage of developers do
know the extent of it.

Thought four: When the above was even attempted, it was generally by
developers working in isolation. And climbing on their own scaffolding that
was not peer reviewed and either tossed out, abandoned, reconstructed, or
maybe eventually reused by one.

Thought five: Building something that allows for exploration and
experimentation essentially always reduces to some kind of benchmark type
framework. And benchmarks are notoriously and ridiculously difficult. See
above. Any project that wants to truly benefit from them needs to work on
them together. And retain them. And improve them. And retain and improve
the knowledge behind them.

And so we come to the Solr benchmark module. I’ve poured some of my
knowledge and experience into standing up an initial framework. I will
document it. I will share a video explaining some of the what and why and
how. And I will make it so easy to join in on that the only reason a
developer will not join the effort is because they have no interest in
understanding or improving the system and their changes.

So I will make a commit next week. And then I will continue to move it
forward. I encourage you to take a look and evaluate what return for what
effort you might get from joining in.

MRM


-- 
- Mark

http://about.me/markrmiller

Reply via email to