B마트 전시 도메인 CQRS 적용하기 #우아콘2021 #둘째날_새로운여정
우아콘 2021 우아한형제들 · YouTube
AI 핵심 요약
B마트 전시 도메인은 카탈로그·상품 정보를 모은 전체 트리 모델에 조회 정책과 비즈니스 로직이 집중되면서 코드 의존성과 Redis 트래픽 부담이 커졌다. 이를 해결하기 위해 전체 트리의 의존성을 정리하고 카탈로그·상품 등 필요한 데이터만 담은 조회 모델을 설계한 뒤, 명령 데이터 변경 이벤트를 Amazon SNS/SQS로 전달해 별도 컨슈머가 조회 모델을 생성하도록 바꿨다. 변경 감지에는 Hibernate 이벤트 리스너를 기본으로 사용하고 JPA 벌크 삭제처럼 리스너가 동작하지 않는 경우에는 Spring AOP를 보완적으로 적용했으며, Redis 버퍼와 주기적 벌크 갱신도 도입했다. CQRS와 이벤트 기반 처리는 조회 부하와 책임을 분리하는 데 도움이 됐지만, 저장소 간 정합성·운영 모니터링이 중요하며 이후 CDC와 Kafka Connect 적용도 검토하고 있다고 설명했다.
- CQRS는 모든 서비스에 일괄 적용하기보다 조회와 명령의 복잡성이 커진 특정 도메인부터 도입하는 편이 적절하다.
- 조회 모델은 실제 조회 로직이 필요로 하는 데이터만 담고, 가능한 한 조회 시점의 조인과 연산을 줄이도록 설계한다.
- 엔티티 변경 감지 방식은 추상화 수준과 제공 정보가 다르므로, JPA 엔티티 리스너·Hibernate 이벤트 리스너·Spring AOP의 특성을 비교해 선택한다.
- 이벤트를 건별로 처리하면 대량 변경 시 비효율적일 수 있으므로, Redis 버퍼와 주기적 벌크 처리를 활용할 수 있다.
- 저장소를 분리하면 조회 성능과 확장성은 높일 수 있지만, 데이터 정합성과 모니터링 부담도 함께 고려해야 한다.
소개
CQRS 패턴에 대해 알아보고 B마트 전시 도메인에 CQRS 패턴을 적용해 나간 과정을 공유합니다. [발표자 소개] 우태균, B마트서비스팀 서비스 이용자와 맞닿아 있는 앱 개발을 시작으로 좋은 서비스를 만들기 위한 도구로써 여러 개발 분야에 관심을 가져왔습니다. 최근에는 데이터를 기반으로한 서비스 발전과 안정적인 운영을 위해 노력하고 있습니다.
비슷한 학습 자료
컨퍼런스 우아콘 2023
대규모 트랜잭션을 처리하는 배민 주문시스템 규모에 따른 진화 #우아콘2023 #우아한형제들
컨퍼런스 우아콘 2023
[WOOWACON2023 세션 다시보기] 👉 세션 설명 5년 전 배달의민족에 합류했을 때, 주문시스템은 급격하게 증가하는 주문수를 처리하기 어려운 시스템이었습니다. 5년간 주문시스템은 “주문DB 샤딩“, “CQRS 적용” 등 여러 작업들을 통해 일 300만 건 이상의 주문수를 처리하는 안정적인 시스템이 되었습니다. 대규모 트랜잭션을 처리하는 배민 주문시스템이 변화해간 내용을 공유합니다.ㅤ ㅤ 👉 발표자 소개ㅤ 푸드주문서버개발팀 강홍구 일 300만 건 이상의 주문수를 처리하는 배민 주문시스템 서버 개발을 하고 있습니다. 내가 만든 서비스를 누군가 사용해주면 보람을 느끼는 개발자입니다. 커머스 도메인은 하나도 몰랐던 제가 5년간 주문서비스를 개발하며 경험한 경험들을 공유하고 싶습니다. 👍 추천 대상 대용량 트래픽을 처리하는 도메인의 아키텍처가 궁금하신 분 🙋🏻♀️ 세션에 대해 궁금한 점이 있다면 dev_relations@woowahan.com 으로 문의주시기 바랍...
백엔드 데이터베이스
컨퍼런스 우아콘 2023
모놀리식에서 점진적 서비스 분리: 사업과제와 병행하여 시스템 개선하기 #우아콘2023 #우아한형제들
컨퍼런스 우아콘 2023
[WOOWACON2023 세션 다시보기] 👉 세션 설명 배민상회 7년 차, 빠르게 변화하는 비즈니스와 함께, 오랜 기간 쌓이고 쌓인 레거시 코드. 거대하고 복잡해진 모놀리식 아키텍처를 개선하자는 의견은 비즈니스 과제에 밀려 후순위로 미뤄지기만 했습니다. 아키텍처 개선은 계속 미뤄지고, 빌드 속도는 점점 더 느려지고, 개발자의 생산성은 떨어지고. 악순환의 연속. 더 이상 이렇게 둘 수는 없어! 한 번에 바꿀 수 없다면 조금씩 바꿔보자. 점진적으로 모놀리식 구조에서 도메인을 분리한 과정을 소개합니다, 다른 비즈니스 과제와 병행하면서 말이죠!ㅤ ㅤ 👉 발표자 소개 배민상회개발팀 손민성 배민상회에서 사장님들을 위한 쇼핑몰을 제작하고 있습니다. 개발자의 생산성과 프로덕트의 안정성에 관심이 많으며, 좋은 방향으로 프로덕트를 가꿔나가기 위해 노력하고 있습니다. 배민상회개발팀 윤미현 사장님용 이커머스인 배민상회 서버 개발자입니다. 배민상회 서비스 초기부터 성장을 함께해왔습니다. 당연...
백엔드
컨퍼런스 우아콘 2023
Kafka를 활용한 이벤트 기반 아키텍처 구축 #우아콘2023 #우아한형제들
컨퍼런스 우아콘 2023
[WOOWACON2023 세션 다시보기] 👉 세션 설명 이벤트 기반 아키텍처를 적용했던 경험담을 공유 드립니다. 이벤트 정의부터 구현 과정 그리고 이후로 더 해볼 수 있는 것들까지, 우리가 고민했던 부분들을 이야기해보려 합니다.ㅤ ㅤ 👉 발표자 소개 딜리버리서비스팀 임준수 시행착오를 겪으며 계속 고쳐나가려는 개발자입니다. 좋은 서비스를 만들기 위해 노력하고 있습니다. 배차시스템팀 송인태 다양한 도전과 경험을 기반으로 지속 가능한 서비스를 구축 및 제공하는 데 관심이 많은 개발자입니다. 👍 추천 대상 - Kafka를 사용해 봤거나 개념에 대해 아는 개발자 - 늘어가는 시스템 복잡도로 고민이 많은 개발자 🙋🏻♀️ 세션에 대해 궁금한 점이 있다면 dev_relations@woowahan.com 으로 문의주시기 바랍니다.
백엔드 데이터베이스
컨퍼런스 우아콘 2021
웹앱 서비스 히스토리를 관리하기 위한 여정 #우아콘2021 #둘째날_새로운여정
컨퍼런스 우아콘 2021
B마트 풀필먼트시스템의 독립을 향한 여정 #우아콘2021 #둘째날_새로운여정
컨퍼런스 우아콘 2021
비즈니스가 성장할수록 시스템은 복잡해지고 커질 수 밖에 없습니다. 그 과정에서 새로운 시스템이 생겨나거나 작은 기능이 하나의 시스템으로 확장이나 통합이 되기도 하죠. B마트가 성장함에 따라 풀필먼트시스템을 점진적으로 구축한 과정에서의 경험들을 공유하고자 합니다. [발표자 소개] 최병철, 물류시스템팀 직접 경험하는 것을 소중히 생각하고 그것들을 기반으로 성장하는 경험주의자. 어떤 방법이 더 사용자에게 가치를 제공할 수 있는지 끊임없이 고민하는 개발자. 언젠가는 개발도상국에 IT 서비스를 구축해 주는 일을 하고 싶은 아키텍트 꿈나무. [발표자 소개] 반선호, B마트풀필먼트시스템팀 B마트풀필먼트시스템팀에서 B마트의 물류와 관련된 전반적인 업무를 하고 있습니다.
백엔드 데이터베이스 데브옵스 · 인프라