블로그5분 읽기

테일스케일이 테일스케일 없는 테일스케일을 내놨습니다

테일스케일이 컨트롤 플레인을 뺀 오픈소스 배관 테일캣을 내놨습니다. 발표 조회 202,763, 북마크 2,245. 에이전트 플릿 시대의 방향 선언입니다.

테일스케일이 테일스케일 없는 테일스케일을 내놨습니다 대표 이미지

"Tailscale without Tailscale, by Tailscale. Meet tailcat." 공식 계정이 이미지 한 장을 붙여 올린 이 발표가 조회 202,763을 받았습니다. 좋아요 3,250에 북마크가 2,245예요. 북마크가 이만큼 붙는 건, 읽고 지나가는 글이 아니라 저장해 두는 글이라는 뜻이죠.

같은 이름이 세 번 반복되는 한 문장 안에 제품 전체가 들어 있습니다. 테일스케일이 자기 제품에서 테일스케일다운 부분을 전부 뺀 물건을, 자기 손으로 내놨어요. 자해처럼 보이지만, 뜯어보면 포석입니다.

이름은 테일캣입니다. 오픈소스 Go 패키지와 CLI로 나왔어요. 농담 같은 이름 뒤에 또렷한 설계가 있으니, 무엇을 남기고 무엇을 버렸는지 그 목록부터 보죠.

무엇을 뺐길래 테일스케일이 아닌가요?

테일스케일은 두 층으로 돌아갑니다. 기기 사이 연결을 실어 나르는 데이터 플레인, 그리고 누가 누구와 붙을지 정하는 컨트롤 플레인이에요.

테일캣은 컨트롤 플레인을 통째로 뺐습니다. 남긴 건 데이터 플레인, 그러니까 배관뿐이에요.

빠진 층에 살던 것들이 발표문에 그대로 나열돼 있습니다. 계정 없음. 로그인 없음. 관리자 없음. 관리할 IP 없음.

이 목록이 곧 설계 선언입니다. 네트워크를 쓰기 전에 사람이 거쳐야 했던 절차를 전부 지웠다는 뜻이거든요.

뒤집어 말하면 이렇게 돼요. 지금까지 테일스케일을 쓴다는 말은, 절반은 배관을 쓴다는 말이었고 절반은 그 절차를 받아들인다는 말이었습니다. 테일캣은 뒤쪽 절반을 떼어내고 이름까지 바꿔 달았어요.

계정과 로그인은 애초에 누구를 위한 장치였나요?

계정·로그인·관리자는 사람을 전제로 만든 장치입니다. 사람이 가입하고, 사람이 비밀번호를 치고, 사람이 콘솔에서 기기 목록을 살폈어요. 기기 수가 사람 수를 크게 벗어나지 않던 시절에는 이게 자연스러운 설계였습니다.

그런데 네트워크에 붙는 쪽이 바뀌고 있습니다. 사람이 아니라 에이전트 워커가 붙어요.

이 계정에서 다룬 링시(@lingxi)가 그 장면을 먼저 보여줬습니다. 클라우드 에이전트를 띄워 일을 시키다가, VPN이나 iOS 시뮬레이터가 필요하면 집 맥 미니와 private worker에 붙이는 워크플로였어요. 워커가 사람이면 머신 하나 늘릴 때 계정 하나 파는 게 대수롭지 않습니다. 워커가 에이전트고 그 수가 수십, 수백으로 불어나면 이야기가 달라져요. 머신마다 계정을 파고, 로그인을 시키고, IP를 장부에 적는 절차 자체가 병목이 됩니다. 묶어야 할 머신은 늘어나는데, 묶는 도구는 아직 사람 가입을 요구해요. 테일캣은 정확히 이 틈에 들어온 물건입니다.

가입 화면과 관리 콘솔은 사람 손을 부르는 관문입니다. 자동으로 돌아야 할 플릿 한가운데에 사람 손을 부르는 관문이 서 있으면, 그 지점에서 자동화가 끊겨요.

발표가 지운 목록을 다시 보면, 네 항목이 정확히 이 병목을 겨눕니다. 계정 없음은 가입 절차가 없다는 말이고, 로그인 없음은 자격 증명을 넣어줄 손이 필요 없다는 말이에요. 관리자 없음은 콘솔 앞에 앉을 사람이 없다는 말이고, 관리할 IP 없음은 장부 자체가 없다는 말이고요.

배관 회사가 왜 배관을 그냥 나눠줄까요?

테일스케일 본체는 계정과 관리 콘솔로 돌아가는 제품입니다. 그 회사가 연결 배관만 떼어 오픈소스로 풀었어요. 자기 제품에서 자기다운 부분을 스스로 걷어낸 셈입니다.

포장 형태가 힌트예요. 완제품 앱이 아니라 Go 패키지와 CLI입니다. 패키지라는 건, 다른 프로그램 안에 끼워 넣으라고 나눠주는 부품이라는 뜻이에요. 워커 데몬이든 오케스트레이터든, 자기 몸 안에 네트워크 층을 품고 태어날 수 있습니다. 네트워크가 '설치하고 설정하는 대상'에서 '코드가 불러오는 대상'으로 내려오는 거예요.

오픈소스라는 조건도 같은 줄에 놓여요. 기반에 깔리는 부품은 속이 보여야 채택됩니다. 소스가 열려 있으면 누구든 검증할 수 있고, 회사가 방향을 틀어도 부품은 살아남거든요.

저는 이 포장을 이렇게 읽습니다. 에이전트 플릿 시대에 배관은 관리 대상이 아니라 기본 재료가 돼요. 재료가 되려면 문턱이 없어야 하고, 문턱을 없애는 제일 확실한 방법이 계정을 지우고 소스를 여는 겁니다.

관리자가 하던 일은 이제 누가 하나요?

물론 발표문이 답하지 않은 질문도 남습니다.

계정과 로그인은 귀찮은 절차이기 전에 빗장이었습니다. 누가 들어오고 나가는지 관리자가 지켜봤고, 콘솔이 그 눈 노릇을 했어요. 빗장이 없는 판에서 기기 사이 신뢰를 어떻게 세울지는, 발표 한 장 밖에 있는 다음 질문입니다. 이건 테일캣만의 숙제도 아니에요. 사람 확인용으로 깔린 장치를 걷어내려는 모든 물건이 같은 벽 앞에 서죠.

다만 방향은 분명해요. 그 빗장을 사람 자리에 되돌려 놓는 게 아니라, 코드가 맡는 쪽으로 갑니다. 지켜보던 자리를 비우고 그 일을 프로그램에 넘기는 것, 그게 관리자 없는 네트워크라는 말이 담고 있는 그림이에요.

테일스케일 본체가 사라진다는 이야기도 아닙니다. 사람이 감독해야 하는 네트워크에는 여전히 계정과 콘솔이 맞는 답이에요. 테일캣은 그 옆에 사람 없는 네트워크용 판본을 하나 더 세운 거고요.

그래서 이 발표를 어떻게 읽어야 할까요?

저는 '관리자 없음'이 이 발표에서 제일 무거운 단어라고 봅니다.

계정 없는 서비스는 전에도 있었어요. 그런데 네트워크에서 관리자를 뺀다는 건 결이 달라요. 연결이라는 기반 시설을, 사람이 감독하지 않는 층으로 내려보낸다는 뜻이거든요.

반응 숫자도 이 독법 편이에요. 좋아요 셋에 북마크 둘 꼴로, 저장 비중이 이례적으로 높습니다. 웃고 지나간 게 아니라, 다들 어딘가에 적어둔 거예요.

이 계정에서 추적해 온 흐름과 겹쳐 읽으면 신호가 선명해집니다. 워커는 클라우드에 상주하고, 손은 집 맥 미니와 원격 박스로 뻗고, 이제 그 사이를 잇는 배관이 계정 없는 오픈소스로 풀립니다. 에이전트 플릿을 받치는 기반 시설이 한 층씩 익명 쪽으로 이동하는 중이에요.

계정을 만들 손이 없는 워커들 시대에, 배관 회사가 먼저 계정을 버렸습니다. 저는 이 발표를 말장난이 아니라 방향 선언으로 읽습니다.


원문·소스

FAQ

자주 묻는 질문

무엇을 뺐길래 테일스케일이 아닌가요?
테일캣은 컨트롤 플레인을 통째로 뺐습니다. 계정 없음, 로그인 없음, 관리자 없음, 관리할 IP 없음이 발표문에 나열돼 있고, 남긴 건 데이터 플레인, 즉 배관뿐이에요.
계정과 로그인은 애초에 누구를 위한 장치였나요?
사람을 전제로 만든 장치입니다. 기기 수가 사람 수를 크게 벗어나지 않던 시절에는 자연스러운 설계였지만, 워커가 에이전트고 수가 수십·수백으로 불어나면 머신마다 계정을 파는 절차 자체가 병목이 됩니다. 테일캣은 정확히 이 틈에 들어온 물건이에요.
배관 회사가 왜 배관을 그냥 나눠줄까요?
에이전트 플릿 시대에 배관은 관리 대상이 아니라 기본 재료가 됩니다. 재료가 되려면 문턱이 없어야 하고, 문턱을 없애는 제일 확실한 방법이 계정을 지우고 소스를 여는 것이에요. Go 패키지와 CLI로 나왔기에 다른 프로그램 안에 끼워 넣는 부품으로 쓸 수 있습니다.
그래서 이 발표를 어떻게 읽어야 할까요?
에이전트 플릿을 받치는 기반 시설이 한 층씩 익명 쪽으로 이동하는 방향 선언입니다. 좋아요 3,250에 북마크 2,245로 저장 비중이 이례적으로 높았고, 계정을 만들 손이 없는 워커들 시대에 배관 회사가 먼저 계정을 버린 셈이에요.