코드 레벨의 Lib9c 하위 호환성을 고려하지 않는 Pluggable Lib9c 제안 #2031
Replies: 1 comment
-
It is resolved by #2265 ! |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
배경
기존
Lib9c
의 개발은 레거시 액션 등을 안고 개발해야 하는 문제점 등이 존재했고, 이는 2023년 7월 24일 현재 손을 쓰기가 어려울 정도의 개발 난이도가 되어 팀 내 개발자들의 피로도를 상승시키고 있습니다.또한, 상태 샤딩에 대한 고려가 없는 현재의 Libplanet 구현은 Libplanet 을 이용하는 각종 서비스들의 성능을 저하시키고 있습니다.
예를 들어, 해당 address 의 아바타 정보를 가져오기 위해서는
Address.DeriveAddress("avatar")
등의 방법을 이용하여 비 직관적이고 전체 트리를 계속해서 룩업해야 하는 비효율을 가지고 있습니다.정리하자면, 각 저장소 (혹은 팀) 에서 겪고 있는 문제는 다음과 같습니다.
언뜻 보면 직교적일 수 있는 이 두 문제는 사실 한 가지 문제에서 기인합니다. 바로 Lib9c의 레거시로 인한 개발 난이도가 높다는 것입니다.
선행 연구들
이 문제를 해결하기 위해 앞선 연구들이 있습니다.
ActionTypeLoader
Pluggable Lib9c
Remote ActionEvaluator
이 제안은 앞선 연구들을 기본으로 하여 실제 사용 방식, 혹은 예제를 제안하고자 합니다.
제안
appsettings.json
dll
을 다운받을 링크를 지정하게 합니다.AppProtocolVersions
에 따로 기록하게 합니다.NineChronicles.Headless
는 이 정보를 참고하여 자신이 해석하려는 블록의 index 에 맞춰 dll 을 다운받고 해당 dll을 이용하여ActionEvaluator
를 실행시킵니다.해당 dll 의 묶음 예제는 다음과 같습니다.
이를 이용하여, 액션의 코드 레벨 하위 호환성을 신경쓰지 않고, release 를 잘 찍어주는 것으로 예전 Action 을 전부 지우고 쓰는 액션만 남기는 등의 개발이 가능해집니다.
더 보기
RemoteActionEvaluator
를 이용한 예제는 다음과 같습니다.https://github.com/planetarium/NineChronicles.Headless/tree/exp-remote-eval-no-mead
Beta Was this translation helpful? Give feedback.
All reactions