Dmitry Dezuk (Dezhurnyuk)dmitrydezuk.com·Jan 10, 2025Implementing Cleaner Validation in DDDIn the previous article, I described one approach to validation in DDD. Specifically, I showed how it applies the Result pattern in factory methods of Value Objects to be able to reuse the same guarding checks maintaining their invariants. A drawback...DDD
Jeongkyun Anjeongkyun.hashnode.dev·Jan 5, 2025신사업에서 Event Sourcing Pattern을 왜 사용했나요?서론 소프트웨어 개발에서는 데이터 저장 방식이 시스템의 확장성과 유지보수성에 큰 영향을 미친다. 특히, 변화가 빈번하고 복잡한 비즈니스 요구사항이 있는 환경에서는 단순한 CRUD 기반의 상태 저장 방식으로는 한계에 봉착하곤한다. 필자가 현재 기여하고있는 신사업 B2B SaaS 제품(이하 KOS)도 마찬가지였다. 병원 내에서는 고객의 내원부터 귀가까지 다양한 이벤트가 발생하며, 이 과정에서 실시간으로 예약 변경, 시술 추가, 환불 처리 등 여러 ...48 readsEvent Sourcing
Gun Kimgunkim.hashnode.dev·Jan 5, 2025Setter는 써도 된다Setter를 쓰지 말아야 한다고 주장하는 사람들이 어떤 의미에서 쓰지 말라고 하는지는 100% 동감한다. 하지만 단순히 “Setter를 쓰지 말라”는 말은 우리를 본질에서 멀어지게 만든다. 그렇다면 어떤 맥락에서 Setter를 쓰지 말라는 소리가 나오는 걸까? 빈약한 도메인 모델 회사가 소프트웨어를 개발하는 이유는 돈을 벌기 위함이다. 여기서 돈을 버는 로직은 결국 회사의 관심사인 “도메인”이 된다. 그렇다면 회사에서는 이 핵심 관심사를 잘 ...35 readsJava
silberbulletsilberbullet.hashnode.dev·Dec 22, 2024ERD Cloud, Side-Project에서 쉬운 협업하기ERD를 넘기고 도메인을 만들다 보니.. 사이드 프로젝트를 진행하다 보면 빠른 MVP 개발을 위해 기능 구현에만 집중하는 경우가 많습니다. 이 과정에서 머릿속에 있는 설계도를 기반으로 코딩하게 되죠. 이런 접근은 유지보수 측면에서 큰 약점이 됩니다. 만약 프로젝트에 새로운 인원이 투입되면, 신규 도메인 이나 기능 개발 시 어느 테이블과 조인해야 할지 파악하기 위해 Entity와 도메인의 소스 코드를 일일이 확인해야 합니다. 하물며 쿼리만 보더라...10 likesStudyLogside project
Rickclean-code.dev·Dec 18, 2024Domain-Driven Design Error Handling Using Result PatternIntroduction When implementing Domain-Driven Design (DDD), one of the most challenging aspects is handling domain errors effectively. While traditionally, the approach has been to throw exceptions from the domain layer, this article presents a more e...311 readsDDD
Dmitry Dezuk (Dezhurnyuk)dmitrydezuk.com·Dec 14, 2024Implementing ValidationIf you have completed domain mode, your application is almost ready. You can start solving problems that your modeled domain was designed for right after. Just put a thin layer of logic in an application service API reading user input and communicati...10 likes·35 readsDDD
Dmitry Dezuk (Dezhurnyuk)dmitrydezuk.com·Dec 12, 2024Implementing an EntityAfter completing the code for all Value Objects held by a customer, we can revisit the DDD-friendly model of the Customer Entity itself, which will impose one more invariant addition to all the invariants Value Objects are encapsulating. The domain e...DDD
Ahmad W Khanblog.ahmadwkhan.com·Dec 7, 2024Rethinking Software ArchitectureSoftware architecture is not just about choosing a structure for your application; it's about creating a foundation that aligns with your project’s goals, your team’s capabilities, and your organization’s resources. Yet, the industry often reduces th...monolithic architecture
Ahmad W Khanblog.ahmadwkhan.com·Dec 6, 2024A Practical Guide for Software Engineers to Understand and Tackle Complex Business DomainsThe complexity of modern software systems is an undeniable challenge for developers and organizations alike. As systems scale, they must accommodate evolving requirements, integrate with disparate technologies, and remain adaptable. Without a robust ...business
Dmitry Dezuk (Dezhurnyuk)dmitrydezuk.com·Dec 5, 2024Implementing a Value ObjectIn the previous article, I introduced the concept of Value Objects as handy wrappers around primitive C# types. These objects ensure that they represent a valid value and enforce Customer invariants, which are the explicit and implicit rules that are...value objects