Skip to content
devsda edited this page May 15, 2019 · 2 revisions

Q. How Shepherd achieves heterogeneous node support in workflow ?

  1. Instead of providing executers for different languages, ex : Java, Scala, Python, C++, Shepherd prefers to do all the communication through HTTP protocol with its clients. This way, Shepherd’s clients has to take care of corresponding language executor.
  2. This helps to avoid Business logic of Client inside Shepherd boundary.
  3. If Shepherd provides language executors, then it expects business logic of Client in Shepherd boundary. This way, it actually move clients away from SOA architecture. And, it actually gives pain to all its clients who owns multiple endpoints to update their business logic inside Shepherd boundary.

Q. Where Client business logic resides ?

  1. Shepherd is a platform that provides workflow management concept. Shepherd does not contain any client Business logic/data inside it.
  2. Shepherd communicates through endpoints with clients. (Example -> REST endpoints, AWS Lambda, Azure Functions, Database endpoints, etc).

Q. How nodes communicates with each other ?

  1. Shepherd provides 2 MB space to each execution for inter node communication.
  2. Client can store shared data in form of document using GET/PUT API.
  3. Its recommended to use this space for your metadata only. Store your actual data on blob services (AWS S3 / Azure Blob service).

Q. How Child Node can be pick as next execution node after completion of parent Node execution ?

  1. For Conditional workflow : Every node has to return Edge name as response. Shepherd use this information to execute next node in the given workflow.
  2. For Unconditional workflow : Shepherd will execute all the child nodes, once parent execution completed.