- 상태 의존적인 아키텍쳐
- 위 그림에서 사용자 A가 서버 2에 요청하게되면 인증이 실패하게된다.
- 이를 해결하기 위해서는 로드밸런서에서 고정 세션이라는 기능을 사용해야하는데 이는 로드밸런서에 부담을 준다.
- 장애 처리도 힘들고, 서버 확장도 어렵게된다.
- 무상태 아키텍쳐
- 위 그림에서서 사용자로부터의 요청은 어떤 웹 서버로도 전달 될 수 있다.
- 웹 서버는 상태 정보가 필요할 경우 공유 저장소로부터 데이터를 가져온다.
- 이런 구조는 단순하고, 안정적이며, 규모 확장이 쉽다.
가장 가까운 데이터 센터로 안내되는 지리적 라우팅(geoDNS-routing 또는 geo-routing)
※ x%의 사용자는 US-East로 (100-x)%는 US-West로 안내된다고 가정
- 위와같은 아키텍처를 만들려면 해결해야할 사항
- 트래픽 우회 : GeoDNS는 사용자에게서 가장 가까운 데이터센터로 트래픽을 보낼 수 있도록 해준다.
- 데이터 동기화(synchronization) : 데이터 센터마다 별도의 데이터베이스를 사용하고 있는 상황이라면, 장애가 자동으로 복구되어(failover) 트래픽이 다른 데이터베이스로 우회된다 해도, 해당 데이터센터에는 찾는 데이터가 없을 수 있다.
→ 보편적 전략은 데이터를 여러 데이터센터에 걸쳐 다중화 하는 것이다. - 테스트와 배포(deployment) : 여러 데이터 센터를 사용하도록 시스템이 구성된 상황이라면 웹 사이트 또는 애플리케이션을 여러 위치에서 테스트해보는 것이 중요하다.
자동화된 배포 도구는 모든 데이터 센터에 동일한 서비스가 설치되도록 하는 데 중요한 역할을 한다.
메시지의 무손실(durability, 즉 메시지 큐에 일단 보관된 메시지는 소비자가 꺼낼 때까지 안전히 보관된다는 특성)을 보장하는, 비동기 통신(asynchronous communication)을 지원하는 컴포넌트다.
- 생산자 또는 발행자(producer/publisher)라고 불리는 입력 서비스가 메시지를 생성
- 메시지 큐에 발행(publish)한다.
- 큐에는 보통 소비자 혹은 구독자(consumer/subscriber)라 불리는 서비스 혹은 서버가 연걸되어있음
- 메시지를 받아 그에 맞는 동작을 수행하는 역할을 한다.
- 로그 : 로그 모니터링, 로그를 단일 서비스로 모아주는 도구를 활용하면 편리하게 검색 및 조회 가능
- 메트릭 : 사업 현황에 관한 유용한 정보를 얻을 수도있고, 시스템의 현재 상태를 손쉽게 파악할 수 있다.
- 호스트 단위 메트릭 : CPU, 메모리, 디스크 I/O에 관한 메트릭이 여기 해당
- 종합(aggregated) 메트릭 : 데이터베이스 계층의 성능, 캐시 계층의 성능 같은것이 여기 해당
- 핵심 비즈니스 메트릭 : 능동 사용자, 수익, 재방문 같은 것이 여기 해당
- 자동화 : 지속적 통합, 빌드, 테스트, 배포등의 절차를 자동화 하여 개발자의 생산성을 크게 향상시킬 수 있다.
대규모 데이터베이스를 샤트라고 부르는 작은 단위로 분할하는 기술, 모든 샤드는 같은 스키마를 쓰지만 샤드에 보관되는 데이터 사이에 중복이 있어서는 안된다.
위 그림은 user_id % 4를 해시 함수로 사용하여 데이터가 보관되는 샤드를 정한다.
샤딩 전략을 구현할 때 고려해야 할 가장 중요한 것은 샤딩 키(sharding key)를 어떻게 정하느냐 하는 것이다. 파티션 키(partition key)라고도 부르는데, 데이터가 어떻게 분산될지 정하는 하나 이상의 칼럼으로 구성된다.
※ 샤딩 키를 정할 때는 데이터를 고르게 분할 할 수 있도록 하는게 중요하다.
- 샤딩 도입 시 해결해야할 문제
- 데이터의 재 샤딩 → 안정 해시 기법 활용
- 재 샤딩은 데이터가 너무 많아져서 하나의 샤드로는 더 이상 감당하기 어려울 때
- 샤드 간 데이터 분포가 균등하지 못해 어떤 샤드에 할당된 공간 소모가 다른 샤드에 비해 빨리 진행될 때
- 유명인사 문제 : 핫스팟 키 문제라고도 부르는데, 특정 샤드에 질의가 집중되어 서버에 과부하가 걸리는 문제
- 조인과 비정규화 : 하나의 데이터베이스를 여러 샤드 서버로 쪼개고 나면, 여러 샤드에 걸친 데이터를 조인하기가 힘들어진다.
- 데이터의 재 샤딩 → 안정 해시 기법 활용
'시스템설계' 카테고리의 다른 글
2장. 개략적인 규모 측정 (0) | 2024.12.30 |
---|---|
1. 사용자 수에 따른 규모 확장성(데이터베이스 다중화, 캐시, CDN) (0) | 2024.12.10 |
1. 사용자 수에 따른 규모 확장성(단일서버, 데이터베이스, 규모확장) (0) | 2024.12.10 |