본문 바로가기

프로그래밍/서버

분산 서버 구조 3

분산 처리 전략

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