2014-12-02 3 views
0

저는 여러 부서가있는 대규모 조직의 일부입니다. A, B, C라고 부르 자. 각 부서는 자체 시스템을 가지고 있지만 시스템에 따라 몇 가지 사항이 공유됩니다. 서로 다른 부서 시스템의 모든 데이터를 집계해야하는보고 부서가 있습니다.아키텍처 피드백

우리는 각 부서에서 고유 한 SQL 데이터베이스와 API를 사용하고 프런트 엔드 단일 페이지 응용 프로그램을 시작했습니다. 우리는 중앙 데이터베이스를 추가하여 시스템간에 공유되는 사용자, 전화, 주소, EmailAddress 등을 추적합니다.

우리가 가장 큰 어려움 중 하나가되고 있기 때문에 모든 것을 동기화 상태로 유지하는 것입니다. 예를 들어 시스템 중 하나가 중앙 테이블에서 사용자를 삭제하거나 함께 병합하여 (가능성 있음) 내부 사용자가 삭제 된 중앙 사용자를 참조했기 때문에 다른 시스템에 영향을 미쳤습니다. 우리의 다른 시스템 중 하나는 시스템 간 변경에 영향을 받기를 원하지 않는다고 결정했으며 중앙에 저장된 전화 번호 삭제 등은 영향을 미치지 않습니다.

이 시나리오를 처리하는 가장 좋은 방법을 찾으려고합니다. 나는 각 시스템이 내부적으로 폰, 주소, EmailAddresses를 말하고, rabbitMQ를 통해 발행 된 변경 사항을 발표 할 수있는 펍 서브 시나리오의 라인을 생각하고있었습니다. 다른 시스템은 원하는 경우 변경 사항을 등록하고 이에 따라 변경 사항을 처리 할 수 ​​있습니다.

이 모든 것이 좋지만보고를 위해 시스템에서 사용자를 추적하는 방법은 무엇입니까? 시스템간에 일관된 UserID를 사용하고자합니다. 사용자가 시스템 A에 들어 와서 중앙 위치에서 글로벌 ID를 수집하고 한 달 후에 같은 사용자가 시스템 B에 들어 왔다고 가정 해 봅시다. 시스템 B가 관련 정보를 알 수 있도록 전자 메일 주소가 주어졌지만이 정보를 어떻게 찾을 수 있습니까? "시스템에서이 사용자가 누구입니까?"와 같은 메시지를 보내고 주어진 시스템에서 응답을 기다립니다.

어쨌든 나는이 문제에 대한 의견을 보내 주시면 감사하겠습니다.

감사

답변

1

난 당신이에 책을 몇 읽어 제안 또는 웹 스캔 것 : 엔터프라이즈 애플리케이션 아키텍처

  • CQRS의

    • 도메인 기반 디자인
    • 패턴을

    오른쪽 트랙에 있습니다. wrt 이벤트 중심 아키텍처 (서비스 버스)를 사용합니다.