Presentation: The Infrastructure Challenge Behind Production AI

Presentation: The Infrastructure Challenge Behind Production AI

프로덕션 환경의 진짜 난제는 데이터베이스다

많은 팀이 시스템을 구축하는 단계에서는 문제를 빠르게 해결한다. 하지만 실제 트래픽이 몰리고 지속적인 부하가 가해지는 프로덕션 환경에서는 전혀 다른 문제가 기다리고 있다. 이 발표에서 패널리스트들이 공통적으로 강조한 것은 하나다. 모델을 만드는 것은 이미 해결된 문제지만, 프로덕션 데이터베이스를 안정적으로 유지하는 것은 아직도 해결되지 않은 난제라는 점이다.

지속적인 읽기/쓰기 압박 아래에서 데이터베이스가 버텨주지 못하면, 아무리 잘 설계된 애플리케이션 레이어도 무너진다. 장애는 예고 없이 찾아오고, 그 원인을 추적하다 보면 대부분 DB 커넥션 고갈, 락 경합, 슬로우 쿼리 누적 같은 고전적인 문제로 귀결된다. 4년차 이상의 백엔드 개발자라면 이 패턴을 한 번쯤 경험했을 것이다.

스케일아웃을 가능하게 하는 아키텍처적 의사결정

패널은 장애 없이 스케일아웃하는 팀과 대규모 장애를 겪는 팀을 나누는 기준이 결국 아키텍처적 의사결정의 차이라고 진단한다. 그 차이는 주로 다음 지점에서 드러난다.

  • 읽기/쓰기 분리(Read/Write Splitting): 단순히 레플리카를 두는 수준을 넘어, 어떤 쿼리를 어느 노드로 라우팅할지 명확한 기준이 있어야 한다.
  • 커넥션 풀 전략: HikariCP 같은 풀의 maximumPoolSize를 무작정 늘리는 것은 오히려 DB에 과부하를 준다. 애플리케이션 인스턴스 수 × 풀 사이즈가 DB의 최대 커넥션 수를 초과하지 않도록 설계해야 한다.
  • 백프레셔(Backpressure) 설계: 요청이 몰릴 때 무한정 대기열을 쌓는 구조는 결국 타임아웃 폭발로 이어진다. 초과 요청을 빠르게 거절하거나 Circuit Breaker를 적용해 장애 전파를 막는 설계가 필요하다.
// HikariCP 설정 예시 - 인스턴스 수를 고려한 풀 사이즈 계산
HikariConfig config = new HikariConfig();
config.setMaximumPoolSize(10);           // 인스턴스 3개라면 총 30 커넥션
config.setConnectionTimeout(3000);      // 빠른 실패 유도
config.setIdleTimeout(600000);
config.setMaxLifetime(1800000);

운영 안정성은 설계 단계부터 고려해야 한다

많은 팀이 "일단 동작하게 만들고, 나중에 안정화하자"는 접근을 취한다. 하지만 이 발표에서 엔지니어링 리더들이 강조하는 것은 운영 안정성은 나중에 덧붙이는 것이 아니라 초기 설계부터 내재화해야 한다는 것이다.

구체적으로 재검토가 필요한 지점들은 다음과 같다.

  • 슬로우 쿼리 모니터링: 프로덕션 배포 전에 실행 계획(EXPLAIN ANALYZE)을 검토하는 문화가 있는가?
  • 스케일링 트리거 기준: CPU나 메모리가 아닌, DB 커넥션 사용률이나 쿼리 레이턴시 P99 기준으로 오토스케일링이 설정되어 있는가?
  • 장애 격리 설계: 특정 기능의 DB 부하가 전체 서비스에 전파되지 않도록 도메인별 DB 분리나 쿼리 타임아웃 정책이 적용되어 있는가?
-- 슬로우 쿼리 사전 검토 습관
EXPLAIN ANALYZE
SELECT u.id, o.total
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE u.status = 'ACTIVE'
AND o.created_at > NOW() - INTERVAL '7 days';

부하 테스트도 단순히 TPS를 높이는 것에 그치지 않고, DB 레이어까지 포함한 E2E 부하 시나리오를 구성해야 실제 장애 임계점을 사전에 발견할 수 있다.

정리

  • 프로덕션 환경에서 병목은 애플리케이션이 아닌 데이터베이스 레이어에서 발생하는 경우가 대부분이므로, DB 중심의 안정성 설계가 필수다.
  • 커넥션 풀 사이즈, 읽기/쓰기 분리, 백프레셔 설계는 스케일아웃 성패를 가르는 핵심 아키텍처 결정이다.
  • 운영 안정성은 후속 작업이 아니라 설계 단계에서 내재화해야 하며, 슬로우 쿼리 리뷰와 E2E 부하 테스트가 그 출발점이다.
Source
InfoQ
원문 보기 →
← 목록으로 돌아가기