도메인 주도 설계 구현
아키텍처
REST : 표현 상태 전송
REST는 웹의 아키텍처가 형성된 이후 웹 아키텍처 자체를 기반으로둔 추론을 바탕으로 얻어진 이론적 결과이다.
RESTful HTTP 서버의 주요 특징
- 리소스가 핵심개념이다.
- 자술적 메시지를 사용해 무상태로 의사소통한다
- 일부 HTTP 메소드는 멱등한데 이는 오류나 불분명한 결과에도 문제없이 안전하게 다시 호출될수 있다.
- 하이퍼미디어라는 방법을 통해 클라이언트가 애플리케이션에서 일어날수 있는 상태 변경에 맞는 경로를 찾을 수 있도록 해준다.
RESTful 클라이언트에 주요 특징
리소스 표현 내에 포함된 링크를 따라가거나 서버로 처리할 데이터를 보낸 후 결과로 돌아온 리소스로 리다이렉션 함으로써
한 리소스에서 다른 리소스로 이동 한다.
REST와 DDD
유혹이 있을수 있지만 도메인 모델을 RESTful http로 바로 노출하는것은 좋지 않다.
이런 접근법은 필요 이상으로 취약한 시스템 인터페이스로 귀결되는데 이는 도메인 모델내의
변경 하나하나가 시스템 인터페이스로 바로 반영되기 때문이다.
첫번째 접근법 시스템의 인터페이스에 바운디드 컨텍스트를 생성하고 시스템의 인터페이스 모델에서
실제 핵심 도메인으로 엑세스 하기 위해 적절한 전략을 사용하는것
이 접근법을 사용하면 주로 핵심 도메인의 클래스 위주로 시스템의 인터페이스 모델에 맞춰 클래스가 설계되지만
정확히는 유스케이스가 이를 이끌어 간다는 점에 유의하라.
두번째 접근법 표준 미디어 타입을 강조하는 상황에선 각 표준 미디어 타입을 표현하기 위해 도메인 모델을 생성한다.
이는 내부와 외부 모두를 좀더 반영할 수 있는 크로스커팅 접근법이다.
왜 REST인가?
REST 원리에 맞게 설계된 시스템은 느슨한 결합의 조건을 충족한다.
- 새로운 리소스를 추가해서 기존 리소스 표현으로 연결하는일은 매우 쉽다.
- 새로운 포맷의 지원이 필요한 시점에도 추가가 쉽다.
- 보다 작은 단위(리소스)로 나누어 진다.
- 각단위가 개별적으로 테스트 및 디버깅할 수 있다.