Crystal Wrapper를 사용한 Elixir와 Go 백엔드 연결

2025-06-19
Crystal Wrapper를 사용한 Elixir와 Go 백엔드 연결

Mozi 팀은 새로운 Elixir Phoenix LiveView 애플리케이션을 기존 Go 백엔드에 연결해야 했습니다. NIF와 Ports를 고려했지만, 최종적으로 Erlang의 C 노드 접근 방식을 선택하고 유지 관리 향상을 위해 Crystal로 C Wrapper를 작성했습니다. 이를 통해 컴파일 시와 런타임 모두 코드베이스가 분리되고, Elixir 측의 `Node.list`를 사용하여 C 노드 연결을 감지하고 S6를 사용하여 컨테이너 내에서 재시작합니다. C/Go 경계를 넘어설 때 성능 저하가 있지만, 해당 사용 사례에서는 허용 가능한 수준입니다. 결과적으로 유지 관리성을 향상시키는 Elixir, Crystal, Go 세 가지 언어의 세련된 조합이 구현되었습니다.

개발