2014-12-12 1 views
0

DDD를 처음 사용하고 인프라 하드웨어 (네트워크 장치, 특수 하드웨어 등) 정보에 액세스하는 방법을 결정하려고합니다. 통신하고 제어하려는 대부분의 장치에는 상태가 있습니다. 도메인의 장치를 개체로 나타내지 만 저장소 나 서비스 또는 다른 구성 요소를 통해 상태를 복제해야합니다.인프라 하드웨어에 액세스하기위한 DDD 구성 요소

예제는 다음과 같습니다. 고객이 방화벽을 구입하면 AddFireWall 명령이 실행되고 네트워크 장치의 VLAN이 방화벽으로 전환되고 IP 및 개인 IP가 해당 방화벽 장치에 배치됩니다. 내 도메인의 엔티티 개체로 네트워크 장치 및 방화벽 장치를 대표합니다. 이러한 객체/장치의 상태는 저장소에 저장됩니다.

+0

이 하드웨어는 비즈니스 모델입니까? 리포지토리는 대개 DB 용이므로, Anticorruption Layer 뒤에 실제 인프라 구조를 숨겨야합니다. –

+0

예, 하드웨어를 제어하려고하는데 비즈니스에서 발생하는 상황에 따라 상태가 달라집니다. – Clutch

답변

0

일반적으로 도메인 모델은 하드웨어 및 네트워크와 같은 외부 종속성으로부터 자유 로워 져야합니다. 찾을 가치가있을 수있는 반부패 계층 (Anti Corruption Layer)으로 알려진 개념이 있습니다. 아이디어는 하드웨어와 도메인 같은 시스템 사이에 다리를 만드는 것입니다. 두 시스템간에 변환하는 것은 책임입니다. 하드웨어 또는 네트워크가 변경되면 ACL의 코드 만 조정하면됩니다.

다른 접근법은 하드웨어에서 이벤트 메시지를 생성하는 것을 포함 할 수 있습니다. 그러면이 메시지를 시스템의 여러 부분으로 등록 할 수 있습니다.

+0

하드웨어가 이벤트를 기업에 직접 배포 할 수있는 경우에도 하드웨어가 시간이 지남에 따라 업그레이드, 변경 또는 교체 될 가능성이 있으므로 반부패 계층을 계속 사용해야합니다. – arootbeer

+0

ACL이 변경으로부터 보호를 제공한다는 것에 동의합니다. 그러나 다른 버전의 이벤트를 사용할 수 있으며 특정 도메인에서 의미가있는 경우 조합 할 수 없습니다. – Codescribler

관련 문제