분산 처리 전략
1. 성능 분석을 하여 분산 처리가 필요한 지점을 엄선한다
2. 데이터 응집력을 확인한다. 다룰 데이터 간 상호 작용이 매우 적은 것들만 골라서 분산한다
응집력이 높은 데이터를 구별하는 기준을 찾아야 한다
3. 분산 처리 방식은
1) 동기 분산 처리
2) 비동기 분산 처리
3) 데이터 동기화에 기반을 둔 로컬 처리
중에서 선택한다
4. 분산 처리 자체는 구현과 디버깅이 까다롭고 불필요한 과부하를 일으킨다.
불필요한 분산 처리라고 생각되는 부분은 피할 수 있으면 피하는 것이 좋다
분산 처리는 안정성에도 효과를 준다
ex1) 데이터 분산 서버의 경우 중지된 서버가 처리하는 데이터는 전체 플레이어 중 일부이다
-> 서비스 장애 영역이 전체에서 국소로 줄어든다
ex2) 서버가 5개로 수평 분산되어 있는데, 서버 한대가 죽으면 전체 플레이어의 20%만 접속이 끊어진다
끊어진 플레이어는 나머지 서버 중 하나에 다시 접속해서 게임을 재시작할 수 있다
ex3) 기능적 분산 서버의 경우, 중지된 서버가 처리하는 기능 외에 다른 기능은 정상 작동하므로 서비스 장애로 일어난 불편함이 줄어든다
고가용성(High Availability, HA)
: 사용자가 항상 서비스를 이용할 수 있게 하는 것
서버가 고장 나거나 껐다 켜는 상황이 발생함에도 서버 역할을 지속하는 것
사용자 입장에서는 논리적으로 서버 한 대처럼 보이지만, 컴퓨터 여러 대로 구성된 서버 클러스터이다.
-> 서버 중에서 몇몇 서버가 과부하에 걸리거나 오작동으로 정지하더라도, 나머지 서버가 계속해서 사용자 요청을 처리할 수 있다
장애 극복
: 서버 클러스터에 있는 서버 중 하나가 죽었을 때, 다른 서버가 죽은 서버를 대신해서 일을 하고 그동안 죽은 서버가 다시 살아나는 것
고가용성을 위한 서버 구성 패턴
1. 액티브-패시브(active-passive) 패턴
: 마스터-슬레이브(master-slave) 패턴이라고도 한다. 서버 한 대만 액티브 역할을 수행하고 나머지 서버는 패시브 모드로 대기한다. 그러다 액티브 서버가 죽으면 패시브가 그 역할을 대행한다
단점 : 패시브 서버는 그저 백업 역할만 할 뿐 다른 하는 일이 없다. 즉, 서버 자원의 낭비
2. 액티브-액티브(active-active) 패턴
: 서버 두 대가 클라 측 요청을 분담하여 처리하고, 필요할 때면 각자 가진 데이터를 상대방에게 전송한다.
받은 쪽에서는 데이터를 복제한다. 즉, 두 서버의 상태가 서로 동기화된다
경우에 따라 데이터 스테일(data stale) 문제를 해결하려는 노력이 필요하다
이 문제를 해결하려면 두 액티브 서버 사이에 메모리 저장소 역할을 담당하는 서버(공유 메모리 서버)를 두면 된다
두 액티브 서버는 공유 메모리 서버로만 데이터 액세스를 한다
장점 : 스테일 문제가 발생하지 않는다
단점 : 각 액티브 서버는 데이터에 접근할 때마다 기기 간 통신이 발생한다
메모리 저장소 서버가 죽어 버리면 고가용성을 지킬 수 없다
서버 오케스트레이션 도구(server orchestration tool)
: 다수의 서버를 쉽게 관리하는 도구
가용 지역(Availability Zone, AZ)
: 데이터센터가 있는 시설
'프로그래밍 > 서버' 카테고리의 다른 글
분산 서버 구조 4 (0) | 2019.10.21 |
---|---|
분산 서버 구조 2 (0) | 2019.10.09 |
분산 서버 구조 1 (0) | 2019.10.04 |
게임 서버와 클라이언트 (0) | 2019.09.30 |
소켓 프로그래밍 3 (0) | 2019.09.27 |