AI로 스트레스 테스트 자동화, 개발자의 시간을 확보하다!

by DD
1주 전
조회수 36

카카오톡 메시징 개발팀의 스트레스 테스트 자동화 경험 공유

Locust 프레임워크를 활용한 부하 테스트 환경 구축 및 다양한 테스트 시나리오(평시, 신년 자정 트래픽) 적용

AI(Claude, Codex)를 활용하여 테스트 자동화 시스템 구축 및 테스트 결과 분석 시간 단축

AI의 한계: AI 환각(Hallucination), 배포 오류 미탐지 등, 개발자의 검증 필요

스트레스 테스트 환경 구축: Locust와 시나리오

본문에서는 카카오톡 메시징 개발팀이 Locust(Locust)를 사용하여 스트레스 테스트 환경을 구축한 과정을 설명한다. 테스트 대상 서버와 부하를 생성하는 클라이언트로 구성되며, 실제 운영 환경과 동일한 스펙의 서버를 사용한다.

Locust 워커(Locust Worker)를 활용하여 대규모 부하를 생성하고, 다양한 시나리오를 모듈별 트래픽 비율에 맞춰 관리

평시 트래픽, 신년 자정 트래픽 등 다양한 트래픽 패턴(Traffic Pattern)을 테스트하여 병목 지점(Bottleneck)을 파악

테스트 시나리오 설정을 위해 TaskXXX, TestProperties, directChatCount, multiChatCount, maxFriendCount, target 등의 설정을 활용

스트레스 테스트의 주요 케이스

메시징 개발팀은 성능에 영향을 줄 수 있는 변경 사항에 대해 스트레스 테스트를 수행하며, 과거 문제 재발 방지 및 성능 비교를 위해 테스트를 진행한다.

관측/로깅 인프라(Observability Infrastructure) 추가 시 application 처리량, CPU/메모리/네트워크 지표 검증

서버 프로토콜/프레임워크 벤치마크/포팅 테스트 시 RPS(Requests Per Second) 당 Latency 및 시스템 지표 확인

인프라 OS 변경 및 보안 시스템 추가 시 응답 시간(Response Time) 및 처리량 변화 확인

특정 유저 시나리오(예: 단톡방 입장)에 대한 임계치 테스트를 통해 도메인 특화된 문제점 파악

스트레스 테스트 지표 분석

스트레스 테스트 결과 분석은 endpoint, 시스템 자원, JVM 런타임 상태, 객체 레벨 디테일 순으로 진행된다.

Endpoint 지표(Endpoint Metrics): RPS, P50/P95/P99 응답 시간, 에러율(5xx/timeout/비즈니스 에러) 확인

시스템 자원 지표(System Resource Metrics): CPU, 메모리, I/O, 네트워크 대역폭 확인

JVM 런타임 상태(JVM Runtime State): Thread 상태, Executor queue, GC pause, Heap 사용량 추세, 커스텀 지표(Netty pending queue) 확인

객체 레벨 디테일(Object Level Detail): Heap dump, CPU profiling, Thread dump를 통해 문제 원인 분석

AI 기반 스트레스 테스트 자동화

반복적인 스트레스 테스트 과정을 자동화하기 위해 AI 툴(Claude, Codex)을 활용한다.

/deploy-target, /deploy-stress, /run-stress, /render-dashboard, /make-report 등의 스킬(Skill)을 그룹핑하여 자동화

LLM(Large Language Model)을 Orchestrator로 활용하여 스킬 호출 순서 결정 및 테스트 자동화

Subagent 위임을 통해 지표 수집 및 보고서 작성을 병렬 처리하여 시간 단축

도메인 하네스(Domain Harness)를 구축하여 LLM 프롬프트의 복잡성 감소

AI 활용의 한계와 개발자의 역할

AI를 활용한 자동화에도 불구하고, 개발자의 역할은 여전히 중요하다.

AI가 생성한 리포트의 AI 환각(Hallucination), 배포 오류 미탐지 등 문제 발생 가능성

고연차 개발자의 경험 기반 조언(예: user 수 점진적 증가)을 통해 테스트 방법론 개선

AI 결과에 대한 의심과 본인 노하우를 활용하여 결과 검증 필요

반복 작업 자동화, AI 동작 판단, AI 결과 개선을 위한 지식 제공 등 개발자의 역할 강조

메시징 서버의 스트레스 테스트 노하우와 AI 가 덜어 준 부분