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

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

프런트엔드 독립 배포로 변화한 서비스 구조

우리 팀의 프런트엔드 개발 환경은 과거의 방식에서 벗어나 독립적인 배포 체계로 전환하는 과정을 거쳤습니다. 이 과정에서 index.html 파일을 프런트엔드 리포지터리로 이관하며 팀 내에서 발생했던 여러 문제를 해결하게 되었습니다. 이제는 프런트엔드 개발자들이 자율적으로 배포할 수 있는 환경이 조성되어, 효율성은 물론 역할 분담의 명확성까지 확보할 수 있었습니다.

프런트엔드 독립 배포의 의미

프런트엔드 독립 배포는 단순히 프런트엔드 리포지터리의 자율성을 강화하는 데 그치지 않습니다. 과거에는 백엔드 리포지터리에서 index.html 파일을 관리하면서 프런트엔드 개발자들이 HTML 파일의 수정이나 배포에 큰 제약을 받았습니다. 이는 서비스의 민첩성을 저하시켰고, 결국 성능 최적화 작업 또한 버겁게 만들었습니다. 독립 배포 체계 구축을 통해 프런트엔드 개발자들은 직접 HTML 파일을 수정하고 즉시 배포할 수 있게 되어, 신속하게 변화하는 사용자 요구에 대응할 수 있는 능력을 갖추게 되었습니다. 이러한 변화는 프런트엔드 리포지터리에 대한 책임을 명확히 하는 계기를 만들었습니다. 이제 프런트엔드 개발자들은 index.html 파일뿐만 아니라 모든 정적 리소스의 관리와 배포를 전적으로 담당하게 되었습니다. 이는 팀 내의 커뮤니케이션 비용을 줄이고, 문제가 발생했을 때 보다 빠른 원인 파악과 해결 방안을 제시할 수 있는 역량을 키우게 됩니다. 결과적으로 프런트엔드 독립 배포는 팀 전체의 업무 효율성을 크게 향상시켰습니다.

정적 리소스 관리의 체계적 변화

index.html 파일을 포함한 정적 리소스의 관리는 이전까지 백엔드와 프런트엔드 간의 경계가 불명확했습니다. 백엔드 리포지터리에서 모든 정적 자원을 관리하다보니, 프런트엔드 개발자는 자주 전화 연락이나 이메일을 통해 수정보다 불편을 느끼는 경우가 많았습니다. 하지만 프런트엔드 독립 배포가 자리잡으면서 이러한 문제는 해결되었습니다. 이제는 프런트엔드 팀이 직접 정적 리소스를 관리함으로써, HTML 수정 및 장애 대처가 신속하게 이루어질 수 있습니다. 이를 통해 서비스의 가용성과 성능을 극대화할 수 있게 되었습니다. 또한, 프런트엔드 개발자들은 새로운 기능을 추가하거나 수정할 때 즉각적으로 Changeset을 반영하여 불필요한 지연 없이 보다 동기화된 개발 환경을 유지할 수 있기 때문에 개발 주기가 단축되고, 결과적으로 사용자 경험이 개선되었습니다. 이번 변화는 또한 전반적인 코딩 구조의 단순화를 가져왔으며, 개발자들은 실제 비즈니스 요구에 따라 더욱 집중할 수 있는 환경을 마련하게 되었습니다. 프런트엔드 독립 배포를 통해 팀 내의 협업이 원활해지고, 각자의 전문성 또한 높아지는 선순환이 형성되었습니다.

서비스 구조 전환의 성과와 미래 방향

프런트엔드 독립 배포 구현은 다양한 긍정적인 성과를 창출했습니다. 로딩 시간과 성능이 눈에 띄게 개선되고, Lighthouse Performance 점수 또한 향상되었습니다. 내부 어드민의 로딩 시간은 72% 감소하였고, 외부 어드민의 경우에는 77%까지 감소하였습니다. 이러한 정량적 효과는 사용자 만족도를 높이고, 서비스를 사용하는 데 있어 쾌적함을 제공할 뿐만 아니라 결국 회사의 전반적인 비즈니스 성과에 기여하는 중요한 요소로 작용합니다. 향후 프런트엔드 독립 배포로 확보한 기반을 활용하여, 더 많은 기능을 개발하고 안정성을 높이는 방향으로 나아갈 계획입니다. 사용자 피드백을 수집하여 지속적인 개선 작업을 진행하고, 서비스의 품질을 한층 더 끌어올릴 것입니다. 사용자 요구에 대한 신속하고 효율적인 대응이 가능하여 서비스 향상을 위한 기반이 마련되었습니다. 프런트엔드 독립 배포는 팀워크와 신뢰를 더욱 강화하고, 개발자들이 자신의 전문성을 바탕으로 업무를 수행할 수 있게 함으로써 성공적인 서비스 제공을 목표로 하고 있습니다. 다음 단계에서는 이러한 노력들을 바탕으로 새로운 기능 개발과 서비스 확장을 모색할 예정입니다. 또한 정적 리소스의 관리와 유지 보수에 있어 더 나은 시스템과 도구를 제공하여 업무 효율성을 극대화할 것입니다.

이 블로그의 인기 게시물

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

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

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