1. 서버의 리전 선택 방법
글로벌 서비스 구축의 첫 단계는 서버를 어느 리전에 둘 것인지 결정하는 것입니다.
비용적인 측면을 고려할 때, 특히 자본이 부족한 스타트업의 경우 가능한 적은 서버로 다양한 리전을 커버하는 전략이 필요합니다.
이러한 부분을 고려하여 어떤 방법으로 서버의 위치를 결정하는 것이 효율적일지 알아보도록 하겠습니다.
1) AWS 리전별 Latency 비교
가장 적합한 리전을 선택하기 위해서 AWS에서 각 리전별로 Latency 가 어느 정도 나오는지를 확인합니다.
아래 사진과 같이 Source Region -> Destination Region 으로의 Latency가 값과 색상으로 표현되고 있습니다.
Latency : ● < 100ms 100ms < ● < 180ms ● > 180ms
해당 표에서 보여지는 것과 같이 Latency 가 100ms 이하인 것들이 모여있는 리전에 서버를 두게 되면 해당 리전 외에도 초록색 리전들도 커버할 수 있을 것입니다.
또한, 다른 리전에 서버를 더 배치한다고 하였을 때도 어느 리전에 추가 배치하는 것이 효율적일지 판단할 수 있는 기준이 됩니다.
2) 리전별 지원 AZ(Availability Zones) 확인
서버를 어느 리전에 두어야 할지 선택지가 좁혀졌다면, 다음으로는 각 리전별 AZ를 얼마나 제공하는지 확인해야합니다.
- 가용 영역(AZ)이란?
- AWS의 글로벌 인프라 내에서 물리적으로 분리된 여러 데이터 센터의 집합입니다.
- 각 AZ는 독립적인 전력, 냉각, 보안 시스템을 갖추고 있어, 하나의 AZ에 문제가 발생하더라도 다른 AZ는 영향을 받지 않습니다.
- AZ의 중요성
- 고가용성: 서비스를 여러 AZ에 분산 배치함으로써, 하나의 AZ에 장애가 발생해도 서비스 전체의 다운타임을 방지할 수 있습니다.
- 재해 복구: 자연재해나 전력 장애와 같은 불가피한 상황에도 데이터와 애플리케이션을 안전하게 보호할 수 있습니다.
- AZ 활용 전략
- 멀티-AZ 배포: 가장 일반적인 방법으로, 높은 가용성을 위해 애플리케이션과 데이터를 여러 AZ에 분산합니다.
- 리전 간의 밸런싱: 하나의 리전 내의 여러 AZ를 함께 사용하여 지역적 장애에 대비합니다.
위에서 설명한 것처럼 안정적인 서비스를 제공하기 위해서는 가용 영역이 적은 리전보다는 가용 영역을 많이 제공해 주는 리전을 선택해 주시는 게 좋습니다.
3) 비용 계산
마지막으로 역시 가장 중요한 비용을 계산해야 합니다.
같은 서버 용량을 사용한다고 하여도 리전별로 서버 비용이 다르기 때문에 서버 비용도 미리 계산을 하여 비교해 보시고 선택해야 합니다.
또한 자금 상황을 고려하여 서버의 용량, 개수, 이용 가능 서비스 등을 고려해야 합니다.
AWS 비용 계산기로 내가 사용할 AWS 서비스들의 비용을 미리 계산하여 서버 비용이 얼마나 나올지 예측해 보면서 서비스를 구축하시기 바랍니다.
2. 라우팅은 어떻게 할 것인가?
멀티리전을 사용하게 될 경우 라우팅도 어떻게 할 것인지 고려해야 합니다.
Route53에서 제공하는 여러 라우팅 종류가 있지만,
이번 글에서는 글로벌 서비스와 연관이 있는 라우팅 위주로 언급하겠습니다.
1) 지역 기반 라우팅
- 지역 특화 콘텐츠 제공: 사용자의 지리적 위치에 기반하여 지역화된 콘텐츠 또는 서비스를 제공합니다.
- 지역 규제 준수: 특정 지역의 법적 규제에 따라 콘텐츠를 제어할 수 있습니다.
적합한 사용 사례
- 언어 및 문화적 적합성: 다양한 언어와 문화적 콘텐츠를 각 지역에 맞게 제공해야 할 경우
- 지역별 규제 준수가 필요한 서비스: 예를 들어, 특정 국가에서만 서비스를 제공하거나 특정 콘텐츠를 제한해야 하는 경우
2) Latency 기반 라우팅
- 성능 최적화: 사용자와 가장 낮은 레이턴시를 제공하는 서버로 트래픽을 라우팅 합니다.
- 응답 시간 최소화: 전 세계 어디서나 사용자에게 빠른 서비스 응답을 제공합니다.
적합한 사용 사례
- 고성능 필요 서비스: 실시간 응답이 중요한 애플리케이션
- 일관된 사용자 경험 중시: 지역에 관계없이 사용자에게 빠른 로딩 시간과 일관된 경험 제공이 중요한 경우
지역기반 라우팅은 지역에 특화된 콘텐츠를 제공할 때, 지역별 규제등이 있을 경우에 적합한 라우팅 방법이고,
단순히 서버를 여러 리전에 두고 라우팅 하기에는 Latency 기반 라우팅이 적합합니다.
3. 리전별 API 응답 속도 테스트 방법
정작 궁금한 것은 우리 서비스의 API를 호출했을 때 어느 정도의 성능이 나오는지가 궁금할 것입니다.
우리가 만든 API를 테스트할 수 있는 몇 가지 방법을 공유해 드리도록 하겠습니다.
1) HTTP Connectivity Test
가장 간단한 방법으로 HTTP Connectivity Test 사이트에 API 주소를 넣어서 테스트해 보면 우리 서비스의 API가 다른 리전에서는 어느 정도 속도가 나오는지 테스트해 볼 수 있습니다.
아래 사진은 테스트로 도쿄리전에 서버를 두고 GET API를 호출한 사진입니다.
도쿄 주변과 그 외 리전과의 속도 차이를 확인하실 수 있을 것입니다.
아래 사진은 도쿄 서버를 내리고 버지니아 서버만 올려놓고 테스트한 사진입니다.
버지니아 주변의 속도는 향상된 반면 도쿄 주변은 속도가 매우 느려진 것을 확인할 수 있습니다.
마지막 사진은 Latency 기반 라우팅을 적용하여 버지니아 서버와 도쿄 서버를 연결하여 테스트한 사진입니다.
버지니아와 도쿄 리전 주변의 속도 향상을 확인할 수 있으며, Latency 기반 라우팅을 적용했기 때문에 서버 바로 주변이 아닌 가운데 부분에서도 속도가 향상된 것을 확인할 수 있습니다.
2) 그 외 테스트 방법들
그 외 테스트 방법들은 무료로 테스트해 볼 수 있는 방법들로 구성했습니다.
- 웹
- 무료 VPN을 사용하여 레이턴시 기반 라우팅이 정상적으로 작동하는지 테스트해 볼 수 있습니다.
- Grafana Cloud Synthetic Monitoring의 경우에는 초기설정이 필요하지만 더 자세한 테스트를 해볼 수 있습니다.
- 모바일
- Free VPN 어플을 사용해서 다른 나라에서 접속했을 때의 속도를 테스트해 볼 수 있습니다.
4. 결론
서버 리전 선택은 Latency, 가용성, 비용 등을 모두 고려해야 합니다.
AWS 리전별 Latency 비교를 통해 각 리전의 연결 속도를 파악하고, 이를 바탕으로 최적의 리전을 선택할 수 있습니다.
여기서 중요한 것은 단순히 가장 낮은 Latency를 제공하는 리전을 선택하는 것이 아니라, 서비스 대상 지역을 가장 효과적으로 커버할 수 있으면서도 비용 효율적인 리전을 찾는 것입니다.
이러한 고려사항을 바탕으로 각 서비스에 적합한 서버 리전을 선택하시길 바랍니다.