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

환경을 빌리고, 그게 대들게 놔둬

~11 min · dependencies, environments, constraints, design-signals

Level 0불 꺼진 작업장
0 XP0/35 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

자기 환경이 없어

작업장엔 의존성 명세도 없고 격리된 환경도 없어. host 형제가 이미 정의해둔 환경 안에서 돌면서, 그 백엔드가 깔아둔 걸 빌려 써. 저장소 입장에선 거의 이단이야. 격리된 환경은 대부분의 프로젝트가 제일 먼저 만드는 거고, 그럴 만한 이유도 충분하니까.

근거는 작업장이 그 백엔드의 클라이언트라는 거야. 실행할 때마다 그 서비스를 부르거든. 같은 환경에 살면 클라이언트랑 호출 대상이 서로 멀어지지 않고, 작업장이 이미지 합성이랑 네트워크 호출에 필요한 라이브러리는 백엔드가 먼저 필요로 했다는 이유로 이미 깔려 있어.

이빨 달린 규칙

이걸 게으름 이상으로 만드는 건 붙어 있는 조항이야. 작업장이 host 에 없는 패키지가 필요해지면, 그건 다시 생각하라는 신호지 환경을 포크할 이유가 아니다.

이게 뭘 하는지 좀 앉아서 봐. 의존성 하나가 없는 건 소프트웨어에서 제일 일상적인 사건이야. 추가하고 가던 길 가면 돼. 여기선 그게 증거로 재정의됐어. host 에 없는 게 갖고 싶다는 건 작업장이 host 가 정의한 능력의 테두리 밖으로 손을 뻗고 있다는 뜻이고, 그건 보통 둘 중 하나야. 형제 몫인 관심사를 흡수하고 있거나, 가족이 이미 어딘가에 가진 능력을 새로 키우려는 참이거나.

이건 일반적인데 잘 안 쓰이는 기법이야. 평범하게는 순수한 마찰일 제약이, 위반이 무슨 뜻인지를 미리 정해두는 것만으로 탐지기가 돼. 마찰은 어차피 있었을 거야. 그 뜻을 지명하는 게 그걸 정보로 바꿔.

이게 먹히는 건 시점 때문이야. 해석은 사건이 벌어지기 전에 적혀 있어야 해. 그 순간엔 항상 편한 읽기가 준비돼 있거든. 패키지는 필요하고, 일은 하던 중이고, "이번 건은 다르다"는 공학에서 자기 사례에 대해 제일 믿기 쉬운 문장이야. 미리 적어둔 규칙은 마감이 없던 시절의 너랑 논쟁하는 거고, 들을 값어치가 있는 건 딱 그 버전이지.

제약엔 규칙 말고 해석을 붙여. "여기 의존성 추가하지 마"는 사람들이 우회하는 규칙이야. "여기서 새 의존성이 필요하다는 건 설계가 어긋났다는 뜻이니까, 멈추고 어디서 어긋났는지 찾아라"는 진단이고. 걸린 사람한테 다음에 뭘 할지 알려주거든. 마음만 먹으면 우회할 수 있는 제약을 누가 지키는 이유는 그거 하나뿐이야.

Code

같은 사건, 두 가지 읽기·text
EVENT: the tool needs a library the host environment lacks

ordinary reading                    this design's reading
----------------                    ---------------------
"add it to the manifest"            "why does this tool need that?"
30 seconds of work                  a design question, answered before code
resolved, forgotten                 -> is this concern really ours?
                                    -> does a sibling already own it?
                                    -> are we about to duplicate a capability?

# Same friction either way. Only one of them produces information.
# The trick is deciding the INTERPRETATION before the event occurs,
# because afterward the convenient reading always wins.

External links

Exercise

팀이 이미 강제하고 있는 제약을 하나 골라봐. 크기 상한이든, 의존성 정책이든, 이름 규칙이든. 그리고 위반이 뭘 시사하는지 한 문장으로 정의해봐. 벌칙 말고 진단으로. 그다음 최근에 그게 위반된 세 건을 열어서 그 진단이 맞았을지 확인해. 안 맞았으면 그 제약은 자의적인 거고, 다시 쓰거나 버릴 값어치가 있어.
Hint
이 연습을 통과하는 제약은 위반이 진짜 밑바닥 문제 주위에 몰려 있는 거야. 위반이 흩어져 있고 서로 관계없으면 그건 딴 데서 물려받은 규칙이고, 그걸 강제하는 데 드는 주의력은 진짜로 뭔가를 탐지하는 제약에 쓸 수 있었던 거지.

Progress

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

댓글 0

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

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