대용량 주문 처리 API 서버를 만들면서 Java 백엔드 기술을 정리합니다.기술 스택Spring Boot 3.2.xJava 17MySQL + JPARedis Kafka JWT 인증 주문 시스템에 필요한 테이블 5개를 설계했습니다.주문 당시 가격을 스냅샷으로 저장합니다.
JWT(JSON Web Token)는 로그인 인증에 사용되는 토큰 방식이야.핵심 포인트: 서버는 토큰을 저장하지 않는다.일반적인 세션 방식은 서버가 로그인 상태를 저장하지만, JWT는 다르다.서버는 Secret Key로 서명만 해서 클라이언트에게 토큰을 발급하고,이후
new 키워드 대신 static 메서드로 객체를 생성하는 패턴.첫째, 이름을 줄 수 있다둘째, Entity 변경이 한 곳에 집중된다Product 필드가 추가되거나 바뀌면 from() 메서드 하나만 고치면 된다.셋째, Setter가 필요 없어진다Setter 없이 객체를

기존 코드는 이런 흐름이었다:동시에 2명이 주문하면:재고가 마이너스가 되는 overselling 문제가 발생한다.Redis의 increment 연산은 원자적(Atomic) 으로 처리된다.Redis에 재고를 관리하는 서비스.키 형식은 stock:{productId} 로
4편에서 Redis로 동시성 문제를 해결했다. 이번 편에서는 Kafka를 도입해서 주문 완료 이벤트를 비동기로 처리하는 구조를 만들었다.주문이 완료되면 이메일 발송, 포인트 적립, 배송 시작 등 여러 작업이 필요하다. 이걸 동기로 처리하면 문제가 생긴다.이메일 서버가
5편까지 Redis 동시성 제어와 Kafka 비동기 처리를 구현했다. 이번 편에서는 k6를 사용해서 실제로 동시 주문이 들어왔을 때 재고가 정확히 차감되는지 성능 테스트로 검증했다.k6는 JavaScript로 테스트 스크립트를 작성할 수 있는 오픈소스 성능 테스트 툴이