S∆SS.

S∆SS Studio Notes · 원격(遠隔) · Nº 02

원격(遠隔) — 02 세 개의 실

태블릿 한 대에서 방 구석의 맥미니까지, 원격은 세 겹의 실로 짜인다 — 사설망(테일스케일), 명령을 치는 창(터미너스), 접속이 끊겨도 하던 일을 붙드는 그물(티먹스). 빠르게 세우려면 이 셋을 이 순서로 깔면 된다. 도구는 바꿔도 되지만, 역할은 바뀌지 않는다. 그리고 마지막에, 이 셋이 모두 막힐 날을 대비한 예비 통로 하나를 더 둔다.

§ 00 · 첫째 실 — 같은 방으로 잇는다

먼 기계에 붙으려면, 먼저 그 기계와 내 태블릿이 같은 방에 있는 것처럼 되어야 한다. 이 역할을 하는 것이 사설망이고, 내가 쓰는 도구는 테일스케일(Tailscale)이다. 서로 다른 곳에 있는 내 기기들만 조용히 이어, 마치 한 공간에 있는 것처럼 만든다.

오해를 하나 풀자. 이것은 흔히 아는 VPN — 모든 통신을 남의 서버로 우회시켜 위치를 숨기는 그것 — 과 다르다. 이 사설망은 내 기기끼리로 가는 것만 그 선을 타고, 사파리·메신저·유튜브 같은 일상 트래픽은 평소 경로로 그대로 나간다. 그래서 일상 앱이 느려지거나 이상해지지 않는다. 실은 얇고, 필요한 것만 잇는다.

유일하게 신경 쓸 것은 VPN 표시를 싫어하는 일부 금융 앱 정도다. 트래픽이 실제로 우회되든 아니든, 기기가 “VPN 켜짐”을 보는 것만으로 실행을 막는 앱이 있다. 은행 볼 때만 잠깐 끄면 그만이다.

§ 01 · 둘째 실 — 명령을 치는 창

두 기계가 같은 방에 놓이면, 이제 그 방에 대고 말을 걸 창이 필요하다. 태블릿에서 먼 기계의 명령줄을 여는 프로그램 — 이것이 창이고, 나는 터미너스(Termius)를 쓴다. 그 창을 흐르는 연결의 이름은 SSH다. 남이 엿볼 수 없는 암호화된 통로. 창을 통해 명령을 치면, 그 명령이 방 건너편 기계에서 실행된다.

창은 여럿 있고, 어느 것을 쓰든 상관없다. 다만 창이 지켜야 할 것은 하나다 — 안전한 통로여야 한다. 남이 엿볼 수 없는 암호화된 연결로 이어져야 하고, 그 연결은 비밀번호를 매번 치는 대신 열쇠 하나로 여닫는 편이 안전하고 편하다. 열쇠는 기계에 심고, 자물쇠는 저편에 둔다.

창에는 창마다의 버릇이 있다. 어떤 창은 화면에 뜬 주소를 이상하게 잘라 보여주고, 어떤 창은 한글 입력을 제대로 넘기지 못한다. 이 버릇들이 초보를 가장 많이 넘어뜨리는 자리인데 — 그 이야기는 다음 장의 몫이다.

§ 02 · 셋째 실 — 끊겨도 죽지 않는 그물

창만으로는 부족하다. 창은 약하다 — 지하철에 들어가 신호가 끊기거나, 태블릿이 잠들거나, 네트워크가 바뀌면, 창이 닫힌다. 그리고 창이 닫히는 순간, 그 창에서 돌던 작업도 함께 죽는다면? 긴 빌드를 걸어 두고 지하철을 탔다가, 한 정거장 만에 처음부터 다시 해야 한다.

그래서 셋째 실이 있다. 창과 작업 사이에 그물을 하나 친다. 이 그물의 이름은 티먹스(tmux)다. 작업은 창이 아니라 그물에 매달린다. 창이 닫혀도 그물은 먼 기계 안에 그대로 남아, 작업을 붙든 채 계속 돌린다. 다시 접속하면, 그 그물에 “다시 붙기”만 하면 하던 자리가 그대로 나온다.

이것이 원격개발의 안심 장치다. 나는 이 티먹스 그물 덕에, 접속이 끊긴 것을 여러 번 겪고도 작업을 한 번도 잃지 않았다. 끊기는 것은 창일 뿐, 그물은 기계 안에서 자지 않는다. 상주 시스템이 자지 않는 것처럼, 그물도 자지 않는다.

§ 03 · 비상 통로 — 하나로는 부족하다

앞의 세 실 — 테일스케일, 터미너스, 티먹스 — 은 사실 한 종류의 길이다. 글자로 명령을 주고받는 명령줄. 나는 여기에 성격이 다른 길을 하나 더 둔다. 태블릿에 먼 기계의 화면을 통째로 띄우는 원격 접속 프로그램이다.

솔직히 이 화면 길은 느리고, 손끝의 조작감도 불편하다. 명령줄이 날렵한 자전거라면, 이쪽은 굼뜬 트럭이다. 그런데도 나는 이것을 깔아 둔다. 이유는 하나다 — 채널 하나가 부서져 일이 멈춘다는 것은, 그 자체로 인프라의 실패이기 때문이다.

수많은 개발자가 배포 절차를 개발·사내·운영으로 나누고, 데이터베이스를 이중으로 두고, 클라우드에 여벌 이미지를 몇 개 띄울지 고민하는 것은 — 심심해서 부리는 디지털 차력쇼가 아니다. 하나가 죽어도 전체가 멈추지 않게 하려는 것이다. 같은 이야기다. 통로가 하나뿐이면, 그 하나가 끊기는 순간 일 전체가 멈춘다.

내 고민도 그 연장선에 있다. 명령줄이 막히는 날은 온다 — 오늘 겪지 않았을 뿐이다. 그날 화면 길이 굼뜬 트럭이라도 살아 있으면, 일은 멈추지 않는다. 그래서 예비 통로를 둔다. 원격을 아는 자는, 길이 뚫려 있을 때 두 번째 길을 판다.

Read this note at sass.studio.