서버-클라이언트 구조는 가장 전통적인 아키텍처 중 하나로, 중앙 서버가 모든 클라이언트의 요청을 처리하는 개념이다. 즉, 모든 클라이언트 요청은 중앙 서버로 전송된다.
서버-클라이언트 구조 | 이미지 출처 위키백과
서버 - 클라이언트 구조는 간단하고 구현하기 쉬운 장점이 있지만, 중앙 서버가 단일 의존 지점이라는 단점이 있다. 접속량이 많을 경우 성능 문제가 발생할 수 있으며, 서비스가 중단될 수도 있다.
또한, 중앙 서버의 물리적 위치가 고정되어 있어 사용자의 액세스 속도가 지리적 위치에 직접적인 영향을 받는다. 동일 조건에서 서버에 가까울수록 액세스 속도가 빨라지고, 서버에서 멀어질수록 액세스 속도가 느려진다.
중앙 서버의 부담을 줄이고, 사용자와의 지리적 거리를 단축하기 위해 CDN 아키텍처가 등장했다. CDN은 전 세계 각지에 있는 데이터 센터에 대량의 노드 서버를 설치하고, 정적 파일들을 이 노드 서버에 복제하는 개념이다.
Content Delivery Network Overview | 이미지 출처 Medium
사용자가 접속했을 때 정적 파일과 관련된 요청은 중앙 서버로 전송되지 않는다. 대신, DNS 시스템을 통해 지리적으로 가장 가까운 노드 서버로 전달되고, 해당 노드 서버가 사용자에게 직접 응답한다.
이러한 설계는 중앙 서버로 전송되는 요청을 줄일 수 있을 뿐만 아니라 사용자와 정적 파일 간의 물리적 거리를 줄여서 접속 속도를 높일 수 있다.
CDN 아키텍처는 서로 다른 역할을 2개의 서버가 존재한다.
노드 서버는 아키텍처의 주변부에 위치하여 중앙 서버를 보조하는 역할을 수행해서 엣지 서버라고 부른다. 이처럼 CDN 아키텍처는 중앙 서버와 엣지 서버가 각자의 역할을 분담하여 효율적인 콘텐츠 전달 서비스를 제공한다.
CDN 아키텍처 구조 | 이미지 출처 FS