서비스가 자라 사용자가 여러 지역으로 흩어지면, 하나의 서버가 모든 요청을 감당하기 어려워진다. 멀리 있는 사용자는 응답을 오래 기다리고, 트래픽이 몰리면 서버가 버티지 못한다. 이 문제를 완화하는 것이 전송망이다. 전송망은 원본 서버 앞에 놓여 사용자와 가까운 곳에서 내용을 대신 내주는 분산된 중간 계층이며, 이것을 도메인에 얹는 일은 이름과 레코드를 다루는 방식과 직결된다.


이번 편은 전송망을 도메인에 얹는 방법을 다룬다. 전송망이 어떤 중간 계층인지, 이름을 전송망으로 어떻게 향하게 하는지, 뿌리 이름에서 어떤 제약이 생기는지, 전송망 위에서 인증서가 어떻게 놓이는지, 원본 서버와 전송망이 어떤 관계를 맺는지, 전송망의 캐시와 무효화는 어떻게 다루는지, 그리고 전송망을 도입할 때의 함정은 무엇인지를 차례로 짚는다. 전송망을 이해하면 이름 하나가 어떻게 전 세계에 빠르게 응답하는지가 보인다.


전송망이라는 중간 계층


전송망은 세계 여러 곳에 분산된 지점들로 이루어진다. 각 지점은 원본 서버의 내용을 저장해 두었다가, 가까운 사용자의 요청에 원본 대신 응답한다. 사용자는 멀리 있는 원본까지 갈 필요 없이 가까운 지점에서 내용을 받으므로 응답이 빠르다. 원본 서버는 모든 요청을 직접 받지 않아도 되어 부담이 크게 줄어든다. 전송망은 거리와 부하라는 두 문제를 동시에 완화한다.


사용자가 가까운 지점으로 안내되는 것은 이름 조회 단계에서 이루어진다. 전송망은 조회하는 사용자의 위치를 가늠해 가장 가까운 지점의 주소로 응답하므로, 같은 이름이라도 사용자마다 다른 지점으로 향한다. 하나의 이름이 지역에 따라 다른 주소로 응답하는 이 성질이 전송망의 핵심 동작이며, 이름 조회의 유연함이 이를 가능하게 한다.


전송망은 정적인 자원을 내주는 데 특히 효과적이다. 이미지나 스크립트처럼 자주 바뀌지 않는 자원은 각 지점에 저장해 두고 반복해서 내줄 수 있어, 원본에 거의 부담을 주지 않는다. 반면 매번 달라지는 동적인 응답은 원본까지 가야 하는 경우가 많아 전송망의 이점이 줄어든다. 무엇을 전송망에 맡기고 무엇을 원본이 직접 처리할지를 나누는 것이 설계의 출발점이다.


전송망은 성능뿐 아니라 안정성에도 기여한다. 트래픽이 여러 지점으로 분산되므로 한 지점에 문제가 생겨도 다른 지점이 감당하고, 대규모 공격이 몰려도 분산된 용량으로 흡수한다. 원본 서버가 직접 노출되지 않고 전송망 뒤에 숨는 구조는 원본을 보호하는 방패가 되기도 한다. 전송망은 빠르게 하는 장치이면서 동시에 지키는 장치다.


이름을 전송망으로 향하게 하기


전송망을 얹으려면 서비스의 이름이 원본 서버가 아니라 전송망을 가리키게 해야 한다. 대개는 그 이름에 전송망이 제공하는 이름을 가리키는 별칭을 걸어 둔다. 그러면 조회는 별칭을 따라 전송망으로 향하고, 전송망이 사용자와 가까운 지점의 주소로 응답한다. 별칭을 쓰므로 전송망의 지점 주소가 바뀌어도 별칭은 그대로 두면 된다.


이 구성에서 원본 서버의 주소는 사용자에게 직접 노출되지 않는다. 사용자의 이름 조회는 전송망까지만 이르고, 원본으로의 연결은 전송망이 뒤에서 대신 맺는다. 그래서 원본의 실제 주소를 감출 수 있고, 이는 원본을 직접 겨냥한 공격을 어렵게 만든다. 다만 원본 주소가 다른 경로로 새어 나가면 이 은폐가 무력해지므로, 원본 주소의 노출을 함께 관리해야 한다.


전송망을 얹은 뒤에도 원본 서버는 계속 존재한다. 전송망의 각 지점은 저장해 둔 내용이 없거나 낡았을 때 원본에서 내용을 가져오므로, 원본은 전송망 뒤에서 내용의 원천 역할을 계속한다. 전송망은 원본을 대체하는 것이 아니라 원본 앞에 놓여 그 부담을 나누는 계층이다. 원본이 응답하지 못하면 전송망도 새 내용을 가져올 수 없다.


이름을 전송망으로 돌리는 전환은 앞서 다룬 전파의 원리를 그대로 따른다. 별칭을 바꾸면 그 변경이 유효 기간에 따라 서서히 퍼지므로, 전환 기간에는 일부 사용자가 원본으로, 일부가 전송망으로 향한다. 그래서 전송망 전환도 유효 기간을 미리 낮추고 원본과 전송망이 같은 내용을 내주도록 맞춘 뒤 진행하는 것이 안전하다. 전송망 도입 역시 무중단 전환의 절차를 따른다.


뿌리 이름과 전송망의 제약


전송망을 별칭으로 얹는 방식은 앞자리가 붙은 이름에서는 자연스럽지만 뿌리 이름에서는 제약에 부딪힌다. 뿌리 이름에는 별칭을 그대로 걸 수 없다는 규칙이 있기 때문이다. 그래서 뿌리 이름을 대표로 삼아 전송망에 얹으려면 이 제약을 우회하는 별도의 방법이 필요하다. 이 문제는 전송망 도입에서 가장 자주 걸리는 지점이다.


가장 흔한 우회는 대행 기관이 제공하는 특별한 기능을 쓰는 것이다. 겉으로는 뿌리 이름을 전송망 이름으로 가리키는 것처럼 보이지만, 실제로는 조회 시점에 전송망의 주소를 조회해 직접 주소 레코드로 응답해 주는 방식이다. 이 기능이 있으면 뿌리 이름도 전송망에 얹을 수 있다. 이 기능의 제공 여부가 어느 대행 기관을 쓸지를 좌우하기도 한다.


이 우회를 쓸 때는 응답되는 주소가 전송망의 유동적인 주소를 잘 따라가는지를 확인해야 한다. 전송망의 지점 주소는 상황에 따라 바뀌므로, 우회 기능이 그 변화를 제때 반영하지 못하면 사용자가 낡은 지점으로 향할 수 있다. 대개는 전송망과 대행 기관이 긴밀히 연동될 때 이 반영이 매끄러우므로, 같은 사업자의 이름 서비스와 전송망을 함께 쓰는 구성이 안정적이다.


이 제약 때문에 많은 서비스가 앞자리가 붙은 이름을 대표로 삼는다. 앞자리가 붙은 이름은 별칭을 그대로 걸 수 있어 전송망을 얹기가 간단하기 때문이다. 뿌리 이름으로 들어온 요청은 앞자리가 붙은 대표 이름으로 안내해 모으면, 뿌리 이름의 제약을 피하면서도 사용자가 짧은 이름으로 접속하는 편의를 유지할 수 있다. 앞자리 선택과 전송망은 이렇게 얽혀 있다.


전송망 위의 인증서


전송망을 얹으면 보안 연결의 끝단이 원본이 아니라 전송망의 지점이 된다. 사용자는 가까운 지점과 보안 연결을 맺으므로, 그 지점이 서비스 이름에 대한 인증서를 제시해야 한다. 그래서 전송망은 각 지점에 서비스 이름의 인증서를 배치하고, 사용자와의 보안 연결을 지점에서 종료한다. 인증서 관리의 상당 부분이 전송망 쪽으로 넘어가는 것이다.


많은 전송망은 인증서의 발급과 갱신을 대신 처리해 준다. 서비스 이름을 전송망에 등록하면 전송망이 그 이름의 인증서를 자동으로 발급받아 각 지점에 배치하고 주기적으로 갱신한다. 이 경우 원본 서버는 인증서를 직접 관리하지 않아도 되어 부담이 줄어든다. 다만 인증서 발급에 필요한 검증을 위해 이름의 관리 권한 일부를 전송망에 위임해야 할 수 있다.


전송망과 원본 사이의 연결도 보안을 고려해야 한다. 사용자와 지점 사이는 보안 연결로 지켜지지만, 지점과 원본 사이가 일반 연결이면 그 구간이 노출된다. 그래서 전송망과 원본 사이도 보안 연결로 맺고, 전송망이 원본의 인증서를 검증하도록 설정하는 것이 바람직하다. 보안 연결이 사용자 앞에서 끊기지 않고 원본까지 이어지게 하는 것이 완전한 구성이다.


지점에서 보안 연결을 종료한다는 것은 그 지점이 통신 내용을 볼 수 있다는 뜻이기도 하다. 전송망은 내용을 대신 내주기 위해 그것을 복호화해 다루므로, 전송망 사업자를 신뢰하는 것이 전제된다. 민감한 내용을 다루는 서비스라면 전송망이 내용을 어떻게 취급하는지를 확인해야 한다. 전송망을 얹는다는 것은 통신의 한 끝을 그 사업자에게 맡기는 일이다.


원본과 캐시의 관계


전송망의 각 지점은 내용을 저장해 두고 재사용하는데, 무엇을 얼마나 오래 저장할지는 원본이 응답에 실어 보내는 지시로 정해진다. 원본이 이 자원은 오래 저장해도 된다고 알리면 지점은 그만큼 저장해 원본에 거의 묻지 않고, 매번 확인이 필요하다고 알리면 지점은 자주 원본에 되묻는다. 캐시의 동작은 원본의 지시에 따라 결정된다.


저장 기간을 길게 잡으면 원본 부담이 줄고 응답이 빨라지지만, 내용을 바꾸었을 때 옛 내용이 지점에 오래 남는다. 그래서 자주 바뀌지 않는 자원은 길게, 자주 바뀌는 자원은 짧게 저장하도록 원본이 지시를 세밀하게 나누어야 한다. 이 조절은 앞서 이름 조회의 유효 기간을 다룬 것과 원리가 같다. 저장의 이점과 최신성의 요구를 저울질하는 것이다.


내용을 바꾸었는데 지점에 옛 내용이 남아 있으면 무효화로 이를 지운다. 원본이 전송망에 특정 자원을 무효로 하라고 지시하면 지점은 저장된 그 자원을 버리고, 다음 요청에 원본에서 새 내용을 가져온다. 무효화는 저장 기간이 끝나기를 기다리지 않고 즉시 최신 내용을 반영하는 수단이다. 다만 잦은 무효화는 저장의 이점을 깎으므로 필요한 때에만 써야 한다.


저장할 자원의 주소를 설계하는 것도 캐시 효율에 관여한다. 내용이 바뀔 때마다 주소를 달리하면, 옛 주소는 그대로 두고 새 주소로 새 내용을 받게 되어 무효화 없이도 최신 내용을 안전하게 배포할 수 있다. 바뀌지 않는 것은 오래 저장하고 바뀌는 것은 새 주소로 내주는 이 방식은 전송망과 캐시를 다루는 흔한 전략이다. 주소 설계가 곧 캐시 전략이 된다.


전송망과 이름 조회의 결합


전송망이 사용자를 가까운 지점으로 안내하는 일은 이름 조회 단계에서 이루어지므로, 전송망과 이름 조회 서비스는 긴밀히 맞물린다. 조회하는 사용자의 위치를 가늠해 가장 가까운 지점의 주소로 응답하려면, 이름 조회를 담당하는 쪽이 전송망의 지점 분포를 알고 있어야 한다. 그래서 이름 조회 서비스와 전송망을 같은 사업자가 함께 제공하는 구성이 흔하고, 이 결합이 안내의 정확도를 높인다.


이 결합은 앞서 다룬 뿌리 이름의 제약을 푸는 데도 관여한다. 뿌리 이름을 전송망에 얹으려면 조회 시점에 전송망의 주소를 조회해 직접 주소로 응답하는 우회가 필요한데, 이름 조회 서비스와 전송망이 한 사업자로 연동되어 있으면 이 우회가 매끄럽게 이루어진다. 전송망의 지점 주소가 바뀌어도 이름 조회 쪽이 그 변화를 곧바로 반영하기 때문이다. 두 계층의 결합이 제약을 완화한다.


결합이 깊어질수록 그 사업자에 대한 의존도 커진다. 이름 조회와 전송망, 인증서 관리까지 한 사업자에 맡기면 운영은 간편해지지만, 그 사업자에 문제가 생기면 여러 계층이 한꺼번에 흔들린다. 편의를 위한 결합과 위험 분산을 위한 분리 사이에서 어디에 무게를 둘지는 서비스의 규모와 성격에 따라 달라진다. 한곳에 모으는 것과 나누어 두는 것은 각각의 대가가 있다.


어느 쪽을 택하든 전송망을 이름 조회와 떼어 생각할 수 없다는 점은 분명하다. 전송망의 안내는 이름 조회의 응답으로 전달되고, 그 응답의 유효 기간이 안내의 반영 속도를 정한다. 전송망을 다룬다는 것은 결국 이름이 주소로 이어지는 그 지점을 다루는 일이며, 앞서 익힌 레코드와 전파의 원리가 여기서도 그대로 작동한다. 전송망은 이름 조회 위에 얹힌 또 하나의 계층이다.


전송망 도입의 함정


가장 흔한 함정은 원본 주소가 다른 경로로 노출되어 전송망을 우회당하는 것이다. 전송망 뒤에 원본을 숨겨도, 옛 레코드나 부속 서비스, 전자우편 관련 설정에 원본 주소가 남아 있으면 공격자가 그것을 찾아 원본을 직접 겨냥한다. 전송망을 도입할 때는 원본 주소가 드러날 수 있는 모든 경로를 함께 정리해야 은폐가 의미를 가진다.


두 번째 함정은 저장 기간을 잘못 잡아 옛 내용이 오래 남는 것이다. 자주 바뀌는 자원에 긴 저장 기간을 지시하면, 내용을 바꾸어도 지점에 옛 내용이 남아 사용자가 낡은 것을 본다. 반대로 정적인 자원에 짧은 기간을 지시하면 원본에 불필요하게 자주 묻게 된다. 자원의 성격에 맞게 저장 기간을 나누는 세심함이 필요하다.


세 번째 함정은 전송망과 원본 사이의 구간을 소홀히 하는 것이다. 사용자 앞의 보안 연결에만 신경 쓰고 지점과 원본 사이를 일반 연결로 두면, 그 구간이 약점이 된다. 보안 연결은 사용자부터 원본까지 끊김 없이 이어져야 하며, 전송망이 원본의 신원을 검증하도록 설정해야 완전하다. 눈에 덜 띄는 뒷구간까지 지켜야 한다.


마지막 함정은 전송망을 얹은 뒤 원본을 방치하는 것이다. 전송망이 대부분의 요청을 흡수하다 보면 원본의 상태를 살피지 않게 되는데, 전송망이 새 내용을 가져오지 못하는 순간 원본의 문제가 그대로 드러난다. 전송망은 원본을 대체하는 것이 아니라 그 앞에 놓인 계층이므로, 원본의 건강도 계속 지켜야 한다. 이렇게 전송망의 성격, 이름을 향하게 하는 방법, 뿌리 이름의 제약, 인증서, 원본과 캐시의 관계, 그리고 도입의 함정까지 이해하면 이름 하나를 전 세계에 빠르게 펼칠 수 있다. 다음 편은 이 도메인으로 오가는 전자우편의 인증을 다룬다.