KEDA를 활용한 로그 시스템 오토스케일링 경험담

우아한형제들은 KEDA를 활용하여 100만 TPS의 로그 시스템에 오토스케일링을 성공적으로 적용하였습니다. 이 경험을 통해 로그 처리의 변동성을 관리하며 비용 효율성을 높이는데 기여하게 되었습니다. 본 문서에서는 KEDA 도입 과정과 실제 운영 사례를 통한 운영 환경 개선 방안에 대해 설명합니다. KEDA 적용을 통한 로그 시스템 아키텍처 변화 KEDA를 도입하기 전, 우아한형제들은 기존 HPA를 이용하여 로그 시스템의 오토스케일링을 시도했습니다. 하지만 평균 CPU 및 메모리 사용량을 기준으로 스케일링이 진행되면서 한계에 봉착하게 되었습니다. KEDA의 도입 이후, 이벤트 기반으로 스케일링을 설정함으로써, 로그 시스템의 아키텍처를 유연하게 설계할 수 있었습니다. KEDA는 다양한 이벤트 소스를 지원하여 로그 시스템의 특성에 맞는 스케일링 기준을 설정할 수 있게 해줍니다. 예를 들어, Fluentd의 버퍼 사용률을 기준으로 스케일링 트리거를 설정함으로써, 시스템이 실제로 부하를 받기 시작하기 전에 프로세스를 조정할 수 있었습니다. 이는 로그 처리의 안정성을 크게 향상시켰고, 유연한 리소스 관리로 비용을 줄일 수 있는 기반을 마련하였습니다. 이러한 변화는 로그 시스템 아키텍처의 효율성을 높이고, 운영 환경을 개선하는 데에 결정적인 역할을 했습니다. 다양한 메트릭을 조합하여 스케일링 미세 조정이 가능해짐으로써, 시스템 부하가 예상되는 피크 시간대에도 원활하게 처리할 수 있는 역량을 갖추게 되었습니다. KEDA 도입을 통한 메트릭 기반 스케일링 효과 KEDA의 도입은 로그 시스템의 메트릭 기반 스케일링을 가능하게 하였습니다. 기존 HPA와 달리, KEDA는 프로메테우스를 이용해 다양한 지표를 직접적으로 활용할 수 있게 해줍니다. 이를 통해 CPU 및 메모리 사용량 외에도 Fluentd 버퍼와 같은 중요한 메트릭을 스케일링 기준으로 설정할 수 있었습니다. Fluentd의 버퍼가 일정 사용률을 초과할 경우 이를 위기 상황으로 간주하여 스케일 아웃을...

우아한형제들의 실시간 알림 혁신: SSE(Server-Sent Events)로 이룬 효율성과 안정성


운영 효율성의 혁신

기존의 MQTT 기반 실시간 알림 시스템은 빠르지만, 운영의 복잡성과 네트워크 제약이 존재했습니다. MQTT는 별도의 포트를 필요로 하기 때문에 방화벽 이슈가 잦았고, 각 클라이언트별 Polling 로직은 서버 트래픽을 불필요하게 증가시켰습니다. 이러한 문제는 인프라 비용 증가로 직결되었습니다.

우아한형제들은 이 문제를 해결하기 위해 Server-Sent Events(SSE)를 도입했습니다. SSE는 HTTP 표준 포트를 이용해 통신하므로 방화벽 문제를 근본적으로 해결했습니다. 또한 Polling 구조가 제거되면서 네트워크 요청 횟수가 급감하고, 서버 처리 부하 역시 현저히 감소했습니다.

결과적으로 서버 대수가 줄고, 일평균 약 4천만 건 이상의 이벤트를 안정적으로 처리할 수 있게 되었습니다. 개인적인 견해로는, 단순한 기술 교체를 넘어 “운영 효율성”이라는 비즈니스 가치로 확장된 사례라 평가할 수 있습니다. 개발 효율이 인프라 절감과 사용자 만족을 동시에 이끈 대표적인 케이스입니다.

안정적인 메시지 전달 체계 구축

SSE의 도입은 단순한 비용 절감이 아니라, 메시지의 신뢰성과 안정성을 강화한 기술적 진화이기도 합니다. SSE는 서버에서 클라이언트로 단방향 실시간 스트림을 유지하여, 연결 상태가 유지되는 한 발생하는 모든 이벤트를 즉시 전달할 수 있습니다.

특히 우아한형제들은 Last-Event-ID 기능을 적극 활용했습니다. 이 기능은 클라이언트가 잠시 연결이 끊겼다가 재접속하더라도, 마지막으로 받은 이벤트 이후의 메시지를 재전송받을 수 있도록 합니다. 덕분에 프린트 명령 등과 같은 중요한 이벤트가 유실되는 일이 사라졌습니다.

모든 메시지는 Kafka와 같은 고성능 메시지 브로커를 통해 순서가 보장된 상태로 전송됩니다. 이벤트의 영속성 또한 확보되어, 서버 장애나 네트워크 불안정 상황에서도 데이터 무결성이 유지됩니다. 개인적으로 이 구조는 ‘실시간성’과 ‘안정성’을 모두 충족한 이상적인 아키텍처라 평가할 수 있습니다.

보안 강화와 세션 관리 혁신

SSE 기반 시스템의 또 다른 혁신은 보안 강화에 있습니다. 기존 MQTT 방식은 중복 연결과 세션 충돌이 발생하기 쉬웠지만, 이제 Session ID 기반 관리로 이를 해결했습니다. 하나의 기기에서 동시에 여러 연결이 생성되는 경우, 서버가 자동으로 이전 연결을 종료함으로써 보안 위험을 제거합니다.

또한 HMAC(Hash-based Message Authentication Code) 인증 절차를 통해 클라이언트가 전송하는 데이터의 무결성을 검증합니다. 데이터 위·변조를 사전에 차단함으로써, 민감한 사용자 정보가 포함된 메시지의 안전성을 보장합니다.

개인적으로 주목할 점은 보안을 단순한 ‘기능’이 아닌 ‘시스템 문화’로 정착시켰다는 것입니다. 세션 관리, 인증, 재전송 로직 등 모든 단계에서 보안이 자연스럽게 통합되어 “보안 친화형 실시간 서비스”라는 새로운 모델을 완성했습니다.

지속 가능한 기술 발전과 미래 방향

SSE 도입 이후 우아한형제들은 운영 효율뿐만 아니라 개발 효율성까지 개선했습니다. 새로운 알림 포맷을 추가할 때 클라이언트 버전 업데이트 없이 서버에서 즉시 반영할 수 있어, 배포 주기가 단축되고 유지보수 부담이 감소했습니다.

향후에는 AI 기반 로그 분석과 자동 알림 분류 기능을 도입해 알림 시스템을 한층 더 지능적으로 진화시킬 계획입니다. 기술이 단순히 빠르게 작동하는 것을 넘어, 사용자 상황에 맞춰 ‘의미 있는 알림’을 제공하는 것이 목표입니다.

개인적으로 이번 SSE 도입 사례는 “기술 중심 혁신”을 넘어 “경험 중심 혁신”으로 나아가는 상징적인 전환점이라 생각합니다. 기술의 목적은 결국 사람에게 더 나은 경험을 제공하는 것이기 때문입니다.

결론: 신뢰를 기술로 구현하다

SSE(Server-Sent Events) 도입을 통해 우아한형제들은 인프라 단순화, 네트워크 안정성, 보안 강화를 동시에 달성했습니다. 단순한 시스템 개선이 아닌, 사용자 신뢰를 기술로 구현한 사례입니다. 앞으로도 이러한 기술적 혁신이 “빠르고 안정적인 서비스”라는 브랜드 가치로 이어질 것입니다.

이 블로그의 인기 게시물

물어보새의 진화와 지식 공유 확장

우아한 디버깅 툴 개선으로 QA 업무 효율화