I was hoping for some expert guidance on some high level questions about
a new architecture.
Thanks in advance for any feedback.
High level overview
Complete re architecture of existing system from the ground up.
System processes video content for delivery to destinations.
Nodal system (4 to 5 global nodes initially)
Need failover on both a nodal level and individual service level.
Load balancing on a web service level.
Many web services (sync and async) (.NET and Java) (WSDL and REST)
95% internal web services written by us
70% long running processes.
Need to be able to "tie" the webservices together in steps to achieve the
overall system requirements.
Steps in the process are driven by work being completed by services,
not a user completing a step in a UI.
Things we have considered:
BPEL process engines
Positives
- provides the "glue" to tie web services together.
- products / os projects provide a console for managing processes and instances
out of the box
Concerns
- Feels like "square peg in a round hole" seems very specific to user centric processes.
- If we need something outside of what BPEL supports, seems difficult.
BPMN process engine
Positives
- provides the "glue" to tie web services together.
- products / os projects provide a console for managing processes and instances
out of the box
- BPMN seems more fully featured with some mediation / orchestration abilities.
Concerns
- Feels like "oval peg in round hole" still seems user centric, but less than BPEL.
- If we need something outside of what BPMN supports, seems difficult.
Camel and Activiti
Positives
- Since it's BPMN, it has those positives.
- Activiti provides the "glue" to tie web services together.
- Activiti provides the console for managing processes and instances out of the box
"glue" to tie web services together.
- If we need to do something outside of Activiti's intended use cases, we can use
Camel for those cases.
Concerns / Questions
- Camel Activiti integration seems very recent. Proven in Production?
- Having the long term discipline to keep the proper functionality separated
between Activiti & Camel
- Perhaps starting with Activiti and adding in Camel if needed?
- I don't see much about Activiti and built in support for failover or load balancing
Am I missing it?
Again, thanks for any feedback