5:23Better Stack
Log in to leave a comment
No posts yet
무료 터널링 도구를 쓰면서 매번 바뀌는 무작위 URL 때문에 스트레스받는 상황은 익숙합니다. ngrok 같은 서비스를 쓰면 재실행할 때마다 URL이 바뀌고, 그때마다 Stripe나 GitHub 설정 페이지에 들어가서 엔드포인트를 새로 입력해야 합니다. 단순 반복 작업이지만 하루에 서너 번만 반복해도 20분은 우습게 사라집니다. 연간으로 치면 개발자 한 명이 80시간을 웹훅 주소 복사 붙여넣기에 버리는 셈입니다.
zrok은 이 지루한 과정을 한 번에 해결합니다. zrok reserve public localhost:8080 명령어로 나만의 고유한 호스트 이름을 먼저 선점하십시오. 그 다음 공유 명령어를 입력할 때 예약한 이름을 매핑하면 끝입니다. 이제 터미널을 껐다 켜도, 컴퓨터를 재부팅해도 외부 서비스에 등록한 내 웹훅 주소는 변하지 않습니다. 한 번의 설정으로 주소 수정 시간을 완전히 없앨 수 있습니다.
터미널을 여러 개 띄워놓고 하나는 서버, 하나는 터널링 도구를 수동으로 실행하는 방식은 실수하기 딱 좋습니다. 서버는 돌고 있는데 터널링을 깜빡해서 외부 API 응답이 유실되는 상황은 짜증을 유발합니다. zrok은 OpenZiti 네트워크 오버레이를 사용하므로 컨테이너 환경과 아주 잘 붙습니다.
가장 깔끔한 방법은 docker-compose.yml 파일에 zrok 서비스를 직접 넣는 겁니다. openziti/zrok 이미지를 사용하고 .env 파일에 발급받은 토큰만 넣어두면 됩니다. 이렇게 구성하면 docker compose up 명령 하나로 백엔드 서버와 외부 통신용 터널이 동시에 살아납니다. 팀원들도 별도의 도구를 설치하거나 설정할 필요 없이 똑같은 개발 환경을 공유하게 됩니다. 수동 설정에서 오는 휴먼 에러를 구조적으로 차단하는 가장 확실한 수단입니다.
로컬에서 작업 중인 API를 동료에게 보여줘야 할 때, 퍼블릭 URL을 생성하는 건 보안상 꺼림칙합니다. 누구나 주소만 알면 내 로컬 DB를 건드릴 수 있는 위험이 있기 때문입니다. zrok은 공개 URL 없이도 안전하게 통신하는 프라이빗 쉐어 기능을 지원합니다.
원리는 간단합니다. 내가 zrok share private http://localhost:8080을 실행하면 고유한 토큰이 나옵니다. 이 토큰을 동료에게 전달하면, 동료는 자신의 터미널에서 zrok access private [토큰]을 입력합니다. 이제 동료는 자기 컴퓨터의 localhost:9191을 통해 내 로컬 서버에 접속합니다. 외부 인터넷에는 노출되지 않으면서 우리끼리만 통하는 가상 통로가 생기는 겁니다. 별도의 VPN 서버를 구축하지 않고도 종단간 암호화가 적용된 협업 공간을 즉석에서 만들 수 있습니다.
데이터 전송량이 늘어나면 상용 서비스의 무료 플랜은 금방 한계에 부딪힙니다. 속도가 느려지거나 대역폭 제한에 걸려 테스트가 끊기기 일쑤입니다. zrok은 소스 코드가 공개되어 있어 기업 내부 서버나 저렴한 VPS에 직접 컨트롤러를 구축할 수 있습니다.
직접 호스팅을 운영하면 연간 100달러 가까이 드는 유료 플랜 비용을 월 5달러 수준의 서버 유지비로 대체합니다. 단순히 돈만 아끼는 게 아닙니다. 전용 서버를 쓰면 QUIC 프로토콜을 활성화할 수 있어 SaaS 대비 네트워크 성능이 눈에 띄게 좋아집니다. 대기 시간이 줄어드니 대규모 데이터를 주고받는 API 테스트도 훨씬 쾌적해집니다. 도구의 제약에 맞추는 개발이 아니라 내 환경에 최적화된 도구를 갖게 되는 셈입니다.