
백엔드
대용량 트래픽을 견디는 서버 만들기 — Rust 기반 게이트웨이 구축
두줄요약
대용량 트래픽으로 반복 다운되던 GraphQL 게이트웨이를 Rust 기반 Apollo Router로 재구축했습니다. 배포 후 처리 성능과 자원 사용률이 크게 개선되어 장애 없이 운영 중입니다.
문제 상황
- GraphQL 게이트웨이가 대량 트래픽과 봇 요청에 의해 CPU, 메모리 100%까지 치솟으며 반복 다운되는 상황
- Node.js Apollo Gateway의 싱글 스레드 구조와 GraphQL 쿼리 파싱 비용이 병목으로 작용
- 컨테이너 오토스케일링만으로는 급격한 트래픽 스파이크를 안정적으로 흡수하기 어려운 상태
해결 방법
- Lambda 기반 게이트웨이와 Node.js 최적화를 시도했지만 콜드 스타트, 쿠키 전달 이슈로 운영 배포를 보류
- 멀티스레드 기반 Rust와 Apollo Router를 도입해 POC, Dockerize, ECS 운영 가능성을 단계적으로 검증
- router.yaml, rhai 스크립트, Redis, ElasticSearch 연동으로 기존 게이트웨이 기능을 Rust로 재구성
성능/운영 포인트
- DashMap, lazy_static, Arc, Mutex, RwLock으로 멀티스레드 안전성과 조회 성능 확보
- 데이터스트림 로그 적재 시 create 사용, bulk 처리, 카나리 배포로 운영 리스크 완화
- 배포 후 p95 지연시간 100ms 이상 감소, CPU·메모리 사용률 대폭 하락
