100% 할인 이벤트, 서버 장애의 숨겨진 원인을 파헤치다!

by DD
4년 전
조회수 10

100% 할인 이벤트로 인한 폭증하는 트래픽으로 인해 서버 장애 발생

PostgreSQLMVCC 구조와 Dead Tuple 증가가 주요 원인으로 밝혀짐

강의 소개 컬럼 분리를 통해 장애 해결 및 기술 부채 해결 노력

PostgreSQL MVCC와 Dead Tuple

PostgreSQLMVCC는 데이터 변경 시 기존 데이터를 보존하고 새로운 버전을 생성한다. 따라서 UPDATEDELETE 연산이 많아질수록 Dead Tuple이 증가한다. 구체적으로 Dead Tuple 증가는 디스크 I/O를 증가시켜 성능 저하를 유발한다.

장애 해결 과정: 컬럼 분리

장애의 근본 원인은 수강생 수 업데이트로 인한 잦은 UPDATE 쿼리였다. 따라서 강의 소개 컬럼을 별도 테이블로 분리하여 Dead Tuple 발생을 줄였다. 결과적으로 강의 테이블 병목 현상을 해결하고 서비스 안정성을 확보했다.

기술 부채와 MSA 도입에 대한 고민

인프런은 모놀리틱 아키텍처기술 부채를 경험하고 있으며, MSA 전환에 대한 고민을 시작했다. 섣부른 MSA 도입은 오히려 복잡성을 증가시킬 수 있다. 따라서 적정 수준의 모놀리틱 유지도메인 분리를 통해 확장성 확보를 시도한다.

2022년 1월 100% 할인 이벤트 장애 부검