2008-09-25 7 views
9

내가 일하는 곳에서 우리는 지난 수십 년 동안 작성한 상당수의 시스템을 유지 관리하고 있습니다.여러 시스템을 통합하는 가장 좋은 방법은 무엇입니까?

여러 운영 체제 (Linux, Solaris, Windows), 다중 데이터베이스 (여러 버전의 Oracle, sybase 및 mysql) 및 여러 언어 (C, C++, JSP, PHP 및 호스트 다른 사람의) 사용됩니다.

각 시스템은 여러 시스템에 동일한 데이터를 입력하는 대신 상당히 자율적입니다.

경영진은 최근 모든 시스템을 서로 행복하게 대화하고 데이터를 공유하는 데 필요한 정보를 조사해야한다고 결정했습니다.

우리는 개별 시스템 중 하나에 소프트웨어를 변경할 수 있지만 어느 한 시스템 (또는 그 이상)을 완전히 다시 작성하면 관리가 즐겁게 할 수있는 것이 아님을 명심하십시오.

여기서 몇 가지 개발자의 첫 번째 생각은 간단합니다. 시스템 A가 시스템 B의 데이터를 필요로하면 시스템 B의 데이터베이스에 연결하여 가져와야합니다. 마찬가지로 B 데이터를 제공해야 할 경우 B 데이터베이스에 삽입해야합니다.

사용 된 데이터베이스 (및 버전)의 혼란으로 인해 다른 개발자는 여러 개의 연결을 교묘하게 회피하지 않기 위해 다른 모든 시스템의 테이블을 결합하여 하나의 새 데이터베이스가 있어야한다고 생각했습니다. 이렇게하면 일부 테이블을 통합하고 중복 된 데이터 항목을 제거 할 수 있기를 희망합니다.

이것은 내가 혼란에 대해 내 의견을 가지고 들어올 무렵의 이야기입니다.

데이터베이스를 시스템 통신 수단으로 사용한다는 아이디어는 나에게 우스운 냄새를 풍깁니다. 비즈니스 로직을 여러 시스템에 배치해야합니다 (시스템 A가 시스템 B에 데이터를 추가하기를 원할 경우 삽입하기 전에 데이터에 관한 B의 규칙을 더 잘 이해할 수 있음), 여러 시스템에서 어떤 형태로든 데이터베이스 폴링을 수행해야합니다 데이터베이스 스키마에 대한 변경 사항이 이제는 여러 시스템을 전파하므로 데이터 변경 사항, 유지 관리 작업은 골칫거리가됩니다.

필자가 생각한 첫 번째 생각은 이전에는 데이터를주고 받기 위해 쉽게 쓰일 수있는 다른 시스템을 위해 API/서비스를 작성하는 것이었다. 다른 많은 개발자들은 데이터베이스를 사용하는 것보다 과도하고 많은 작업이 필요하다고 생각합니다.

그렇다면이 시스템을 서로 이야기하게하는 가장 좋은 방법은 무엇일까요?

답변

8

이기종 시스템을 통합하는 것이 나의 일상 업무입니다.

내가 너라면 시스템 B에서 직접 시스템 A의 데이터에 액세스하지 않도록 노력하겠다.업데이트 시스템 B의 시스템 A의 데이터베이스는 현명하지 못합니다. 비즈니스 로직을 확산시키는 것이 우수 사례의 반대입니다. 당신은 그것을 후회하게 될 것입니다.

중앙 데이터베이스의 개념은 반드시 나쁜 것은 아니지만 관련 작업의 양은 시스템을 처음부터 다시 작성하는 정도의 수준입니다. 적어도 당신이 묘사하는 형태로 시도 할 것은 아닙니다. 성공할 수도 있지만, 훨씬 더 어렵고 지점 간 통합 방식보다 훨씬 많은 훈련이 필요합니다. 다른 시스템에 직접 데이터를 밀어 넣는 '카우보이 (cowboy)'접근법과 동일한 호흡에서 제안 된 것을 듣는 것은 재미 있습니다.

전반적으로 당신의 본능은 꽤 좋아 보입니다. 몇 가지 접근법이 있습니다. 당신은 하나를 언급 : 서비스를 구현. 실시간으로 업데이트해야하는 경우 특히주의해야합니다. 다른 하나는 데이터를 뒤섞기위한 별도의 통합 응용 프로그램입니다. 그것이 일반적으로 취하는 접근 방식이지만 일반적으로 내가 필요로하는 데이터를 요청하기 위해 통합하는 시스템을 변경할 수 없기 때문에 가능합니다. 나는 데이터를 밀어 넣어야한다. 당신의 경우 서비스 접근법은 나쁜 것이 아니다.

처음으로 시스템 통합에 들어오는 사람에게 분명하지 않을 수있는 한 가지 사항은 시스템의 모든 데이터 조각에 단일 신뢰할 수있는 사실이 있어야한다는 것입니다. 데이터가 복제되고 (복제 된 경우) 사본이 서로 동의하지 않으면 해당 데이터에 대한 사실 시점의 사본이 올바른 것으로 간주되어야합니다. 기하 급수적 인 속도로 하늘을 향해 비명을 지르지 않고도 시스템을 통합 할 수있는 다른 방법은 없습니다. 스파게티 통합은 스파게티 코드와 같으며 모든 비용을 피해야합니다.

행운을 빈다.

편집 :

미들웨어는 교통 문제를 해결하지만, 그 통합의 중심 문제가되지 않습니다. 시스템이 서로 가까이있어 한 앱이 다른 앱에 직접 데이터를 저장할 수있는 경우에는 한 앱이 제공하는 서비스를 다른 앱이 직접 호출 할 수있을만큼 근접합니다. 나는 당신의 경우에 미들웨어를 추천하지 않을 것이다. 당신은 그로부터 약간의 이점을 얻을 수도 있지만, 증가 된 복잡성으로 인해 그 이상이 될 것입니다. 한 번에 한 가지 문제를 해결해야합니다.

0

당신이 의견을 찾고있는 것 같아서 제 것을 제공 할 것입니다.

모든 다른 시스템 용 API를 작성하는 것이 과도하다고 다른 개발자들도 동의합니다. 단일 데이터베이스를 만드는 다른 제안을하면 더 빨리 처리 할 수 ​​있고 훨씬 더 많은 제어 권한을 가질 수 있습니다.

0

푸시/파킹 데이터베이스를 통해 직접 인터페이싱하면 한 시스템의 내부 세부 사항이 많이 노출됩니다. 명백한 단점이 있습니다. 하나의 시스템을 업그레이드하면 다른 시스템을 손상시킬 수 있습니다. 또한 한 시스템에서 다른 시스템의 데이터베이스에 액세스 할 수있는 방법에 기술적 인 제한이 있습니다 (Unix에서 C로 작성된 응용 프로그램이 Windows 2003 Server에서 실행되는 SQL Server 2005 데이터베이스와 상호 작용하는 방식을 고려하십시오).

가장 먼저 결정해야 할 것은 "마스터 데이터베이스"가 상주하는 플랫폼이며, 필요한 접착제를 제공하는 미들웨어에도 동일하게 적용해야합니다. API 수준의 미들웨어 통합 (예 : CORBA)을 수행하는 대신 Message Oriented Middleware를 고려해 보시기 바랍니다. MS Biztalk, Sun의 eGate 및 Oracle의 Fusion이 옵션의 일부일 수 있습니다.

새 데이터베이스에 대한 귀하의 아이디어는 올바른 방향으로 나아가는 단계입니다. Enterprise Entity Aggregation 패턴을 조금 읽고 싶을 것입니다.

"데이터 통합"과 미들웨어의 결합이 최선의 방법입니다.

0

첫 번째로 통합 할 수 있도록 각기 다른 시스템의 데이터를 정렬해야합니다. 통합하려는 각 시스템은 완전히 다른 데이터 세트를 보유 할 수 있지만 중복되는 데이터 일 가능성이 높습니다.API를 작성하기에 앞서 : (필자의 설명을 통해 알 수있는 경로입니다) 통합해야 할 데이터에 대한 논리적 데이터 모델을 시도해 보는 것이 좋습니다. 이 데이터 모델을 통해 서로 다른 시스템에있는 데이터를 활용하고 다른 데이터베이스에 더 유용하게 사용할 수 있습니다.

또한 통합에 대한 반복적 인 접근을 적극 권장합니다. 레거시 시스템의 경우 한 번에 모든 것을 설계하고 구현하는 것이 너무 위험하므로 많은 불확실성이 있습니다. 작게 시작하여 합리적으로 통합 된 시스템으로 나아가십시오. "완전 통합"은 거의 목표로 할 가치가 없습니다.

0

미들웨어 + 단일 중앙 데이터베이스 전략을 사용하려는 경우 여러 단계에서이를 수행하는 것이 좋습니다. 이러한 API에 액세스하고, 모든 시스템에 대한 인터페이스를 제공하는 각 시스템 미들웨어

  • 구현의 기능을 노출 다른 시스템 서비스/API가

    1. 구현 : 여기서 고려 될 수있는 논리 단차 프로세스의 다른 시스템에서 데이터/서비스에 액세스 (사용 가능한 경우 중앙 소스의 데이터에 액세스하고 다른 시스템에서 데이터에 액세스)
    2. 데이터가없는 중앙 데이터베이스 만 구현
    3. 미들웨어 수준에서 캐싱/데이터 저장 서비스 구현 중앙 데이터베이스에 데이터를 저장/캐시 할 수 있습니다. 그 데이터가 임의의 시스템으로부터 액세스 될 때마다, 예를 들어, IF 시스템 A의 레코드 1-5가 미들웨어를 통해 시스템 B에 의해 페치되면 미들웨어 데이터 캐싱 서비스는 이러한 레코드를 중앙 데이터베이스에 저장할 수 있으며 다음에이 레코드를 중앙 데이터베이스에서 가져올 때
    4. 데이터 정리는 병렬로 일어날 수 있습니다
    5. 당신은 또한 수입 (자동 또는 수동) 매일 중앙 데이터베이스에 여러 시스템에서 데이터를 밀어 메커니즘

    이 방법을 만들 수 노력은 여러 이정표에 분산되어 데이터가 점차적으로 저장됩니다 중앙 데이터베이스에서 첫 번째 - 액세스 - 먼저 - 저장 기반.

  • 관련 문제