루퍼스 LOOPPAK 백엔드 코스 4기 수료 후기
·
루퍼스 4기
직장 동료로부터 "루퍼스"라는 현업자 대상 백엔드 부트캠프를 알게 됐습니다. 5월 9일부터 7월 25일까지, 10주 동안 진행되는 코스였고 저는 이번 4기 코스를 수료했습니다. 교육비가 할인해서 약 140만원 정도로 절대 가볍지 않은 금액이라 신청 전에 꽤 고민했습니다. 그래서 저처럼 신청할지 말지 고민하는 분들을 위해 제가 직접 겪은 경험과 후기를 최대한 솔직하게 남겨보려 합니다.지원과정지원 과정은 생각보다 간단했습니다. 구글 폼으로 몇 가지 설문 문항을 작성하고, 교육비를 결제하면 지원이 마무리되는 방식이었습니다. 다만 별도의 코딩테스트나 면접 없이 진행되다 보니, 오히려 "내가 정말 들어도 되는 교육인가"에 대한 감이 잘 잡히지 않았습니다. 신청 전에 후기를 찾아봤지만 자세하게 적힌 후기가 많지 않..
주문상품 랭킹 시스템의 장애 대응 설계기
·
루퍼스 4기
랭킹 시스템을 구현하기 전에는 단순히 주문 수나 좋아요 수를 합산해서 점수를 계산하면 되는 기능이라고 생각했는데 실제로 설계를 시작해 보니 고려해야 할 요소가 많았다. 어떤 데이터를 랭킹의 기준으로 사용할지, 이벤트는 어떻게 전달할지, Redis 장애가 발생하면 어떻게 복구할지, 신규 상품은 어떻게 랭킹에 진입시킬지까지 고민해야 했다. 이번 글에서는 랭킹 시스템을 구현하면서 고민했던 설계 과정과, 그 과정에서 선택한 방법 그리고 그 이유를 정리해보려고 한다.랭킹 데이터 지표 선정랭킹 시스템에서 가장 먼저 고민한 것은 어떤 데이터를 랭킹의 신호(Signal)로 사용할 것인가​였다.후보는 크게 세 가지였다.조회수(View)좋아요(Like)주문(Order)최종적으로는 주문 횟수와 좋아요 수만 랭킹 점수에 반..
주문 폭주를 막는 대기열, 배치 사이즈는 어떻게 정해지나
·
루퍼스 4기
블랙프라이데이, 선착순 이벤트, 한정 수량 판매와 같은 상황에서는 수천~수만 건의 주문 요청이 동시에 하나의 재고를 대상으로 몰리는데 이때 적절한 동시성 제어나 방파제 역할을 하는 대기열이 없다면 DB Lock 경합과 커넥션 풀 고갈이 발생하고, 서버 리소스 사용량이 급증한다. 이러한 구조는 응답 지연, 타임아웃과 재시도를 유발하고, 사용자 경험에서도 좋지 않으며 이는 다시 시스템 부하를 키우는 악순환으로 이어진다. 결국 수만건의 주문 요청을 완화하기 위해선 모든 요청을 한 번에 처리하려고 하는 것이 아니라, 서버가 감당할 수 있는 만큼만 순차적으로 처리해야 한다. 이를 위해 사용자 요청을 즉시 처리하는 것이 아닌 대기실에서 기다리게끔 하는 대기열이 필요하다.Redis 대기열 선택 대기열은 모든 요청이 ..
주문 도메인에서 아웃박스 패턴과 polling 스케줄러 도입기
·
루퍼스 4기
주문 생성 기능에서 사용자에게 주문 완료 알림을 발송해야 하는 로직이 추가된다면 주문 생성 로직은 다음과 같은 순서로 이루어진다.재고 차감쿠폰 사용주문 생성알림 발송알림 서버의 요청 처리 시간이 3초 소요된다고 가정하면,주문 생성 과정에서 알림 발송을 동기적으로 처리할 때 사용자는 주문이 완료되기까지 3초를 더 기다려야 한다. 이처럼 주문의 핵심 기능이 부가 기능에 의해 영향을 받는 것은 바람직하지 않다. 여기서 재고 차감, 쿠폰 사용, 주문 생성은 주문을 완료하기 위해 반드시 성공해야 하는 핵심 비즈니스 로직이지만, 알림 발송은 주문 완료와 동시에 수행될 필요 없이 사용자에게 한 번만 발송되면 된다. 사용자는 주문이 정상적으로 완료되면 주문 알림은 몇 초 정도 늦게 도착하더라도 큰 문제가 되지 않는다..