https://www.cloudflare.com/website-optimization/railgun/
이게 클플의 레일건 공식 페이지인데 설명이 굉장히 부실합니다.
그냥 압축해서 전송해서 200% 빨라지니 어쩌니 하는 정도의
설명만 하고 있어서 전혀 납득이 안가죠.
이게 과연 얼마만큼 수고할만한 가치가 있는 기능일까.. 생각했던 적이 있는데
좀더 찾아보니 이게 생각보다 좋은 기능이란걸 깨달았습니다.
사실 이게 기본적으로 거의 바니쉬에 가까운 기능이더군요.
클플은 static 파일만 캐쉬하고 HTML 페이지들은 캐쉬를 하지 않습니다.
왜냐하면 동적 페이지를 캐쉬하기 시작하면 캐쉬 주기가 매우 짧아져야
하고 그외에도 신경써야 할게 많아지기 때문에 시스템 자원을
훨씬 대량으로 써야 하기 때문이죠.
그래서 클플에선 캐쉬안하는 그 동적 페이지들을 사용자 서버 자체에서라도
캐쉬하기 위해 레일건을 쓰는 것입니다.
클플-서버간 트래픽을 줄이는데는 좀 효용이 적겠지만
일단 바니쉬처럼 서버 로드는 확실히 줄일 수 있을겁니다.
거기에 자체적인 특수한 프로토콜로 압축도 하고 있다고 하니 트래픽도
조금은 줄어들지도 모르죠.
거기에 또 하나의 큰 장점이 있는데 [자체적인 특수한 프로토콜]이라는
점입니다. HTTP를 안쓴다는거죠. 제가 레일건 안을 들여다본건 아니지만
분명히 TCP커넥션을 계속 유지하고 있을겁니다. HTTP/2처럼요.
그래서 통신이 필요할때 TCP커넥션에 필요한 시간을 절약해주는거지요.
이게 제가 알기로는 클플하고 내 서버하고 사이에는 HTTP/2가 사용되지 않습니다.
내가 서버에서 HTTP/2를 준비해놔도 클플에서 안쓰기 때문에 전혀 효과가 없죠.
그러므로 매 리퀘마다 커넥션이 맺어져야 하고 이건 상당한 부담이 될겁니다.
그런 의미에서 레일건을 쓰면 아마 상당히 빨라질것이라고 예상할 수 있습니다.
마지막으로 제가 레일건 개발자라면.. 이라고 생각해본건데
구지 사이트 사용자가 리퀘하고 나서 그때서야 캐쉬 뒤져서 없으면 받아오고
새로 캐쉬하고 그러면 사실 한박자 늦게 되지요. 적어도 갱신된 컨텐츠를 요청하는
첫번째 사용자는 항상 상당히 느리게 됩니다.
아마 이건 추측입니다만 레일건 서비스는 실시간으로 서버를 서치하면서
능동적으로 컨텐츠가 업데이트된 경우 그 내용을 클플쪽으로 미리 보내두는
기능같은게 있지 않을까 싶습니다.
그럴 경우 사용자가 리퀘를 하는 시점에서는 구지 본서버하고 통신을 할 필요가
없어지니 체감적으로 빨라진다고 느낄 수 있지요.
이정도 기능들이 구현되어 있다면 분명히 체감할만한 성능 향상을 기대할 수
있을 것 같습니다.
레일건으로 속도가 증가하긴 합니다만 클플 엣지서버 자체가 ICN으로 잡히질 않아서 레일건으로 빨라져 봤자 무용지물입니다.(결국 해외서버에 접속해야 하는 셈이므로...)
엔터프라이즈 플랜을 사용한다면 서울서버 연결이 보장되므로 레일건의 효과를 볼수 있을지 모르겠네요.