Is it possible to scale an application to INFINITY?

If you’re designing software systems, then read on otherwise just drop off since this might feel abstract for you.


In today’s world, there are only 2 kinds of businesses: tech businesses or tech-enabled businesses, any other business that doesn’t fall under these categories would eventually die off, that’s a fundamental fact!


What does HIGH availability & INFINITE scaling mean in the first place? 

In a non-sensical way, it is to serve everyone on the internet, considering your service is consumed by every single user/device that’s connected to the internet, which in itself is a myth as it never happens with any given service that it gets used by all the devices on this planet, so the capping already happens at multiple layers like country policy, govt policy blocking certain services & so on, but let's just pretend that your services get consumed by all the devices that are connected to the internet, in that case, is it possible to serve your services/APIs to all those devices?


APIs are the central nervous system of the internet, so, the real question should ideally be this: are APIs INFINITELY scalable?


The fundamental fact is that for any given tech-based business, all it matters is, at the end of the day, your APIs have to be HIGHLY available & scalable, that’s all there is to it and that’s the goal that any business tries to achieve. 

Now, another form of the same question is: Is it possible to design a system with APIs that are highly available and scalable? 


For all those forms of questions, the short answer is “YES”, but it all boils down to or really depends on what you are trying to achieve.


If you’re having a legacy app, then most probably you should’ve seen the evolution of architecture from Monolithic to multi-tier and though there are many standard principles of designing a system, there’s no one right approach/solution that fits all the problems, every solution is tailor-made for the problem that you’re trying to solve.


For those who’re stuck on the question: ’whether/if it’s good to go with the micro-service-based architecture for my system?’

To them, I’d like to say this: try to come out of the peer pressure you’re having from your industry peers. 

Just because some X company implemented it, it doesn’t really mean that you should also go with the same approach. If you’re able to achieve the availability & scalability that your business actually needs or anticipates with whatever architecture of the system you’ve laid out, just go with that and don’t let others define what works for you based on the holistic view they might have about the business, but just believe that you already know how to make your system scalable to serve your customer base and there’s no holy grail system that does it out-of-the-box but you have to come up with solutions to optimize your system to make it adaptable to whatever un/limited number of users your business is bound to serve.


I wanted to put this note out there since it felt like the right thing to do, ATPIT!

Comments

Popular posts from this blog

Free Hand Drawing on Google's Map View

Android from iOS Guy's Perspective

Free Hand Drawing on Maps with MapBox SDK