Dick Dowdell
2 min readSep 18, 2021

--

I'm sorry, but I disagree. We've benchmarked JSON against other messaging mechanisms and using efficient parsers and plain old GZIP compression — and it holds its own against most other messaging mechanisms. We use JSON because it is self-describing and eliminates the need for a whole distributed schema sub-system.

The only place network latency comes into play is from a Web client to the server. Network latency within a cloud cluster is negligible. We use a cluster bridge that batches and compresses traffic between clusters (first did that to solve Kafka performance problems).

Java method calls are slower than C function calls which are slower than assembly language BALR statements. Why isn't everyone just using assembly language? They aren't because the CPU isn't the bottleneck, persistent storage, even with SSDs is still the limiting performance bottleneck within a cluster.

The greatest challenge for commercial software development is not application performance. It's the speed with which good software can be developed and the speed with which its functionality can be iterated to keep up with competitive pressure.

The speed with which reliable, dynamically scalable software can be developed and iterated is dependent upon the component model we choose and the communications and organizational models we implement.

The primary reason we are pursuing the microservice architectural pattern is for its potential development, deployment, configuration, and operational benefits — not its performance. Properly designed, microservices cope with responsiveness and throughput issues through horizontal scaling. Processing power is cheaper and much easier to acquire than skilled technical talent. The greatest benefit microservices provide in raw throughput is from using reactive, reentrant, single-threaded, totally asynchronous actor model microservices. It works for Node.js and it’s definitely working for us.

As a cautionary tale: the first company I founded was almost wrecked by a senior C programmer who ignored my directions and wasted too much time bit-twiddling to get the last iota of performance. Performance that made absolutely no difference in our product's viability. I had to work 12-hour days and 6-day weeks for 2 months to make a critical deadline that he had almost caused us to miss. We would have lost our primary source of revenue and would probably not have recovered.

Here’s some more detail:

https://medium.com/nerd-for-tech/designing-microservices-4130bc41c046

--

--

Dick Dowdell
Dick Dowdell

Written by Dick Dowdell

A former US Army officer with a wonderful wife and family, I’m a software architect and engineer who has been building software systems for 50 years.

No responses yet