많은 대기열에서 많은 메시지를 관리하는 것이 원하는만큼 "경량"이 아니므로 JMS를 없애고 싶다고 가정합니다. 코드 기반이 커지고 있습니다!
- 문제 또는 병목 현상이 어디에 있는지를 알기 위해 지속적으로 많은 대기열을 모니터링합니다.
- 잠시 동안 외부 시스템 중 하나가 다운되면 많은 호출이 이루어지고 실패하고 모든 메시지가 오류 대기열로 실행됩니다.
- "워크 플로"의 단일 인스턴스에 어떤 일이 발생했는지 확인하려면 로그 파일을 greping하고 있습니다.
- 끝에서 끝까지 워크 플로를 보려면 손으로 직접 작성한 문서를 사용해야합니다 (항상 정확하지는 않음).
- 하나의 단계를 추가하거나 제거하면 변경되지는 않았지만 거기에있는 모든 단계를 찾아서 업데이트해야합니다.
- 새 버전을 배포하기 전에 이전 버전의 작업이 최종 상태로 실행될 때까지 기다리는 중입니다.
그리고 당신의 JMS 솔루션을 성취 반면, 새로운 솔루션을 고려해야 할 많은 비 기능적 요구 사항이 있습니다 : 확장 성, 신뢰성 등 모두 모두, 사람들은 와 함께 ... 다하기 힘든 요구 사항 모든 기술.
- 는 전체 프레임 워크를 시작하지 않고 일반 비즈니스 로직 부분을 테스트 할 수 있습니다 은 아마 당신은 "경량"는 당신에게 가장 중요한 다른 지역을 고려할 수 있습니다? 나는. 비즈니스 로직이 프레임 워크에 얼마나 강하게 결합되어 있습니까?
- 시스템을 프로그래밍하고 운영하는 것이 얼마나 어렵습니까? 이미 알고있는 사람들을 찾는 것이 얼마나 어렵습니까?
- 이전 시스템에서 새로운 단계별로 또는 빅뱅으로 만 이전 할 수 있습니까?
이 영역에는 수많은 솔루션이 있지만 모든 문제에 대한 원 스톱 즉시 사용 가능한 솔루션은 없습니다.일부는 일괄 처리 (Spring Batch 또는 Java Batch와 같은) 지향이며, 다른 것은 메시지 지향적입니다 (예 : Akka 또는 Hystrix). 그것들을 비교하는 것은 그 자체로 과학입니다. 최고의 작업 수, 단계 수, 외부 시스템 호출 수 등과 같이 많은 세부 사항을 제공 할지라도 여기에는 완벽한 해답을 얻지 못할 것입니다. 몇 번이고 반복 해 보았습니다. 비즈니스 워크 플로를 정확히 알고 있다면 기술을보다 쉽게 대체 할 수 있습니다 ... 그래서 이것이 전제 조건입니다.
그런 다음 다른 솔루션 (시간이 있다면)으로 놀아 보거나 현재 위치에 머무를 것을 권합니다 ... 가능한 모든 솔루션 중에서 최악의 것은 아닙니다. do not ... 그리고 나는 정말로 그것을 의미한다 : 은 당신이 상상할 수있는 것보다 훨씬 "가벼운"것이 아니라는 또 다른 "가벼운"것을 구현하지 않는다.
마지막으로 한 가지 : 저는 전통적인 BPM 프레임 워크, 즉 BPEL 및 친구들에 대한 귀하의 생각을 공유합니다. 그러나 봐야 할 가치가있는 Camunda BPM과 같은 가벼운 오픈 소스 프레임 워크가 있습니다.