4 ways to scale.
A simple monolithic application can do very well for years.
But, if the business becomes successful, which means more customers and more load, you might need to change your system to support the next level of growth.
Here are the things that can help:
Vertical scaling
In a nutshell, this means getting a bigger machine.
Horizontal Duplication
Having multiple things capable of doing the same work.
Data Partitioning
Dividing work based on some attribute of the data, e.g., customer group.
Functional Decomposition
Separation of work based on the type: I’m talking about microservices.
Some forms of scaling—Vertical scaling and Horizontal duplication—can have a limited impact on your system's architecture.
If you need more, a redesign may involve:
• splitting apart an existing monolith
• choosing new data stores to handle the load better
• moving from synchronous request-response to event-based systems.
Here is some advice: do the easy stuff first.
Vertical scaling and horizontal duplication are quick and easy compared with the other two.
If you need to change our systems to deal with scale, it isn't a sign of failure.
It is a sign of Success.