2017-01-07 9 views
2

저는 CQRS/이벤트 소싱을 몇 달 동안 사용하고 있습니다. 현재 시도하고있는 다른 실험에 문제가 있습니다. 누군가가 이벤트 소싱 이외의 다른 방법을 도울 수 있고, 설명하거나 암시 할 수 있기를 바랍니다.데이터 거버넌스를위한 여러 분산 이벤트 저장소가 함께 작동합니다.

나는 모든 사용자가 자신의 데이터를 관리하는 분산 응용 프로그램을 만들고 싶습니다. 따라서 제 생각에는 각 사용자가 자신의 이벤트 저장소를 호스팅하는 반면 다른 사용자는 자신의 이벤트 저장소에 액세스 할 수 있습니다 (조건부 액세스).

사용자 A가 일부 명령을 수행 할 때 이것은 하나 이상의 이벤트 저장소를 암시 할 수 있습니다. 두 가지 예 :

1) 주석에 대한 참조를 추가 모두 이벤트 저장소 A와 B

2)에 의해 호스팅되는 작업 목록에서 공유 작업을 삭제 게시물에 이벤트를 저장 (A)에 지속에게 이벤트 저장소의 B에 지속

유일한 해결책은 현재 각 이벤트 저장소에 첨부 된 프로세스 관리자를 사용하는 것 같습니다. 따라서 이벤트가 하나의 이벤트 저장소에 추가 될 때, saga는 다른 관련 이벤트 저장소에도 이벤트를 적용하는 것을 다룹니다.

+0

각 사용자가 자신의 이벤트 저장소를 호스트해야하는 이유는 명확하지 않습니다. 조금 더 자세히 설명해 주시겠습니까? – IlliakaillI

+0

@IlliakaillI : 나는 각 사용자가 민감한 데이터가있는 몇 가지 목록을 가지고있는 시스템을 운영하고 있습니다. 일부 목록은 다른 사용자와 공유되어야하며 일부는 공유되지 않아야합니다. 현재 내 개인 정보이므로 소수의 사용자 만 사용할 수 있습니다. 그러나 나는 그것을 공개 할 계획이며 많은 사용자들은이 민감한 데이터를 알 수없는 서비스에 신뢰하지 않을 것이라고 확신하지 못합니다. 사용자 거버넌스에 데이터를 공유하고 그 일부를 공유 할 수있는 권한을 부여하고자합니다. –

답변

0

솔루션의 용도가 확실하지 않지만 이벤트가 상점에 저장 된 후 다른 시스템의 이벤트에 반응하도록하려면 Greg Young의 EventStore에서 제공하는 캐치 업 구독과 같은 구독이 게시됩니다 pub-sub를 사용하는 메시지 버스에서 모든 이해 관계자가이 이벤트를 처리 할 수 ​​있습니다.

그러나이 이벤트를 상점에 "저장"하면 이것은 잘못된 것입니다. 실제로 로컬 서비스 내에 명령을 생성하는 이벤트 핸들러가 있어야하며 모든 조건이 충족되는 경우이 명령으로 로컬 이벤트가 발생할 수 있습니다 (또는 그렇지 않을 수도 있음). 경계 내에서 일어나는 일은 로컬 컨트롤 아래에서 로컬 저장소에 저장해야합니다.

+0

그렉 영 (Greg Young)의 이벤트 저장소에서이 구독과 비슷한 아키텍처를 생각해 봤습니다. 그러나 ... 1) 내 이벤트는 허용되지 않는 시스템, 즉 데이터를 볼 수있는 시스템에만 제출하면 안됩니다. 조건부 액세스 메시지 버스 같은 것이 있습니까? 2) 시스템 A가 명령을 처리하고 시스템 B에게 이벤트를 내 보냅니다. B가 명령을 생성하여 처리하려고합니다. 성공한다면, 좋지만 그렇지 않다면 시스템 A에 다른 이벤트를 내 보내서 실패 신호를 보내거나 어떻게 처리 할 수 ​​있습니까? –