Scaling refers to increasing (or decreasing) the capacity of resources available to the backend to improve its performance or availability. While scaling is inherent to the architecture, design, and implementation of your backend, several vital aspects must be considered.
Performance here refers to how quickly the web application can respond to a request; this includes latency, speed, throughput, and resource utilization.
Vertical scaling
Vertical scaling refers to increasing the resources on a server. This may mean replacing a central application server with a more powerful machine for a server-based architecture. For serverless, microservices, or cloud-based architectures, this may refer to upgrading the allocated resources, such as increasing the available memory or selecting a higher-tier virtual machine.
Horizontal scaling
Horizontal scaling refers to the addition of more servers and parallel resources. The underlying architecture and the application must be optimized to handle this type of scaling. For example, additional load balancing may be needed to distribute requests in a server-based architecture. For a serverless architecture in a cloud environment, such as Cloud Functions, this type of scaling may be handled transparently without any additional configuration.
Regional scaling and distribution
Regional scaling refers to distributing services across multiple geographic regions. Distributing your services, or moving your services closer to users, can reduce latency and improve the overall performance of your application.
Consider regional distribution and diversity as part of your architecture, especially if you are not using a cloud provider that handles this transparently, such as in a cloud-based serverless architecture. Consider how data storage in your application may be impacted by regional distribution, especially around data consistency.
When processing and storing data at a global scale, be aware of any regulatory requirements or legislation that applies to your system, especially around data processing and data storage.