[Admin] 01_어드민 설계
00.구축 계획
momo 프로젝트가 드디어 프론트까지 마무리 되었는데 이번 플젝에서는 인프라 주로 만지고 실질적으로 구현한 기능은 몇 안되어서 아쉬운 마음에 혼자 간단한 어드민 하나를 만들어 보려고 한다. (따로 문서 만들기는 번거로워서 블로그에 대략적인 스펙과 과정 기록을 남길 예정)
스펙은 정말 심플하게 어드민 회원가입 및 로그인, 일반 회원 관리 기능과 정산 내역 조회 및 통계가 가능한 어드민을 구현해볼 예정이다.
정리해보자면 이렇게 세가지 섹션으로 구분할 수 있을 것 같은데
- 관리자 회원가입/로그인
- 회원 관리
- 정산 관리
- +통계
일단 관리자 회원은 애초에 서버 도메인을 따로 가져갈거기 때문에 별도 회원 시스템은 만들지 않고 기존 회원 테이블에 role만 구분해서 관리할 예정이다. 뭐 기업 서비스였다면 내부망에서 접근 가능하도록 하고 별도 권한 관리 어드민이 있을테니 따로 테이블 두거나 db 분리했겠지만 짧은 기간 안에 끝내야 되기 때문에 심플하게 가기로~
2FA는 지난 번 첫 플젝 때 정말 기본 이메일 인증만 구현해서 고도화 할게 있을지 제일 후순위로 두고 고민중이고
사실은 기획자로 일할 때 미니 프로젝트로 진행했던 SSO를 해보고 싶었는데 인증 서버를 별도로 운영하는건 오버스펙이기도 하고 서비스 성격이랑 전혀 맞지 않아서 마음 속에 담아만 뒀다..
그리고 회원 관리는 굳이 필요한가 싶긴 한데 어차피 정산 관리가 회원 기준으로 동작할거기 때문에 user state 변경시키는 기능(기존에user state 구분이 있긴 한데 state에 따라 분기되는 로직은 없어서 그냥 상태 변경만)이랑 회원 접속 시간 등 활동 조회 정도만 구현할 예정이다.
마지막으로 정산 관리는 조회 내역을 파싱해서 excel 파일로 다운로드할 수 있도록 해보려고 한다. 백오피스에서는 excel 파일을 제공하도록 하는 요구사항이 많으니까 정산에 적용해보긔다.
+) 통계는 유의미한 지표 몇가지를 보여줄건데 10분마다 데이터를 업데이트 칠거기 때문에 redis에서 캐싱 처리를 할 예정
구현 스펙은 이 정도가 될 것 같고 서버 같은 경우에는 어드민 서버를 분리하고 db는 기존 momo db를 사용한다.
사실 db 복제해서 데이터 마이그레이션하는게 좋겠지만 아무래도 간단한 기능 연습용으로 구축할거라 장애 문제나 성능 이슈에 대해 걱정할 규모가 아니기도 하고 기존 db 테이블을 건드릴 일도 없어서 그냥 기존 db를 쓰려고 한다.
01.주요 목표
- 관리자 회원가입/로그인
- 2FA : 이메일 인증
- 회원 관리
- 회원 정보 조회 : 개인정보 마스킹
- 회원 활동 정지
활동 내역 조회 : 마지막 접속 시간, 마지막 활동 내역
- 정산 관리
- 정산 내역 조회 : 정산 데이터 excel 추출
- 통계
- 대쉬보드용 데이터 조회
- 관리자 관리
- 관리자 로그 적재 및 조회
- view
미정. 자신 없음
02.DB 추가 구성
새로 추가되는 테이블 스키마
구분 | column | 비고 |
통계 | id |
*뷰 템플릿 적용 *통계는 보통 데이터 적재가 필요하기 때문에 별도 테이블 생성 |
admin 로그 | id,adminUserId,actionType,description |
+) 잘못 생각했다. 통계 역시 조회 데이터기 때문에 db에 적재하기보다는 레디스로 캐싱 처리하는 것이 맞겠다~
++) 라고 생각했다가 레디스 캐싱을 db 없이 할 수 있다고 생각했다니. 백오피스 통계는 보통 실무 지표로 쓰이는 데이터니 db 저장과 동시에 캐시된 데이터를 업데이트하는 방식으로 진행할겁니다요
+++) 정산 내역 조회는 기존 정산 데이터에 어드민용 데이터 결합해서 조회해오는거라 굳이 데이터 쌓을 필요가 없고 어드민용 임시 정산 조회 시스템은 운영 이슈를 핸들링 하는 용도라고 가정하기 때문에 적재 x (사실 애초에 정산 데이터를 더 디테일하게 쌓고 조회만 분리하면 될 일이지만 이미 momo 플젝은 종료되었기 때문에..)