전체 글 114

포인트 기반 커피 주문 결제 시스템 (프로젝트 회고)

https://github.com/Banhklo2/coffee-order-system.git GitHub - Banhklo2/coffee-order-system: Spring Boot 포인트 기반 커피 주문 결제 시스템Spring Boot 포인트 기반 커피 주문 결제 시스템. Contribute to Banhklo2/coffee-order-system development by creating an account on GitHub.github.com ☕ Coffee Order System설계대로 구현해보니 보였던 문제들과 개선 과정 📌 들어가며이번 프로젝트는 도메인 설계와 비즈니스 규칙을 먼저 정의한 뒤 구현을 시작했다. 하지만 실제 구현을 진행하면서설계 단계에서는 보이지 않았던 문제들을 마주하게 되었..

Spring 2기 과제 2026.04.03

Postman 테스트를 넘어 서비스 레이어 검증하기

문제 상황기능 구현이 끝났다고 해서, 정말로 로직이 정상적으로 동작한다고 확신할 수 있을까? 기능 구현 이후 Postman을 통해 API를 테스트하며정상 동작 여부를 확인하고 있었다. 하지만 다음과 같은 한계를 느꼈다.성공 케이스 위주의 검증만 가능예외 상황을 체계적으로 확인하기 어려움서비스 내부 로직 흐름까지 검증하기 어려움동일한 조건으로 반복 테스트하기 어려움특히 주문 생성과 같이포인트 차감, 결제 처리, 이벤트 발행이 함께 이루어지는 로직은단순 API 호출만으로는 정확한 동작을 확신하기 어려웠다.문제 인식단순히 "동작한다"는 것을 확인하는 것과"정상적으로 설계된 대로 동작한다"는 것을 검증하는 것은 다르다고 느꼈다. 특히 비즈니스 로직이 포함된 서비스 레이어는코드 수준에서의 검증이 필요하다고 판단했..

트러블슈팅 2026.04.03

인덱스 B-Tree 이해 (성능이 빨라지는 이유)

2026.04.01 - [트러블슈팅] - 인기 메뉴 조회 성능 개선 - 인덱스 도입 인기 메뉴 조회 성능 개선 - 인덱스 도입2026.03.27 - [Spring 2기 과제] - 포인트 기반 커피 주문 결제 시스템 (도메인 설계) 포인트 기반 커피 주문 결제 시스템 (도메인 설계)https://github.com/Banhklo2/coffee-order-system.git GitHub - Banhklo2/coffee-order-systsudaruuu.tistory.com 추가로 알게 된 점 (풀스캔 vs 인덱스 조회, B-Tree) 이번 성능 개선 작업을 진행하면서처음에는 다음과 같이 이해하고 있었다.최근 7일 데이터만 조회하니까 조회 범위가 줄어서 성능이 개선된다. 즉, 단순히 조회 데이터 양이 줄어든 ..

트러블슈팅 2026.04.02

인덱스 적용 이후에도 느렸던 이유 - 캐싱 도입

2026.04.01 - [트러블슈팅] - 인기 메뉴 조회 성능 개선 - 인덱스 도입 인기 메뉴 조회 성능 개선 - 인덱스 도입2026.03.27 - [Spring 2기 과제] - 포인트 기반 커피 주문 결제 시스템 (도메인 설계) 포인트 기반 커피 주문 결제 시스템 (도메인 설계)https://github.com/Banhklo2/coffee-order-system.git GitHub - Banhklo2/coffee-order-systsudaruuu.tistory.com 문제 상황인기 메뉴 조회 기능은 최근 7일간의 주문 데이터를 기준으로상위 3개의 메뉴를 조회하는 구조였다. 인덱스를 적용하여 최근 7일 데이터 범위를효율적으로 조회하도록 개선했지만,여전히 요청이 들어올 때마다 DB 조회가 발생했다.왜 캐싱..

트러블슈팅 2026.04.02

Request DTO에 @Builder를 쓰면 안 되는 이유

문제 상황주문 생성 API 테스트 중 다음과 같은 에러가 발생했다.Cannot construct instance of 'OrderCreateRequest' 요청 DTO는 다음과 같이 작성되어 있었다.@Getter@Builderpublic class OrderCreateRequest { private Long userId; private Long menuId;} 테스트 코드에서는 bulider를 사용해 객체를 생성하고 있었다.OrderCreateRequest request = OrderCreateRequest.builder() .userId(user.getId()) .menuId(menu.getId()) .build(); 하지만 실제 API 요청(@Reque..

트러블슈팅 2026.04.01

인기 메뉴 조회 성능 개선 - 인덱스 도입

2026.03.27 - [Spring 2기 과제] - 포인트 기반 커피 주문 결제 시스템 (도메인 설계) 포인트 기반 커피 주문 결제 시스템 (도메인 설계)https://github.com/Banhklo2/coffee-order-system.git GitHub - Banhklo2/coffee-order-system: Spring Boot 기반 포인트 기반 커피 주문 결제 시스템Spring Boot 기반 포인트 기반 커피 주문 결제 시스템. Contribute to Banhklo2/coffee-osudaruuu.tistory.com 문제 상황인기 메뉴 조회 기능을 구현하면서,최근 7일 데이터를 기준으로 주문 정보를 조회하는 로직을 작성했다.public List getPopularMenus() { Lo..

트러블슈팅 2026.04.01

포인트 차감 동시성 문제 해결 - 비관적 락 적용

2026.03.27 - [Spring 2기 과제] - 포인트 기반 커피 주문 결제 시스템 (도메인 설계) 포인트 기반 커피 주문 결제 시스템 (도메인 설계)https://github.com/Banhklo2/coffee-order-system.git GitHub - Banhklo2/coffee-order-system: Spring Boot 기반 포인트 기반 커피 주문 결제 시스템Spring Boot 기반 포인트 기반 커피 주문 결제 시스템. Contribute to Banhklo2/coffee-osudaruuu.tistory.com 문제 상황포인트 차감 로직을 구현하면서동시에 여러 요청이 들어올 경우 데이터 정합성이 깨질 수 있는 문제를 예상하였다.동시 요청 시 포인트 정합성 문제사용자 포인트: 5000주..

트러블슈팅 2026.04.01

주문 완료 후 외부 전송을 이벤트 기반으로 분리하며 겪은 문제

2026.03.31 - [트러블슈팅] - 외부 API 호출 비동기 처리 적용 (@Async) 외부 API 호출 비동기 처리 적용 (@Async)2026.03.31 - [트러블슈팅] - 외부 플랫폼 주문 전송 기능 - Mock API 구현 외부 플랫폼 주문 전송 기능 - Mock API 구현2026.03.27 - [Spring 2기 과제] - 포인트 기반 커피 주문 결제 시스템 (도메인 설계) 포인트sudaruuu.tistory.com 문제 상황주문 완료 후 외부 플랫폼으로 주문 정보를 전송해야 했다. 처음에는 동기 방식으로 외부 API를 호출했다.externalOrderClient.sendOrder(request); 하지만 이 경우 외부 API 응답이 느리거나 실패하면주문 처리 자체에도 영향을 줄 수 있..

트러블슈팅 2026.03.31

외부 API 호출 비동기 처리 적용 (@Async)

2026.03.31 - [트러블슈팅] - 외부 플랫폼 주문 전송 기능 - Mock API 구현 외부 플랫폼 주문 전송 기능 - Mock API 구현2026.03.27 - [Spring 2기 과제] - 포인트 기반 커피 주문 결제 시스템 (도메인 설계) 포인트 기반 커피 주문 결제 시스템 (도메인 설계)☕ Coffee Order System 📋 기확 관련 메모포인트 기반으로 커피 메뉴sudaruuu.tistory.com 문제 상황주문 생성 기능을 구현하면서결제 완료 이후 외부 플랫폼으로 주문 데이터를 전송하는 로직을 추가했다.externalOrderClient.sendOrder(...) 해당 로직은 주문 서비스 내부에서 동기 방식으로 실행되고 있었고,다음과 같은 문제가 발생할 수 있었다.외부 API 응답..

트러블슈팅 2026.03.31

외부 플랫폼 주문 전송 기능 - Mock API 구현

2026.03.27 - [Spring 2기 과제] - 포인트 기반 커피 주문 결제 시스템 (도메인 설계) 포인트 기반 커피 주문 결제 시스템 (도메인 설계)https://github.com/Banhklo2/coffee-order-system.git GitHub - Banhklo2/coffee-order-system: Spring Boot 기반 포인트 기반 커피 주문 결제 시스템Spring Boot 기반 포인트 기반 커피 주문 결제 시스템. Contribute to Banhklo2/coffee-osudaruuu.tistory.com 문제 상황과제를 진행하면서 다음과 같은 요구사항이 있었다.주문 완료 후 외부 데이터 수집 플랫폼으로 주문 정보를 전송해야 한다.(Mock API 또는 테스트 코드를 통해 구현)..

트러블슈팅 2026.03.31