개요
현재 서비스는 한국과 미국을 포함해 여러 국가 사용자들이 이용하고 있다고 가정하였다. 글로벌 사용자들에게 빠르고 안정적인 서비스를 제공하기 위해, 멀티리전 아키텍처를 고려하였으며, 사용자들이 가까운 리전에서 데이터를 빠르게 접근할 수 있도록 하여 성능을 최적화하고 사용자 경험을 향상시키는 데 목표를 두고 있다. 이를 위해 AWS의 글로벌 서비스와 리전별 데이터 저장 전략을 활용하는 방안을 검토하였다.
데이터베이스 구성
- 회원정보 DB (AWS RDS)
- 기능: 로그인, 회원가입, 회원 프로필 업데이트 등 회원 관련 정보 저장 및 관리
- 특성: 읽기 및 쓰기 작업이 빈번하며, 데이터의 일관성이 매우 중요함
- 식당정보 DB (AWS DynamoDB, AWS OpenSearch)
- 기능: 식당 상세 정보, 메뉴 등 주로 읽기 작업을 위한 데이터 저장
- 특성: 주로 읽기 작업이 많으며, 업데이트 빈도는 상대적으로 낮음
- 예약정보 DB (AWS RDS)
- 기능: 사용자별 예약 정보, 식당별 예약 가능 시간, 예약 대기자 정보 저장 및 관리
- 특성: 쓰기 작업이 많고, 실시간 처리가 중요함
가장 핵심적인 고려사항은?
리전 간 데이터 전송 비용과 리소스 사용 비용을 최소화(비용 최적화) 하는 동시에 지연시간을 최소화하여 사용자 경험을 향상(성능 최적화)시켜야 한다.
- 비용 최적화: 리전 간 데이터 전송 비용과 리소스 사용 비용 최소화
- 성능 최적화: 지연 시간을 최소화하여 사용자 경험 향상
- 데이터 일관성: 각 데이터 유형에 맞는 일관성 수준 유지
- 확장성 및 가용성: 서비스의 확장성과 고가용성 보장
고려한 아키텍처 옵션
1. 리전간 복제 설정 (옵션 1)
- 회원정보 DB(RDS) 및 식당정보 DB(DynamoDB)는 리전 간 복제 설정
- 예약정보 DB(RDS)는 각 리전에 독립적으로 구축, 다른 국가의 식당을 예약할 때만 해당 리전으로 요청하여 예약 처리
장점
- 데이터 일관성 유지: 회원정보와 식당정보는 모든 리전에서 동일하게 유지
- 성능 최적화: 예약정보는 로컬 리전에서 처리하여 빠른 응답 제공
- 비용 효율성: 예약정보 DB는 각 리전에 따로 구축하여 복제 비용 절감
단점
- 데이터 주권 규제: 국가별로 개인정보보호법 및 데이터 주권 규제
- 복제 비용 증가: 리전 수가 많아질수록 회원정보와 식당정보의 복제 비용이 증가
- 관리 복잡성: 리전 간 복제 설정 및 모니터링이 필요
2. 각 리전에 모든 서비스와 DB를 독립적으로 구축 (옵션 2)
- 모든 리전에 회원정보 DB, 식당정보 DB, 예약정보 DB를 독립적으로 구축
- 한 리전에서 다른 리전으로 애플리케이션 인터페이스를 통해 요청 처리
장점
- 독립성: 각 리전이 독립적으로 운영되므로 한 리전의 장애가 다른 리전에 영향을 미치지 않음
- 성능 최적화: 모든 데이터가 로컬 리전에 있어 빠른 접근 가능
단점
- 데이터 일관성 문제: 회원정보와 식당정보의 데이터 동기화가 어려워질 수 있음
- 관리 복잡성: 각 리전의 서비스 및 DB를 별도로 관리해야 함
최종 아키텍처 구성
식당이라는 도메인의 특성상 사용자들은 본인과 가까운 위치에 있거나 도보 및 차로 쉽게 접근할 수 있는 식당을 선호한다. 이에 따라 한국 사용자는 주로 한국 내의 식당을, 미국 사용자는 미국 내의 식당을 더 많이 이용하게 된다. 또한, 여행이나 다른 지역으로 이동할 필요가 있는 경우에만 다른 나라의 식당을 예약해야 한다. 이러한 사용자 행동 패턴을 고려할 때, 데이터베이스를 리전 간에 복제하지 않고 각 리전에 해당 국가의 식당 정보를 별도로 저장하는 것이 더 효율적이라고 판단하였다.
- 사용자 특성
- 대부분의 사용자가 자신과 가까운 지역의 식당을 예약하므로, 해당 리전에서만 식당 정보를 관리하면 데이터 접근 속도가 빨라짐에 따라 사용자 경험이 향상된다.
- 다른 나라의 식당을 예약하는 경우는 상대적으로 드물기 때문에, 모든 리전에 모든 식당 정보를 복제할 필요가 없다. 대신, 필요한 경우에만 특정 리전의 데이터를 조회하는 방식으로 효율성을 높이고자 한다.
- 리전간 복제 설정
- 리전 간 데이터베이스 복제는 데이터 전송 비용과 추가적인 인프라 비용을 초래한다. 각 리전에 독립적으로 식당 정보를 저장함으로써 이러한 복제 비용을 절감할 수 있다.
- 리전 수가 증가할수록 복제 비용도 비례하여 증가하기 때문에, 필요하지 않은 복제를 피함으로써 전체적인 운영 비용을 낮출 수 있다.
- 데이터 프라이버시 및 컴플라이언스 준수
- 각 국가별로 개인정보보호법 및 데이터 주권 규제가 다르기 때문에, 각 리전에 해당 국가의 데이터를 현지에 저장하고 관리하는 것이 법적 요구사항을 충족시키는 데 유리하다.
- 한 국가의 데이터가 특정 리전에만 저장되면, 데이터 전송 및 복제와 관련된 규제 문제를 최소화할 수 있다.
- 관리 및 유지보수의 단순화:
- 각 리전에 독립적으로 식당 정보를 관리하면, 데이터 동기화 및 복제와 관련된 관리 복잡성을 줄일 수 있다.
- 특정 리전에서 발생한 문제는 해당 리전에 국한되므로, 전체 시스템의 안정성을 높일 수 있다.
이러한 사항을 고려하여, 한국 리전에는 한국 식당 정보를, 미국 리전에는 미국 식당 정보를 별도로 저장하는 아키텍처를 고려하였다. 이러한 방식을 통해 비용 효율성을 높이고, 각 리전의 데이터를 현지에서 관리함으로써 데이터 프라이버시와 컴플라이언스 요구사항을 충족할 수 있다. 사용자가 다른 나라의 식당 예약을 요청하는 경우에는 해당 리전에 직접 요청할 수 있는 API를 제공함으로써 글로벌 사용자 경험을 개선할 수 있다.
