# Backend
### 팀원 소개
- 장성현
- 기술스택
- GO
- gRPC
- 설명 문서
- [리뷰 문서](https://github.com/STOVE-Milk/steam-clone/blob/develop/docs/BE_Go_code_description_JSH.md)
- 한태현
- 기술 스택
- Java/Spring
- 설명 문서
- [리뷰 문서](https://github.com/STOVE-Milk/steam-clone/blob/develop/docs/BE_Spring_code_description_HTH.md)
- 민지호
- 기술 스택
- NodeJs
- 설명 문서
- [리뷰 문서](https://github.com/STOVE-Milk/steam-clone/blob/develop/docs/FE_React_BE_NodeJS_code_description_MJH.md)
### 서버 종류 & 역할 분담
|서버명|담당자|포트 번호|url prefix|폴더명|배포 방법|
|:---:|:---:|:---:|:---:|:---:|:---:|
|Api Gateway|한태현|8080|/|api-gateway|PM2|
|인증|민지호|8081|/auth|auth|PM2|
|gRPC Gateway|장성현|8100|/store|gRPC-gateway|Docker|
|상점|장성현|8101|/store|store|Docker|
|채팅 로드 밸런서|장성현|8102|/chat|chat-lb|Docker|
|채팅|장성현|8111~8113|/chat|chat|Docker|
|결제|한태현|8200|/payment|payment|PM2|
|멤버십|한태현|8201|/membership|membership|PM2|
|라이브러리-마이 룸|한태현|8210~8213|/library|library|PM2|
|서비스 디스커버리|한태현|8761|/eureka|discovery|PM2|
### Infra 정보
|이름|담당자|포트 번호|실행 방법|
|:---:|:---:|:---:|:---:|
|MySQL|전체|3306|Docker|
|Redis|전체|6379, 6380|Docker|
|MongoDB|전체|27017|Docker|
|Image Server|한태현|80|NginX|
|RabbitMQ|한태현|15672|Daemon|
### DB 종류 & 사용 용도
- MySQL
- 영구적이고 안전하게 보관되어야 할 서비스에 필요한 전반적인 데이터를 저장하는 용도로 사용
- [DB Schema Link]()
- 사용 서버
- 서버 전체
- Redis
- 임시적인 데이터 저장, 조회 데이터 캐싱에 사용
- 채팅 Pub/Sub에 사용
- 사용 서버
- 인증: 인증 시 토큰 저장
- 결제: 카카오페이 API 임시 데이터
- 채팅: Pub/Sub
- MongoDB
- 로그 저장 용도 및 수정이 잦은 데이터 저장에 사용
- 사용 서버
- 결제: 충전/결제 로그
- 채팅: 채팅 로그, 채팅방/유저 정보 저장
### 디렉토리 구조
```
backend
├── api-gateway
├── auth
├── chat
├── chat-lb
├── discovery
├── gRPC-gateway
├── library
├── membership
├── payment
└── store
```
### 협업
- API 공유 문서
- [API 문서](https://github.com/STOVE-Milk/steam-clone/files/8103452/API.xlsx)
- ERD 수정 기록
- [ERD 수정](https://github.com/STOVE-Milk/steam-clone/wiki/%5BMilk%5D-ERD-%EC%88%98%EC%A0%95-%EB%AC%B8%EC%84%9C)
### 배포
- 개인 홈 서버를 구성하여 사용
- Ubuntu 20.04 LTS
- 기본 DNS
- fortice.iptime.org
- 추가 DNS
- fortice.co.kr