프로젝트 3

[ZI9ZA9] 결제 성능 개선기

🔗 github.com/wootecam-gugucon/shopping-mall 우리 ZI9ZA9(이하 지구재구) 쇼핑몰에서는 당연히 결제 기능이 존재한다. 실제 출시할 서비스가 아니지만 최대한 비슷한 환경을 구현하고 싶어 테스트 키로 토스페이먼츠를 사용했다. (자사 포인트 결제도 제공하지만 이 포스팅에서는 생략하겠다.) 💸 결제 플로우 1. 주문서 생성 원하는 의류를 장바구니에 담고 주문하기 버튼을 누르면 서버에서 주문 및 주문 상품 데이터가 생성된다. 아직 사용자가 주문을 요청만 했으므로 주문 상태는 CREATED, 결제 상태는 NONE 이다. 프론트에서는 API 응답으로 받은 주문 데이터 id로 아래 결제하기 페이지를 불러온다. 결제 수단 중 일반 결제가 토스페이먼츠 결제를 의미한다. 2. 결제 요청..

프로젝트 2024.03.17

[Floney] 카테고리 리팩토링 일대기

🍀 기존 상황 도메인 우리 가계부에서 하나의 가계부 내역은 지출/수입/이체로 구분되고, 자산과 분류 항목으로 세부적으로 다시 구분된다. 이 세 가지를 편의상 카테고리로 통칭한다. 지출/수입/이체 (이후 상위 카테고리라 칭함): 가계부 내역의 종류 분류 (이후 하위 카테고리라 칭함): 위 지출/수입/이체의 하위 분류 (ex. 식비, 월급 등) 자산 (이후 하위 자산 카테고리라 칭함): 가계부 내역의 자산 출처 (ex. 현금, 카드 등) 이를 계층적으로 정리하면 다음과 같다. 이 카테고리들은 가계부 별로 관리된다. 이 때 하위 카테고리는 가계부 생성 시 기본적으로 N개가 주어진다. 이를 기본 카테고리라고 부르겠다. 기본 카테고리는 사용자가 임의로 삭제 및 수정을 할 수 없다. 위 화면에 보이는 자산의 현금..

프로젝트 2024.03.11

[Floney] 자산 데이터 동시성 이슈 해결 삽질기

🍀 https://github.com/Floney-2023 우리 가계부에서 자산은 가계부 내역 중 지출(-)과 수입(+)의 합을 의미한다. 이 자산이라는 개념은 설계 과정부터 어려움이 있었는데, 하나의 지출 혹은 수입이 생기면 그에 따라 해당 내역 날짜 이후로 매 달의 지출 데이터가 갱신되어야 하기 때문이다. 다른 가계부 서비스를 참고해 자산이 갱신되는 특정 기간(5년)을 정해서 가계부 내역 변경 시 매 번 60개(5년 * 12달)의 자산 데이터가 갱신되도록 정하면서 이 문제는 마무리되었다. 문제 발생 - 의도되지 않은 자산 데이터 추가 생성 앱이 출시된 후, 가계부 내역을 수정하는 과정 중 자산 삭제 메서드에서 에러가 발생했다. NonUniqueResultException으로 하나의 자산 데이터만 조회..

프로젝트 2023.12.14