Rust 개발, 컴파일 로그를 브라우저에서 실시간으로!

by DD
2주 전
조회수 12

Rust 백엔드 개발 시 컴파일 시간 지연 문제를 해결하기 위해 systemfd, watchexec, socat을 활용하여 개발 루프를 구축함

HTTP/1.1 스트리밍을 통해 컴파일 로그를 브라우저에 실시간으로 표시하고, xterm.js를 사용하여 터미널 환경을 구현함

소켓 재사용(Socket Reuse)을 통해 서버 재시작 시 연결 끊김 없이 부드러운 화면 전환을 제공하여 개발 생산성을 향상시킴

언어 독립적(Language-Agnostic)인 솔루션으로, Rust 외 다른 컴파일 기반 백엔드 개발에도 적용 가능하며, 개발 환경 개선에 기여함

systemfd와 watchexec을 활용한 개발 루프 구축

본 아키텍처는 systemfd를 사용하여 소켓을 열어두고, watchexec을 통해 소스 코드 변경을 감지하여 백엔드 서버를 재컴파일 및 실행한다. 특히, 소켓 재사용(Socket Reuse)을 통해 서버 재시작 시에도 클라이언트 연결을 유지하여, 개발자가 끊김 없는 사용자 경험을 제공받도록 설계되었다. 이는 개발 생산성을 향상시키는 핵심 요소로 작용한다.

HTTP 스트리밍을 통한 실시간 컴파일 로그 표시

개발자는 socat을 사용하여 컴파일 로그를 브라우저로 실시간 스트리밍한다. HTTP/1.1 스트리밍 방식을 활용하여, 컴파일 과정에서 발생하는 로그를 브라우저에 지속적으로 표시한다. 이러한 방식은 컴파일 진행 상황을 즉각적으로 파악할 수 있게 해주며, 개발자는 오류 발생 시 즉각적인 피드백을 받아 문제 해결 시간을 단축할 수 있다.

xterm.js를 이용한 터미널 환경 구현

브라우저 내에서 터미널 환경을 제공하기 위해 xterm.js를 사용한다. xterm.js는 웹 기반 터미널 에뮬레이터로, 컴파일 로그를 컬러풀하게 표시하고, 터미널과 유사한 사용자 인터페이스를 제공한다. 이를 통해 개발자는 브라우저 내에서 컴파일 과정을 직관적으로 모니터링하고, 터미널 환경과 유사한 경험을 얻을 수 있다.

언어 독립적인 개발 환경 구축

본 아키텍처는 특정 프로그래밍 언어에 종속되지 않고, 언어 독립적(Language-Agnostic)으로 설계되었다. Rust를 예시로 사용했지만, 다른 컴파일 기반 백엔드 언어에도 동일한 방식으로 적용 가능하다. systemfdwatchexec의 유연성을 활용하여, 다양한 개발 환경에서 개발 생산성을 향상시킬 수 있다.

Piping Compilation Logs to the Browser using systemfd