"제품은 하나, 질문은 둘. 한 층이 남의 질문에 어설프게 답하게 두지 마."
절반 둘, 둘 다 있어야 해
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 의 힘을 쥐여주거나. 이 분리는 관료주의가 아니라, 두 쪽 다 안전하게 지을 수 있게 해주는 장치야.