
Layer v.0.0.1
컨셉
- External 과 Internal의 완벽한 경계
- 각 도메인의 명확한 경계, 명확한 책임
- 모든 비즈니스 로직은 Backend Layer에 작성
- Client에 비즈니스 로직 작성 금지
External
Client
- 사용자가 직접 열람해서 사용하는 기능
- Javascript & HTML: React 오픈소스 찾아보기
- SSR(Server Side Rendering)
- Server to Server 통신 필요
API Gateway
- Client에게 단일 도메인으로 API 제공
- Backend의 API를 직접 호출하지 않고 중간에서 제어
- 사용자의 인증인가를 중간에서 catch.
- Client -> API Gateway -> Lambda -> Auth API(w/ Redis) -> User API
Internal - API
- Backend API Layer
- 주요 비즈니스 로직 작성
- 도메인 단위로 물리적 분리 (Data Storage / Code Level)
Auth API
User API
Finance API
- 금융상품에 대한 Backend API
- 금융상품 데이터 싱크를 위한 Backend JOB
- 금융상품 주요 데이터 변경 감지 & 알람 데이터 프로듀싱
Cache Layer
캐싱 레이어 고민 필요: Backend간의 호출이 필요할지?가 중요 의사결정 포인트가 될 듯?
- 1안) Client 캐시
- 2안) API Gateway - (Cache) - Backend
- 3안) Backend - (Cache) - Data Storage
Etc & Review
- 각 도메인간의 호출을 허용할 것인지?
- 커플링 이슈
- Client의 호출과 Backend가 원하는 로직이 동일한가?
- Client <-> ( ? ) <-> Backend. 신규 레이어가 필요할지
- Facade API ?
Internal - Job
- 금융감독원 API를 이용하여 데이터 수집
- 주요 데이터 변경 감지 & 알림 데이터 Producing
- 알림 데이터 Consuming & 알림 데이터 전송