Nginx 없이 서비스 점검? AccessBlock으로 해결!

by DD
7개월 전
조회수 7

Nginx 설정 변경 권한 부재로 애플리케이션 레벨에서 서비스 접근을 차단하는 AccessBlock 시스템을 구축함

MySQL 기반의 AccessBlock 시스템을 구축하고, 페이지 라우팅 시 차단 여부를 확인하여 서비스 점검 페이지로 리다이렉트함

Redis 캐싱을 도입하여 RDBMS 의존성을 줄이고, 차단 여부 조회 API 응답 속도를 개선함

AccessBlock 아키텍처: MySQL 기반 설계

초기 AccessBlock 시스템은 MySQL을 사용하여 차단 목록을 관리했다. 구체적으로, access_block 테이블과 access_block_group 테이블을 통해 URL 패턴과 그룹 설정을 관리했다. 따라서, 각 페이지 라우팅 시 차단 여부를 확인하는 API를 호출하여 서비스 접근을 제어했다.

Redis 캐싱 도입: RDBMS 의존성 완화

RDBMS 의존성 문제를 해결하기 위해 Redis를 도입하여 AccessBlock 데이터를 캐싱했다. 구체적으로, AccessBlockGroup의 toggle 상태를 Redis에서 관리하고, 차단 여부 조회 API는 Redis 데이터를 활용한다. 반면, 메타데이터 변경은 여전히 RDBMS를 통해 이루어져, RDBMS 다운 시 문제가 발생할 수 있다.

향후 과제: 메타데이터 관리 개선

현재 AccessBlock 시스템은 메타데이터 관리에 RDBMS에 의존하고 있다. 따라서, RDBMS 장애 시 메타데이터 변경이 불가능하다는 문제가 존재한다. 데이터베이스 툴과 같은 UI를 제공하여, RDBMS 의존성을 완전히 제거하는 것이 향후 과제이다.

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