- Railway는 GCP 기반 컴퓨트가 가격·지원·기능 개발을 제약한다고 보고, 더 직접 통제할 수 있는 물리 인프라인 Railway Metal을 시작함
- 2024년 1월 착수 후 첫 서버 연결까지 5개월, 사용자 워크로드 투입까지 추가 3개월이 걸렸고, 9개월 뒤 캘리포니아 첫 사이트가 가동됨
- 공간 임대보다 더 큰 제약은 전력과 냉각이었으며, Railway는 Greenfield나 랙 단위 임대 대신 Cage Colocation을 선택함
- 네트워크는 지역별 최소 2개 ISP, 전체 인터넷 라우팅 테이블, IP prefix별 경로 선택, 여러 zone 설계로 단일 데이터센터 장애에 대비함
- 랙 배치, 케이블 문서, PDU, 역방향 airflow 스위치, Redfish API, PXE, FRR, SONiC까지 직접 다뤄야 하며, 자체 클라우드 구축은 Terraform 배포보다 집을 짓는 일에 가까움
GCP에서 Railway Metal로 옮긴 이유
- Railway의 컴퓨트는 초기부터 Google Cloud Platform 위에 구축돼 있었음
- GCP는 초기 성장에는 도움이 됐지만, 운영이 커지면서 고객에게 원하는 플랫폼을 제공하는 데 한계가 생김
- 하이퍼스케일러 기반 운영은 Railway가 제공할 수 있는 가격, 서비스 수준, 기능 개발 범위를 직접 제한함
- egress fee가 가격에 영향을 줌
- 상위 인프라에서 문제가 생겨도 원인을 이해하는 경우가 드묾
- 연간 수백만 달러를 지출해도 지원 수준은 100달러를 쓰는 것과 크게 다르지 않다고 평가함
- Railway는 이에 대응해 2024년에 Railway Metal 프로젝트를 시작함
- 9개월 뒤 캘리포니아 첫 사이트를 가동함
- cage 안의 광섬유 케이블부터 ISP 계약까지 설계, 사양 정의, 설치를 직접 진행함
- 추가로 3개 데이터센터 region을 켜는 중임
첫 공간 선택: 데이터센터 cage
- Railway Metal 프로젝트는 2024년 1월 시작됐고, 첫 서버를 연결하기까지 5개월이 걸림
- 사용자 워크로드를 하드웨어에 올려도 된다고 판단하기까지 추가로 3개월이 필요했음
- 자체 인프라에는 서버를 둘 공간, 안정적인 전력, 충분한 냉각이 필요함
- 선택지는 크게 세 가지였음
- Greenfield buildout: 데이터센터를 구매하거나 임대함
- Cage Colocation: 사업자 데이터센터 안에 메시 벽으로 둘러싸인 전용 공간을 확보함
- Rack colocation: 코로케이션 데이터센터에서 개별 랙이나 랙 일부를 임대함
- Railway는 네 벽, 보안 문, 나머지를 직접 설계할 수 있는 빈 공간을 얻기 위해 Cage Colocation을 선택함
- 공간 자체 비용은 크지 않지만, 전력과 그에 따른 냉각 비용이 가장 큼
- 지역에 따라 kW당 비용 차이가 큼
- 미국 서부에서는 싱가포르보다 절반 이하로 낼 수도 있음
- 전력은 실제 사용량과 무관하게 온디맨드 가용성을 보장하기 위해 월정액 commit으로 지불함
전력 설계와 PDU
- Railway는 GCP에서 쓰던 용량에 맞추기 위해 목표 vCPU 수, RAM GB, NVMe TB를 먼저 정함
- 이 수치를 바탕으로 서버와 CPU를 선택함
- 핵심 변수는 특정 전력 소비 안에 원하는 컴퓨트 밀도를 넣는 전력 밀도였음
- 전력 계산은 watt 합산만으로 끝나지 않으며, 특히 3상 전원에서는 더 복잡함
- Cloudflare의 3상 전력과 PDU 소개가 관련 내용을 다룸
- 데이터센터에서 전력은 가장 중요한 자원이고, 정전은 복구 시간이 매우 길 수 있음
- 각 랙에는 완전히 독립적인 전력 feed 2개가 필요함
- 평상시에는 두 feed가 부하를 나눔
- 하나의 feed가 내려가도 견딜 수 있어야 함
- 서버에 전력을 전달하려면 Power Distribution Unit이 필요함
- 기본 PDU는 사실상 확장 멀티탭에 가까움
- Railway가 배치하는 PDU는 개별 소켓 제어와 계측이 가능함
- 각 PDU는 네트워크로 접근할 수 있고, 개별 소켓을 원격으로 계측·제어할 수 있음
네트워크: ISP, 라우팅, 지역별 경로
- 클라우드 머신은 단독으로 존재하지 않으므로 네트워크가 핵심 역할을 함
- Railway는 낮은 지연 시간을 위해 외부 세계와 견고하게 연결된 데이터센터 시설을 찾음
- 선호 조건은 다음과 같음
- Tier 1 ISP와 on-network 상태임
- Internet Exchange에 포함됨
- 가까운 다른 데이터센터로 연결할 수 있는 광섬유가 있음
- Railway에 배포된 애플리케이션은 다양한 엔드포인트와 통신함
- 시드니의 가정용 인터넷 사용자
- 미국 AWS 서버에 호스팅된 API
- 낮은 지연 시간과 낮은 대역폭 비용을 위해 Railway는 사용 사례별로 최적화된 여러 인터넷 제공자와 계약함
- ISP는 목표 지역에서의 네트워크 성숙도를 기준으로 고름
- 잘못된 ISP와 협력하면 특정 목표 시장까지 추가 네트워크 hop이 생겨 지연 시간이 늘어날 수 있음
- 최악의 경우 복잡하게 꼬인 네트워크 경로가 생길 수 있음
- 각 지역에서 지역 footprint를 기준으로 최소 2개의 별도 네트워크를 선택함
- 연결 후 각 ISP에서 전체 인터넷 라우팅 테이블을 받고, 네트워크 스위치에서 이를 통합해 IP prefix별 최적 경로를 결정함
- 호주 사용자가 싱가포르에 배포된 앱에 접근하면 Telstra로 패킷을 넘길 가능성이 높음
- 같은 앱이 일본의 사용자나 서버로 패킷을 보내면 PCCW로 넘길 가능성이 높음
- Peering 정보는 공개돼 있으며 bgp.tools에서 네트워크 상호 연결을 볼 수 있음
- 이중화를 위해 각 region 안에 여러 zone을 구축하고, 사이트 간 상호 연결도 확장에 중요함
- dark fiber나 wavelength service 같은 도구를 검토함
- 앱은 데이터베이스가 같은 방에 있든 4블록 떨어진 이웃 건물에 있든 차이를 느끼지 않게 하는 방향임
- 개별 데이터센터 장애에 대한 복원력을 높이기 위한 설계임
랙, 통로, 냉각, 케이블 경로
- 데이터센터에서는 랙을 줄로 배치하고 랙 사이 통로를 공기 흐름에 사용함
- Cold Aisle에는 시설에서 찬 공기가 들어오고, 서버는 이 공기를 빨아들인 뒤 뒤쪽 Hot Aisle로 배출함
- 효율을 높이려면 Cold Aisle과 Hot Aisle 사이의 공기가 섞이지 않아야 함
- 랙은 19인치 폭 장비를 쓰더라도 높이, 폭, 깊이를 장비와 케이블 요구에 맞게 선택할 수 있음
- 대부분의 서버 장비는 유지보수를 위해 레일 위에서 앞으로 당겨낼 수 있으므로, cage 치수가 이를 허용해야 함
- 케이블과 케이블 관리에도 공간이 필요해 랙을 얼마나 빽빽하게 채울지와 cage 안에 몇 개의 랙을 넣을지 사이에 절충이 생김
- Railway의 경험에서는 실제 공간보다 전력과 냉각이 더 자주 제약이 됨
- 신규 사이트에서는 케이블을 배기 경로에서 치워 airflow를 개선하기 위해 800mm 폭의 더 넓은 랙을 선택함
- 랙 외에도 전력과 데이터를 전달하기 위한 상부 인프라와 트레이가 필요함
- cage 가장자리에서 각 랙까지 광섬유를 라우팅함
- 랙 사이 케이블도 라우팅함
- 이런 항목은 데이터센터 운영자가 cage 견적에 포함하는 경우가 있음
- Railway는 랙마다 switch-to-server 광섬유 케이블 밀도가 높기 때문에 포트가 랙 뒤쪽을 향하는 reverse airflow switch를 구매함
- 네트워크 포트가 있는 쪽으로 배기하는 스위치임
- 케이블 트레이를 맞춰 모든 케이블링이 랙 한쪽에서 이뤄지게 함
- 랙 앞뒤로 케이블이 지그재그로 오가는 상황을 피함
설치 문서와 rack-and-stack
- Railway는 처음 직접 케이블링을 시도했지만 결과가 고르지 않았고, 제대로 설치하기 위해 전문가를 투입함
- 설치 전문가가 무엇을 어디에 설치해야 하는지 알 수 있도록 포괄적인 문서 패키지가 필요함
- 일반적인 문서는 두 가지임
- Cabling matrix: 각 케이블 양쪽 끝의 장비 위치, 포트, 케이블 사양, 광섬유 종류, 길이 등을 정의함
- Rack elevation: 랙 안에서 각 장비의 위치와 방향을 시각적으로 나타냄
- Railway의 각 설치 단계에는 60개 이상의 장비, 300개 이상의 개별 케이블, 수십 개의 세부 사항이 포함됨
- 설치와 시운전의 기반이 되는 서면 사양과 스프레드시트는 수작업으로 만들어짐
- 자재가 현장에 도착한 뒤 모든 설치를 끝내는 데는 약 6~14일이 걸림
- 이후 Railway는 build specification 생성을 자동화하는 내부 도구를 만듦
- 데이터센터 cage 구축은 일반적인 소프트웨어, DevOps, Terraform stack 배포와 거리가 멀고 집을 짓는 작업에 더 가까움
- 데이터센터 시설, 계약업체, 벤더마다 같은 조직 안에서도 방식이 조금씩 달라 운영상 매우 세부적인 주의가 필요함
현장에서 겪은 예외와 물리적 문제
- 한 사이트에서는 PDU가 거꾸로 설치돼 있었고, 전원이 바닥에서 들어와 계획상의 소켓 번호가 반대로 됨
- Amsterdam 현장에서는 전용 demarcation point가 아니라 외부 광섬유 링크가 랙 안의 박스로 직접 들어오는 시설 방식이 있었음
- 어떤 시설은 다른 사이트와 다르게 전력 소켓이 phase-to-neutral 방식으로 배선돼 있었고, 다른 곳은 phase-to-phase 방식이었음
- 계약업체가 네트워크 장비가 reverse airflow인 것을 모르고 반대 방향으로 장착하려 해 데이터 케이블이 짧다고 판단한 사례가 있었음
- 특정 케이블에서 link가 올라오지 않는 원인은 광섬유 polarity 오류였고, Railway는 그때 “rolling fibre cables”를 알게 됨
- LC connector의 플러그를 빼서 서로 바꾸는 방식임
- 한 벤더의 PDU 약 24개는 소켓 결함으로 전원 플러그가 제대로 물리지 않았고, 강한 물리적 힘을 가해도 해결되지 않았음
물리 설치 이후의 소프트웨어 작업
- 하드웨어가 제자리에 들어간 뒤에는 작업이 더 익숙한 소프트웨어 영역으로 넘어감
- 필요한 작업은 다음과 같음
- BGP 설정
- OS 설치
- 모니터링 구성
- 네트워크 장비 설정
- 라우터 설정 작성
- RIR, 즉 지역 인터넷 레지스트리 기록 업데이트
- 서버와 PDU의 전용 컨트롤러에 접근하기 위해 Redfish APIs를 사용함
- 서버를 네트워크로 부팅하기 위해 PXE를 사용함
- Railway의 네트워크 설계는 FRR과 SONiC을 실행하는 whitebox network switch를 사용함
- 이 설계로 Railway control plane과 깊게 통합된 L3-only 소프트웨어 주도 네트워크를 구축함
- 최근 몇 달 동안 Railway는 새 소프트웨어 도구 Railyard와 MetalCP를 만듦
- 새 cage 설계
- 케이블 추적과 시각화
- 서버 OS 설치
- 서버를 인터넷에 연결하는 과정까지 버튼 클릭 경험을 가능하게 하는 도구임
- 이후 글에서는 방 안의 서버 묶음을 기능하는 Railway zone으로 만드는 과정을 다룰 예정임