티스토리 뷰
과제 : https://www.notion.so/teamsparta/2-782b11918d194acbba2416a758baf146
[요구사항 분석]
1. 특강 신청 API 구현
RQ-ID | API | 요구사항명 | 요구사항 내용 |
RQ-0001 | 특강신청 | 선착순 등록 | 사용자의 userId로 특강신청을 선착순으로 가능. |
RQ-0002 | 특강신청 | 중복신청 방지 | * 특정 신청자가 신청내역에 있는지 확인 * 신청내역에 있다면 중복신청 불가 오류처리 |
RQ-0003 | 특강신청 | 특강 오픈 시간 | * 특강은 24년 4월 20일 토요일 1시에 열린다. * 그 시간이 아닐 때는 신청 불가 메시지 출력 |
RQ-0004 | 특강신청 | 최대 신청자 제한 | * 최대 30명까지 신청이 가능. * 신청내역에 30건이 되면 그 이후 신청에 대해서는 오류 출력 |
RQ-0005 | 특강신청 조회 | 사용자의 성공여부 조회 | * 사용자의 userId로 특강신청내역을 조회하는 기능 |
RQ-0006 | 특강신청 조회 | 전체 신청내역 조회 | * 전체 신청내역을 조회하는 기능 => 카운트 가능 |
[아키텍쳐 구조]
- 구조 : 레이어드 아키텍쳐 + 클린 아키텍쳐 혼합형태
- Controller <---> Service <---> Repository 구조
- 인터페이스1. 컨트롤러와 서비스 사이에 인터페이스 존재
- 인터페이스2. 서비스와 레포지토리 사이에도 존재해야 하나? DB가 바뀌어도 영향받지 않으려면 인터페이스가 필요하지 않을까??
내가 의도한 아키텍쳐
1. 클린 아키텍쳐를 도입 : Controller에서 Service 호출시 인터페이스로 호출한다.
Service 구현 로직은 알 필요 없이 인터페이스로 호출.
2. 공통모듈을 쪼갰다 : Reservation 관련 조회, 쓰기, 검증 등 공통 로직들은 하나의 작은 모듈로 만들어서 책임을 분리하였다.
3.
[데이터베이스]
테이블명 : 강의 예약내역(reservation_list)
컬럼명 | 컬럼 | 비고 |
예약 아이디 | id | 예약 내역의 고유식별 아이디 |
사용자 아이디 | user_id | 특강을 신청한 사용자 아이디 |
강의 코드 | course_code | 등록한 특강 코드(상품코드) |
강의 시작일자 | course_start_date | 강의가 시작하는 일자(4월 20일) |
예약 일자 | reservation_date | 특강 예약에 성공한 일자 |
등록 일시 | registered_at | 데이터 등록일시 |
수정 일시 | modified_at | 데이터 수정일시 |
[DB 설계 고민의 흔적]
1. 예약성공여부를 따로 필드로 만들지 않은 이유는 이미 해당 테이블에 데이터가 있는 것으로 예약이 성공한 것으로 볼 수 있기 때문이다.
2. 요청순번은 요청이 들어올 때마다 아이디를 하나씩 발급해주어야 할까?
그러면 신청내역에 요청순번이 순차적으로 되지 않을 수 있다.(예시 : 1->50->150->200 이런 순서로도 가능)
시퀀셜하게 요청순번을 순차적으로 하려면?
요청이 먼저 들어와도 등록이 나중에 되는 케이스도 있지 않을까?
3. 강의 코드 : 강의 코드를 추가한 이유는 추후에 특강이 여러개 열릴 수 있어서 확장성을 고려하여 추가
[사용한 기술]
기초 과제
- 예약 테이블만 필요
- 예약정보를 넣는 테이블
심화 과제
- 날짜를 넣기 위해서는 추가 테이블 추가
'항해플러스백엔드' 카테고리의 다른 글
[플러스백엔드] 2주차 회고 (1) | 2024.03.30 |
---|---|
[플러스백엔드] 3주차 내용 정리 : 서버 구축 (허재 멘토님) (3) | 2024.03.30 |
[플러스백엔드] 2주차 - 하헌우 코치님 멘토링(내용 정리중) (0) | 2024.03.30 |
[플러스백엔드] 2강 - 아키텍쳐 (1) | 2024.03.23 |
이석범 코치님 멘토링 (0) | 2024.03.20 |
- Total
- Today
- Yesterday
- resize
- 월부닷컴
- 내년은 빡세게!!
- 폭포수
- 부동산공부
- Inception
- 열반스쿨기초반
- 항해플러스후기
- pop_back
- 깃허브
- 항해플러스백엔드
- github
- ```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
- Spring boot
- 인셉션
- Use case
- 재테크공부
- push_back
- docker
- GIT
- 월급쟁이부자들
- 항해솔직후기
- front
- 유즈케이스
- 개발자 회고
- 깃
- 도커
- 파라메터
- 2023년
- 관계대수
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |