복잡한 읽기 정책을 쉽게 풀어보자
·
spring
개요특정 사용자가 어떤 데이터를 읽을 때 이 사용자가 데이터 읽을 수 있는지 판별하는 비즈니스 요구사항이 있을 수 있다.대표적으로 사용자의 권한, 데이터 값에 따라 읽기 정책이 정해지는 두가지 방식이 있는데, 차이가 존재한다.사용자의 권한은 데이터 값에 상관없는 정책이다.만약 사용자의 권한이 부족하다면, 데이터를 읽을 필요도 없이 필터 단에서 요청을 거절하면되기 때문에 단순하다고 볼 수 있다.반면 데이터 값에 따라 읽기 정책이 정해진다면 데이터를 읽어봐야만 이 사용자가 읽을 수 있는 데이터인지 알 수 있다.이러면 읽기 비즈니스가 복잡할 때 여러 테이블과 조인하거나 외부 상태를 체크하는 등 로직이 복잡해질 수 있고,정책이 추가될 때 기존 로직을 분석하거나 기능 구현 중 실수로 이전 정책 로직들이 변경될 수..
JPA 상태 패턴 적용하기
·
spring
상황 결재 시스템에 필요한 상태를 아주 간략하게 표현했다.사용자가 결재를 저장하고 상신요청을 하게되면 결재 라인을 타게되어 결재자가 기안문서를 볼 수 있다.이후 결재 라인에 결재자 A, B, C 가 존재한다고 가정하고 정상적인 시나리오만 작성해 본다.모두 승인하는 케이스사용자가 기안을 올리면 상태는 저장에서 상신요청으로 변경된다.A가 결재를 승인하면 결재 상태는 상신 요청에서 진행중으로 변경된다.B가 결재를 승인하면 결재 상태는 그대로 진행중이다.C가 결재를 승인하면 결재 상태는 진행중에서 완료로 종결된다.한명이라도 반려하는 케이스A가 결재를 승인하면 결재 상태는 상신 요청에서 진행중으로 변경된다.B가 결재를 반려하면 결재 상태는 반려로 종결된다.문제점위 상태 흐름대로 해피 케이스만 실행되면 좋지만 항상..
noose
'kotest' 태그의 글 목록