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

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

제민희 AI UX라이터의 개발 여정과 성과

우아한형제들이 새롭게 개발한 AI UX라이터 ‘제민희’는 UX라이터와 개발자들이 협력하여 많은 시행착오를 겪으며 완성한 프로젝트로, 디지털 프로덕트에서 사용자의 상호작용을 원활하게 돕는 역할을 합니다. 이 과정에서 문제 정의, 기술 검증, RAG 기반의 AI 발전 등 다양한 단계들이 있었으며, 이를 통해 효율적인 라이팅 업무를 구현하기 위해 노력했습니다. 따라서 제민희는 앞으로 사용자의 의도를 더욱 깊이 이해하고 창의적인 라이팅을 지원하는 목표로 진화해 나갈 것입니다.

‘진짜 문제’ 정의와 효율화의 시작

제민희 프로젝트의 첫 단추는 문제를 정의하는 것이었습니다. 프로젝트 초반, UX라이터와 개발자는 서로의 전문성에 대한 이해가 부족했습니다. UX라이터는 자기의 역할과 필요성에 대해 설명했지만, 개발자는 기술적 제약을 먼저 논의했습니다. 여기서 문제가 다소 비협조적으로 엉켜버린 것입니다. 이러한 상황을 극복하기 위해, UX라이터들은 기존의 작업 요청을 분석했습니다. 그 결과 ‘가이드 원칙의 일관성 체크’와 ‘의미 전달을 명확히 하기 위한 문구 수정’ 요청이 전체의 상당 부분을 차지하고 있다는 사실을 발견했습니다. 한마디로, 규칙을 패턴화할 수 있는 여지가 굉장히 크다는 것이었습니다. 이를 기반으로 간결하고 일관된 답변을 전달하는 방향으로 범위를 좁히고, 기술적 판단 기준을 세우는 데 성공했습니다. 이후, 프로젝트는 기존 라이팅 업무의 비효율성 문제를 해결하기 위해 ‘자동화’라는 대안을 중심으로 구성하게 됩니다. 하지만 비록 그 길이 순조롭지만은 않았습니다. 규칙 기반 툴을 구현하기 위한 기술 검증 단계에서는 예상한 것보다 많은 복잡성이 뒤따랐고, 각종 문장부호, 날짜 및 금액 표기 등 다양한 규칙을 포함해야 했습니다. 이에 따라, 빠르게 적용할 수 있는 기존 맞춤법 검사기나 오픈소스 형태소 분석기의 활용 가능성을 점검하게 되었습니다. 그러나 이 과정에서 업체의 기술 지원 중단이나 방대한 데이터 처리의 어려움 등 많은 도전에 직면하게 되었고, 이로 인해 규칙 기반 툴이 현실화하는 데 한계가 있다는 결론에 이르게 되었습니다. 개발자들은 문제 해결을 위해 규칙 기반 접근법을 유지하며 고민하기로 했고, 이는 곧 방향 전환으로 이어지게 됩니다.

AI 친화적인 가이드 설계와 컨텍스트 엔지니어링

규칙 기반 접근법이 실패로 끝난 후, 팀은 AI를 활용한 검색 증강 생성(RAG)이라는 새로운 대안을 모색했습니다. 데이터의 일관성을 높이고 사용자 제안의 신뢰도를 향상시키기 위해 도입된 이 방법은 AI가 먼저 참고 자료를 검색한 다음 답변을 생성하게 하는 방식입니다. RAG가 구현되면서, UX라이터들은 기존의 사람 친화적 문구를 AI 중심으로 변환하기 위해 많은 노력을 기울였습니다. 예를 들어, 특정 문구에 대한 직관적인 해석이 아닌 명확한 지침을 텍스트로 작성해야 했습니다. 이러한 과정을 통해, AI가 이해하기 쉬운 형태의 가이드를 만들고, 사용자에게 정확한 정보를 전달하는 것이 가능해질 수 있었습니다. 특히, AI가 스스로 최적의 답변을 할 수 있도록 명확한 작업 규칙을 디자인하는 것 또한 후속 목표로 이어졌습니다. UX라이터는 AI가 의도한 대로 사고하고 답변할 수 있도록 '정보 환경'과 '사고 과정'을 구성하는 작업을 통해 ‘컨텍스트 엔지니어링’이라는 개념을 적용하였습니다. 이 과정에서 요청 처리 순서, 의사결정 과정, 예외 처리 및 답변 포맷 등을 표준화하여 업무 전개가 더욱 체계화될 수 있었습니다. 이를 통해 사용자는 동일한 경험을 느낄 수 있었고, AI의 응답 형태도 획일화되었습니다. 이처럼 명확한 규칙과 일관된 답변 포맷을 설계함으로써 제민희는 더욱 신뢰할 수 있는 동료로 자리매김하게 되었습니다.

제민희의 구현과 향후 발전 방향

제민희의 프로젝트가 마무리 단계에 이르러서는 개발자와 UX라이터의 전문성이 균형을 이루어야 했습니다. 다양한 LLM(Large Language Model) 후보군 중에서 제민희에 적합한 AI 모델을 선정하는 과정이 그 중 하나였습니다. 이를 위해, 각 모델의 한국어 이해도, 응답 속도, 멀티모달 지원 여부, 논리적 추론 능력을 평가하여 Gemini라는 모델을 최종 선택으로 결정했습니다. Gemini는 설계 초기 단계부터 특정한 추론을 강조하고 있어 복잡한 문장을 다루는 데 취약점을 줄일 수 있었습니다. 이와 함께, 컨텍스트를 효과적으로 유지하려는 노력도 기울였습니다. 추가적으로, RAG의 개념을 효과적으로 구현하기 위한 방안으로, UX라이터가 작성한 가이드를 바탕으로 AI에게 필요한 지식을 그대로 프롬프트에 통합하는 방식을 채택하기로 했습니다. 이 과정에서 서버 없이도 대화의 맥락을 유지하기 위해 브라우저의 IndexedDB 기술을 활용했습니다. 이는 사용자가 보다 편리하게 질문할 수 있도록 하여 AI의 정확도를 높이는 데 기여했습니다. 또한, 사용자의 언어를 시스템의 언어로 변환할 수 있도록 설계하여 다양한 사용 패턴을 확보하기 위해 지속적인 데이터 축적도 가능해졌습니다.

이 모든 과정을 통해 제민희 AI UX라이터는 본격적인 사용자 피드백과 데이터 수집에 발을 내딛게 되었습니다. 사용자의 의도를 깊이 이해하고, 기존의 비효율을 넘어서 창의적인 문구 작성에 기여하는 든든한 동료로 자리매김하기 위해 지속적으로 개선해 나갈 것입니다. 앞으로의 여정에 많은 응원 바랍니다!

이 블로그의 인기 게시물

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

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

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