목차


🛖 아키텍처

⛏️ 설계 개념

구분 데이터 중심 설계 (Database-Driven) 트랜잭션 스크립트 (Transactional Script) 액티브 레코드 (Active Record) 도메인 주도 설계 (DDD)
중심 개념 DB 스키마 서비스/함수 흐름 ORM 엔티티 도메인 모델
설계 방식 테이블 구조를 먼저 설계하고 코드가 이를 따름 각 기능을 절차적으로 서비스 함수 안에서 처리 엔티티 객체에 데이터와 로직을 함께 포함 도메인 전문가 언어를 반영한 모델 중심 설계
장점 단순, 빠른 구현 빠른 개발, 이해하기 쉬움 프레임워크 친화적, 직관적 복잡성 관리, 유지보수성/확장성 뛰어남
단점 규칙이 흩어지고 유지보수 어려움 로직 중복, 복잡성 증가 시 스파게티화 엔티티 비대화, 복잡성 증가 시 한계 학습 비용 큼, 단순 서비스에는 과함

예시 Database-Driven: 전통적인 기업 내부 레거시 시스템, MyBatis/JDBC 직접 사용 프로젝트 Transactional-Script: 회원가입 → DB insert, 로그인 → DB select Active-Record: User.save(), Order.calculateTotal() Domain-Driven: 결제, 주문, 배송 같이 규칙이 많고 상태 변화가 중요한 도메인

도메인 내부

// 참가자를 루트(Meeting)을 통해서 변경
public class Meeting {
	...
	public void removeMeetingParticipant(MeetingParticipant participant) {
		this.currentParticipantsCount--;
		this.participants.remove(participant);
	}
}

도메인 외부

🪛 API 구현