Vue.js와 Spring AOP 기반의 AccessBlock 서비스 점검 시스템 구현
핵심 내용
Vue.js 라우팅과 Spring AOP를 활용해 서비스 점검 시 접근을 차단하는 AccessBlock 시스템의 프론트엔드 및 백엔드 구현 로직과 Redis 데이터 관리 방식을 소개한다.
자세히 보기
프론트엔드 접근 제어 로직
Vue.js 기반 프론트엔드에서는 VueRouter의 beforeEach 메서드를 이용해 라우팅 전 차단 여부를 확인한다. Store에 정의된 API를 비동기로 호출해 현재 경로(to.path)가 차단 대상인지 검사하며, 차단 응답이 true일 경우 /unavailable 경로로 강제 리다이렉트 처리한다. /unavailable, /login, /logout, /block 경로는 차단 예외 처리 대상이므로 차단 여부를 확인하지 않는다.
백엔드 AOP 기반 API 차단
백엔드는 Spring AOP를 활용해 RestController로 들어오는 모든 요청을 검사한다. @Around 어드바이스를 통해 controllerPointcut과 notExcludeAccessBlockAnnotated 조건을 만족하는 요청에 대해 차단 여부를 판단한다. 차단 대상일 경우 InboundServiceException을 발생시키고, @ExcludeAccessBlock 어노테이션이 선언된 클래스나 메서드는 Aspect 수행에서 제외한다. 차단 판단 로직은 별도의 도메인으로 분리해 테스트 코드를 작성했다.
Redis를 활용한 데이터 관리
메타데이터는 구글 스프레드시트에서 BigQuery를 거쳐 Redis로 동기화된다. 3분 간격의 배치 잡을 통해 메타데이터를 전체 삭제 후 저장하는 방식으로 List 타입에 저장한다. 반면, 빈번한 추가 및 삭제가 발생하는 실행데이터는 Key 제어가 용이한 Hash 타입에 저장한다. 실행데이터는 Swagger를 통해 등록 및 조회되며, UUID 기반 ID를 채번한다. 등록 즉시 차단이 실행되고, 삭제 시 입력된 ID를 통해 즉시 차단이 해제된다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.