Comments (5)
Thank you for sharing feedback! I think the Dapr docs could do with an uplift to make it clear what is and isn't possible, which may have guide you down the supported path from the start.
One of the premises of Dapr, as I understand it, is to provide seamless communication and services between different microservices, embracing a poliglot and distributed approach.
That is certainly true of some Dapr Building Blocks, I.e. Service Invocation, and PubSub. But I wouldn't say that extends to all.
However, as workflows are implemented currently, all the components (activities, child workflows) need to belong to the same application, negating the possibility of distributing the different activities or using different apps / languages for each of the activities and, even worse, making impossible to seamlessly using child workflows from one application to another.
Current implementation looks to embrace a monolith of code.
It's entirely subjective, but its very normal for a single domain to be encapsulated in a single App
. Just because a Workflow is being used to orchestrate units of work (i.e. Activities) across compute boundaries (i.e. horizontally scaled pods) within that domain, doesn't make it any more of a Monolith.
If your Workflow does need to communicate with another domain/service (which may or may or not be in any other language), its entirely reasonable to call the API of that Service, either synchronously via Dapr Service Invocation, or asynchronously via Dapr PubSub.
Don't get me wrong, I know in theory all workflow inputs and outputs are serializable, so they could be exchanged betwen Apps. But then there would be the issue of discovery (How does each app know what is available from the other Apps in the mesh?)
Assuming this is solved, another challenge - Workflows and Activities interoperating across App boundaries would open up a greater risk of breaking changes. Each App would have to be versioned and deployed together to mitigate. Think about a worst-case scenario where every App in the mesh has a highly coupled bond to another App in the mesh via workflows & Activities, with no independent versioning available - the entire mesh of Apps would have to be deployed in lock-step, which is an anti-pattern for distributed systems/micro-service architecture.
Assuming this is solved, another challenge - There would need to be an extremely robust access-control model wrapped around each Workflow and Activity to ensure that Activities can be locked down and only callable from certain Workflows.
I'm no expert or authority, but I'm sure there would be other challenges lurking too.
Where I do think Workflows can do better is to reduce its boilerplate when integrating with other Dapr Building Blocks, for example #7226
from dapr.
This issue has been automatically marked as stale because it has not had activity in the last 60 days. It will be closed in the next 7 days unless it is tagged (pinned, good first issue, help wanted or triaged/resolved) or other activity occurs. Thank you for your contributions.
from dapr.
This issue has been automatically closed because it has not had activity in the last 67 days. If this issue is still valid, please ping a maintainer and ask them to label it as pinned, good first issue, help wanted or triaged/resolved. Thank you for your contributions.
from dapr.
This issue has been automatically marked as stale because it has not had activity in the last 60 days. It will be closed in the next 7 days unless it is tagged (pinned, good first issue, help wanted or triaged/resolved) or other activity occurs. Thank you for your contributions.
from dapr.
This issue has been automatically closed because it has not had activity in the last 67 days. If this issue is still valid, please ping a maintainer and ask them to label it as pinned, good first issue, help wanted or triaged/resolved. Thank you for your contributions.
from dapr.
Related Issues (20)
- Placement service fails to upgrade when logs are saved on disk HOT 1
- [linter] Canonicalheader HOT 1
- [linter] copyloopvar HOT 1
- [linter] spancheck HOT 1
- [linter] intrange HOT 1
- [linter] fatcontext HOT 1
- Actor traces - Configurable
- [linter] perfsprint
- [linter] testifylint
- [linter] gosec
- [linter] govet
- no space left on device "volumes/kubernetes.io~empty-dir/dapr-operator-tmp" HOT 3
- Memory consumption problem using Workflow in daprd. V1.14.1. OOMKilled HOT 4
- Transactional outbox - override topic cloudevent field
- Use the scheduler service for actor reminders by default (v1.15)
- `View the backlog` button broken on https://docs.dapr.io/contributing/roadmap/ HOT 2
- Document the project's release process and guidelines publicly in a RELEASES.md or equivalent file HOT 1
- DaprClient.GetMetadataAsync() throwing Exception
- initialization error occurred for pubsub (pubsub.redis/v1) HOT 5
- Circuit breaker not working for pub and sub components with retry policies HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dapr.