🔗 XML is the future - Bite code!

I wanted to write something about fads in the software development industry when the post about Amazon Prime Video moving away from micro-services back to monoliths was making the rounds. A lot of the motivation towards micro-services can be traced back to Amazon’s preaching about them being the best way to architect scalable software. Having a team from Amazon saying “micro-services didn’t work; we went back to a monolith and it was more scalable and cheaper to run” is, frankly, a bit like the Pope renouncing his Catholic faith.

I didn’t say anything at the time as doing so seemed like jumping on the fad wagon along with everyone else, but I have to agree with this article that this following along with the crowd is quite pervasive in the circuits I travel in. I did witness the tail end of the XML fad when I first started working. My first job had all the good stuff: XML for data and configuration; XSLT to render HTML and to ingest HL7, a non-XML format used in the medical industry, which we mapped to XML and passed through an XSLT to extract patient information (yes, we really did that!); XForms for customisable forms. We may have used XSD somewhere as well. Good thing we stopped short of SOAP.

The whole feeling that XML was the answer to any problem was quite pervasive, and with only a few evangelists, it was enough to drive the team in a particular direction. And I wish I could say that I was above it all, but that would be a lie. I drank the cool-aid like many others about the virtues of XML.

But here lies the seductive thing about these technology fads: they’re not without their merits. There were cases where XML was the answer, just like there are cases where micro-services are. The trap is assuming that just because it worked before, it would work again, 100% of the time in fact, even if the problem is different. After all, Amazon or whatever was using it, and they’re successful. And you do want to see this project succeed, right? Especially when we’re pouring all this money into it and your job is on the line, hmm?

Thus, teams are using micro-services, Kubernetes, 50 different middleware and sidecar containers, and pages and pages of configuration to build a service where the total amount of data can be loaded into an SQLite3 database1. And so it goes.

So we’ll see what would come of it all. I hope there is a move away from micro-services back to simpler forms of software designs; one where the architecture can fit entirely in one’s head. Of course, just as this article says, they’ll probably be an overcorrection, and a whole set of new problems arise when micro-services are ditched in favour of monoliths. I only hope that, should teams decide to do this, they do so with both eyes open and avoid the pitfalls these fads can lay for them.


  1. Ok, this is a bit of an exaggeration, but not by much. ↩︎