업무 규칙은 수익을 얻거나 비용을 줄일 수 있는 규칙이다. 이는 컴퓨터로 구현됐을 수도 있고, 사람이 수동으로 하는 작업들이 될 수도 있다. 예를 들어 은행에서 대출에 N%의 이자를 붙인다는 것은 사람이 하던, 컴퓨터가 하던 업무 규칙이다.
대출에 이자를 붙인다는 것을 핵심 업무 규칙이라고 하고, 이러한 핵심 업무 규칙에는 대출 잔액, 이자율, 지급 일정과 같은 핵심 업무 데이터가 필요하다. 핵심 업무 규칙과 핵심 업무 데이터를 객체로 만든 것이 엔티티다.
엔티티
엔티티는 컴퓨터 시스템 내부 객체로 핵심 업무 데이터를 기반으로 동작하는 핵심 업무 규칙을 구체화한다. 엔티티의 인터페이스는 핵심 업무 데이터를 기반으로 동작하는 핵심 업무 규칙을 구현한 함수로 구성된다. 엔티티는 입출력 장치 등과 같은 외부 요소에 절대 오염되지 않고 지켜져야 한다.
유스케이스
유스케이스는 자동화된 시스템이 사용되는 방법이다. 따라서 유스케이스는 사용자가 입력해야 할 것들과 시스템이 출력해야 할 것이 무엇인지, 그리고 그 사이에 어떤 처리 과정을 거치는지 기술된다.
그러나 인터페이스로 들어오는 데이터와 인터페이스에서 되돌려주는 데이터를 제외하고 유스케이스는 사용자가 웹을 사용하는지, 모바일 앱을 사용하는지, DB 는 어떤 것을 쓰는지에 대한 세부 사항을 명시하지 않는다.
엔티티는 유스케이스보다 상위 수준이므로 엔티티는 유스케이스를 몰라야 한다. 그리고 유스케이스는 엔티티를 알아야 한다.
요청 및 응답 모델
유스케이스에서 사용자 요청 및 시스템 응답이 있으므로 엔티티 객체를 응답에 주고 싶은 욕구가 충분히 생길 수 있지만, 이는 무조건 지양해야 한다. 둘은 다르게 변경되고 다르게 확장된다. SRP 와 OCP 원칙을 고려해 요청 및 응답은 엔티티가 아닌 별도 모델을 받아 처리하는 것이 가장 좋다.