이 상품은 구매 후 지원 기기에서 예스24 eBook앱 설치 후 바로 이용 가능한 상품입니다.
|
· 01장: 시작하기1.1 상황 정의__1.1.1 서비스 규모와 제약__1.1.2 인프라 구성__1.1.3 이 책에서의 학습 관점1.2 프로젝트 구조__1.2.1 core-enum 모듈· 02장: 상품 목록2.1 상품 목록 - 요구사항 느끼기__2.1.1 요구사항 분석__2.1.2 기술 방식 결정__2.1.3 협업과 소통2.2 상품 목록 - 코드 느끼기__2.2.1 컨트롤러와 페이징 방식__2.2.2 서비스 코드와 Finder 설계__2.2.3 엔티티 설계__2.2.4 매핑 테이블과 조회 전략__2.2.5 상품 삭제 전략2.3 상품 목록 - 개념 정리__2.3.1 격벽이란?__2.3.2 개념도 작성 원칙__2.3.3 개념의 중요도 구분__2.3.4 참조 관계와 격벽의 목적· 03장: 상품 상세3.1 상품 상세 - 요구사항 느끼기__3.1.1 상품 상세 페이지 구성__3.1.2 검토해야 할 요구사항__3.1.3 API 설계 전략__3.1.4 조직 상황별 판단 기준__3.1.5 기술적 요구사항 검토3.2 상품 상세 - 코드 느끼기__3.2.1 쿠폰 조회 시점과 API 분리__3.2.2 ProductFinder 재사용과 Price 설계__3.2.3 ProductSectionService 분리__3.2.4 RateSummary와 rateVisible 설계__3.2.5 쿠폰 타깃 조회 로직__3.2.6 갓 오브젝트 안티패턴3.3 상품 상세 - 개념 정리__3.3.1 Product와 격벽 구조__3.3.2 Price의 개념적 위치__3.3.3 개념 중요도와 계층 구분· 04장: 리뷰4.1 리뷰 - 요구사항 느끼기__4.1.1 리뷰 수정·삭제 정책__4.1.2 리뷰 작성 정책과 고아 리뷰__4.1.3 별점 산정 기준__4.1.4 리뷰 보상 정책__4.1.5 정책 변경에 유연한 설계4.2 리뷰 - 코드 느끼기__4.2.1 리뷰 조회와 ReviewTargetType__4.2.2 ReviewFinder와 확장 구조__4.2.3 ReviewService와 컴포넌트 분리__4.2.4 ReviewEntity와 ReviewKey 설계__4.2.5 ReviewPolicyValidator와 작성 정책__4.2.6 리뷰 작성·수정·삭제 정책과 ReviewManager__4.2.7 컴포넌트 분리의 장단점4.3 리뷰 - 개념 정리__4.3.1 Order 의존 구조__4.3.2 포인트 참조와 격벽__4.3.3 리뷰 기능의 핵심 흐름· 05장: QnA5.1 QnA - 요구사항 느끼기__5.1.1 질문 작성 권한과 정책__5.1.2 대댓글 구조와 운영 방식__5.1.3 비공개 기능 설계__5.1.4 API 설계와 데이터 효율__5.1.5 답변 주체와 운영 방식5.2 QnA - 코드 느끼기__5.2.1 QnA 컨트롤러 구조와 Answer 분리__5.2.2 QnA 개념 설계 - Question과 Answer의 분리__5.2.3 QnA 서비스와 findQnA 구현__5.2.4 CRUD 구현과 리포지터리 직접 사용 패턴__5.2.5 ReviewService와 QnAService 구조 비교__5.2.6 QuestionEntity와 AnswerEntity 설계__5.2.7 설계 검토와 대안적 구조5.3 QnA - 개념 정리__5.3.1 QnA 개념 구조__5.3.2 Product 의존 관계__5.3.3 개념도 작성 관점 - 테이블 구조 vs. 개념적 관계· 06장: 찜하기6.1 찜하기 - 요구사항 느끼기__6.1.1 상품 변경 시 데이터 처리 정책__6.1.2 기능 우선순위와 비용 효율__6.1.3 찜 항목 유효기간 설정__6.1.4 더블클릭 이슈와 API 설계__6.1.5 찜하기와 장바구니의 차이6.2 찜하기 - 코드 느끼기__6.2.1 컨트롤러 구조와 따닥 이슈__6.2.2 FavoriteService 구현__6.2.3 찜 목록 조회와 30일 기준__6.2.4 addFavorite 구현__6.2.5 FavoriteEntity와 favoritedAt 설계__6.2.6 소프트 딜리트와 removeFavorite6.3 찜하기 - 개념 정리__6.3.1 의존 관계 단순화와 순환 의존 방지__6.3.2 단순성 유지의 중요성__6.3.3 Product 중심 구조와 사용자 생략 이유· 07장: 포인트7.1 포인트 - 요구사항 느끼기__7.1.1 포인트 적립 정책__7.1.2 포인트 사용과 차감 정책7.2 포인트 - 코드 느끼기__7.2.1 PointController와 주요 개념__7.2.2 PointService 조회 구현__7.2.3 PointHandler - earn과 deduct__7.2.4 포인트 적립과 차감 호출 시점__7.2.5 낙관적 락과 초기 잔액 전제__7.2.6 PointAmount와 PaymentService 연동7.3 포인트 - 개념 정리__7.3.1 PointBalance와 PointHistory의 역할· 08장: 쿠폰8.1 쿠폰 - 요구사항 느끼기__8.1.1 쿠폰 개념의 재정의 - 쿠폰과 소유 쿠폰__8.1.2 유효기간·발급 정책·할인 방식__8.1.3 쿠폰 사용 정책과 결제 연계__8.1.4 현재 규모에 맞는 설계 수준8.2 쿠폰 - 코드 느끼기__8.2.1 CouponTargetEntity와 타깃 조회__8.2.2 쿠폰 다운로드와 OwnedCoupon__8.2.3 download의 책임 소재 - CouponService vs. OwnedCouponService__8.2.4 중복 다운로드 처리와 개선 방향__8.2.5 OwnedCoupon 조회와 엔티티 설계__8.2.6 쿠폰 정보 변경 시 스냅샷 전략8.3 쿠폰 - 개념 정리__8.3.1 Coupon과 OwnedCoupon 구분__8.3.2 OwnedCoupon의 계층적 위치· 09장: 장바구니9.1 장바구니 - 요구사항 느끼기__9.1.1 유효기간·가격 변경·수량 관리 정책__9.1.2 주문 연결 흐름과 다중 상품 처리__9.1.3 가격 계산 및 수량 변경 API 설계__9.1.4 재고 관리 연계 여부9.2 장바구니 - 코드 느끼기__9.2.1 CartController와 Cart·CartItem 개념__9.2.2 CartService getCart와 논리적 카트__9.2.3 addCartItem과 소프트 딜리트 재활용__9.2.4 수량 수정과 삭제 처리9.3 장바구니 - 개념 정리__9.3.1 Cart와 CartItem의 관계__9.3.2 현실 구조를 활용한 개념 설계__9.3.3 다중 카트 구조의 확장 가능성· 10장: 주문10.1 주문 - 요구사항 느끼기__10.1.1 쿠폰·포인트 적용 정책__10.1.2 다중 셀러 확장 가능성__10.1.3 재고 확인 시점__10.1.4 주문 데이터 저장 시점__10.1.5 주문 생성 경로 단순화10.2 주문 - 코드 느끼기10.3 주문 - 개념 정리__10.3.1 격벽과 의존성 최소화__10.3.2 반복적 개념도 접근법__10.3.3 Cart vs Product 우선순위__10.3.4 현실 세계를 통한 설계 검증· 11장: 결제11.1 결제 - 요구사항 느끼기__11.1.1 결제와 PG사 연동 구조__11.1.2 타임아웃과 예외 처리 설계__11.1.3 결제 실패 시나리오와 재시도 처리11.2 결제 - 코드 느끼기__11.2.1 PaymentController와 API 구조__11.2.2 결제 생성과 PaymentDiscount__11.2.3 PaymentService의 createPayment와 중복 결제 방지__11.2.4 paidAmount와 0원 결제 처리__11.2.5 콜백 성공 처리와 주문 검증__11.2.6 PG 승인 API 호출과 결제 완료 처리__11.2.7 트랜잭션 히스토리와 주문 중심 설계__11.2.8 PG 승인 이후 예외 처리 주의사항__11.2.9 결제 실패 처리와 상태 전략11.3 결제 - 개념 정리__11.3.1 주문 vs 결제 중요도__11.3.2 트랜잭션 히스토리의 위치__11.3.3 주문·결제 모듈 분리 원칙__11.3.4 주문 중심 설계의 확장성· 12장: 취소12.1 취소 - 요구사항 느끼기__12.1.1 취소 정책 확인 항목__12.1.2 취소 처리 방식과 요구사항 다시 보기12.2 취소 - 코드 느끼기__12.2.1 CancelController와 CancelRequest__12.2.2 CancelService와 PG 취소 흐름__12.2.3 Payment 상태 미변경과 Order 중심 처리__12.2.4 CancelEntity 분리 설계__12.2.5 삽입 방식 vs 업데이트 방식__12.2.6 데이터 조회 효율과 스캔 범위__12.2.7 쿠폰·포인트 복원__12.2.8 취소 설계의 두 가지 핵심 원칙12.3 취소 - 개념 정리__12.3.1 Payment와 Cancel의 격벽 여부__12.3.2 비즈니스 상황에 따른 설계 유연성· 13장: 정산13.1 정산 - 요구사항 느끼기__13.1.1 정산 기준일과 송금 주기__13.1.2 취소 건 상계 처리__13.1.3 정산 정책서의 필요성__13.1.4 수수료율과 슬라이딩 방식__13.1.5 정산 업무와 개발자의 역할13.2 정산 - 코드 느끼기__13.2.1 SettlementBatchController와 배치 구성__13.2.2 loadTargets와 테이블 분리의 이점__13.2.3 SettlementTargetLoader와 가맹점 매핑__13.2.4 시간 기반 배치의 한계와 전략__13.2.5 calculate 배치와 SettlementCalculator__13.2.6 transfer 배치와 상계 처리__13.2.7 배치 분리의 안정성과 디버깅 이점13.3 정산 - 개념 정리__13.3.1 SettlementTarget과 격벽 구조__13.3.2 전처리 계층으로서의 SettlementTarget__13.3.3 Transfer(지급) 미구현 처리· 14장: 전체 개념 정리__14.1.1 전체 개념도 분석__14.1.2 1안: 상품 기준·주문 기준 분리__14.1.3 2안: 내부·외부 영역 분리__14.1.4 3안: 영역과 선형 전략마무리 그리고 다음 스텝에 대하여예비 개발자분들에게 드리는 말
|
|
* 이 책에서 다루는 내용 *· 요구사항의 맥락을 파악하고 더 나은 질문을 찾아내는 방법· 요구사항이 코드로 구현되는 과정과 선택의 근거를 살펴보는 방법· 요구사항을 구현하는 여러 방법과 각 선택에 따르는 트레이드오프· 핵심 개념을 통해 지금 만들고 있는 소프트웨어의 구조와 흐름을 느끼는 방법· 작성된 코드를 되짚으며 설계 의도와 구현 과정을 정리하는 방법· 상품 목록과 상품 상세 기능의 모델링 및 구현· 리뷰와 Q&A, 찜하기 기능의 설계· 포인트와 쿠폰의 정책 및 데이터 처리· 장바구니와 주문 흐름의 구현· 결제와 취소 과정에서 고려해야 할 사항· 커머스 정산의 기본 구조와 설계
|