Caching 개념 자체를 몰랐던 건 아니다. 학부 시절에는 다룰 기회가 잘 있지 않아서 개념 상으로만 이해하던 용어였다. 실무에서 Caching 주제로 토론을 하게 되었을 때 왜 Caching을 쓸까? 라는 주제로 깊게 고민 해 본적이 없다는 생각이 들었다.
Caching 시리즈의 첫 번째 주제 CDN이다. 학부 시절에 재밌게 이해했던 기억이 나는 주제로 기억이 난다.
수 많은 컴퓨터 용어들은 사실 영어 그대로 해석하면 뻔한 답이 나온다.
콘텐츠 전송 네트워크다. CDN은 콘텐츠를 효율적으로 전송하기 위해 여러 노드를 가진 네트워크에 데이터를 저장하여 제공하는 시스템이다.
만약에 하나의 대 용량 컨텐츠를 전 세계에 배포한다고 생각했을 때, 정말 무식하게 모든 사람들이 해당 서버에 접속하여 파일을 다운로드 하게 될까? 물론 불가능 한 것은 아니다. 한 두명이 다운로드 받는다면 크게 문제가 생기지 않는다. 하지만 넷플릭스 같이 전 세계가 쓰는 서비스에서 과연 그럴 수 있을까?
CDN의 예시로 정말 많이 나오는 게 넷플릭스다. 학부 시절에도 이렇게 공부했던 기억이 난다. 과연 넷플릭스가 서비스 하는 콘텐츠를 모든 전 세계 사람들이 넷플릭스의 단일 서버에 접속해서 해당 컨텐츠를 서비스 받는 것일까? 이슈 될 거리가 한 두가지가 아니다.
CDN 서버는 이러한 컨텐츠를 분산해서 저장하는 역할을 한다. 복잡하게 생각 할 것 없이 과거 비디오 가게 세대였던 사람들은 CDN의 역할을 쉽게 이해할 수 있을 것이다. (필자는 97년생...MZ 세대라고 할 수도 있지만 엄연히 비디오 가게에서 인어공주 비디오 빌려보던 세대다.) 우리가 특정한 비디오를 빌리기 위해 그 비디오가 생성 된 공장에 가야 할까? 아니다. CDN 서버 역할을 하는 비디오 가게에서 서비스를 제공 받으면 그만이다. 비디오 가게는 지금은 많이 사라졌지만...뭐 굳이 다른 예시를 들자면 도서관이 있겠지?
웹 캐시의 클라우드 화. 전 세계 각지에 캐시 서버를 많이 설치 해 둔다. 만약 미국에 있는 사용자가 접속하면 미국의 캐시 서버가 정보를 보낸다. 특정 사용자가 어떠한 지역에서 접속한다면, 그 사용자와 가장 가까운 거리에 있는 캐시 서버에서 데이터를 찾아 서비스를 제공하는 방식이다.
CDN의 목적은 대기 시간을 줄이는 것이라 할 수 있다. 당연하다. 서비스를 제공해 줄 수 있는 스팟을 분산 처리했고, 사용자는 가장 가까운 CDN에서 서비스를 제공 받음으로써 통신 지연을 줄일 수 있다. 뿐만 아니라 웹 서버에 대한 웹 트래픽이 줄어들고 대역폭 소비가 줄어든다. 이는 사용자의 서비스 품질에 좋은 영향을 끼칠 수 있다.
만약 인기있는 컨텐츠에 유저들이 몰린다면, 해당 컨텐츠를 서비스 받는 데 무리가 있을 수 있다. CDN으로 이러한 부하를 분산 시킴으로써 컨텐츠의 가용성을 높일 수 있다.
그리고 웹 사이트의 보안에도 도움이 된다. DDOS 같은 공격을 받더라도 서버간에 로드가 분산 되기 때문에 오리진 서버에 미치는 영향이 줄어든다.
크게 세가지로 나뉜다.
세 가지 용도 다 마찬가지로 컨텐츠의 분산 처리라는 초점에서 활용할 수 있는 예시라 할 수 있다.
CDN에 대해 간단하게 알아보았다. 캐싱을 활용한 사례로 대표적인 사례고 어렵지는 않지만 몰라서는 안되는 개념이므로 포스팅 해 보았다.
다음 포스팅의 주제는 Redis. 곧 돌아오겠다.
https://aws.amazon.com/ko/what-is/cdn/
https://ko.wikipedia.org/wiki/%EC%BD%98%ED%85%90%EC%B8%A0_%EC%A0%84%EC%86%A1_%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC
완벽한 글 감사합디다.