분류 전체보기 141

[개발서적] 도메인 주도 설계 첫걸음 4부(ch16) 요약 (2)

Ch16. 데이터 메시이번 장에서는 분석 데이터 관리 아키텍처(analytical data management architecture), 일명 메시(data mesh)에 대해서 배워보자. [분석 데이터 모델과 트랜잭션 데이터 모델의 비교]분석 데이터는 회사에 축적된 데이터를 활용하여 비즈니스를 최적화하는 방법에 대한 통찰을 얻고 고객의 요구사항을 더 잘 이해하며 기계 학습(ML) 모델의 훈련을 통해 자동으로 의사결정을 내릴 수 있는 힘을 준다. 분석 모델(OLAP)과 실시간 데이터 모델(OLTP)은 서로 다른 유형의 사용자를 지원하고, 다른 종류의 유스케이스를 구현하며, 그래서 결국에는 다른 설계 원칙을 따른다. 실시간 데이터 모델은시스템의 비즈니스 도메인에 속한 다양한 엔티티를 중심으로 구축되고, 이들..

Book Notes 2026.01.14

[개발서적] 도메인 주도 설계 첫걸음 4부(ch14~15) 요약 (1)

Ch14. 마이크로서비스[서비스란 무엇인가?]OASIS에 따르면, 서비스는 미리 정의된 인터페이스를 사용해 하나 이상의 역량에 접근하기 위한 메커니즘이다.여기서 미리 정의된 인터페이스란 서비스로부터 데이터를 넣고 빼는 모든 메커니즘을 말한다. 랜디 숍(Randy shoup)은 서비스의 인터페이스를 외부에 노출되는 시스템 영역(front door)에 두는 것을 좋아한다. 서비스의 퍼블릭 인터페이스는 서비스 자체, 즉 서비스가 노출하는 기능을 정의한다. 이를 염두에 두고 마이크로서비스의 정의를 알아보자. [마이크로서비스란 무엇인가?]마이크로서비스는 자신의 마이크로 퍼블릭 인터페이스, 즉 마이크로 프론트 도어(micro-front door)에 의해 정의되는 서비스다. 마이크로서비스는 자신의 데이터베이스를..

Book Notes 2026.01.13

[개발서적] 도메인 주도 설계 첫걸음 3부(ch12~13) 요약 (2)

Ch12. 이벤트스토밍 이번 장에서는 이벤트스토밍에 대해 알아보자.이벤트스토밍은 사실상 도메인 지식을 공유하고 유비쿼터스 언어를 구축하는 방법 중 하나다. [이벤트스토밍이란?]이벤트스토밍은 사람들이 모여 비즈니스 프로세스에 관해 브레인스토밍을 하고 신속하게 모델링 하기 위한 로우테크 활동이다.어떻게 보면 비즈니스 도메인 지식을 공유하기 위한 전술적 도구다. 이벤트스토밍에는 범주(scope), 즉 참가자가 다룰 비즈니스 프로세스가 있다.참가자는 포스트잇을 활용하여 일련의 도메인 이벤트를 시간의 흐름에 따라 표현한다. 모델의 모든 구성요소가 비즈니스 프로세스의 작동 방식을 설명할 때까지 단계별로 액터, 커맨드, 외부 시스템 등의 개념을 모델에 추가하여 개선한다. [이벤트스토밍에 무엇이 필요한가?]이벤트스토밍..

Book Notes 2026.01.11

[개발서적] 도메인 주도 설계 첫걸음 3부(ch10~11) 요약 (1)

Ch10. 휴리스틱 설계 이번 장은 1부와 2부의 가교 역할을 한다.우선, 휴리스틱의 정의가 무엇인지부터 알아보자. [휴리스틱]휴리스틱은 모든 상황에 맞게 보장되고 수학적으로 검증된 규칙이 아니다.오히러 완벽한 것을 보장하지 않지만 당면한 목적에 충분할 만큼의 경험에 기반한 규칙이다.즉, 휴리스틱은 가장 중요한 단서에서 느껴지는 것에 집중하여 효과적으로 문제를 해결하는 접근법이다. [바운디드 컨텍스트]바운디드 컨텍스트의 최적의 크기는 무엇일까? 여러 바운디드 컨텍스트에 영향을 미치는 소프트웨어의 변경은 비싸고 수많은 조율이 필요하다. 바운디드 컨텍스트의 경계를 무효화하는 변경은 일반적으로 비즈니스 도메인이 잘 알려져 있지 않거나 비즈니스 요구사항이 빈번하게 바뀔 때 발생한다. 넓은 바운디드 컨텍스트의 ..

Book Notes 2026.01.11

[개발서적] 도메인 주도 설계 첫걸음 2부(ch7~9) 요약 (2)

Ch7. 시간 차원의 모델링 [이벤트 소싱]프레드 브룩스의 추론을 사용해서 이벤트 소싱 패턴을 정의하고, 이것이 기존의 모델링과 데이터 저장 방식 측면에서 어떻게 다른지 이해해보자. 먼저 표 7-1의 데이터를 살펴보자. 이것은 텔레마케팅 시스템에서 잠재 고객 또는 리드를 관리하는데 사용하는 테이블임에 분명하다. 다양한 상태를 조사하여 각 잠재 고객의 처리 주기를 가정할 수도 있다.판매 흐름은 NEW_LEAD 상태의 잠재 고객과 함께 시작한다.판매 전화는 제안에 관심이 없는 사람(리드가 CLOSED), 후속 전화 예약(FOLLOWUP_SET), 또는 제안 수락(PENDING_PAYMENT)으로 종료될 수 있다.결제가 성공하면 리드가 고객으로 전환(CONVERTED)된다. 결제가 실패할 수도 있다(PAYM..

Book Notes 2026.01.11

[개발서적] 도메인 주도 설계 첫걸음 2부(ch5~6) 요약 (1)

Ch5. 간단한 비즈니스 로직 구현 비즈니스 로직은 소프트웨어에서 가장 중요한 부분이며, 애초에 소프트웨어를 구현한는 이유이기도 하다.모든 하위 도메인마다 전략적 중요성과 복잡성은 다르다. 이번 장에서는 비즈니스 로직 코드를 모델링하고 구현하는 다양한 방법에 대해 검토해 보자. [트랜잭션 스크립트] “프레젠테이션으로부터 단일 요청을 처리하는 여러 프로시저를 모아서 비즈니스 로직을 구현하라”- 마틴 파울러 시스템의 퍼블릭 인터페이스는 그림 5-1과 같이 사용자가 실행할 수 있는 비즈니스 트랜잭션의 모음으로 볼 수 있다.이러한 트랜잭션은 시스템에서 관리하는 정보를 검색, 수정 또는 둘 다 할 수 있다. 트랜잭션 스크립트 패턴은 프로시저를 기반으로 시스템의 비즈니스 로직을 구성하며, 각 프로시저는 퍼블릭 인터..

Book Notes 2026.01.11

[개발서적] 도메인 주도 설계 첫걸음 1부(ch3~4) 요약 (2)

Ch3. 도메인 복잡성 관리 프로젝트의 성공을 보장하려면 소프트웨어 엔지니어로부터 도메인 전문가에 이르기까지 모든 이해관계자가 의사소통에 사용할 수 있는 유비쿼터스 언어를 개발하는 것이 중요하다. 우리의 목표는 유비쿼터스 언어를 사용하여 소프트웨어 설계의 의사결정을 내리는 것이기 때문에 언어는 명확하고 일관성이 있어야 한다.그러나 같은 비즈니스 도메인이어도 도메인 전문가마다 서로 다른 모델을 사용할 수 있다. 예제를 살펴보자. [일관성 없는 모델]2장의 텔레마케팅 회사의 예를 보자. 회사의 마케팅 부서는 온라인 광고를 통해 리드(lead)를 생성한다.영업 부서는 잠재고객이 제품이나 서비스를 구매하도록 유도하는 역할을 하며, 이것이 그림 3-1에 나와 있다. 도메인 전문가의 언어를 살펴보면 특이한 점이..

Book Notes 2026.01.10

[개발서적] 도메인 주도 설계 첫걸음 1부(ch1~2) 요약 (1)

Ch1. 비즈니스 도메인 분석하기 도메인 주도 설계 수업 시간에 이 내용을 가르치면 학생들이 “우리가 이것을 알아야 하나요?”라고 이야기한다.정답은 “그렇다”이다.효과적인 솔루션을 설계하고 구축하기 위해서는 그것의 바탕이 되는 문제를 이해해야 한다. [비즈니스 도메인이란?]비즈니스 도메인이란 회사가 고객에게 제공하는 서비스를 말한다. 예를 들면패덱스는 배송 서비스를 제공한다.스타벅스는 커피로 가장 잘 알려져 있다.월마트는 가장 널리 알려진 소매업체 중 하나다.기업은 여러 비즈니스 도메인을 운영할 수 있다.예를 들어 아마존은 소매와 클라우드 서비스를 모두 제공한다.우버는 차량 공유 회사이면서 음식 배달 및 자전거 공유 서비스도 제공한다. 회사는 비즈니스 도메인을 자주 변경할 수도 있다. [하위 도메인이란?..

Book Notes 2026.01.10

[개발서적] Clean Architecture 6부(ch30~34) 요약 (4)

Ch30. 데이터베이스는 세부사항이다.아키텍처 관점에서 볼 때 데이터베이스는 엔티티가 아니다.즉, 데이터베이스는 세부사항이라서 아키텍처의 구성요소 수준으로 끌어올릴 수 없다.데이터베이스는 일개 소프트웨어이며, 데이터에 접근할 방법을 제공하는 유틸리티다. 이러한 유틸리티는 저수준의 세부사항(메커니즘)일 뿐이라서 아키텍처와는 관련이 없다. [관계형 데이터베이스]관계형 데이터베이스는 세부사항이다.관계형 테이블은 특정한 형식의 데이터가 접근하는 경우에는 편리하지만, 데이터를 테이블에 행 단위로 배치한다는 자체는 아키텍처적으로 볼 때 전혀 중요하지 않다.애플리케이션의 유스케이스는 이러한 방식을 알아서는 안되며 관여해서도 안 된다. 많은 데이터 접근 프레임워크가 테이블과 행이 객체 형태로 시스템 여기저기에서 돌아다..

Book Notes 2025.12.15

[개발서적] Clean Architecture 5부(ch25~28) 요약 (3)

Ch25. 계층과 경계시스템이 세 가지 컴포넌트(UI, 업무 규칙, 데이터베이스)로만 구성된다고 생각하기 쉽다.단순한 시스템이라면 그렇지만, 대다수의 시스템에서 컴포넌트의 개수는 이보다 훨씬 많다. [움퍼스 사냥 게임]컴퓨터 게임 예제에 살을 좀 붙여보자.텍스트를 기반으로 하는 움퍼스라는 게임은 GO EAST와 SHOOT WEST와 같은 매우 단순한 명령어를 사용한다.플레이어는 명령어를 입력하면 컴퓨터는 플레이어가 보고, 냄새 맡고, 듣고, 경험할 것들로 응답한다. 만약 이 게임을 다양한 언어로 발매할 수 있게 만든다고 가정해보자.그럼 이러한 구조로 만들면 게임 규칙이 어떤 언어를 사용하던, 어떤 저장소를 사용하던 상관 없이 모두 적용할 수 있다. [클린 아키텍처?]분명하게도 이 예제의 맥락이라면 클린..

Book Notes 2025.12.10