현실세계에서 발생하는 사건 중 SW 서비스를 통해 해결할 문제의 영역을 도메인, 비즈니스라고 한다.
따라서 비즈니스 로직은 현실세계의 문제를 해결하는 로직이 담긴 코드를 의미한다.
비즈니스 로직을 제외한 모든 코드는 비즈니스 로직을 SW에 적용하기 위한 애플리케이션 서비스 로직이라 한다.
웹 프로그래밍의 기초인 커뮤니티, 게시판 도메인을 예로 든다면
비즈니스 로직
글의 CRUD, 회원가입, 로그인
애플리케이션 서비스 로직
클라이언트와 웹 통신을 위한 컨트롤러, 도메인 비즈니스 로직의 호출을 위한 서비스, 서버와 DB를 연결해주는 레포지토리
관점의 분리
둘을 구분하는 이유는 스프링의 삼대 요소 중 하나인 관점의 분리를 위해서이다.
비즈니스 로직과 애플리케이션 서비스 로직을 나눠 응집도를 높히고 결합도를 낮추면, DB나 네트워크에 관한 구현 사항에 신경 쓰지 않고 SW서비스의 핵심인 비즈니스 로직을 잘 이해할 수 있다. DDD의 레이어 아키텍쳐의 목표와도 일치하며 계층은 자신의 목표에 집중할 수 있게되고 기능의 변경 및 추가 등의 유지보수도 편해진다.
참고
https://velog.io/@eddy_song/domain-logic