-
AI 검증 비즈니스 프로젝트 1일차 회고(API, ERD, 테이블, 인프라 명세서 작성)회고 2024. 8. 22. 23:22
배달 앱 백엔드 서버를 구축하는 프로젝트를 시작했다. 요구사항 명세서를 해석하고, API 명세서 작성, ERD 명세서 작성, 테이블 명세서 작성, 시스템 아키텍처 작성을 하였다.
1. API 명세서 작성
요구사항 명세서를 토대로 API 명세서를 작성해야 했다. 요구사항 명세서가 자세한 편에 속했지만, 우리 팀의 입맛 대로 커스텀할 수 있는 여지가 많았다. 필수 구현 기능을 위주로 프로젝트 전체 백로그를 작성했고, URL, 권한, Request Elements와 Response Elements까지 작성하였다..
가장 헷갈렸던 부분은 각각의 권한에 따라 요청할 수 있는 API를 나누는 것이었는데, 아마 와이어프레임이 확보되지 않은 상황에서 진행해서일까 싶다. 그리고 배민 앱을 생각하고 진행하였는데, 고객으로서 어플을 쓴 입장에서 가게 주인 및 관리자의 입장까지 고려해야 해서 더더욱 헷갈린 것 같다..
시간이 많이 소요됐던 부분은 Request Elements와 Response Elements를 작성하는 부분이었는데, 요청 헤더, 요청 및 응답 예시를 작성해야 했다.. json 형식으로 예시를 작성해야 했는데, 눈으로 봐왔던 것과 직접 작성하는 것은 달랐다.
다른 사람이 보기 쉽도록, 이해하기 쉽도록 작성해야 했고, 무엇보다 우리가 봤을 때 잘 알도록 작성해야 했다. 또한, 페이징 처리를 해서 반환하는 것들도 많아서, 이 부분까지 예시로 넣는 거에 어려움이 있었다.
첫번째 API를 작성하는 데에는 많은 시간이 걸렸지만, 계속 하다보니 속도가 붙었다.. 다음 번에는 더 ㅃㄹ.. ㄱㄱ..
2. ERD 명세서 작성
Requets, Response Elements를 제외한 API 명세서 작성 후 ERD를 그리기 시작했다.. 각 엔티티에 뭐가 필요한지 생각했고 마지막에는 연관관계를 설정해서 마무리했다. 아쉬웠던 부분은, 다른 팀원이 미리 생각하고 공유했던 고민에 대해서 늦게 반응해 나중에 다시 고민하게 된 부분이었다. 1대N인가, N대N인가 하는 고민이었는데, 내일 멘토님께 질문하기로 하였다. 지금 생각해보면 아 이렇겠구나라고 생각은 들지만, 사고의 속도가 느렸던 것이 아쉽다.. ㄲㅂ!!
했던 고민에 대해서 간단하게 요약하자면, 주문 엔티티와 메뉴 엔티티의 연관관계를 어떻게 설정하느냐였다. 다른 가게의의 메뉴를 주문하려고 하면 기존 가게의 메뉴들이 삭제가 되는 플로우인데, 주문 입장에서 메뉴와는 1대N인 것은 자명했다. 메뉴 입장에서 주문과의 관계가 문제였는데, 다른 가게의 메뉴를 추가했을 때 기존 메뉴들이 삭제될 것이면, 그냥 1대N(주문 입장에서)이 아닌가..?라는 생각이 들었다.
근데 또 이미 배민은 그렇게 하고 있는데 찾은 자료에 의하면 배민은 주문과 메뉴를 N대N으로 매핑해서 중간 테이블을 생성해서 사용하고 있었다.. 아직 해결이 되지 않았지만, 조금 더 고민해 보겠다..
추가로 또다른 고민에 대해서 요약을 하자면, 결제 엔티티에 매핑된 엔티티에서 알 수 있는 컬럼 값을 넣을 것이냐였다.
조그만 더 설명하자면, 주문 하나 당 결제가 매핑이 되므로 주문 대 결제는 1대1이다. 외부 API를 통해서 결제를 요청하고 반환 값을 받는다. 그 반환 값에 있는 값을 결제 엔티티의 컬럼으로 넣어야 하느냐인데, 그 반환 값은 관계형 데이터 베이스에서 매핑된 엔티티를 통해 알 수 있는 값이다.
음.. 지금 정리하면서 드는 생각은 그 반환 값을 알기 위해서는 매핑된 엔티티를 참조해야 하기 때문에 불필요한 성능 저하가 있을 수 있어 반정규화를 해줄 수도 있을 것 같다...?이다...
근데 또 서비스 단의 로직이 아직 어떻게 될 지는 모르지만, 해당 메서드에 트랜잭션을 걸면 영속성 컨텍스트에 그 값이 있으므로 성능에는 크게 영향을 미치지 않을 것 같긴 하다... 이것 또한 조금 더 고민 ㄱㄱ!
3. 테이블 명세서 작성
ERD를 먼저 완성해서 이건 노가다였다.. 아오..
4. 시스템 아키텍처 작성
draw.io를 이용해서 했는데, 잘 못 다뤘다ㅋㅋ 왜 그림이 뒤로 안 가고 앞으로 안 오지?? ㅋㅋ 암튼 잘 완성했다...
뭔가 그래도 처음 프로젝트를 할 때를 생각해보면 많이 발전한 것 같긴 하다... 반복 숙달로 더 빠르게 ㄱㄱㄱ
근데 왜 다들 잘하지...?
아래는 오늘 완성한 산출물의 일부이다...





'회고' 카테고리의 다른 글
메일 발송 원리 (3) 2024.10.12 토큰 유효성 검사 관련 리팩토링 (0) 2024.10.07 AI 검증 비즈니스 프로젝트 - 로그인 관련 트러블 슈팅 (0) 2024.08.28 AI 검증 비즈니스 프로젝트 2일차 회고(1일차 고민 해결) (0) 2024.08.23