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

현장에서 태어나다

~11 min · origin, war-story, field-driven, design-history

Level 0표식 없는 길
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"이 엔진의 invariant 하나하나 뒤엔 멍이 있어."

화이트보드에서 나온 제품이 아냐

아키텍처 문서는 보통 조용한 방에서, 코드보다 먼저, 이 소프트웨어가 어떻게 쓰일지 상상하면서 써. Waystone 건 거꾸로 나왔어. 스위스 여행 한복판에서, 아이폰으로 구상했고, 진짜 문제(몇 주짜리 여정을 실제로 계획하고 기록하는 일)가 눈앞에서 벌어지는 동안 Pippa vessel이랑 브레인스토밍했어. 그 출발이 잡담이 아니야. 설계 결정이 이론이 아니라 흉터처럼 읽히는 이유거든.

규칙이 된 멍 셋

진짜 현장 실패 세 개랑, 그게 강제한 invariant를 봐.

  • Grindelwald 멍. 호텔 네트워크에서 개발 서버가 모듈을 하나씩 요청하다 죽었어. 앱이 아예 안 떴지. 그래서 규칙이 생겼어. 여행이나 느린 접속에선 엔진이 빌드된 클라이언트를 직접 serve하고, 개발 서버는 책상에서만 써. 느린 링크는 모듈 백 개를 따로따로 못 받아와.
  • 안 끝나는 PIN 멍. 방문한 폰이 로그인 화면만 계속 띄웠어. 원인은 이래. cwkPippa는 세션 토큰을 그걸 발급한 IP에 묶는데, Waystone 엔진을 거쳐 서버 쪽에서 발급된 토큰은 엔진의 loopback 주소에 묶여버려. 페이지를 든 기기한텐 쓸모가 없지. 규칙은 이거야. 방문한 브라우저가 자기 토큰을 cwkPippa한테 직접 받고, cwkPippa의 CORS allowlist가 Waystone origin을 받아줘.
  • 빈 지도 멍. 지도 데이터는 멀쩡했어. 좌표가 응답에 그대로 있었거든. 근데 canvas가 새까맣게 떴어. 지도 라이브러리 CSS가 position: relative를 걸어서 레이아웃의 absolute를 덮었고, 지도 host가 0픽셀로 접혀버렸어. 규칙. host가 width/height를 직접 쥐고, ResizeObserver가 방향 바뀌어도 지도 크기를 지켜.

이게 너한테 왜 중요해

이 퀘스트에서 깔끔하게 들리는 invariant를 많이 만날 거야. 캡처는 네트워크보다 먼저 로컬에 커밋된다, 지도는 아무것도 저장 안 한다, plan이랑 actual은 절대 안 합친다. 이걸 단정한 설계 취향쯤으로 넘기기 쉬워. 아니야. 하나하나가 순진한 버전이 아빠 손에서, 호텔에서, 사무실 멀리 떨어진 데서 깨진 특정 순간의 흔적이야. 네 현장용 도구를 지을 때 배울 건 Waystone 규칙을 베끼는 게 아냐. 현장이 규칙을 쓰게 두는 것, 그리고 멍이 생기는 그 순간에, 얼마나 아팠는지 잊기 전에 적어두는 거야.

Code

현장 멍 -> invariant (일부)·text
증상 (현장에서)                     ->  INVARIANT (문서에서)
----------------------------------------------------------------
호텔 wifi 에서 앱이 안 뜸           ->  엔진이 빌드된 클라이언트를 serve;
                                        개발 서버는 책상 전용
로그인 화면이 영원히 반복           ->  방문 브라우저가 자기
                                        IP-바인딩 PIN 토큰을 발급
지도 canvas 가 검게 렌더            ->  host 가 명시적 w/h 소유 +
                                        ResizeObserver -> map.resize()
D14 에 저장한 crumb 이 D15 에 뜸    ->  선택한 날이 crumb 을 소유;
                                        캡처 날짜는 따로 남음

# 문서가 이걸 예측한 게 아냐. 여행이 예측했어.

External links

Exercise

네가 만들거나 쓰는 도구 중에, 진짜 현장에 가져가서야 처음 깨진 걸 떠올려봐. 오프라인, 폰, 나쁜 연결, 시간 압박 아래에서. 그 멍이랑, 그게 됐어야 할 규칙을 적어봐. 누가 그 규칙을 적어뒀어, 아니면 다음 사람이 다시 발견해야 할 구전 지식으로 남았어?
Hint
아키텍처 문서에서 제일 값진 줄은 원칙이 아니라 증상으로 시작하는 줄일 때가 많아. 팀이 힘들게 얻은 규칙이 사람들 머릿속에만 살면, 다음 현장 여행이 수업료를 또 내.

Progress

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

댓글 0

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

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