실시간 AnyCable Pro의 진화

Irina Nazarova, keynote, "Evolution of real-time and AnyCable Pro"

작성자
EuRuKo
발행일
2025년 01월 13일

핵심 요약

  • 1 AnyCable Pro는 Ruby on Rails의 Action Cable의 확장으로 시작하여, 고성능 및 안정적인 실시간 통신을 위한 독립적인 인프라로 진화했습니다.
  • 2 팬데믹을 거치며 다양한 산업군의 대규모 고객 사례를 통해 웹소켓의 확장성 및 안정성 문제를 해결하며, 전달 보장 및 세션 재개와 같은 핵심 기능을 추가했습니다.
  • 3 현재 AnyCable은 Rails를 넘어선 범용 솔루션으로 발전하고 있으며, 관리형 서비스와 함께 더욱 간편한 사용성과 고수준 추상화를 목표로 하고 있습니다.

도입

본 발표는 실시간 웹 기술의 발전과 함께 AnyCable Pro가 어떻게 진화해왔는지에 대한 여정을 다룹니다. 웹 기술은 자바와 플래시 시대를 거쳐 2011년경 웹소켓 프로토콜의 등장과 함께 실시간 애플리케이션의 폭발적인 성장을 경험했습니다. 이 시점에서 Rails는 Action Cable을 도입하여 웹소켓 지원을 시작했지만, 대규모 트래픽 처리에는 한계가 있었습니다. Evil Martians의 공동 창업자이자 CEO인 Era Nazarova는 AnyCable이 이러한 문제를 어떻게 해결하고, Rails 스타트업을 위한 핵심 실시간 인프라로 자리매김했는지에 대한 이야기를 공유합니다.

AnyCable의 이야기는 2015년 Rails에 Action Cable이 도입되면서 시작됩니다. 2016년, Vladimir Dementyev는 Action Cable의 드롭인 대체재로 Go 기반의 AnyCable을 개발했습니다. 이는 Action Cable과 동일한 프로토콜과 Redis를 사용하면서도, 메모리 효율성을 10배 향상시키고 브로드캐스팅 지연 시간을 안정적으로 유지하여 진정한 실시간 통신을 가능하게 했습니다. Action Cable이 프레임워크 내에서 실시간 기능을 구축할 수 있게 했다면, AnyCable은 이를 확장할 수 있도록 지원했습니다. 팬데믹 기간 동안 실시간 애플리케이션의 수요가 급증하면서, VTO와 같은 Rails 기반 고객사들은 수만 명의 동시 사용자를 처리하고 실시간 업데이트 및 채팅 기능을 제공하기 위해 AnyCable로 마이그레이션했습니다. 이러한 경험을 통해 AnyCable 팀은 HTTP 요청과 웹소켓이 동일한 서버에서 처리될 경우 웹소켓이 모든 리소스를 독점하는 문제를 발견하고, AnyCable을 Rails와 독립적으로 확장하는 것이 중요함을 깨달았습니다. 또한, 웹소켓 로드 테스트 도구, 시나리오 기반 테스트 도구, GraphQL 구독 지원, 롱 폴링, 음성 애플리케이션 등 다양한 생태계 도구의 필요성을 인지했습니다. 2021년 AnyCable Pro가 출시되면서 아폴로 GraphQL 통합, 기업 방화벽 환경을 위한 롱 폴링, 복잡한 역할/권한 관리 등 대규모 조직을 위한 기능들이 추가되었습니다. 이들은 GitHub Container Registry를 통한 배포, 단일 가격 정책, 간소화된 라이선스 모델 등 매우 단순한 방식으로 제품을 운영했습니다. 첫 고객인 프랑스 기업 Collel EU의 사례는 초기 고객과의 특별한 관계와 유료 고객이 제공하는 풍부한 피드백 및 지원의 중요성을 보여주었습니다. 2022년에는 Action Cable의 연결 끊김 시 메시지 누락 문제를 해결하기 위해 AnyCable 클라이언트와 서버 간의 ‘정확히 한 번 전달’ 보장 기능과 배포 시 세션을 자동으로 재개하는 ‘재개 가능한 세션’ 기능을 도입하여 안정성을 강화했습니다. 또한, Redis 의존성을 제거하고 NATS 기술로 전환하여 클러스터 환경에서의 연결성을 개선했습니다. 예상치 못한 새로운 활용 사례로는 전기차 충전소 프로토콜(OCPP) 지원, Twilio 미디어 스트림을 통한 음성 애플리케이션 프록시, 그리고 LLM(대규모 언어 모델) 응답 스트리밍을 위한 SSE(Server-Sent Events) 기반 AnyCable 구현 등이 있었습니다. 2023년에는 Rails를 넘어선 범용 솔루션으로 확장하기 위해 서버리스 JavaScript용 SDK와 Vercel 템플릿을 제공하고, 설정을 단일 구성 요소로 단순화했습니다. 또한, 백엔드를 거치지 않는 클라이언트 간 메시지 전송 기능인 ‘Whispers’를 도입했습니다. 오랜 숙고 끝에 Rails로 구축된 관리형 AnyCable 서비스의 알파 버전을 출시하여 시장 피드백을 수집 중이며, 오픈 소스 버전에 옵트아웃 가능한 텔레메트리 기능을 추가하여 사용 현황 데이터를 확보함으로써 프로젝트의 지속 가능성을 모색하고 있습니다.

결론

AnyCable은 2016년 Action Cable의 성능 개선을 위한 솔루션에서 시작하여, 2024년 현재 전달 보장을 제공하는 신뢰할 수 있는 실시간 서버로 진화했습니다. EV 충전, 음성 통신, LLM 스트리밍 등 예측 불가능한 새로운 산업 및 애플리케이션에서 핵심적인 역할을 수행하며 실제 문제 해결 능력을 입증했습니다. 앞으로 AnyCable은 더 높은 수준의 추상화와 UI 중심의 실시간 기능, 그리고 간편한 사용성을 위한 가이드 및 제로 설정 도구 제공에 주력할 것입니다. LLM과 같은 AI 기술의 발전은 로봇과의 협업을 포함한 새로운 형태의 실시간 통신 수요를 촉진하며, AnyCable은 이러한 변화하는 전송 기술에 유연하게 대응하여 사용자들이 실시간 기술의 복잡성을 걱정하지 않고 핵심 비즈니스 로직에 집중할 수 있도록 지원할 것입니다. 발표자는 비기술직 관리자에서 개발자 제품의 공동 창업자로 성장한 개인적인 여정을 공유하며, Evil Martians와 Ruby 커뮤니티로부터 받은 변함없는 신뢰가 이러한 성장에 결정적인 역할을 했음을 강조하며 발표를 마칩니다.

댓글 0

댓글 작성

0/1000
정중하고 건설적인 댓글을 작성해 주세요.

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!