최종 프로젝트 발제
추가된 점
기간 분배
최종 프로젝트에 대한 발제가 진행됐다. 이전 프로젝트 들과의 차이점은 MVP 개발 기간과 트러블 슈팅 기간이 별도로 설정되었다. 그리고 중간 발표회 이후 웨비나가 예정되어 있다.
Todo
공식적인 Todo가 추가됐다.
- 매일 5분 기록 보드 작성
- 매주 트러블슈팅 작성
- 매주 1시간 내외 튜터 피드백
중간 발표 추가
- MVP 기능 소개 및 개발 진행도
- 성능 Test & 배포
- 아직 개발하지 못한 점
- 앞으로 개발 계획
- 특이사항 및 피드백 받고 싶은 점
기술 가이드라인
- MSA 프로젝트로 개발한다.
- docker-compose 파일을 포함한다.
- Jmeter를 통한 트래픽 안정성 테스트를 한다.
- 서비스 모니터링, 장애 방지 자동화 알림 설정
팀 프로젝트
팀 편성
수강생데이터 (다면평가, 만족도 조사, 학습참여도)를 취합하여 팀이 편성 됐다. 간단하게 자기소개를 진행하고 그라운드 룰과 목표를 설정했다.
서비스 주제 선정
MSA, Kafka, Message Queue, Redis를 사용하기 적합한 주제를 각자 고민해 보고 취합해보았더니 2개 정도로 간추려졌다.
- 군중 밀집 위험도 알림 시스템
- 식당 예약 및 웨이팅 플랫폼
1번은 도메인에 대한 이해에 시간이 많이 소요될 것으로 판단해, 기술적인 고민에 집중할 수 있도록 2번으로 주제가 결정됐다. 그에 따라 기술적인 목표를 간략하게 작성하였다.
도메인 설정
주제에 따라 도메인을 설정하였다. MVP를 먼저 제작하기로 한만큼 부가적인 부분은 도전과제로 남겨두기로 하였다.
- User
- Owner
- Restaurant
- Reservation(예약)
- Queue(줄서기)
- Payment(예약금선결제)
- Notification(알림) + AI(대기예상시간)
- 확장가능
- Reword(포인트등)
- Promotion(프로모션)
- Riview(리뷰)
- Community(맛집버디구하기)
- Analytics(데이터분석)
- Admin(관리자)
담당 도메인 설정
관련 도메인끼리 묶고 담당자를 결정하기 시작했다. 유저, 인증과 관련해 이번 부트캠프에서 고민을 많이 했었던 만큼 이번에도 유저를 진행할까 했지만, 저번 프로젝트에서 담당이었지만 진행하지 못했던 알림과 AI 기능을 맡는 것으로 의견을 냈다.
팀원 | 담당 |
---|---|
A | 결제, 예약 |
B | 가게 |
나 | 알림, AI |
C | 웨이팅 |
D | 유저, 인증 |
피드백
바로 담당 튜터님께 피드백을 받으러 갔다. 다행히 주제가 잘 선정된 것 같다.
- 인원에 대해 주제가 적당하다.
- MVP에 부합하게 최소로 잘 짰다.
- 성능테스트를 단계적으로 진행하면 좋을 것 같다.
DB 락 질문
추가적으로 팀원분이 비동기로 처리할때 DB락을 고려해야하는지에 대한 질문을 하셨다.
- 동기적으로 당장에 처리해야하는데 동시성 이슈가 있을때 락으로 푼다.
- DDD, MSA를 일찍 도입한 배민같은경우 일단 비동기로 보내고 고객한테 접수가 됐다고 알려줌.
- 결제가 들어가고 트랜잭션이 완료가 되었을때 한번에 처리하지 않고 어느정도 데이터 불일치를 감수한다.
공통 모듈 질문
보통 MSA 환경에서는 모노레포(하나의 레포, 하나의 서비스) 방식으로 운영된다. 그래서 공통적인 로직은 라이브러리화해서 의존성을 주입해주는 방법을 선택한다. 하지만 이번 프로젝트에서는 멀티레포로 진행되기 때문에, 공통 모듈을 사용하고 common 코드의 의존성을 최소한으로 줄이는 방법을 권장한다.
요구사항 명세
당장 ERD나 API 명세서를 작성하기 막막하기 때문에 우리 팀은 시나리오를 먼저 작성하기로 했다. 사용자와 오너를 기준으로 시나리오를 작성했다.
- 사용자
- 공통 시나리오
- 식당 예약
- 예약 취소
- 실시간 웨이팅
- 웨이팅 미루기
- 웨이팅 취소
- 오너
- 오너 신청
- 예약 관리
- 웨이팅 관리
이를 토대로 ERD와 API 명세서 작성을 시작했고 내일까지 담당자가 작성하여 같이 컨펌을 진행하기로 했다.