본문 바로가기
C.W.K.
Stream
Lesson 01 of 04 · published

두 개의 층

~13 min · firelink, two-tier, control-plane, launch-plane

Level 0식은 재
0 XP0/33 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"제품은 하나, 질문은 둘. 한 층이 남의 질문에 어설프게 답하게 두지 마."

절반 둘, 둘 다 있어야 해

Firelink 는 프로덕션 tier 둘로 지은 제품 하나야. 붙잡을 말은 둘 다 있어야 한다는 거고. Web Hub 가 '진짜'고 Native Launcher 는 있으면 좋은 것, 이런 게 아냐. 반대로 런처가 진짜고 web 이 대타인 것도 아니고. 둘 다 프로덕션까지 가야 v1 이 끝나. 진짜로 다른 두 질문에 각각 답하는 거거든.

Web Hub 는 관리 질문에 답해. 뭐가 있고, 뭐가 멀쩡하고, 뭘 해야 하지? 완전한 control room 이야. census, birth, deploy, restart, commit, audit 을 다 갖고, 쓰는 건 하나뿐인 머신 위에 얹혀 있어. Native Launcher 는 실행 질문에 답해. 지금 이 Mac 에서 뭘 열까? 빠르고, 로컬이고, 읽기만 하고, 모든 Mac 에 깔려 있지.

control plane 과 data plane, 그 얘기랑 같아

인프라 좀 봤으면 익숙할 거야. 가족 옷을 입은 control plane / data plane 분리거든. control plane(Web Hub)은 결정하고 권한을 쥐어. 계획하고, 바꾸고, 남기지. launch plane(Native Launcher)은 빠르고 로컬이고 반복되는 일을 해. 열어주는 거. 이 둘을 섞는 게 전형적인 실수야. deploy 까지 되는 런처는 control plane 만큼 지켜야 하는 런처고, 하루에 쉰 번 여는 control plane 은 위험할 만큼 빠릿하게 만들고 싶어지는 control plane 이거든.

왜 이 분리는 못 무르나

층을 갈라놔야 각자 자기 제약에 정직해질 수 있어. Web Hub 는 한 자리에 있고 인증 뒤에 있으니까 넓게 펼쳐도 돼. Native Launcher 는 writer 힘이 하나도 없으니까 어디에나 있고 즉각 뜰 수 있고. 런처 깔린 노트북을 잃어버려도 새는 건 읽기 전용 catalog 지 가족 열쇠가 아니야. '편하니까' 합치면 둘 중 하나가 돼. 런처를 control plane 급 보안으로 묶어 굼뜨게 만들거나, 어디에나 있는 런처한테 control plane 의 힘을 쥐여주거나. 이 분리는 관료주의가 아니라, 두 쪽 다 안전하게 지을 수 있게 해주는 장치야.

제품 하나, 층 둘, 규칙 하나. authority 는 안 나눠. Web Hub 가 관리를 맡고 Native Launcher 가 실행을 맡아. 기능은 하나하나 딱 한 층에만 속하고, '양쪽에 다 있으면 편할 텐데'는 경계가 부러지기 직전에 나는 소리야.

Code

두 층, 두 질문, 하나의 제품·text
  TIER              WEB HUB                    NATIVE LAUNCHER
  ---------------   ------------------------   --------------------------
  role              control plane              local launch plane
  primary question  what exists / healthy /    what do I open on THIS
                    what should I do?          Mac right now?
  host              one machine, single        every Mac, per-device
                    writer
  authority         full (birth, deploy,       none (read-only catalog
                    commit, restart, audit)    + open + favorites)
  loss blast radius authenticated control      a read-only catalog cache

  Both are required for production v1. Neither substitutes for the other.

External links

Exercise

'관리하는 일'이랑 '빨리 열어 쓰는 일'을 한 화면에 섞어놓은 도구를 하나 골라. admin 앱들이 흔히 그래. 그 기능들을 상상으로 두 층에 나눠봐. state 를 바꾸는 control plane, 읽고 열기만 하는 launch plane. 양쪽에 다 있고 싶다고 버틴 기능은 뭐였어? two-tier 로 갔다면 네가 결정을 내려야 했을 것들이 바로 그거야.
Hint
분리에 저항하는 기능은 대개 편의로 위장한 '바꾸기'야. 빠른 패널에 붙은 restart 버튼, 읽기 전용 화면의 인라인 편집 같은 거. 그 저항은 합칠 이유가 아니라 신호야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인 — 댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.