여기어때, 옵저버빌리티 Right-Sizing으로 리소스 절감과 가용성 두 마리 토끼를 잡다!

by DD
1개월 전
조회수 14

Right-Sizing은 Kubernetes 환경에서 Pod의 리소스 요청(Request)을 실제 사용 패턴에 맞게 조정하는 작업으로, OOMKill 및 CPU Throttling 방지가 핵심

OpenTelemetryGrafana LGTM 스택을 활용하여 옵저버빌리티(Observability) 인프라를 구축하고, P95 사용량 기반의 리소스 사용량 측정

컴포넌트별 OOMKill 영향도 및 리소스 사용 패턴을 분석하여, 차등적인 버퍼(Buffer) 설정을 통해 리소스 절감과 가용성 확보

1주일 측정 기간5분 샘플링 간격을 기준으로, 주기적인 Right-Sizing 점검을 통해 지속적인 리소스 최적화 수행

Right-Sizing의 핵심: Memory와 CPU의 차이점

본문에 따르면 메모리(Memory) 부족 시 OOMKill(OOMKill)이 발생하여 Pod이 즉시 종료되므로 충분한 버퍼(Buffer) 확보가 필수적이다. 반면, CPU 부족 시에는 CFS(Completely Fair Scheduler)의 쿼터(Quota) 메커니즘에 의해 Throttling이 발생하며, 부하 감소 시 자연 회복된다.

Memory: OOMKill 발생 시 데이터 유실(Data Loss) 위험이 크므로, Ingester와 같이 쓰기 경로에 위치한 컴포넌트는 높은 버퍼 적용

CPU: Throttling 비율을 모니터링하며, 낮은 버퍼(Buffer) 설정으로 운영 가능

이러한 특성 차이를 고려하여, 컴포넌트별로 목표 사용률(Target Utilization)을 다르게 설정하는 것이 중요하다.

P95, Max, Avg: 적절한 리소스 사용량 측정 방식

글에서는 리소스 사용량 측정 방식에 따라 결론이 달라질 수 있음을 지적하며, P95, Max, Avg의 장단점을 분석한다.

Avg(평균): 전체 시간대의 사용량을 고르게 반영하지만, 피크(Peak) 구간의 사용량 과소평가로 인한 리소스 부족 가능성

Max(최대값): 측정 기간 중 단 한 번이라도 발생한 최고값을 기준으로, 과다 할당(Over-provisioning)으로 이어질 수 있음

P95(95번째 백분위수): 일시적 이상값을 걸러내면서도 실제 운영에서 반복되는 최대 부하 반영, 안정적인 Right-Sizing의 핵심 지표

결론적으로, P95를 기본으로 하되, Compactor와 같이 간헐적 고부하 작업을 수행하는 컴포넌트는 Max를 보조 지표로 활용한다.

Right-Sizing을 위한 목표 사용률 및 버퍼 설정

본문에서는 P95 사용량을 기준으로 적정 Request를 역산하는 방식을 제시하며, 목표 사용률(Target Utilization)을 100%가 아닌 70~80% 수준으로 설정하는 이유를 설명한다.

P95: 상위 5%의 극단값을 제외한 수치이므로, 안전 마진(Safety Margin) 확보 필요

배포 및 트래픽 변화 등 예측하지 못한 상황에 대응하기 위한 안전 여유(Safety Margin) 확보

Ingester와 같이 데이터 유실 위험이 있는 컴포넌트는 높은 버퍼, Stateless 컴포넌트는 낮은 버퍼 적용

결과적으로, 컴포넌트 특성에 따라 차등적인 버퍼 설정을 통해 리소스 효율성을 극대화한다.

Right-Sizing 적용을 위한 쿼리 및 롤백 기준

글에서는 Right-Sizing 적용을 위한 쿼리(Query) 및 롤백(Rollback) 기준을 제시하며, 단계별 적용의 중요성을 강조한다.

Memory 사용률 측정: P95 사용량 / 목표 사용률을 통해 적정 Request 역산

CPU 사용률 측정: CPU 사용률과 함께 Throttling 비율을 함께 측정하여 조치 방향 결정

롤백 기준: Stateless 컴포넌트(Distributor, Query-frontend) -> Stateful 읽기 컴포넌트(Store-gateway, Querier) -> Stateful 쓰기 컴포넌트(Ingester) 순으로 적용

각 단계마다 충분한 검증 기간(Validation Period)을 거쳐, 문제 발생 시 롤백할 수 있는 기준을 마련하는 것이 중요하다.

Right-Sizing 적용 결과 및 지속적인 관리

본문에 따르면 Right-Sizing 적용 결과, 옵저버빌리티(Observability) 인프라의 리소스 절감과 가용성 확보라는 두 가지 결과를 얻었다.

리소스 절감: 단순히 Request 수치를 낮춘 것이 아니라, 컴포넌트 특성에 맞는 기준 수립을 통해 달성

가용성 확보: OOMKill이나 Throttling 증가 없이 안정적인 운영 유지

분기별 정기 점검: 서비스 성장 및 트래픽 변화에 따라 주기적인 재검토(Periodic Review)를 통해 지속적인 리소스 최적화 수행

결론적으로, Right-Sizing은 단순한 리소스 절감 이상의 의미를 가지며, 지속적인 관리(Continuous Management)를 통해 서비스의 안정성과 효율성을 동시에 확보할 수 있다.

옵저버빌리티 Right-Sizing: 여기어때에서 기준을 만드는 법

댓글 0

첫 번째 댓글을 남겨보세요!