피드로 돌아가기
Dev.toBackend
원문 읽기
Bandit 기반 HTTP/WebSocket 통합 서버의 Lean 아키텍처 구현
Standalone HTTP Server in Elixir with Bandit
AI 요약
Context
기존 Cowboy 서버를 대체하여 Pure Elixir 기반의 고성능 전송 계층 확보 필요성 대두. BEAM VM의 분산 인프라 강점을 활용하면서도 프레임워크 의존성을 최소화한 가벼운 서버 구조 설계 지향.
Technical Solution
- thousand_island 라이브러리를 통한 TCP Transport Layer의 Pure Erlang 재작성 및 효율적 연결 관리
- Plug Interface 기반의 Pipeline 구조를 도입하여 요청 처리 로직을 모듈화된 레이어로 분리
- Plug.Builder를 활용한 커스텀 라우팅 엔진 설계로 Phoenix 프레임워크 없이도 유연한 요청 분기 구현
- HTTP/1.1 및 HTTP/2 네이티브 지원을 통한 프로토콜 호환성 확보 및 WebSockAdapter 기반의 WebSocket 확장성 제공
- init/1과 call/2 콜백 패턴을 통한 상태 관리와 요청 처리의 명확한 책임 분리
실천 포인트
- Phoenix 프레임워크 전체 도입이 부담스러운 소규모 프로젝트에서 Bandit + Plug 조합 검토 - 요청 처리 로직을 단일 함수가 아닌 Plug Pipeline으로 설계하여 인증, 정제, 처리 단계의 관심사 분리 - TCP 전송 계층의 성능 최적화가 필요한 경우 thousand_island 기반의 구현체 적용 고려