← 카탈로그

Monorepo Docker Dev — 핫리로드·의존성 격리·URL 이원화

architecturespear

"여러 가게가 든 한 건물을, 마스터 스위치 하나로 다 켠다" 는 방법이에요. 앱 여러 개(가게)를 한 창고(모노레포)에 두고 버튼 한 번(도커) 으로 다 켜서, 코드를 고치면 바로바로 반영되게 개발해요.

비유: 한 건물 안의 여러 가게 🏬

  • 건물(모노레포) = 여러 앱(뒷단 서버, 화면 여러 개, 데이터베이스)을 한 곳에 모아둔 창고.
  • 마스터 스위치(도커 컴포즈 한 방) = 버튼 하나 누르면 모든 가게에 동시에 불이 켜져요.
  • 가게 진열대(소스 코드) = 우리가 실시간으로 바꾸는 내용.
  • 가게 창고(부품 = 라이브러리) = 각 가게가 쓰는 재료. 이건 가게 안에 따로 둬요.

좋은 점 1: 고치면 바로 보여요 (핫리로드)

진열대(소스)는 건물과 바로 연결돼 있어서, 우리가 내 컴퓨터에서 코드를 고쳐 저장하면 가게 화면에 곧바로 반영돼요. 매번 불을 껐다 켜지 않아도 돼요.

좋은 점 2: 부품을 서로 안 섞어요 (의존성 격리)

여기서 중요한 트릭. 내 컴퓨터(맥)에서 산 부품과 가게 안(리눅스)에서 쓰는 부품은 모양이 달라요. 서로 섞이면 고장 나요. 그래서 진열대(소스)는 공유하되, 부품 창고만은 가게 안에 따로 잠가둬요. 부품은 가게 안에서 새로 사서 채워요.

그리고 부품 채우기는 가게 열기 전에 딱 한 번만 해요. 가게마다 따로따로 사면 뒤엉키니까, "부품 담당" 한 명이 먼저 다 채워두고, 그게 끝나야 가게들이 문을 열어요.

좋은 점 3: 주소를 헷갈리면 안 돼요 (URL 이원화)

  • 손님(브라우저)이 찾아오는 주소 와, 가게끼리 서로 부르는 주소 가 달라요.
  • 손님은 바깥 주소로 오고, 가게끼리는 건물 안 가게 이름으로 불러요.
  • 이 둘을 헷갈리면 겉으론 멀쩡한데 조용히 안 되는 상태가 돼요.

조심할 점 하나 (재촉하지 말기)

"바뀐 거 없나?" 하고 너무 자주 들여다보면(폴링), 파일을 저장하는 도중에 읽어버려서 반쪽짜리 내용으로 고장 나요. 그냥 바뀌면 알려주는 방식에 맡기는 게 안전해요.

핵심만 다시

  1. 여러 앱을 한 건물(모노레포) 에 모으고 버튼 한 번(도커) 으로 다 켜요.
  2. 진열대(소스)는 공유해서 고치면 바로 반영, 부품(라이브러리)은 가게 안에 따로 잠가 안 섞이게.
  3. 부품 채우기는 먼저 한 번만, 끝나야 가게들이 문 열어요.
  4. 손님 주소 ≠ 가게끼리 주소 — 헷갈리면 조용히 깨져요. 그리고 너무 자주 들여다보지 않기.

더 자세한 진짜 코드·설계는 옆의 개요 / Variants / Apply Recipe 탭에서 볼 수 있어요.