확장이란 성능이나 가용성을 개선하기 위해 백엔드에 사용 가능한 리소스 용량을 늘리거나 줄이는 것을 의미합니다. 확장은 백엔드의 아키텍처, 설계, 구현에 내재되어 있지만 몇 가지 중요한 측면을 고려해야 합니다.
여기서 성능은 웹 애플리케이션이 요청에 응답할 수 있는 속도를 의미하며 여기에는 지연 시간, 속도, 처리량, 리소스 사용률이 포함됩니다.
수직 확장
수직 확장은 서버의 리소스를 늘리는 것을 의미합니다. 즉, 중앙 애플리케이션 서버를 서버 기반 아키텍처를 위한 보다 강력한 머신으로 교체해야 할 수 있습니다. 서버리스, 마이크로서비스 또는 클라우드 기반 아키텍처의 경우에는 사용 가능한 메모리를 늘리거나 더 높은 등급의 가상 머신을 선택하는 등 할당된 리소스 업그레이드를 의미할 수 있습니다.
수평 확장
수평 확장이란 더 많은 서버와 병렬 리소스를 추가하는 것을 의미합니다. 이러한 유형의 확장을 처리하려면 기본 아키텍처와 애플리케이션을 최적화해야 합니다. 예를 들어 서버 기반 아키텍처에서 요청을 배포하려면 추가 부하 분산이 필요할 수 있습니다. Cloud Functions와 같은 클라우드 환경의 서버리스 아키텍처에서는 추가 구성 없이도 이러한 유형의 확장이 투명하게 처리될 수 있습니다.
리전 확장 및 배포
리전 확장이란 여러 지리적 리전에 서비스를 분산하는 것을 의미합니다. 서비스를 배포하거나 사용자에게 더 가까운 위치로 서비스를 이동하면 지연 시간을 줄이고 애플리케이션의 전반적인 성능을 개선할 수 있습니다.
특히 클라우드 기반 서버리스 아키텍처와 같이 이를 투명하게 처리하는 클라우드 제공업체를 사용하지 않는 경우 아키텍처의 일부로 리전 배포와 다양성을 고려하세요. 특히 데이터 일관성과 관련하여 리전 분포가 애플리케이션의 데이터 스토리지에 미치는 영향을 고려하세요.
글로벌 규모로 데이터를 처리하고 저장할 때는 시스템에 적용되는 규제 요구사항이나 법률, 특히 데이터 처리 및 데이터 저장을 숙지해야 합니다.