도메인, 도메인 모델, 비즈니스 로직

DragonTiger·2025년 4월 8일
0

도메인

시스템이 다루는 현실 세계의 문제 영역 ex) 호텔 예약, 주문 처리, 출결 관리

도메인 모델

도메인을 추상화한 개념 모델(클래스, 객체, 관계 등) ex) Order, Product, User 클래스

비즈니스 로직

도메인 규칙을 코드로 실현한 로직 ex) 주문 시 재고 차감, 할인 계산 등

예제

현실 세계 시나리오(도메인 관점)

사용자가 상품을 주문하면,

  • 재고가 줄고
  • 5만원 이상이면 무료배송
  • 주문 상태는 '결제 완료' 가된다.

class Order(
    val id: Long,
    val items: List<OrderItem>,
    var status: OrderStatus,
    val totalPrice: Money,
    var shippingFee: Money = Money(3000)
)

fun completeOrder() {
    if (totalPrice >= Money(50000)) {
        shippingFee = Money(0)
    }

    items.forEach { it.product.decreaseStock(it.quantity) }

    status = OrderStatus.COMPLETED
}

여기서 이 completeOrder() 함수는 도메인 규칙을 구현한 코드, 즉 비즈니스 로직

도메인 “재고가 있어야 주문할 수 있다" - 현실 규칙
도메인 모델 Order, Product, Stock 클래스 - 개념 구조
비즈니스 로직 product.decreaseStock() 같은 함수 - 규칙을 코드로 구현한 것

profile
take the bull by the horns

0개의 댓글