Tailscale, Rust로 tsnet 라이브러리 개발! 다양한 언어 지원!

by DD
1개월 전
조회수 6

Tailscale은 Rust 기반의 tsnet 라이브러리(tailscale-rs)를 출시하여 Go 외 다른 언어에서도 Tailscale 기능을 사용할 수 있도록 지원

Rust 선택은 메모리 안전성(Memory Safety), C와의 호환성, 그리고 성능을 고려한 결정이며, Go 런타임 종속성 문제를 해결

현재는 기본적인 기능만 구현되었으며, P2P 통신(Peer-to-peer communication), NAT 트래버설(NAT Traversal) 등 핵심 기능 구현이 예정

커뮤니티에서는 다양한 언어 지원(Multi-language Support)에 대한 기대와 함께, 향후 개발 방향에 대한 의견 교환이 활발하게 이루어짐

Rust 선택의 기술적 배경

Tailscale은 Rust를 선택한 이유로 메모리 안전성(Memory Safety)을 최우선으로 고려했다고 밝혔다. 기존 C 라이브러리의 문제점인 런타임 종속성 문제를 해결하고, 다양한 언어와의 호환성을 확보하기 위해 Rust를 선택했다. 특히, Rust는 C와 유사한 수준의 인터페이스를 제공하면서도, 안전한 메모리 관리(Safe Memory Management)를 지원하여 잠재적인 보안 취약점을 줄일 수 있다는 점을 강조했다.

Go 기반 tsnet과 tailscale-rs의 차이점

Tailscale은 기존 Go 기반의 tsnet과 tailscale-rs의 병행 개발을 통해 다양한 언어 지원을 제공한다. Go는 tsnet을 통해 Tailscale 기능을 쉽게 사용할 수 있지만, 다른 언어에서는 libtailscale을 사용해야 하는 불편함이 있었다. libtailscale은 Go 런타임을 포함하여 다른 런타임과의 충돌 문제를 야기할 수 있었다. tailscale-rs는 이러한 문제를 해결하고, 다양한 언어 환경(Multi-language Environment)에서 Tailscale을 사용할 수 있도록 설계되었다.

향후 개발 로드맵 및 커뮤니티 기여

Tailscale은 tailscale-rs의 핵심 기능인 P2P 통신(Peer-to-peer communication)과 NAT 트래버설(NAT Traversal) 구현에 집중할 계획이다. 또한, DNS, exit node, TLS 인증서 등 네트워크 기능 확장을 계획하고 있다. Tailscale은 커뮤니티의 피드백을 적극적으로 수렴하여 개발 방향을 설정하고 있으며, GitHub를 통해 이슈 제기 및 기능 요청을 받고 있다. 오픈소스 개발(Open Source Development)을 통해 개발자들의 참여를 독려하고 있다.

다양한 언어 지원을 위한 FFI 바인딩

tailscale-rs는 Rust 외에도 Python, Elixir, C를 위한 FFI(Foreign Function Interface) 바인딩을 제공한다. 이를 통해 개발자들은 Rust를 몰라도 자신이 사용하는 언어(Preferred Language)에서 Tailscale 기능을 활용할 수 있다. FFI 바인딩은 Rust와 동일한 API를 제공하며, axum과의 통합 및 CLI 도구 생성을 위한 유틸리티 크레이트도 제공한다. 이러한 노력은 Tailscale의 접근성(Accessibility)을 높이는 데 기여한다.

An early look at tailscale-rs, a tsnet library in Rust