본문 바로가기

우아한테크코스

도메인 로직

https://velog.io/@eddy_song/domain-logic

 

비즈니스 로직, 도메인 로직이 도대체 뭐지?

🙄 내 앱은 아직 비즈니스가 아닌데요...?

velog.io

 

도메인, 비즈니스의 의미

도메인 로직, 비즈니스 로직이라는 말은 거의 동의어처럼 쓰인다.

소프트웨어가 존재하는 이유, 목적

은행 앱이라면, 금융 및 은행 업무가 도메인

현실 세상의 문제'를 해결하는 코드를 의미한다. 

 

소프트웨어는 다 현실 문제를 해결하는 거 아닌가?

우리는 특정한 문제 영역에 대한 솔루션을 제공하는 코드 외에도 많은 코드를 써야한다.
그 코드를 가능하게 만들고, 입력과 출력을 처리하기 위한 로직들이다.

대표적으로 데이터베이스에 연결하고, 백엔드 서버와 통신하고, 사용자와 인터랙션하는 코드들이 필요하다.
이런 것들은 도메인 로직과 구분지어 어플리케이션 서비스 로직이라고 부른다.

 

 

도메인 로직과 어플리케이션 서비스 로직을 구분하는 하나의 척도는, 바로 '비즈니스 의사결정'이다.

이 코드가 현실 문제, 즉 비즈니스에 대한 의사결정을 하고 있는가?

도메인 로직은 현실 문제에 대한 의사결정을 하는 코드다. 나머지 코드는 그 결정을 위한 입력값을 만들어주거나, 그 결정의 결과물을 해석하고 보여주고 전파하는 코드다.

 

모바일 송금의 예시

  1. 계좌 잔액이 충분한지 확인한다.
  2. 유효하다면 송금 버튼을 활성화하고, 유효하지 않다면 에러 메시지를 띄운다.
  3. 사용자의 멤버십 등급에 맞춰서 송금 수수료를 계산한다.
  4. 송금 수수료를 결제하도록 외부 결제 서비스에 요청한다.
  5. 사용자의 잔액을 감소시킨다.
  6. 사용자의 잔액을 DB에 저장한다.

 '송금'이라는 현실 문제에 대한 의사결정을 하는가를 생각해보자.

  1. 계좌 잔액이 충분한지 확인 -> 송금이 가능한지에 대한 의사결정
  2. 송금 수수료를 계산 -> 송금에 드는 비용을 정책에 따라서 결정
  3. 사용자의 잔액을 감소시킨다 -> 송금이라는 서비스를 수행

어플리케이션 서비스 로직에 해당하는 것은 다음과 같다.
이 코드들은 도메인 로직이 의사결정을 할 수 있도록 입력을 제공하며, 결과를 외부 서비스/DB/UI에 업데이트하는 역할을 맡는다.

  1. 유효하지 않으면 에러 메시지를 띄운다 -> UI
  2. 송금 수수료를 결제하도록 외부 결제 서비스에 요청한다. -> 외부 서비스와의 네트워킹
  3. 잔액을 DB에 저장한다. -> Persistence

 

https://velog.io/@rat8397/%EC%9A%B0%EC%95%84%ED%95%9C%ED%85%8C%ED%81%AC%EC%BD%94%EC%8A%A4-3-UI%EC%99%80-%EB%8F%84%EB%A9%94%EC%9D%B8-%EB%A1%9C%EC%A7%81%EC%9D%98-%EB%B6%84%EB%A6%AC-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EB%AA%A8%EB%8D%B8%EB%A7%81

 

[우아한테크코스 #3] UI와 도메인 로직의 분리, 그리고 모델링

페어와 함께 생각해본 설계도를 도식화해보면 위와 같습니다. 여기에서의 각 Entity는 다음과 같은 역할을 합니다LottoGameManager : 게임을 시작하고, Domain 과 View 를 셋팅하는 역할을 수행합니다. 도

velog.io

 

문제점: LottoGameManager가 도메인과 뷰의 메소드를 직접 호출하고 있습니다.

 

 메소드 명 또는 인자의 수가 변경되는 경우 LottoGameManager에서도 수정해주어야합니다.

도메인과 뷰는 요청이오면, 그에 맞게 스스로 할일을 수행

모든 일을 하나하나 찝어주며 시키는게 아니라, 어떤 일을 하세요! 라고 요청하면 그들이 알아서 일을 하도록

'우아한테크코스' 카테고리의 다른 글

객체지향  (0) 2022.11.13
3주차 목표  (0) 2022.11.09
숫자 야구게임 피드백 강의 with java  (0) 2022.11.09
2주차 공통 피드백  (0) 2022.11.09
과정  (0) 2022.11.07