-
Notifications
You must be signed in to change notification settings - Fork 304
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
Add Jupyter Server Architecture diagram #801
Add Jupyter Server Architecture diagram #801
Conversation
Codecov Report
@@ Coverage Diff @@
## main #801 +/- ##
=======================================
Coverage 69.96% 69.96%
=======================================
Files 62 62
Lines 7368 7368
Branches 1223 1223
=======================================
Hits 5155 5155
Misses 1841 1841
Partials 372 372
Continue to review full report at Codecov.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Excellent, thanks for this! I added some minor suggestions inline.
ServerApp. It starts a new Kernel for a user's Session and generates a | ||
new Kernel ID. | ||
|
||
- **Kernel Spec Manager** parses file with JSON specification for a Kernel. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- **Kernel Spec Manager** parses file with JSON specification for a Kernel. | |
- **Kernel Spec Manager** parses files with JSON specification for Kernels, and provides a list of available kernel configurations. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I find the Jupyter Client
reference in the diagram to be a little out of place. I wonder if we were to also add Kernel Manger
with a relationship between it and MappingKernelManager
it might help clarify. If so, I would suggest adding an entry labeled Jupyter Client with sub-entries of Kernel Spec Manager and Kernel Manager, which would then allow some introduction as to the importance the jupyter_client
package serves within the Server architecture.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That makes sense, thanks @kevin-bates!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you @andreyvelich - this will be very helpful to developers! I had a couple of comments to (perhaps) help clarify things a bit further.
- **Kernel Gateway** is the web server that provides access to Jupyter Kernels. | ||
There are different ways to create this gateway. If your ServerApp needs to | ||
communicate with remote Kernels, you can use | ||
`the Enterprise Gateway <https://github.com/jupyter-server/enterprise_gateway>`_, | ||
otherwise you can use `the Kernel Gateway <https://github.com/jupyter-server/kernel_gateway>`_. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Because the box states, Kernel Gateway
yet both forms of gateway servers are listed here, perhaps using the term Gateway Server
may be more clear:
- **Kernel Gateway** is the web server that provides access to Jupyter Kernels. | |
There are different ways to create this gateway. If your ServerApp needs to | |
communicate with remote Kernels, you can use | |
`the Enterprise Gateway <https://github.com/jupyter-server/enterprise_gateway>`_, | |
otherwise you can use `the Kernel Gateway <https://github.com/jupyter-server/kernel_gateway>`_. | |
- **Gateway Server** is a web server that, when configured, provides access to Jupyter Kernels running on other hosts. | |
There are different ways to create a gateway server. If your ServerApp needs to | |
communicate with remote Kernels residing within resource-managed clusters, you can use | |
`Enterprise Gateway <https://github.com/jupyter-server/enterprise_gateway>`_, | |
otherwise, you can use `Kernel Gateway <https://github.com/jupyter-server/kernel_gateway>`_, where Kernels run locally to the gateway server. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree with that, I will rename Kernel Gateway
to Gateway Server
on the diagram also.
- **Mapping Kernel Manager** is responsible to operate multiple Kernels in the | ||
ServerApp. It starts a new Kernel for a user's Session and generates a | ||
new Kernel ID. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- **Mapping Kernel Manager** is responsible to operate multiple Kernels in the | |
ServerApp. It starts a new Kernel for a user's Session and generates a | |
new Kernel ID. | |
- **Mapping Kernel Manager** is responsible for managing the lifecycles of the Kernels running within the | |
ServerApp. It starts a new Kernel for a user's Session and facilitates interrupt, restart, and shutdown operations against the kernel. |
ServerApp. It starts a new Kernel for a user's Session and generates a | ||
new Kernel ID. | ||
|
||
- **Kernel Spec Manager** parses file with JSON specification for a Kernel. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I find the Jupyter Client
reference in the diagram to be a little out of place. I wonder if we were to also add Kernel Manger
with a relationship between it and MappingKernelManager
it might help clarify. If so, I would suggest adding an entry labeled Jupyter Client with sub-entries of Kernel Spec Manager and Kernel Manager, which would then allow some introduction as to the importance the jupyter_client
package serves within the Server architecture.
Thank you for the review @blink1073 and @kevin-bates. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍🏼
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great information @andreyvelich - thank you!
4a4fee2
e40591d
to
4a4fee2
Compare
Thank you for the feedback! |
Thanks, @andreyvelich. Great work here! |
@andreyvelich, can you share a link to the source document for this diagram? Or maybe you can export the document as XML and we can save it in this repo. That would allow others to edit the diagram in the future using drawIO. |
I believe, https://app.diagrams.net/ allows to import this |
The link takes me to a blank diagram and a dialogue to choose from my existing diagrams... but I don't have access to this diagram. Is there a share link specifically for this diagram? |
I tested by downloading the file and uploading to draw.io when reviewing the PR. |
Woah! I didn't realize draw.io could edit PNG. 🤯 . Sorry for the my ignorance here, @andreyvelich! This is great! |
I added Jupyter Server diagram to the documentation.
As we discussed on the community meeting, I used
draw.io
tool, so others can easily modify this in the future.Please take a look at the doc changes.
In the following PRs I will add workflows for the Session creating and deleting.
cc @blink1073 @Zsailer