Skip to content

NNg 폐기 #15

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

Closed
Kroisse opened this issue Dec 24, 2021 · 0 comments · Fixed by #16
Closed

NNg 폐기 #15

Kroisse opened this issue Dec 24, 2021 · 0 comments · Fixed by #16
Assignees

Comments

@Kroisse
Copy link
Member

Kroisse commented Dec 24, 2021

Rendezvous는 Discord 및 IRC 바운서와 브릿지 본체를 각각 따로 업데이트할 수 있도록 하기 위해 각 컴포넌트가 별개의 프로세스로 실행되고, 서로 NNg IPC를 통해 통신하도록 되어 있습니다.

현재 NNg를 계속 사용하는 데에 두 가지 장애물이 있는데, 첫째는 Rendezvous가 지금은 obsolete된 polyamorous mode에 의존한다는 것입니다. 이 때문에 최신 버전의 NNg로 업그레이드할 수 없는 상황이고, polyamorous mode를 쓰지 않도록 고치려면 IPC 모듈 구조를 많이 고쳐야 합니다.

둘째는 nng 패키지가 libnng C 라이브러리에 의존하기 때문에, 빌드 환경에 따라서 libnng 또는 nng-sys를 정상적으로 빌드하지 못하는 상황이 있을 수 있다는 것입니다. @Kroisse 의 경우 aarch64-apple-darwin 환경에서 빌드 오류를 겪고 있으며, 아직 해결 방법을 찾지 못하고 있습니다.

프로세스 분리를 하지 않는 방향으로 고치는 것은 Rendezvous 설계 의도에서 벗어나는 선택이라, 가능한 다른 IPC 프로토콜을 찾아 교체하는 방안을 찾아 보려고 하고 있습니다. NNg의 사례를 교훈 삼아, 가능한한 널리 쓰이는 프로토콜 중 Rust에서 안정적으로 쓸 수 있는 라이브러리가 있는 것을 고르려고 하고 있습니다. 현재 고려 중인 후보는 다음과 같습니다.

  • (Good old) HTTP
  • WebSocket
  • gRPC (Tonic)
@Kroisse Kroisse self-assigned this Dec 24, 2021
@Kroisse Kroisse mentioned this issue Dec 25, 2021
8 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging a pull request may close this issue.

1 participant