본문 바로가기
내일배움 과제/CH4-2(배달앱)

내가 만든 부분 회고

by GREEN나무 2025. 1. 16.
728x90

새 폴더.zip
0.02MB

 

1. 기능 및 기술 소개

1.1 핵심 기능 소개

  • 주문 현황 조회: orderInfo
  • 주문 내역 조회: paymentInfo
  • 주문 상태 수정: editStatus
  • 매장 전체 조회: allRestaurant
  • 매장 검색:
    • 식당 유형 검색: restaurantByType
    • 주소 검색: restaurantByAddress
    • 키워드 검색: searchRestaurants
    • 상세 조회: restaurantDetail
  • 매장 랭킹 조회: ranking

1.2 사용 기술 및 아키텍처

  • 프레임워크: Node.js, Express.js
  • 서비스 패턴: 컨트롤러-서비스 계층형 아키텍처
  • 비동기 처리: async/await를 활용
  • ORM: Prisma
  • Database: MySQL
  • HTTP 상태 코드: 표준화된 HTTP 응답 상태 코드 사용

구조:

  • Router: 요청을 컨트롤러로 전달
  • Controller: 서비스 호출 및 응답 처리
  • Service: 비즈니스 로직 및 데이터 검증
  • Repository: 데이터베이스와의 직접 상호작용

1.3 기술적 특징

  • 에러 핸들링: try/catch와 미들웨어로 오류 전달
  • 데이터 가공: 사용자 친화적인 데이터 제공
  • 동적 쿼리 생성: whereCondition을 사용해 ID 기반 데이터 조회
  • 모듈화: MVC 패턴 적용으로 유지보수성 향상
  • ORM 활용: Prisma로 데이터베이스와 상호작용 간소화
  • 유효성 검증: 매개변수와 결과 데이터 검증
  • 검색 기능:
    • 식당 이름, 메뉴 이름, 메뉴 소개 기반 검색 지원

1.4 데이터 처리 방식

  • 정렬: 매출 순서(totalPoint), 별점 순서(averageStar)
  • 필터링: 주소(address), 유형(restaurantType), 키워드 검색 지원
  • 데이터 구조화: JSON으로 클라이언트 친화적 응답 제공
  • 지연 로드: 필요한 필드만 선택해 쿼리 성능 최적화
  • 중첩 데이터 처리: 배열(map)을 활용해 주문 조회 데이터 생성

1.5 중요 기능 구현 방식

  • 랭킹 조회: 결제 테이블의 매출 데이터를 기준으로 정렬 후 상위 20개 레스토랑 반환
  • 매장 검색: Prisma의 contains와 OR 조건을 활용한 다중 조건 검색 구현
  • 매장 상세 조회:
    • 식당 정보, 메뉴, 리뷰, 소유자 데이터를 함께 반환
    • Prisma의 관계 모델링 활용
  • 유효성 검증:
    • 검색 키워드 누락 시 예외 처리 및 오류 메시지 제공
  • 주문/결제 데이터 처리:
    • 데이터 배열로 가공하여 직관적인 응답 제공

2. 문제점과 해결 과정

2.1 주요 문제점 및 해결 과정

  • 데이터 최적화 오류:
    • payment.order가 배열 상태임을 인지하지 못하고 최적화 시도
    • paymentId로 연결된 데이터가 중복 조회되는 문제 발생
  • Prisma 명령어 실행 문제:
    • mode: 'insensitive' 옵션이 최신 버전에서 실행되지 않음
    • where 조건으로 %${keyword}%가 작동하지 않음

2.2 기술적 난관 극복 사례

  • payment.order 배열을 forEach로 가공하여 해결
  • 고객은 userId, 가게는 restaurantId로 조회하도록 수정
  • mode: 'insensitive'를 삭제하고 한글 검색 기능에 집중
  • where 조건은 contains로 일부분만 일치해도 선택되게 구현.

3. 아쉬운 점 및 개선 방향

3.1 아쉬운 점

  • 프론트엔드 미구현으로 웹소켓 연결 기능 제공 불가
  • JEST를 활용한 테스트 미진행
  • Mocking 부족으로 데이터베이스 의존성 최소화 미흡
  • 에러 처리 방식이 단순하여 사용자 피드백 부족

3.2 개선 방향

  • 사용자 친화적인 에러 메시지 세분화
  • Mock 데이터 및 통합 테스트 프레임워크 추가
  • 비동기 작업에 대한 테스트 범위 확장
  • 웹소켓을 활용한 실시간 기능 연결

 

 


KPT (Keep, Problem, Try)

Keep  
- 프로젝트의 전반적인 구조 설계(MVC 패턴, 계층형 아키텍처)가 명확하여 개발 과정에서 유지보수성과 확장성이 높았다.  
- 상수 상태넘버와 메시지를 작성하여 코드를 수정하기 쉬워졌다.  
- 검색 기능과 데이터 가공 로직(map 활용)에서 사용자 친화적이고 데이터를 프론트에서 사용하기 쉬워졌다.  

Problem
- 초기 설계 단계에서 Prisma 최신 버전 호환성을 충분히 검토하지 않아 일부 기능에서 비효율이 발생했다.  
- 자동화 테스트와 Mock 데이터를 활용한 테스트 범위가 부족하여 의존성 문제나 예외 상황에 대한 대응이 미흡했다.  
- 프론트엔드와의 통합 및 실시간 기능(WebSocket) 구현이 이루어지지 않아 사용자 경험의 완성도가 낮았다.  

Try
- 프로젝트 초기에 기술 선택과 설계 검토를 철저히 하고, 최신 기술 사용 시 호환성 테스트를 강화해 문제를 사전에 방지한다.  
- JEST와 Mock 데이터를 활용한 테스트 환경을 구축해 모든 기능의 안정성을 점검하고, 예외 처리 로직을 개선한다.  
- 데이터 처리시 프론트엔드와의 협업을 고려한다
- 프론트엔드와 협업하여 실시간 기능을 구현하고, 사용자 친화적인 UI와 에러 메시지 설계로 프로젝트의 완성도를 높인다.  

'내일배움 과제 > CH4-2(배달앱)' 카테고리의 다른 글

주문진행, 내역 화면  (0) 2025.01.15
주문현황 프론트  (0) 2025.01.14
테스트 중에 막힌 것 250109  (0) 2025.01.09
식당 조회 api 구현  (0) 2025.01.08
6조 과제 설계  (0) 2025.01.06