Having architecture around these principles makes it possible to scale your application up. However, we will still need to rely on other principles and techniques to scale it.
There are several principles and techniques for scalability, which are as follows:
- • Vertical and horizontal scaling (up and out)
- • Caching
- • Proxy
- • Load balancer
- • Throttling
- • Database cluster
- • Cloud computing/containers
- • Auto Scaling
- • Reactive drivers
Vertical and horizontal scaling (up and out)
You can add more resources, have better hardware, or you can add more boxes. These are the two basic ways to scale. You can always improve and tune your app to use fewer resources and get more from a single box. Recently, there were several improvements in this area around reactive programming that uses fewer resources and delivers more throughput. However, there are always limits to which a single box can provide in sense of scaling up, which is why we always need to be able to scale out.