Microservices and Distributed Computing: A Popular Misdirection
Last updated
Last updated
When you go to a tech conference, you'll likely come across topics related to distributed systems. In fact if you were to type "distributed architecture" into YouTube, would find a plethora of conference video recordings with hundreds and thousands of views.
What about if you tried typing in "layered architecture"? First, there would be less people talking about it in live conferences. Second, you would see a significantly less number of views on those videos. Third, nobody would type that in since it's so old and boring.
But wait… why is this the case, even though layered/n-tier architecture is indeed the more common architecture. In fact, we can agree that layered architecture is most likely more "popular" than any other architectural pattern. Almost all projects use the layered architecture in their application structure. As mentioned before, the most popular frameworks like Rails, Spring, ASP.net MVC, Laravel are all MVC and layered-based.
The problem is that microservices has been the most talked about topic of the previous decade. It is the hot topic, the shiny new object, and the buzzword in the past 10 or so years.
You want to know why? Here's why.
Big tech companies like Amazon, Google, Netflix, Uber, Facebook, and Snapchat host large conferences are all talking about it. Amazon is talking about how they created their own cloud solution to scale their own internal systems to millions of transactions per day. Netflix is talking about how they scale their microservices architecture so that millions of people can stream video without delay also sounds really interesting. And who can forget Google, the granddaddy of them all. Google is talking about things such as MapReduce and Big Data and how they scale to billions of users with 0 downtime. All those mentioned are really exciting and enticing to the public.
It also is interesting that these companies, who talk about these topics, also expect their future employees to know about them as well. In fact, all of these FAANG companies and their interview processes' involve a "Systems Design" portion. What is this "Systems Design" part of the interview about? It's about concepts such as: load balancers, caching, data partitioning indexes, redundancy, and replication. Notice how all these concepts are all about distributed systems and how to scale a system up.
On the other hand, If you hear someone's talk about MVC or layered architecture at a conference, people are going to fall asleep, even though it is clear that layered architecture is what is important for structuring scalable and maintainable code. Distributed systems and microservices often get mixed up with RESTful services, which in turn misdirects people's attention to something that is utterly unrelated to actual code architecture.
Therefore as JavaScript developers, we must not focus on the hot topic of the week and the trendy new technologies (I know it's hard). We have to go back to the "old school" ways of doing things and read some of the more classic books from the object-oriented world and bring those ideas into our own community.