1. 무상태(stateless) 웹 계층

2. 데이터 센터

3. 메시지 큐

4. 로그, 메트릭 그리고 자동화

5. 메시지 큐, 로그, 메트릭, 자동화 등을 반영한 설계안

1. 무상태(stateless) 웹 계층

1-1) 무상태 웹 계층

웹 계층을 수평적(Scale-out, Click)으로 확장하는 방법을 고민해볼 순서임.

이를 위해 상태 정보(사용자 세션 데이터와 같은)를 웹 계층에서 제거해야 함.

바람직한 전략은 상태 정보를 관계형 데이터베이스나 NoSQL 같은 지속성 저장소에 보관하고

필요할 때 가져오도록하는 거임. 이렇게 구성된 웹 계층을 무상태 웹 계층이라 부름.

1-2) 상태 정보 의존적인 아키텍처

상태 정보를 보관하는 서버와 그렇지 않은 서버 사이에는 몇 가지 중요한 차이가 있음.

상태 정보를 보관하는 서버는 클라이언트 정보, 즉 상태를 유지하여 요청들 사이에 공유되도록 함.

무상태 서버에서는 이런 장치가 없음.

1-3) 상태 정보 의존적인 아키텍처

Untitled

1-3)-1. 문제점

1-4) 무상태 아키텍처

Untitled

1-5) 무상태 웹 계층을 갖도록 기존 설계를 변경한 결과

1-5)-1. 변경 전

Untitled

1-5)-2. 변경 후

Untitled

2. 데이터 센터

2-1) 두 개의 데이터 센터를 이용하는 사례

Untitled

2-2) 둘 중 하나가 심각한 장애를 겪을 경우

모든 트래픽은 장애가 없는 데이터 센테로 전송됨. 데이터 센터 2에 장애가 발생해

모든 트래픽이 데이터센터1로 전송되는 상황을 보여줌.

Untitled

2-3) 다중 데이터 아키텍처를 만들 때 생기는 기술적 난제

2-3)-1. 트래픽 우회

올바른 데이터 센터로 트래픽을 보내는 효과적인 방법을 찾아야 한다.

GeoDNS 사용자에게서 가장 가까운 데이터 센터로 트래픽을 보낼 수 있도록 해줌.

2-3)-2. 데이터 동기화(synchronization)

데이터 센터마다 별도의 데이터베이스를 사용하고 있는 상황이라면 장애가 자동으로 복구되어

트래픽이 다른 데이터베이스로 우회된다 해도, 해당 데이터센터에는 찾는 데이터가 없을 수 있음.

2-3)-3. 테스트와 배포(deployment)

여러 데이터 센터를 사용하도록 시스템이 구성된 상황이라면

웹 사이트 또는 애플리케이션을 여러 위치에서 테스트해보는 것이 중요함.

3. 메시지 큐

4. 로그, 메트릭 그리고 자동화

5. 메시지 큐, 로그, 메트릭, 자동화 등을 반영한 설계안