본문 바로가기

2022/03

(33)
도메인의 무결성(Integrity)과 일관성(Consistency) 관리하기 - Make illegal states unrepresentable 해당 장의 요약 : 비즈니스 제약 사항을 주석이 아니라 타입 시스템을 이용해 작성하라! 타입 체킹을 통해 불필요한 테스트코드 작성을 피할 수 있다. 지금까지 F# 타입 시스템을 사용한 도메인 모델링의 기본 사항을 살펴보았습니다. 우리는 도메인을 나타면서도 컴파일 가능하고 구현을 안내하는 데 사용할 수 있는 풍부한 타입 세트를 구축했습니다. 도메인 모델에 맞게 모든 데이터가 유효하고 일관성이 있는지 확인하기 위해 몇 가지 예방 조치를 취해야 합니다. 목표는 신뢰할 수 없는 외부 세계와 구별되는 신뢰할 수 있는 데이터를 항상 포함하는 바운디드 컨텍스트를 만드는 것입니다. 모든 데이터 값이 항상 유효하다는 것을 확신할 수 있다면 구현을 깨끗하게 유지할 수 있고 방어적 코딩을 하지 않아도 됩니다. 이 장에서는 ..
타입으로 도메인 모델링하기 with F# - Aggregate (집합체) https://pragprog.com/titles/swdddf/domain-modeling-made-functional/ Domain Modeling Made Functional Use domain-driven design to effectively model your business domain, and implement that model with F#. pragprog.com Order 및 OrderLine 타입에 대해 자세히 살펴보겠습니다. type OrderLine = { OrderLineId : int Price : float // etc } type Order = { OrderLines : OrderLine list // etc } 첫째, Order는 Entity인가요, Value Objec..
타입으로 도메인 모델링하기 with F# - Value Object, Entitiy https://pragprog.com/titles/swdddf/domain-modeling-made-functional/ Domain Modeling Made Functional Use domain-driven design to effectively model your business domain, and implement that model with F#. pragprog.com 도메인 타입(simple type, compound type)과 워크플로(함수)를 모델링 하였으므로, 데이터 타입의 persistent ID 여부로 VO와 Entity를 분류, F# 문법으로 구현하는 법을 알아봅니다. DDD 용어에서 영구(persistent) ID가 있는 개체를 Entitiy라고 하고 영구(persistent..
타입으로 도메인 모델링하기 with F# - 단순, 복합 타입과 함수 소스코드를 UML, 문서와 같이 사용할 수 있을까요? F# 타입 시스템을 사용하여 코드에 대해 충분히 정확하게 도메인 모델을 캡처하면서 도메인 전문가 및 기타 비개발자가 읽고 이해할 수 있도록 하는 방법을 배웁니다. 타입이 대부분의 문서를 대체할 수 있으며 그 기능은 강력한 이점이 있음을 알 수 있습니다. 디자인이 코드 자체에 표현되기 때문에 구현이 설계와 반드시 동기화됩니다. 설계 리뷰하기 https://itchallenger.tistory.com/411 도메인을 문서화하기 기술적 구현에 대한 편견을 피하면서, 이러한 요구 사항을 어떻게 기록해야 할까요? 시각적 다이어그램(예: UML)을 사용할 수 있지만 작업하기 어렵고 도메인의 미묘한 부분을 포착할 만큼 충분 itchallenger.tistory.c..
타입으로 코드 문서화하기 With F# - 타입을 조합하여 도메인 모델링 https://pragprog.com/titles/swdddf/domain-modeling-made-functional/ Domain Modeling Made Functional Use domain-driven design to effectively model your business domain, and implement that model with F#. pragprog.com 조합 가능한 타입 시스템은 타입 조립을 통해 복잡한 모델을 신속하게 생성할 수 있기 때문에 도메인 기반 설계를 수행하는 데 큰 도움이 됩니다. 예를 들어 전자 상거래 사이트에 대한 지불을 추적하려고 한다고 가정해 보겠습니다. 이것이 디자인 세션 동안 코드에서 어떻게 스케치되는지 봅시다. 먼저 CheckNumber와 같은 기본 ..
타입으로 코드 문서화하기 With F# - 타입 기초 https://fsharpforfunandprofit.com/books/ Books | F# for fun and profit This book starts with a discussion of Domain Driven Design, and then shows to how to model a design using types. The last part shows how to implement the design using functional programming with F# (composition of functions, “railway-oriented programming fsharpforfunandprofit.com 함수형 프로그래밍 언어의 대수적 타입 시스템을 이용하여 도메인 모델의 개념을 코드에..
도메인 모델을 함수형 아키텍처로 - 컨텍스트 간 통신 2 https://fsharpforfunandprofit.com/books/ Books | F# for fun and profit This book starts with a discussion of Domain Driven Design, and then shows to how to model a design using types. The last part shows how to implement the design using functional programming with F# (composition of functions, “railway-oriented programming fsharpforfunandprofit.com 바운디드 컨텍스트 간 계약 이벤트 및 관련 DTO는 바운디드 컨텍스트 간의 일종의 ..
도메인 모델을 함수형 아키텍처로 - 컨텍스트 간 통신 1 https://fsharpforfunandprofit.com/books/ Books | F# for fun and profit This book starts with a discussion of Domain Driven Design, and then shows to how to model a design using types. The last part shows how to implement the design using functional programming with F# (composition of functions, “railway-oriented programming fsharpforfunandprofit.com 빠르게 변화하는 개발 주기에서 우리는 나머지 부분을 이해하기 전에 도메인의 일부를 ..