admin: 설명 추가

This commit is contained in:
geonhos 2024-05-23 16:21:14 +09:00
parent 76e7504d0e
commit 3902af57e3
1 changed files with 50 additions and 0 deletions

50
poc/admin/description.md Normal file
View File

@ -0,0 +1,50 @@
# 관리자 서비스
## Stack
- Spring Boot 3.2.5
- Spring Security 6
- JWT (Json Web Token)
- JPA + QueryDsl (Java Persistence Api)
- MariaDB LTS 10.11.7
- Docker (for Database, 선택사항)
- Test Containers (for Integration Test)
## Domain 설명
- 로그인 시 Access Token 과 Refresh Token 을 발급한다.
- Access Token 만료 시 Refresh Token 을 이용하여 자동으로 재발급한다.
- Refresh Token 은 ip 를 추가 검증한다.
- Refresh Token 만료 시 로그인 페이지로 이동한다.
- 로그아웃 시 Access Token, Refresh Token 을 삭제한다.
- 서버에서 세션을 별도로 관리하지 않고 발급한 AT/RT 를 이용하여 인증/인가를 처리한다.
- 관리자는 하나의 권한을 가진다.
- 메뉴는 메뉴 그룹과 메뉴 2 Depth 로 등록하고 노출한다.
- 권한에 메뉴를 등록하여 접근할 수 있는 메뉴를 제공한다.
- 등록된 메뉴 외 접근 시 권한이 없다는 메시지를 노출한다.
- 메뉴를 등록할 때 메뉴 별 추가 권한 등록이 가능하다.
## 아키텍처
- CQRS(Command and Query Responsibility Segregation) 적용
- 상위 계층에서 하위 계층 호출은 가능하지만 하위 계층에서 상위 계층 호출은 불가하다.
(e.g. 표현 -> 응용, 도메인 호출 가능, 도메인 -> 응용 호출 불가능)
### 표현 계층
- /admin/web/**Controller.java: Client 와 통신하는 계층
- /admin/web/**WebService.java: 화면 노출을 위한 계층
- /admin/web/**QueryRepository.java: QueryDsl 을 이용한 화면에 노출할 데이터 조회
### 응용 계층
- /admin/app/**AppService.java: 비즈니스 로직을 처리하는 계층, 1 또는 N개 이상의 도메인 로직을 조합하여 도메인 Service를 호출한다.
### 도메인 계층
- /admin/domain/**/{엔티티}Service.java: 도메인 로직을 처리하는 계층
- /admin/domain/**/{엔티티}Repository.java: JPA 를 이용한 데이터 조회 및 저장
## 테스트 더블
- Test Container를 이용하여 실제 동작 테스트
- 응용 / 도메인 계층에 대해 작성한다.
- 테스트 코드 작성 시 Mock/Fake/Stub을 이용하는 것이 아닌 의존성을 주입받고 테스트 대상 클래스의 메서드를 호출하여 테스트한다.
## TODO
- 화면
- Exception 처리 (AS-IS: Unchecked Exception 처리 중, 로그인은 Checked Exception 으로 필요에 따라 추후 처리)