[CS] 도메인, 비즈니스, 서비스 로직

호호빵·2022년 11월 10일
0

Computer Science

목록 보기
12/13

도메인 로직, 비즈니스 로직, 서비스 로직

  • 좋은 설계라 함은 비즈니스 로직을 철저히 분리하고 다른 계층에 의존해선 안된다고 한다.

    여기서 비즈니스 로직은 정확히 무엇일까?

  • 도메인 로직 = 비즈니스 로직 으로 사용되며 업무에 필요한 데이터 처리를 수행하는 응용 프로그램 일부를 먈함
    -> 여러 작업 중 사용자가 원하는 자료의 가공 부분 로직
  • 그 외의 DB에 연결하고 백엔드 서버와 통신하고 사용자와 인터렉션하는 많은 코드들을 서비스 로직이라 함

모바일 송금 예시

  • 도메인 로직은 현실 문제에 대한 의사결정을 하는 코드
1. 계좌 잔액이 충분한지 확인								'도메인 로직'						
2. 유효하다면 송금버튼 활성화, 유효하지 않다면 에러 메시지 띄움	`서비스 로직`
3. 사용자의 멤버쉽 등급에 맞춰 송금 수수료 계산	   			`서비스 로직`
4. 송금 수수료를 결제하도록 외부 결제 서비스에 요청	   			'도메인 로직'
5. 사용자의 잔액 감소									'도메인 로직'		
6. 사용자의 잔액을 DB에 저장	    						`서비스 로직`

'송금'이라는 현실 문제에 대한 의사결정을 하는 것이 도메인 로직이며 1, 4, 5 이다.
  • 만약 도메인과 서비스로 명확하게 구분되지 않는다면 조금 더 세밀하게 나누어 봐야한다.
    -> 왜 명확하게 나누어야 할까?

명확한 관심사의 분리

  • 도메인 로직과 아닌 것을 잘 구분지으면 결합도가 낮아지고 로직을 이해하기 쉬워짐
  • DB나 UI 같은 기술적인 구현 사항에 신경쓰지 않고 도메인 로직 이해 가능
  • 비즈니스 정책이 바뀔 때 소프트웨어 변경과 기능 추가가 간편해짐
  • 클린 아키텍쳐에서는 도메인 로직을 코어로 두고 다른 계층에 의존하지 않도록 설계
    -> 다른 계층들은 도메인 로직에게 입력을 전달하고, 변화를 외부로 전달하는 역할을 하도록 명확하게 분리





Reference

https://velog.io/@eddy_song/domain-logic
https://enterprisecraftsmanship.com/posts/what-is-domain-logic/

profile
하루에 한 개념씩

0개의 댓글