기술 블로그 (Tech Blog)/Project-coopang (20) 썸네일형 리스트형 repository 설계 Repository 패턴과 QueryDSL 기반 동적 쿼리 구현을 결합했습니다.유지보수성: 기본 CRUD와 커스텀 로직을 분리.확장성: 새로운 기능 추가가 용이.성능 최적화: 페이징과 카운트 쿼리를 분리하여 성능 최적화.타입 안정성: QueryDSL을 사용해 컴파일 타임 검증 가능.DDD 원칙 준수: 도메인 계층과 인프라스트럭처 계층의 책임 분리. Repository 구조 HubRepository (도메인 인터페이스):DDD에서 "도메인 계층"에 속하며, 도메인 요구사항에 따른 저장소 인터페이스를 정의.핵심 비즈니스 로직과 연계된 메서드를 제공 (e.g., findByHubIdAndIsDeletedFalse).HubJpaRepository (구현체):Spring Data JPA를 사용하여 기본적인 CRU.. Coopang 프로젝트: 멀티 모듈 구조와 역할 정리 Coopang 프로젝트: 멀티 모듈 구조와 역할 정리프로젝트 개요Coopang 프로젝트는 각 기능별로 모듈을 분리하여 유지보수성과 확장성을 극대화한 멀티 모듈 구조를 채택했습니다.각 모듈은 독립적인 기능을 제공하면서도, 다른 모듈과 상호작용하여 전체 애플리케이션을 유기적으로 구성합니다. 프로젝트 구조coopang├── BOOT (Server)│ ├── gateway│ ├── user│ ├── hub│ ├── product│ ├── order│ ├── delivery│ └── ainoti├── CLOUD (System)│ └── eureka├── DATA│ ├── api-data│ └── core-data├── INFRA (Integration)│ ├── auth-.. Coopang 프로젝트: Stateless 구조와 코레오그래피 기반 SAGA 패턴 적용 사례Stateless 구조코레오그래피 기반 SAGA 패턴 적용 사례 Coopang 프로젝트에서는 Stateless 구조와 코레오그래피 기반 SAGA 패턴을 활용하여, 마이크로서비스 간의 데이터 일관성과 트랜잭션 관리를 효과적으로 구현했습니다. 이번 글에서는 프로젝트에서 적용한 설계 흐름과 주요 특징을 소개합니다. https://github.com/dev-wonny/coopang/issues/52#issuecomment-2401670930 [시나리오] 수정사항 · Issue #52 · dev-wonny/coopang github.comGit Project에서 stateless 시나리오 과정을 자세히 볼 수 있습니다.Stateless 구조Stateless는 서버가 요청 간의 상태를 유지하지 않는 구조를 의미합니다.각 요청은 독립적이어야 하며, 필요한 모든 정보를 클라이언트에.. local 통합 테스트 seed data 슬랙으로 메세지 보내기 Today I Learn ✍🏼 오늘 하루 가장 인상 깊었던 배움에는 뭐가 있었지? 그 배움까지 다가가는데 어떤 어려움이 있었지? 그 어려움을 해결하기 위한 나의 시도들은 무엇이 있었지? 그 과정에서 나는 무엇을 깨달았고, 어떤 감정/생각이 들었었지? 이 상태에서 이후 더 나은 내가 되려면 무엇을 보완하지? mapper Today I Learn ✍🏼 오늘 하루 가장 인상 깊었던 배움에는 뭐가 있었지? 그 배움까지 다가가는데 어떤 어려움이 있었지? 그 어려움을 해결하기 위한 나의 시도들은 무엇이 있었지? 그 과정에서 나는 무엇을 깨달았고, 어떤 감정/생각이 들었었지? 이 상태에서 이후 더 나은 내가 되려면 무엇을 보완하지? package com.coopang.user.presentation.request;import jakarta.validation.constraints.Email;import jakarta.validation.constraints.NotBlank;import jakarta.validation.constraints.Pattern;import lombok.Getter;import lombok.Sette.. gateway 라우팅 에러 해결하기 Today I Learn ✍🏼 오늘 하루 가장 인상 깊었던 배움에는 뭐가 있었지? 그 배움까지 다가가는데 어떤 어려움이 있었지? 그 어려움을 해결하기 위한 나의 시도들은 무엇이 있었지? 그 과정에서 나는 무엇을 깨달았고, 어떤 감정/생각이 들었었지? 이 상태에서 이후 더 나은 내가 되려면 무엇을 보완하지? 과거에는 됐는데, 지금은 안 되요.gatewayRouteLocator로 라우팅이 되는데처음 프로젝트때 했던 application-local.yml로 라우팅이 되지 않는다.뭐가 문제일까? 게이트 웨이 필터를 열심히 쓰고 게이트웨이에서 유저 서버를 유레카에 등록된 것으로 부르려고 하는데application.yml 로는 라우팅이 안되고 GatewayConfig로만 가능했다.작동은 되니까 넘어갈까.. 했지.. 협업 과정에서의 문제 해결과 카프카 메시징 구조 개선 Today I Learn ✍🏼 1. 배송 시나리오 문제팀원 민철님이 작성한 배송 시스템의 Kafka 시나리오에서 오류를 발견했습니다.배정이 완료된 이후에도 오후 4시에 스케줄링 작업으로 단순히 주문 상태를 '배정중'에서 '배정완료'로 변경하는 동작만 하고 있었습니다.문제점: 스케줄링 작업에서 배송 기사를 배정하는 로직이 빠져 있었고, 데이터를 처리하는 방식도 비효율적이었습니다. 배송 프로세스 제시저는 팀원들에게 오후 4시 스케줄링 작업에서 배정중 → 배정완료로 상태만 변경하는 대신, 두 가지 방법 중 하나를 선택하라고 가이드를 주었습니다:배정 작업을 한 번에 Bulk Insert로 처리하거나,Kafka를 통해 하나씩 메시지를 보내서 처리하는 방식으로 변경.시간이 부족했기에 이 문제는 우선순위를 .. 이전 1 2 3 다음