Railgun은 각 Cloudflare 데이터 센터와 원본 서버 간의 연결을 가속화하므로 Cloudflare 캐시에서 제공될 수 없는 요청도 매우 빠르게 제공됩니다.
Cloudflare의 사이트에 대한 요청 중 2/3 정도는 웹을 탐색하는 사람에게 물리적으로 가장 가까운 데이터 센터의 캐시에서 직접 제공됩니다. Cloudflare의 데이터 센터는 전 세계에 위치해 있으므로 사용자가 방갈로르, 브리즈번, 버밍엄, 보스턴 등 어디에 있든지 관계없이 실제 원본 웹 서버가 수천 마일 떨어져 있더라도 웹 페이지는 빠르게 제공됩니다.
Cloudflare의 웹 사이트가 웹 사용자 가까이에 호스팅되는 것처럼 보이게 만드는 기능은 웹 서핑 가속에서 핵심입니다. 웹 사이트는 미국에서 호스팅되지만 주로 영국의 웹 서퍼가 액세스할 수도 있습니다. Cloudflare를 통해 영국 데이터 센터에서 사이트로 서비스가 제공되어 느린 속도로 인해 발생하는 높은 비용의 지연이 제거됩니다.
그러나 Cloudflare에 대한 요청의 다른 1/3은 원본 서버로 전송하여 처리되어야 합니다. 많은 웹 페이지는 캐시될 수 없기 때문에 이러한 작업이 필요합니다. 이는 잘못된 구성 때문일 수도 있고, 더 일반적으로는 웹 페이지가 자주 변경되거나 개인별로 맞춤화되기 때문일 수도 있습니다.
예를 들어, 어떤 기간에 해당하는 New York Times 홈 페이지를 캐시하는 작업은 어렵습니다. 뉴스 변경 및 최신 정보를 업데이트하는 것이 신문사의 비즈니스에 필수적이기 때문입니다. 그리고 Facebook 같이 맞춤형 웹 사이트의 경우 각 사용자는 URL이 다른 사용자의 URL과 동일하더라도 다른 페이지를 보게 됩니다.
Railgun은 이전에는 캐시할 수 없었던 웹 페이지를 가속화 및 캐시하는 일련의 기술을 사용하므로 원본 서버를 참조해야 하는 경우에도 웹 페이지가 빠르게 제공됩니다. 이 기능은 뉴스 사이트 같이 빠르게 바뀌는 페이지나 맞춤형 콘텐츠에도 적용됩니다.
Cloudflare 연구 팀은 많은 사이트가 캐시될 수 없긴 하지만 이러한 사이트가 실제로 매우 느리게 변경된다는 사실을 제시했습니다. 예를 들어 New York Times 홈페이지는 뉴스 기사가 작성됨에 따라 종일 변경되지만 페이지의 표준 HTML은 대부분 동일하게 유지되고 많은 기사는 하루 종일 전면 페이지에서 유지됩니다.
맞춤형 사이트의 경우 표준 HTML은 동일하고 콘텐츠(예: 개인의 Twitter 타임라인 또는 Facebook 뉴스 피드)의 일부만 바뀝니다. 이는 곧 페이지의 변경되지 않는 부분을 검색하고 차이만 전송할 수 있는 경우 전송할 웹 페이지를 압축할 기회가 크다는 것을 의미합니다.
캐시에 없는 웹 페이지가 Cloudflare 서버 요청되면 Cloudflare는 원본 서버에 대한 HTTP 연결을 설정하여 페이지를 요청합니다. Railgun이 가속화하고 보호하는 것은 HTTP 연결입니다.
Railgun은 Listener 및 Sender라는 두 개의 소프트웨어 구성 요소로 구성됩니다. Railgun Listener는 원본 서버의 웹 호스트에 설치됩니다. Listener는 암호화된 2진수 Railgun 프로토콜을 사용해 Cloudflare가 전송한 요청을 처리하는 작은 소프트웨어 조각으로서 표준 서버에서 실행됩니다.
Railgun Sender는 전 세계 Cloudflare 데이터 센터에 설치되어 있으며 Railgun Listener와의 연결을 유지합니다.
원본 서버에서 처리해야 하는 HTTP 요청이 들어오면 Cloudflare에서 이 요청이 Railgun 지원 웹 사이트로 전송되는지 확인합니다. 요청이 Railgun 지원 웹 사이트로 전송되지 않으면 표준 HTTP가 사용되지만, 전송되는 경우에는 처리를 위해 HTTP 요청이 Railgun Sender로 라우트됩니다.
Railgun Sender는 요청을 해당하는 Railgun Listener에 전송될 압축 이진 청크로 전환합니다. Railgun Listener는 요청을 처리하고 HTTP 요청을 원본 서버에 대해 실행합니다. 원본 서버 쪽에서 보면 이 작업은 HTTP 연결이 Cloudflare에서 직접 오는 것 같지만 이 연결은 호스팅 파트너의 인프라 내부에서 오는 것이므로 해당 요청에는 대기 시간 관련된 지연이 없습니다.
Railgun은 비교 페이지 기반의 새로운 캐싱 메커니즘을 사용하여 인터넷을 통해 Railgun Sender로 전송되어야 하는 대상을 확인합니다. 이 메커니즘을 사용하는 Cloudflare는 일반적인 99.6% 압축(예를 들어 100,000바이트 웹 페이지를 400바이트로 축소) 및 700% 이상의 속도 향상을 달성할 수 있습니다. 실제로 압축된 데이터는 이진 Railgun 프로토콜을 사용할 경우 전체 응답이 단일 TCP 패킷 내에 들어갈 만큼 매우 작습니다.
Railgun 연결은 TLS에 의해 보호되기 때문에 연결 간 전송된 요청은 외부에서 액세스할 수 없습니다. 이 연결은 인증서에 의해 안전하게 보호되어 경로 내 공격이 불가능합니다. Cloudflare와 원본 서버 간 TCP 연결은 계속 유지되어 후속 요청에 다시 사용되기 때문에 TCP 연결 속도가 저하되지 않습니다.
Railgun 요청은 동일한 연결로 다중화되고 비동기적으로 처리될 수 있습니다. 즉, Railgun이 TCP 연결의 사용을 차단 및 최대화하지 않고 많은 동시 요청을 처리할 수 있습니다.
Railgun Listener는 실행 중인 Memcache 인스턴스에만 종속된 단일 실행 파일입니다. 이 파일은 64비트 Linux 시스템에서 디먼으로 실행됩니다.
Listeners는 Railgun 프로토콜을 위해 인터넷에 단일 포트가 하나 열려 있도록 요구하며 이를 통해 Cloudflare 데이터 센터는 해당 프로토콜과 접촉할 수 있습니다. 그리고 HTTP 및 HTTPS를 통해 웹 사이트에 액세스하도록 요구합니다. 이상적으로 말하자면 Listener는 인터넷에 빠르게 액세스하고 대기 시간이 짧은 서버에 배치됩니다. 설치는 RPM 또는 .deb 파일을 통해 단순히 설치하기만 하면 됩니다. Railgun 설치에 관한 자세한 지침은 공식 Railgun 문서를 참조하세요.
Railgun은 Cloudflare Business 또는 Enterprise 요금제 고객 또는 최적 호스팅 파트너로 호스팅하는 고객이 이용할 수 있습니다.
도메인 설정에는 5분도 걸리지 않습니다. 호스팅 공급자나 코드를 변경할 필요도 없습니다.