시스템설계

    [시스템 설계] 데이터센터 이중화

    [시스템 설계] 데이터센터 이중화

    하나의 데이터센터에 있는 서버들을 사용해 시스템을 구축한다고 가정하자. 이때 해당 데이터센터에 문제가 발생하면 시스템이 제대로 동작하지 못하게 된다. 이러한 경우를 대비해 두개의 데이터 센터(혹은 그 이상)을 사용해서 시스템을 구축해보자. 먼저 두개의 데이터 센터를 사용하는 경우, 평소에(장애가 없을 때)는 사용자 입장에서 지리적으로 가까운 데이터센터로 트래픽이 전달된다. 이것을 지리적 라우팅 (geo-routing)이라고 한다. DNS가 요청을 받을 때 사용자 위치에 따라 가까운 IP주소를 변환해준다. 위의 그림에 대한 플로우를 설명하면 다음과 같다. 1. 사용자가 DNS에 도메인네임을 질의한다. 2. DNS는 사용자 위치에 기반하여 가까운 데이터센터의 서버 IP를 반환한다. (geo-routing) ..

    [시스템 설계] 서버 응답시간(latency) 개선 (캐시, CDN)

    [시스템 설계] 서버 응답시간(latency) 개선 (캐시, CDN)

    서버 응답시간은 캐시를 붙이고, 정적 컨텐츠를 CDN으로 캐싱하여 개선할 수 있다. 캐시 캐시는 자주 참조되는 데이터를 캐시 서버에 임시 저장하여 요청이 빨리 처리될 수 있도록 하는 저장소이다. 캐시를 사용하면 DB의 부하가 줄어들어 어플리케이션 성능을 향상시킬 수 있다. 다만 캐시 사용시 아래 사항을 고려해야 한다. 캐시 만료 정책: 너무 짧으면 DB에 자주 접근하게 되고, 너무 길면 데이터가 원본가 차이 날 수 있다. 캐시는 TTL(Time To Live)에 명시된 기간동안 캐싱된다. 일관성 유지: 데이터의 원본과 캐시 사본은 같아야 한다. 저장소의 원본을 갱신하는 연산과, 캐시 업데이트 연산이 동시에 일어나지 않으면 이 일관성은 깨질 수 있다. 캐시 서버 분산: 캐시서버를 한대만 두면 Single ..