Compromises in architecture
I often hear a compromise is very important in architecture, specially from companies with big bureaucracy.
The one can have an idea it's part of architect's work to find a compromise. Not really.
A compromise is when arguing parties find the least common multiple. Both parties are not happy with it but both agree with it.
It's always the least efficient decision.
What's the alternative?
Win-win for both parties.
Imagine we need to integrate several services asynchronously. High throughput is not very important.
Message payload is about 3 MBs. Message handling depends on message payload.
An architect decides to use IBM Websphere MQ for integration. But Security says "We have to use Apache Kafka".
How does compromise look like?
- We split a single message into multiple to comply with Kafka maximum payload size of 1 MB.
- We implement handmade filtering per message payload on Kafka consumer
Solution becomes more complicated, maintenance cost increases.
How does win-win look like?
- We ask Security why Kafka and they explain that message broker should be open sourced and popular tool with known security issues fixed regularly. They didn't know anything about alternatives to Kafka.
- An architect thinks of alternatives and finds out that RabbitMQ is completely fine for his needs and it's suitable to Security requirements.
RabbitMQ lets us decrease operational costs since we don't need to pay IBM license fee.
- He shares his findings with Security.
Security is happy - they have a new tool that can be recommended.
We are happy - we can use the most efficient solution.


