내가 일하는 곳에서 우리는 지난 수십 년 동안 작성한 상당수의 시스템을 유지 관리하고 있습니다.여러 시스템을 통합하는 가장 좋은 방법은 무엇입니까?
여러 운영 체제 (Linux, Solaris, Windows), 다중 데이터베이스 (여러 버전의 Oracle, sybase 및 mysql) 및 여러 언어 (C, C++, JSP, PHP 및 호스트 다른 사람의) 사용됩니다.
각 시스템은 여러 시스템에 동일한 데이터를 입력하는 대신 상당히 자율적입니다.
경영진은 최근 모든 시스템을 서로 행복하게 대화하고 데이터를 공유하는 데 필요한 정보를 조사해야한다고 결정했습니다.
우리는 개별 시스템 중 하나에 소프트웨어를 변경할 수 있지만 어느 한 시스템 (또는 그 이상)을 완전히 다시 작성하면 관리가 즐겁게 할 수있는 것이 아님을 명심하십시오.
여기서 몇 가지 개발자의 첫 번째 생각은 간단합니다. 시스템 A가 시스템 B의 데이터를 필요로하면 시스템 B의 데이터베이스에 연결하여 가져와야합니다. 마찬가지로 B 데이터를 제공해야 할 경우 B 데이터베이스에 삽입해야합니다.
사용 된 데이터베이스 (및 버전)의 혼란으로 인해 다른 개발자는 여러 개의 연결을 교묘하게 회피하지 않기 위해 다른 모든 시스템의 테이블을 결합하여 하나의 새 데이터베이스가 있어야한다고 생각했습니다. 이렇게하면 일부 테이블을 통합하고 중복 된 데이터 항목을 제거 할 수 있기를 희망합니다.
이것은 내가 혼란에 대해 내 의견을 가지고 들어올 무렵의 이야기입니다.
데이터베이스를 시스템 통신 수단으로 사용한다는 아이디어는 나에게 우스운 냄새를 풍깁니다. 비즈니스 로직을 여러 시스템에 배치해야합니다 (시스템 A가 시스템 B에 데이터를 추가하기를 원할 경우 삽입하기 전에 데이터에 관한 B의 규칙을 더 잘 이해할 수 있음), 여러 시스템에서 어떤 형태로든 데이터베이스 폴링을 수행해야합니다 데이터베이스 스키마에 대한 변경 사항이 이제는 여러 시스템을 전파하므로 데이터 변경 사항, 유지 관리 작업은 골칫거리가됩니다.
필자가 생각한 첫 번째 생각은 이전에는 데이터를주고 받기 위해 쉽게 쓰일 수있는 다른 시스템을 위해 API/서비스를 작성하는 것이었다. 다른 많은 개발자들은 데이터베이스를 사용하는 것보다 과도하고 많은 작업이 필요하다고 생각합니다.
그렇다면이 시스템을 서로 이야기하게하는 가장 좋은 방법은 무엇일까요?