썸트렌드(Sometrend) 대규모 빅데이터 분석 플랫폼 아키텍처 및 성능 최적화

🏢 Project under 주식회사 바이브컴퍼니 (VAIV): B2C 소셜 데이터 분석 플랫폼(Sometrend) 개발/운영

300억 건 규모의 데이터를 다루는 B2B/B2C 서비스의 병목 현상 해결 및 엔터프라이즈급 MSA 인프라 고도화

By 유민호

1. 프로젝트 개요 및 도입 배경

썸트렌드(Sometrend)는 300억 건 이상의 소셜 빅데이터를 수집하고 분석하는 대규모 플랫폼입니다. 기존의 모놀리식 구조와 동기식 처리 방식으로는 분석 대시보드 환경에서 발생하는 대규모 동시 API 호출과, 생성형 AI 리포트 생성 시의 긴 응답 대기 시간을 감당하기 어려웠습니다. 이를 해결하기 위해 MSA(Microservices Architecture)로의 전환과 전면적인 비동기 논블로킹 아키텍처 도입을 주도했습니다.

2. 아키텍처 설계 및 동시성 제어

⚡ 대용량 트래픽 및 API 호출 병목 최적화

분석 대시보드 환경에서는 다수의 차트 렌더링을 위해 수십 개의 동시 API 호출이 발생하며, 이는 브라우저 커넥션 제한으로 인한 치명적인 병목 현상을 유발했습니다.

  • HTTP/2 멀티플렉싱 도입: API Gateway 앞단에 위치한 Apache 리버스 프록시에 H2MaxSessionStreams 설정을 적용하여, 단일 커넥션 내에서 수백 개의 스트림을 병렬로 동시 처리하도록 아키텍처를 개선했습니다. 이를 통해 응답 속도 및 프론트엔드 렌더링 성능을 대폭 향상시켰습니다.
  • SSE(Server-Sent Events) 프로토콜 적용: OpenAI API 연동 시 발생하는 긴 응답 대기 시간을 극복하기 위해 Spring WebFlux와 Reactor Netty를 활용한 비동기 논블로킹 백엔드를 구축했습니다. 분석 리포트를 클라이언트에게 실시간 스트리밍 방식으로 제공하여 체감 대기 시간(UX)을 획기적으로 개선했습니다.

🔒 분산 환경의 데이터 정합성 보장 (Redis Distributed Lock)

마이크로서비스 환경 특성상, 무료 이용권 최초 발급 이벤트 시 다수의 사용자가 동시에 요청을 보내면 심각한 경쟁 상태(Race Condition)가 발생했습니다.

  • Redisson 기반 분산 락 모듈화: 분산 락(Distributed Lock) 프로바이더를 사내 공통 라이브러리로 모듈화하여, 중복 리소스 발급을 원천 차단하고 분산 환경에서의 완벽한 데이터 정합성을 보장했습니다.

3. 외부 연동 최적화 및 회복 탄력성(Resilience) 설계

🛡️ API 할당량 제어 및 다계층 캐싱

  • AOP 기반 Rate Limiting: 고비용의 외부 AI API 리소스 오남용을 방지하기 위해, Redis 기반의 사용량 카운터와 계정 Role 정보를 결합한 @RateLimit 커스텀 어노테이션(AOP Aspect)을 자체 구현하여 요금제별 월간 호출 쿼터를 자동으로 제어했습니다.
  • Redis 다계층 캐싱 전략: Naver OpenAPI 연동 시 발생할 수 있는 할당량(Quota) 초과 문제를 해결하기 위해, 동일 검색 조건에 대한 중복 호출을 원천 차단하는 다계층 캐시를 도입했습니다. 이를 통해 API 사용량을 획기적으로 절감하고, 외부 API 장애 시에도 캐시를 통한 서비스 연속성을 확보했습니다.

🔗 MSA 장애 격리 및 분산 트레이싱

  • Resilience4j 서킷 브레이커: 마이크로서비스 간 동기 통신(OpenFeign) 시, 타겟 서비스의 장애가 전체 시스템의 Thread Pool 고갈로 이어지지 않도록 서킷 브레이커를 적용하여 장애 전파를 완벽히 차단했습니다.
  • 전 구간 분산 트레이싱(Distributed Tracing) 인프라: Micrometer Tracing과 Brave를 도입하여, HTTP 요청부터 Feign 통신, Kafka 비동기 메시지, 그리고 내부 비동기 스레드 풀까지 전 구간에 걸쳐 MDC(traceId, spanId)가 끊김 없이 전파되도록 설계했습니다. 이를 통해 복잡한 MSA 환경에서의 에러 추적 비용을 최소화했습니다.

4. 엔터프라이즈 인증/인가 (IAM) 고도화

  • EDA 기반 비동기 가입 프로세스: B2B 고객사 초대 발송부터 가입 승인, 권한 부여로 이어지는 복잡한 워크플로우를 Kafka(Message Queue)와 커스텀 웹훅을 결합한 비동기 이벤트 주도 아키텍처(EDA)로 재설계했습니다. 시스템 간 강결합을 해소하고 대량 발송 시의 데이터 유실을 방지했습니다.
  • Multi-tenancy 인증 및 M2M 보안: Keycloak 커스텀 SPI를 자체 개발하여 기업(테넌트) 단위로 데이터와 권한이 격리되는 체계를 구축했습니다. 또한, 마이크로서비스 간 안전한 통신을 위해 Keycloak의 client_credentials Grant 타입을 활용한 SystemTokenProvider를 구현하여 내부 보안을 극대화했습니다.