Category Software Engineering

도메인 모델과 애그리거트 설계

도메인 모델 설계 시, 관련된 엔티티들을 묶어 애그리거트(Aggregate)로 정의하면 데이터 변경의 일관성을 유지하고 모델의 복잡성을 줄일 수 있다. 애그리거트는 도메인 주도 설계(DDD)의 핵심 구성 요소 중 하나로 여러 객체를 하나의 논리적인 단위로 취급하여 변경 시 전체 데이터의 일관성을 보장하는 데…

도메인 모델 패턴과 JPA

헥사고날 아키텍처(Ports & Adapters)를 이야기할 때, 종종 도메인 모델과 JPA(데이터) 모델을 분리해야 한다는 이야기를 들었다. 이는 주로 유명한 서적에서 매핑 전략의 하나로 소개된 내용이 마치 헥사고날 아키텍처의 절대적인 원칙처럼 오해되면서 비롯되었다고 한다. 이러한 오해가 있었는지도 몰랐다. 오늘도 하나를 더 배운다…

헥사고날 아키텍처: 사실과 오해

도메인과 도메인 모델에 대해 이야기할 때, 팀 내에서 특정 대상을 명확하고 일관된 단어로 부르는 것이 매우 중요하다. 이를 ‘보편 언어(Ubiquitous Language)’로 발전시키려는 노력이 필요하며, 개발 기술에서도 마찬가지이다. 하나의 기술 개념을 두 가지 이상의 용어로 표현하거나, 하나의 단어가 여러 의미로 사용되는…

헥사고날 아키텍처 (Hexagonal Architecture) – 개념과 특징

헥사킬은 예전부터 알고 있었는데 헥사고날 아키텍처는 2023년부터 인프런 강의로 공부를 하면서 한 두번씩 들어본 것이 전부이다. 개발은 공부를 해서 하나씩 더 알게 될 수록 개발이 점점 어렵게 느껴진다. 그래도 일보 전진해보기로 한다 헥사고날 아키텍처는 2005년 유명 개발자이자 컨설턴트인 앨리스터 코번(Alistair…

아키텍처와 계층형 & 3(4)계층 아키텍처

아키텍처: 시스템 구조와 품질을 결정하는 핵심 설계 원칙 아키텍처의 중요성: 품질 속성과 설계 기반 아키텍처의 제약 조건과 원칙 계층형 아키텍처(Layered Architecture) 계층형 아키텍처는 시스템을 여러 개의 독립적인 계층(Layer)으로 나누어 구조화하는 가장 일반적이고 전통적인 아키텍처 스타일 중 하나이다. 마치 건물처럼 층층이…

DDD (Domain-Driven Design) 도메인 주도 설계 – 복잡한 비즈니스 문제를 해결하는 설계 접근 방식

Youtbe Spring I/O에서 DDD 관련 영상을 보았지만 영어로 말해서 그런지 괜히 더 어렵게 느껴졌다. Youtube에는 DDD 관련 영상은 많지만 그래도 Spring을 다루는 채널의 영상을 보았다. DDD의 핵심 원칙 및 실천 방법 도메인 이해 (Domain Understanding) 복잡성 분할  (Problem Decomposition) 유비쿼터스 언어 (Ubiquitous…

DDD (Domain-Driven Design) 도메인 주도 설계 – 도메인과 도메인 모델

토비님의 토비의 클린 스프링 – 도메인 모델 패턴과 헥사고날 아키텍처 Part 1 강의에서 DDD란 용어를 듣기 전에도 DDD란 말은 많이 들었다. 채용 공고에서도 DDD란 용어가 많이 나왔다. DDD에 대해서 하나씩 그리고 천천히 공부를 하는데도 항상 헷갈리고 어렵다. 일부분 혹은 단편적인…