글 목록으로 돌아가기
최오키 개발블로그 2분 읽기

도메인 지식: 개발자가 반드시 알아야 할 이유

목차 도메인이란 무엇인가 도메인 지식이 없으면 벌어지는 문제들 실력 있는 개발자의 조건 도메인 지식을 높이는 방법 도메인이란 무엇인가 도메인(domain)은 우리가 만드는 소프트웨어가 해결하고자 하는 업무 영역 또는 현실 세계의 맥락을 의미합니다.


목차

  • 도메인이란 무엇인가
  • 도메인 지식이 없으면 벌어지는 문제들
  • 실력 있는 개발자의 조건
  • 도메인 지식을 높이는 방법

도메인이란 무엇인가

도메인(domain)은 우리가 만드는 소프트웨어가 해결하고자 하는 업무 영역 또는 현실 세계의 맥락 을 의미합니다. 쉽게 말해, 개발하고자 하는 소프트웨어의 요구사항과 문제 영역을 뜻합니다.

예를 들어 쇼핑몰을 만든다면 상품, 장바구니, 결제, 정산 같은 것들이 도메인입니다. 의료 서비스라면 진료 프로세스, 환자 관리, 보험 청구가 도메인이 되는 식입니다. 금융 앱이라면 계좌 이체, 잔액 관리, 거래 기록이 도메인이 됩니다.

도메인 모델은 데이터베이스 설계의 개념 모델링 에 가깝습니다. 사용자 요구사항을 분석해서 주제 영역을 도출하고, 핵심 요소들을 추출한 후 그들 간의 관계를 정의하는 과정이죠. 결국 도메인은 사용자 요구사항에 따른 개발 범위 라고 이해하면 됩니다.

도메인 지식이 없으면 벌어지는 문제들

1. 잘못된 설계와 기능 구현

도메인을 모르면 가장 먼저 설계 단계에서 실패합니다. 예를 들어 쇼핑몰의 주문 상태를 너무 단순하게 모델링하는 경우가 있습니다:

하지만 실제 비즈니스에서는 결제 실패, 배송 지연, 부분 취소, 반품 등 훨씬 복잡한 상태가 필요합니다. 이렇게 설계하면 고객센터와 정산팀이 난리가 납니다.

2. 기획서 오해와 재작업

기획서를 제대로 이해하지 못하면 개발 후 전면 수정이 일어납니다. 예를 들어 “이체 기능”을 구현할 때, 단순히 fromAccount.withdraw(); toAccount.deposit();로 구현하는 실수가 발생합니다. 하지만 실제 도메인에서는 잔액 확인 → 일시 보류 → 승인 처리 → 정산 → 이체 완료라는 복잡한 프로세스가 필요합니다.

3. 숨은 리스크를 못 봄

도메인 지식이 없으면 기획의 위험성을 미리 감지하지 못합니다. 예를 들어 “쿠폰 + 포인트 + 할인을 모두 적용하게 해주세요”라는 요청이 들어올 때, 이 조합이 결제 금액을 마이너스로 만들 수 있다는 것을 알지 못합니다. 결과적으로 정산 로직이 무너지고 손해가 발생합니다.

실력 있는 개발자의 조건

도메인을 잘 이해하는 개발자는 다릅니다:

  • 더 나은 설계를 한다: 불필요한 복잡성을 제거하고 확장 가능한 구조를 만듭니다
  • 기획자와 대화가 수월하다: “이 정책이 바뀌면 저쪽도 함께 수정해야 합니다”라고 전문가처럼 말할 수 있습니다
  • 기획의 미비점을 미리 캐치한다: 실제로 기획자보다 도메인을 잘 아는 개발자가 됩니다

스티브 잡스의 예를 생각해봅시다. 그의 “돼야 돼”는 “모든 사람이 개인적으로 컴퓨터를 사용할 수 있는 시대”였습니다. 이 비전이 있었기에 직관적인 UI, 마우스 도입, 그래픽 환경 개선 같은 구체적인 “해야 돼”가 나왔습니다.

도메인 지식이 없으면 “돼야 돼”를 제대로 세울 수 없고, 결국 “해야 돼”만 늘어납니다. 버튼을 만들고, 페이지를 추가하고, 기능을 고치는 일을 할 수 있지만 그게 정말 필요한지 판단할 기준이 없는 것입니다.

도메인 이해를 높이는 방법

의료 분야를 예로 들면, 피부과 EMR 시스템을 만들 때 실제 진료를 하는 의사, 특히 병원 운영을 총괄하는 대표원장은 다른 시각을 가집니다. “차트 입력이 느리다”는 표면적 문제가 아니라, 이것이 대기 시간, 환자 만족도, 재방문율에 어떤 영향을 미치는지 연결해서 봅니다.

도메인 지식을 높이려면:

  • 업무 플로우 차트 그리기: 업무 흐름을 시각화하면 빠르게 파악 가능합니다
  • 용어 정리 습관: 고객, 사용자, 관리자 등 용어부터 확실히 구분합니다
  • 회의록 정리: 회의 내용을 요약해서 도메인 지식으로 만듭니다
  • 실제 사용자 시나리오 분석: “실제로 이 앱을 어떻게 쓸까?” 관찰합니다

결론

기술은 도구일 뿐입니다. 돼야 돼가 방향을 정하고, 해야 돼가 그 방향으로 나아가게 만듭니다. 도메인 지식은 그 방향이 맞는지를 검증하는 나침판입니다.

코드만 잘 짜는 개발자는 많습니다. 하지만 “기술과 도메인 둘 다 이해하는 개발자” 는 드뭅니다. 실력 있는 개발자가 되려면 기능 구현자가 아니라 문제를 해결하는 사람 이 되어야 합니다. 그리고 그것은 도메인 속으로 깊숙이 들어갈 때 비로소 가능합니다.

#도메인지식 #개발자성장 #DDD #도메인모델링 #실무개발

원문 보기

Related posts

Other Git push 시 발생하는 non-fast-forward 오류 해결 방법 Other HTTP 504 Gateway Timeout 오류의 원인과 해결 방법 Other Git에서 Detached HEAD 상태 발생 원인과 해결 방법