안녕하세요! 오늘은 내일배움캠프에서 스프링 심화 과정의 프로젝트를 처음 시작한 날입니다.
어떤 일들을 진행했는지 기록해보겠습니다.
🛠️ 프로젝트 개요 및 요구사항 분석
프로젝트의 전반적인 요구사항을 살펴보면서 기술 스택과 인프라를 결정하는 시간을 가졌습니다.
저희 팀은 Spring Boot와 PostgreSQL을 사용하기로 결정했습니다. 이 외에도 AWS EC2, S3, Google AI Studio 등을 활용할 계획입니다.
📌 ERD 설계 및 테이블 명세서 작성
요구사항을 분석한 뒤 **ERD(Entity Relationship Diagram)**를 작성했습니다.
데이터 모델을 정의하면서 어떤 테이블이 필요할지, 각 테이블 간 관계를 어떻게 설정할지 고민했습니다.
아래는 정리한 ERD입니다.
이 과정에서 특히 주문(Order), 사용자(User), 가게(Store) 관련 테이블의 관계를 고민하는 시간이 많았습니다.
다양한 필드와 연관관계를 정의하면서, 어떤 컬럼이 꼭 필요한지 계속해서 논의했습니다.
⚙️ 시스템 아키텍처 설계
ERD를 정리한 뒤, 백엔드 인프라 아키텍처도 정의했습니다.
저희 프로젝트의 핵심 구조는 다음과 같습니다.
- Spring Boot API (8080 포트)
- 비즈니스 로직을 처리하는 핵심 서버
- 사용자 요청을 처리하고 데이터베이스와 연결
- PostgreSQL (5432 포트)
- 서비스의 데이터를 저장하는 메인 데이터베이스
- AWS EC2
- Spring Boot API 및 PostgreSQL을 호스팅할 서버
- AWS S3
- 정적 파일(메뉴 사진 등)을 저장하는 스토리지
- Google AI Studio
- 메뉴를 등록할 때, AI가 자동으로 메뉴 설명을 작성하는 기능을 추가할 예정
아래는 아키텍처 다이어그램입니다.
🔐 사용자 권한 및 가게 생성 정책 논의
오늘 가장 많이 고민한 부분 중 하나가 사용자 권한(Role) 및 가게(Store) 생성 정책입니다.
현재 권한은 다음과 같이 정의했습니다.
- USER : 일반 사용자
- OWNER : 가게를 운영하는 사장님
- MANAGER : 매니저 (가게 관리 가능)
- MASTER : 최고 관리자
가게 생성 절차도 정리했습니다.
1️⃣ OWNER가 가게 생성 요청을 하면, 관리자가 승인
2️⃣ 승인 후 OWNER가 메뉴 및 설정을 등록 가능
3️⃣ MANAGER도 가게 생성이 가능해야 할까? 🤔
4️⃣ MASTER가 모든 가게를 관리할 수 있도록 설정해야 할까?
이 부분에서 현업에서는 어떻게 진행하는지 고민이 많았습니다.
이건 내일 멘토님께 질문해보기로 했습니다.
💰 환불 처리 절차 고민
오늘은 환불 처리 절차에 대해서도 많은 논의를 했습니다.
환불 정책을 어떻게 정의할지, 어떤 상태 값이 필요한지 등을 고민했습니다.
✅ 기본적인 환불 절차
1️⃣ 사용자가 주문을 취소하거나, 가게에서 주문을 거절한 경우
2️⃣ 주문 상태가 "환불 요청" 상태로 변경됨
3️⃣ 가게(OWNER 또는 MANAGER)가 환불을 승인 또는 거절
4️⃣ 승인 시 결제 내역을 조회 후, 환불 API 호출
5️⃣ 환불 완료 후, 주문 상태를 "환불 완료"로 업데이트
🤔 고민한 점
- 환불 요청을 모든 사용자가 할 수 있게 해야 할까?
- 결제 시점은 언제가 되어야할까? 가게가 승인 이후? 주문이 요청된 시점?
- 유저가 환불 요청을 보내고 가게에서 직접 환불을 승인해서 진행하는 것이 맞을까? 아니면 관리자(MASTER)만 가능해야 할까?
📝 오늘의 회고
✔ API 문서 작성이 생각보다 오래걸렸다.
✔ 권한 관련 정책을 정하는 게 가장 많은 토론을 필요로 했다.
✔ 환불 절차를 어떻게 구현할지 고민이 많았다.
✔ 멘토님께 가게 생성 권한 및 환불 절차 관련 질문을 정리해야겠다.
댓글