Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prepare for DAG based workflows #145

Open
11 tasks
lalitpagaria opened this issue Jun 14, 2021 · 7 comments
Open
11 tasks

Prepare for DAG based workflows #145

lalitpagaria opened this issue Jun 14, 2021 · 7 comments
Labels

Comments

@lalitpagaria
Copy link
Collaborator

lalitpagaria commented Jun 14, 2021

Working towards full DAG base workflows #8

Following things are part of these Epic -

  • Introduce generic node structure
  • Introduce different types of node structure (Observer, Informer, Analyzer, Preprocessor, Router etc)
  • Constraint Each Node should be stateless, hence each incoming request will bring Node config with it (be it either via incoming payload, file, DB, Cache etc)
  • Constraint Each Node should have reproducible properties ie avoid procedure call. Hence anyone can create setup locally or remotely.
  • Unify input/output payload (first part if done in this ticket Unify input/output payload for each nodes #144)
  • Optional Payload should able to accept text, image, vectors, audio, file etc.
  • Introduce payload convertor
  • Introduce channel structure
  • Introduce different types of channel structure (Local, Rest, Messaging, Binary Protocol, etc)
  • Each channel will receive/emit payload and can have a payload convertor. Payload convertor stage will be based on where channel is used ie input or output. For example if listening to Kafka events then payload convertor stage will sit after consumer and if sending payload via Rest then convertor will sit before Rest call.
  • Each Node can have multiple incoming and outgoing channels. For example analyzer node can receive payload from http request, events or locally via procedure call and similarly it can sent payload to multiple http endpoints.

@GirishPatel @shahrukhx01 @sanjaybharkatiya
It is not compressive list, but let's list out the points.

@lalitpagaria
Copy link
Collaborator Author

Let's plan first version for release v0.1. This release will have many breaking changes hence better to increase minor version.

If we can leverage UI of https://github.com/orchest/orchest then it will be nice addition to Obsei.

@shahrukhx01
Copy link
Collaborator

@lalitpagaria https://github.com/orchest/orchest are using typescript, we need to make a decision about how we want to proceed with the UI. We may have to do some changes to adapt Orchest, that may avert our focus on Obsei itself. Second option is either continue with streamlit or use Justpy. Drag and drop interfaces are possible with Justpy and tailwind, for instance this example can easily be replicated with Justpy https://github.com/ananikets18/Drag-and-Drop-card-using-HTML-TailwindCSS-

@lalitpagaria
Copy link
Collaborator Author

@shahrukhx01 I agree that UI is not top priority for platform point of view. But I feel it will be good for user adoption point of view (I my view, but I might be wrong).

In past I experiment with streamlit but it did not clicked. Yes one point is to host demo on our own server (Now it is possible using Oracle cloud), with proper rate limiting to prevent users from abusing demo.

I also tried to build demo using Justpy but I felt it too complex. It could be due to that fact that front end is not my strong area. If you have experience, is it possible to prepare drag and drop based workflow creator? Main idea to generate workflow yaml for user. For first version we can support 1 time execution.

@shahrukhx01
Copy link
Collaborator

@lalitpagaria I can try creating a simple UI demo using Justpy once I get time. Meanwhile, we can decide how we want to design our backend codebase since that's more important.

@lalitpagaria
Copy link
Collaborator Author

Above issue for backend codebase only. For UI let's create separate issue :)

@shahrukhx01
Copy link
Collaborator

@lalitpagaria sure you can assign me that.

@GirishPatel
Copy link
Collaborator

For creating architecture diagram we can use Archimate.
We can use PlantUML for create diagram.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants