피드로 돌아가기
nginx 설정 없이 우아하게 서비스 점검하기 (下)
컬리 기술블로그컬리 기술블로그
Backend

nginx 설정 없이 우아하게 서비스 점검하기 (下)

쿠팡이 nginx 설정 대신 Google Sheets + BigQuery + Redis 조합으로 서비스 점검 시스템을 재구축해 인프라 종속성 제거 및 운영자 접근성 개선

2025년 10월 10일12intermediate

Context

기존 AccessBlock 시스템은 업무용 RDBMS에 종속되어 있고, nginx 설정 수정 권한이 인프라팀에만 있으며, 비개발자(기획자, QA, 운영팀)가 직관적으로 점검 설정을 관리할 수 없었다. 클러스터/센터 단위 사용자 차단 및 특정 권한 예외 처리와 같은 세분화된 접근제어 기능이 필요했으나 기존 시스템으로는 구현이 어려웠다.

Technical Solution

  • 메타데이터 저장소를 RDBMS에서 Google Sheets로 변경: 누구나 접근 가능한 스프레드시트에서 차단 path 관리
  • Google Sheets → BigQuery → Redis 3단계 파이프라인 구축: 3분 단위 배치 작업으로 메타데이터를 Redis에 동기화하여 조회 성능 확보
  • 메타데이터와 실행데이터 분리: 메타데이터는 Google Sheets 기반 정적 관리, 실행데이터(cluster/warehouse/excludeRoles)는 Swagger API를 통한 즉시 Redis 입력/삭제
  • 데이터 구조 최적화: 메타데이터는 List 타입으로 전체 동기화, 실행데이터는 Hash 타입으로 개별 CRUD 지원
  • 다층 접근제어 로직 구현: Vue Router beforeEach 훅으로 화면 접근 제어, Spring AOP 기반 RestController 인터셉트로 API 호출 제어
  • @ExcludeAccessBlock 어노테이션 도입: 차단 예외 처리 대상 명시적 관리

Impact

아티클에서 정량적 수치(성능 수치, 레이턴시 감소, 비용 절감)가 명시되지 않음.

Key Takeaway

인프라 권한이 제한된 환경에서는 SaaS(Google Sheets, BigQuery) + 오픈소스(Redis)의 조합으로 중간 계층 구축하되, 실시간성이 필요한 데이터(실행데이터)와 배경 동기화로 충분한 데이터(메타데이터)를 명확히 분리하여 각각 최적의 저장소와 업데이트 전략을 적용해야 한다. 비기술 담당자도 운영할 수 있도록 설정 UI의 복잡성을 낮추되, 권한/클러스터/warehouse 같은 비즈니스 규칙은 API 계층에서 명확하게 구현해야 한다.


중앙화된 RDBMS 접근 권한이 없거나 nginx 설정 변경이 어려운 팀에서 서비스 점검/차단 기능을 구현할 때, Google Sheets를 소스 오브 트루스로 삼고 BigQuery 거쳐 Redis 캐시로 낮은 레이턴시를 확보하며, 휘발성 정책(cluster/권한 예외)은 별도 API로 즉시 제어하는 구조를 도입하면 인프라 종속성 없이도 세밀한 접근제어를 운영팀이 자율적으로 관리할 수 있다.

원문 읽기
nginx 설정 없이 우아하게 서비스 점검하기 (下) | Devpick