{"componentChunkName":"component---src-templates-blog-post-js","path":"/etc/모노레포-도입-실패기-Turborepo로-옮기다가-겪은-문제들/","result":{"data":{"site":{"siteMetadata":{"title":"Bottlehs Tech Blog","description":"웹·앱·AI 개발자 전병훈(bottlehs)의 기술 블로그. AI·LLM, JavaScript·Vue, Spring Boot, 알고리즘, 블록체인 실무 가이드를 다룹니다","siteUrl":"https://www.bottlehs.dev","author":{"name":"Jeon Byung Hun","summary":"개발을 즐기는 bottlehs - Engineer, MS, AI, FE, BE, OS, IOT, Blockchain, 설계, 테스트"},"social":{"github":"bottlehs","codepen":"bottlehs"}}},"markdownRemark":{"id":"fcba355a-33e8-517d-b955-8a9007df79e3","excerpt":"모노레포 도입 실패기 모노레포는 대규모 프로젝트 관리의 해결책처럼 보였다. 코드 공유가 쉬워지고, 일관성 있는 개발 환경을 만들 수 있다는 매력에 빠져 우리 팀은 멀티레포에서 모노레포로 전환하기로 결정했다. 하지만…","html":"<p><img src=\"/assets/etc.png\" alt=\"모노레포 도입 실패기\" title=\"모노레포 도입 실패기\"></p>\n<p>모노레포는 대규모 프로젝트 관리의 해결책처럼 보였다. 코드 공유가 쉬워지고, 일관성 있는 개발 환경을 만들 수 있다는 매력에 빠져 우리 팀은 멀티레포에서 모노레포로 전환하기로 결정했다. 하지만 3개월 후, 우리는 다시 멀티레포로 돌아갔다. 이 글은 그 실패 과정을 솔직하게 기록한 것이다.</p>\n<h2 id=\"시작-모노레포에-대한-환상\" style=\"position:relative;\"><a href=\"#%EC%8B%9C%EC%9E%91-%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC%EC%97%90-%EB%8C%80%ED%95%9C-%ED%99%98%EC%83%81\" aria-label=\"시작 모노레포에 대한 환상 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>시작: 모노레포에 대한 환상</h2>\n<h3 id=\"왜-모노레포를-선택했나\" style=\"position:relative;\"><a href=\"#%EC%99%9C-%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC%EB%A5%BC-%EC%84%A0%ED%83%9D%ED%96%88%EB%82%98\" aria-label=\"왜 모노레포를 선택했나 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>왜 모노레포를 선택했나</h3>\n<p>우리 팀은 5개의 서로 다른 저장소를 관리하고 있었다. 프론트엔드, 백엔드 API, 관리자 페이지, 모바일 앱, 공유 라이브러리. 각각 독립적으로 개발되고 있었지만, 공유 라이브러리를 업데이트할 때마다 5개 저장소를 모두 수정해야 하는 불편함이 있었다.</p>\n<p>“모노레포로 옮기면 코드 공유가 쉬워지고, 빌드도 빠르고, 일관성도 유지할 수 있을 거야.” 이렇게 생각하며 Turborepo를 선택했다. 문서를 보니 멋져 보였다. 캐싱도 되고, 병렬 빌드도 되고.</p>\n<h3 id=\"초기-기대감\" style=\"position:relative;\"><a href=\"#%EC%B4%88%EA%B8%B0-%EA%B8%B0%EB%8C%80%EA%B0%90\" aria-label=\"초기 기대감 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>초기 기대감</h3>\n<p>2025년 9월, 모노레포 전환 프로젝트를 시작했다. 팀원들도 대부분 긍정적이었다. “코드 공유가 쉬워지면 좋겠다”, “빌드 시스템이 통일되면 편할 것 같다”는 반응이었다.</p>\n<p>처음 한 달은 순조로웠다. 기존 저장소들을 <code class=\"language-text\">apps/</code>와 <code class=\"language-text\">packages/</code> 폴더로 옮기고, <code class=\"language-text\">turbo.json</code>을 설정했다. 간단한 프로젝트부터 시작해서 점진적으로 옮기기로 했다.</p>\n<h2 id=\"첫-번째-문제-빌드-시간-폭증\" style=\"position:relative;\"><a href=\"#%EC%B2%AB-%EB%B2%88%EC%A7%B8-%EB%AC%B8%EC%A0%9C-%EB%B9%8C%EB%93%9C-%EC%8B%9C%EA%B0%84-%ED%8F%AD%EC%A6%9D\" aria-label=\"첫 번째 문제 빌드 시간 폭증 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>첫 번째 문제: 빌드 시간 폭증</h2>\n<h3 id=\"예상과-다른-현실\" style=\"position:relative;\"><a href=\"#%EC%98%88%EC%83%81%EA%B3%BC-%EB%8B%A4%EB%A5%B8-%ED%98%84%EC%8B%A4\" aria-label=\"예상과 다른 현실 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>예상과 다른 현실</h3>\n<p>문서에는 “캐싱으로 빌드 시간이 단축된다”고 되어 있었다. 하지만 우리의 경우는 달랐다.</p>\n<p><strong>이전 (멀티레포):</strong></p>\n<ul>\n<li>프론트엔드 빌드: 2분</li>\n<li>백엔드 빌드: 1분</li>\n<li>총 빌드 시간: 3분 (병렬 실행 시)</li>\n</ul>\n<p><strong>모노레포 전환 후:</strong></p>\n<ul>\n<li>전체 빌드: 8분</li>\n<li>캐싱 후에도: 5분</li>\n</ul>\n<p>왜 이렇게 느려졌을까? Turborepo가 의존성 그래프를 분석하고, 각 패키지를 순차적으로 빌드하는 과정에서 오버헤드가 발생했다. 작은 변경사항 하나만 있어도 전체 의존성을 다시 확인해야 했다.</p>\n<h3 id=\"팀원들의-불만\" style=\"position:relative;\"><a href=\"#%ED%8C%80%EC%9B%90%EB%93%A4%EC%9D%98-%EB%B6%88%EB%A7%8C\" aria-label=\"팀원들의 불만 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>팀원들의 불만</h3>\n<p>빌드 시간이 늘어나면서 개발 속도가 느려졌다. 특히 CI/CD 파이프라인에서 문제가 심각했다. </p>\n<p>“작은 수정 하나 하는데 왜 이렇게 오래 걸려?”\n“이전에는 5분이면 되던 게 지금은 15분이 걸려.”</p>\n<p>팀원들의 불만이 쌓이기 시작했다. 나도 답답했다. 분명히 더 빨라질 거라고 생각했는데.</p>\n<h2 id=\"두-번째-문제-의존성-지옥\" style=\"position:relative;\"><a href=\"#%EB%91%90-%EB%B2%88%EC%A7%B8-%EB%AC%B8%EC%A0%9C-%EC%9D%98%EC%A1%B4%EC%84%B1-%EC%A7%80%EC%98%A5\" aria-label=\"두 번째 문제 의존성 지옥 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>두 번째 문제: 의존성 지옥</h2>\n<h3 id=\"순환-의존성-발견\" style=\"position:relative;\"><a href=\"#%EC%88%9C%ED%99%98-%EC%9D%98%EC%A1%B4%EC%84%B1-%EB%B0%9C%EA%B2%AC\" aria-label=\"순환 의존성 발견 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>순환 의존성 발견</h3>\n<p>모노레포로 옮기면서 숨어있던 문제들이 드러났다. 가장 큰 문제는 순환 의존성이었다.</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">apps/frontend → packages/shared-ui\npackages/shared-ui → packages/utils\npackages/utils → apps/frontend (???)</code></pre></div>\n<p>이런 순환 의존성이 있었다. 멀티레포였을 때는 각 저장소가 독립적이라 문제가 되지 않았지만, 모노레포에서는 빌드 순서를 결정할 수 없어서 에러가 발생했다.</p>\n<h3 id=\"버전-충돌\" style=\"position:relative;\"><a href=\"#%EB%B2%84%EC%A0%84-%EC%B6%A9%EB%8F%8C\" aria-label=\"버전 충돌 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>버전 충돌</h3>\n<p>각 앱이 사용하던 라이브러리 버전이 달랐다. 예를 들어:</p>\n<ul>\n<li>프론트엔드: React 18.2</li>\n<li>관리자 페이지: React 18.0</li>\n<li>공유 라이브러리: React 18.2</li>\n</ul>\n<p>모노레포에서는 루트에 설치된 버전을 공유해야 했는데, 버전이 달라서 호환성 문제가 발생했다. 모든 앱을 같은 버전으로 업그레이드하려니 다른 문제들이 생겼다.</p>\n<h2 id=\"세-번째-문제-git-히스토리와-충돌\" style=\"position:relative;\"><a href=\"#%EC%84%B8-%EB%B2%88%EC%A7%B8-%EB%AC%B8%EC%A0%9C-git-%ED%9E%88%EC%8A%A4%ED%86%A0%EB%A6%AC%EC%99%80-%EC%B6%A9%EB%8F%8C\" aria-label=\"세 번째 문제 git 히스토리와 충돌 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>세 번째 문제: Git 히스토리와 충돌</h2>\n<h3 id=\"히스토리-통합의-어려움\" style=\"position:relative;\"><a href=\"#%ED%9E%88%EC%8A%A4%ED%86%A0%EB%A6%AC-%ED%86%B5%ED%95%A9%EC%9D%98-%EC%96%B4%EB%A0%A4%EC%9B%80\" aria-label=\"히스토리 통합의 어려움 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>히스토리 통합의 어려움</h3>\n<p>기존 저장소들의 Git 히스토리를 통합하는 것도 문제였다. <code class=\"language-text\">git subtree</code>를 사용해서 옮겼지만, 히스토리가 복잡해졌다.</p>\n<p>더 큰 문제는 충돌이었다. 여러 개발자가 동시에 작업할 때, 같은 파일을 수정하는 경우가 많아졌다. 멀티레포였을 때는 각 저장소가 독립적이라 충돌이 적었지만, 모노레포에서는 자주 발생했다.</p>\n<h3 id=\"브랜치-관리의-복잡성\" style=\"position:relative;\"><a href=\"#%EB%B8%8C%EB%9E%9C%EC%B9%98-%EA%B4%80%EB%A6%AC%EC%9D%98-%EB%B3%B5%EC%9E%A1%EC%84%B1\" aria-label=\"브랜치 관리의 복잡성 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>브랜치 관리의 복잡성</h3>\n<p>브랜치 전략도 복잡해졌다. 각 앱별로 브랜치를 만들어야 했는데, 모노레포에서는 하나의 브랜치에 모든 변경사항이 들어갔다. 리뷰하기도 어려워졌다.</p>\n<h2 id=\"네-번째-문제-팀-내부-갈등\" style=\"position:relative;\"><a href=\"#%EB%84%A4-%EB%B2%88%EC%A7%B8-%EB%AC%B8%EC%A0%9C-%ED%8C%80-%EB%82%B4%EB%B6%80-%EA%B0%88%EB%93%B1\" aria-label=\"네 번째 문제 팀 내부 갈등 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>네 번째 문제: 팀 내부 갈등</h2>\n<h3 id=\"개발자들의-반발\" style=\"position:relative;\"><a href=\"#%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%93%A4%EC%9D%98-%EB%B0%98%EB%B0%9C\" aria-label=\"개발자들의 반발 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>개발자들의 반발</h3>\n<p>3개월이 지나면서 팀원들의 불만이 커졌다.</p>\n<p>“이전 방식이 더 나았어.”\n“왜 이렇게 복잡하게 만들었어?”\n“빌드만 하면 10분씩 걸려.”</p>\n<p>특히 주니어 개발자들이 힘들어했다. 모노레포 구조를 이해하는 것도 어려웠고, 빌드 에러를 해결하는 것도 복잡했다.</p>\n<h3 id=\"내-고민\" style=\"position:relative;\"><a href=\"#%EB%82%B4-%EA%B3%A0%EB%AF%BC\" aria-label=\"내 고민 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>내 고민</h3>\n<p>나도 고민이 많았다. 분명히 좋은 선택이라고 생각했는데, 현실은 달랐다. 팀원들의 불만을 보면서 “내가 잘못 선택한 건가?”라는 생각이 들었다.</p>\n<p>하지만 이미 3개월을 투자했고, 되돌리기엔 너무 많은 작업이 필요했다. 그래도 계속 밀어붙였지만, 상황은 나아지지 않았다.</p>\n<h2 id=\"결국-되돌리기로-결정\" style=\"position:relative;\"><a href=\"#%EA%B2%B0%EA%B5%AD-%EB%90%98%EB%8F%8C%EB%A6%AC%EA%B8%B0%EB%A1%9C-%EA%B2%B0%EC%A0%95\" aria-label=\"결국 되돌리기로 결정 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>결국 되돌리기로 결정</h2>\n<h3 id=\"결정의-순간\" style=\"position:relative;\"><a href=\"#%EA%B2%B0%EC%A0%95%EC%9D%98-%EC%88%9C%EA%B0%84\" aria-label=\"결정의 순간 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>결정의 순간</h3>\n<p>2025년 12월, 팀 회의에서 모노레포를 포기하기로 결정했다. 3개월 동안의 시도가 실패로 끝났다.</p>\n<p><strong>결정 이유:</strong></p>\n<ol>\n<li>빌드 시간이 오히려 늘어났다</li>\n<li>개발 속도가 느려졌다</li>\n<li>팀원들의 불만이 커졌다</li>\n<li>복잡도만 증가했다</li>\n</ol>\n<h3 id=\"되돌리는-과정\" style=\"position:relative;\"><a href=\"#%EB%90%98%EB%8F%8C%EB%A6%AC%EB%8A%94-%EA%B3%BC%EC%A0%95\" aria-label=\"되돌리는 과정 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>되돌리는 과정</h3>\n<p>되돌리는 것도 쉽지 않았다. 각 앱을 다시 독립적인 저장소로 분리해야 했다. Git 히스토리를 복원하고, 의존성을 다시 설정하고, CI/CD 파이프라인을 수정했다. 한 달이 더 걸렸다.</p>\n<h2 id=\"배운-점들\" style=\"position:relative;\"><a href=\"#%EB%B0%B0%EC%9A%B4-%EC%A0%90%EB%93%A4\" aria-label=\"배운 점들 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>배운 점들</h2>\n<h3 id=\"1-모든-프로젝트에-모노레포가-적합한-것은-아니다\" style=\"position:relative;\"><a href=\"#1-%EB%AA%A8%EB%93%A0-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EC%97%90-%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC%EA%B0%80-%EC%A0%81%ED%95%A9%ED%95%9C-%EA%B2%83%EC%9D%80-%EC%95%84%EB%8B%88%EB%8B%A4\" aria-label=\"1 모든 프로젝트에 모노레포가 적합한 것은 아니다 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1. 모든 프로젝트에 모노레포가 적합한 것은 아니다</h3>\n<p>우리 팀의 경우, 각 앱이 독립적으로 배포되고, 팀도 분리되어 있었다. 이런 상황에서는 모노레포가 오히려 복잡도만 증가시켰다.</p>\n<p><strong>모노레포가 적합한 경우:</strong></p>\n<ul>\n<li>팀이 하나로 통합되어 있을 때</li>\n<li>코드 공유가 매우 많을 때</li>\n<li>배포가 함께 이루어질 때</li>\n</ul>\n<p><strong>멀티레포가 나은 경우:</strong></p>\n<ul>\n<li>각 앱이 독립적으로 운영될 때</li>\n<li>팀이 분리되어 있을 때</li>\n<li>배포 주기가 다를 때</li>\n</ul>\n<h3 id=\"2-기술-선택은-팀-상황을-고려해야-한다\" style=\"position:relative;\"><a href=\"#2-%EA%B8%B0%EC%88%A0-%EC%84%A0%ED%83%9D%EC%9D%80-%ED%8C%80-%EC%83%81%ED%99%A9%EC%9D%84-%EA%B3%A0%EB%A0%A4%ED%95%B4%EC%95%BC-%ED%95%9C%EB%8B%A4\" aria-label=\"2 기술 선택은 팀 상황을 고려해야 한다 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2. 기술 선택은 팀 상황을 고려해야 한다</h3>\n<p>트렌드를 따라가는 것보다, 팀의 상황과 프로젝트의 특성을 고려하는 것이 중요하다. 우리는 “모노레포가 트렌드니까”라는 이유로 선택했지만, 우리 팀에는 맞지 않았다.</p>\n<h3 id=\"3-점진적-도입이-중요하다\" style=\"position:relative;\"><a href=\"#3-%EC%A0%90%EC%A7%84%EC%A0%81-%EB%8F%84%EC%9E%85%EC%9D%B4-%EC%A4%91%EC%9A%94%ED%95%98%EB%8B%A4\" aria-label=\"3 점진적 도입이 중요하다 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3. 점진적 도입이 중요하다</h3>\n<p>한 번에 모든 것을 옮기려고 하지 말고, 작은 프로젝트부터 시작해서 문제를 파악하고 개선하는 것이 중요하다. 우리는 너무 성급했다.</p>\n<h3 id=\"4-실패를-빠르게-인정하는-용기\" style=\"position:relative;\"><a href=\"#4-%EC%8B%A4%ED%8C%A8%EB%A5%BC-%EB%B9%A0%EB%A5%B4%EA%B2%8C-%EC%9D%B8%EC%A0%95%ED%95%98%EB%8A%94-%EC%9A%A9%EA%B8%B0\" aria-label=\"4 실패를 빠르게 인정하는 용기 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>4. 실패를 빠르게 인정하는 용기</h3>\n<p>3개월이나 걸렸지만, 결국 실패를 인정하고 되돌렸다. 이 결정이 쉽지 않았지만, 지금 생각해보면 더 빨리 결정했어야 했다.</p>\n<h2 id=\"지금은-어떻게-하고-있나\" style=\"position:relative;\"><a href=\"#%EC%A7%80%EA%B8%88%EC%9D%80-%EC%96%B4%EB%96%BB%EA%B2%8C-%ED%95%98%EA%B3%A0-%EC%9E%88%EB%82%98\" aria-label=\"지금은 어떻게 하고 있나 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>지금은 어떻게 하고 있나</h2>\n<h3 id=\"개선된-멀티레포-전략\" style=\"position:relative;\"><a href=\"#%EA%B0%9C%EC%84%A0%EB%90%9C-%EB%A9%80%ED%8B%B0%EB%A0%88%ED%8F%AC-%EC%A0%84%EB%9E%B5\" aria-label=\"개선된 멀티레포 전략 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>개선된 멀티레포 전략</h3>\n<p>모노레포로 돌아간 후, 우리는 멀티레포를 개선했다:</p>\n<p><strong>공유 라이브러리 관리:</strong></p>\n<ul>\n<li>npm private registry 사용</li>\n<li>버전 관리 체계화</li>\n<li>자동 업데이트 스크립트</li>\n</ul>\n<p><strong>빌드 시스템:</strong></p>\n<ul>\n<li>GitHub Actions로 통합</li>\n<li>병렬 빌드 최적화</li>\n<li>캐싱 전략 개선</li>\n</ul>\n<p><strong>문서화:</strong></p>\n<ul>\n<li>각 저장소의 역할 명확화</li>\n<li>의존성 관계 문서화</li>\n<li>온보딩 가이드 작성</li>\n</ul>\n<h3 id=\"현재-상태\" style=\"position:relative;\"><a href=\"#%ED%98%84%EC%9E%AC-%EC%83%81%ED%83%9C\" aria-label=\"현재 상태 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>현재 상태</h3>\n<p>지금은 멀티레포로 잘 운영하고 있다. 각 팀이 독립적으로 작업하면서도, 필요한 부분만 공유하는 방식이다. 빌드 시간도 줄었고, 개발 속도도 향상되었다.</p>\n<h2 id=\"다른-개발자들에게\" style=\"position:relative;\"><a href=\"#%EB%8B%A4%EB%A5%B8-%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%93%A4%EC%97%90%EA%B2%8C\" aria-label=\"다른 개발자들에게 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>다른 개발자들에게</h2>\n<h3 id=\"모노레포를-고려한다면\" style=\"position:relative;\"><a href=\"#%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC%EB%A5%BC-%EA%B3%A0%EB%A0%A4%ED%95%9C%EB%8B%A4%EB%A9%B4\" aria-label=\"모노레포를 고려한다면 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>모노레포를 고려한다면</h3>\n<p>모노레포를 도입하려는 팀이 있다면, 다음을 고려해보길 바란다:</p>\n<ol>\n<li><strong>팀 구조를 먼저 확인하라</strong>: 팀이 통합되어 있는가?</li>\n<li><strong>작은 프로젝트부터 시작하라</strong>: 전체를 한 번에 옮기지 말라</li>\n<li><strong>빌드 시간을 측정하라</strong>: 실제로 빨라지는지 확인하라</li>\n<li><strong>팀원들의 피드백을 듣라</strong>: 불만이 쌓이기 전에 조치하라</li>\n</ol>\n<h3 id=\"실패를-두려워하지-말라\" style=\"position:relative;\"><a href=\"#%EC%8B%A4%ED%8C%A8%EB%A5%BC-%EB%91%90%EB%A0%A4%EC%9B%8C%ED%95%98%EC%A7%80-%EB%A7%90%EB%9D%BC\" aria-label=\"실패를 두려워하지 말라 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>실패를 두려워하지 말라</h3>\n<p>우리의 실패 경험이 다른 팀에게는 도움이 될 수 있다. 실패를 통해 배운 것들이 많다. 모노레포가 우리 팀에 맞지 않았을 뿐, 다른 팀에게는 적합할 수 있다.</p>\n<h2 id=\"결론-실패에서-배운-것\" style=\"position:relative;\"><a href=\"#%EA%B2%B0%EB%A1%A0-%EC%8B%A4%ED%8C%A8%EC%97%90%EC%84%9C-%EB%B0%B0%EC%9A%B4-%EA%B2%83\" aria-label=\"결론 실패에서 배운 것 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>결론: 실패에서 배운 것</h2>\n<p>모노레포 도입은 실패했지만, 이 경험을 통해 많은 것을 배웠다. 기술 선택의 중요성, 팀 상황 고려의 필요성, 실패를 빠르게 인정하는 용기까지.</p>\n<p>지금은 멀티레포로 잘 운영하고 있지만, 미래에 팀 구조가 바뀌고 프로젝트가 커지면 다시 모노레포를 고려할 수도 있다. 그때는 이번 경험을 바탕으로 더 신중하게 접근할 것이다.</p>\n<p>실패는 배움의 기회다. 이 경험이 다른 개발자들에게 도움이 되기를 바란다.</p>","tableOfContents":"<ul>\n<li>\n<p><a href=\"/etc/%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC-%EB%8F%84%EC%9E%85-%EC%8B%A4%ED%8C%A8%EA%B8%B0-Turborepo%EB%A1%9C-%EC%98%AE%EA%B8%B0%EB%8B%A4%EA%B0%80-%EA%B2%AA%EC%9D%80-%EB%AC%B8%EC%A0%9C%EB%93%A4/#%EC%8B%9C%EC%9E%91-%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC%EC%97%90-%EB%8C%80%ED%95%9C-%ED%99%98%EC%83%81\">시작: 모노레포에 대한 환상</a></p>\n<ul>\n<li><a href=\"/etc/%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC-%EB%8F%84%EC%9E%85-%EC%8B%A4%ED%8C%A8%EA%B8%B0-Turborepo%EB%A1%9C-%EC%98%AE%EA%B8%B0%EB%8B%A4%EA%B0%80-%EA%B2%AA%EC%9D%80-%EB%AC%B8%EC%A0%9C%EB%93%A4/#%EC%99%9C-%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC%EB%A5%BC-%EC%84%A0%ED%83%9D%ED%96%88%EB%82%98\">왜 모노레포를 선택했나</a></li>\n<li><a href=\"/etc/%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC-%EB%8F%84%EC%9E%85-%EC%8B%A4%ED%8C%A8%EA%B8%B0-Turborepo%EB%A1%9C-%EC%98%AE%EA%B8%B0%EB%8B%A4%EA%B0%80-%EA%B2%AA%EC%9D%80-%EB%AC%B8%EC%A0%9C%EB%93%A4/#%EC%B4%88%EA%B8%B0-%EA%B8%B0%EB%8C%80%EA%B0%90\">초기 기대감</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/etc/%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC-%EB%8F%84%EC%9E%85-%EC%8B%A4%ED%8C%A8%EA%B8%B0-Turborepo%EB%A1%9C-%EC%98%AE%EA%B8%B0%EB%8B%A4%EA%B0%80-%EA%B2%AA%EC%9D%80-%EB%AC%B8%EC%A0%9C%EB%93%A4/#%EC%B2%AB-%EB%B2%88%EC%A7%B8-%EB%AC%B8%EC%A0%9C-%EB%B9%8C%EB%93%9C-%EC%8B%9C%EA%B0%84-%ED%8F%AD%EC%A6%9D\">첫 번째 문제: 빌드 시간 폭증</a></p>\n<ul>\n<li><a href=\"/etc/%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC-%EB%8F%84%EC%9E%85-%EC%8B%A4%ED%8C%A8%EA%B8%B0-Turborepo%EB%A1%9C-%EC%98%AE%EA%B8%B0%EB%8B%A4%EA%B0%80-%EA%B2%AA%EC%9D%80-%EB%AC%B8%EC%A0%9C%EB%93%A4/#%EC%98%88%EC%83%81%EA%B3%BC-%EB%8B%A4%EB%A5%B8-%ED%98%84%EC%8B%A4\">예상과 다른 현실</a></li>\n<li><a href=\"/etc/%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC-%EB%8F%84%EC%9E%85-%EC%8B%A4%ED%8C%A8%EA%B8%B0-Turborepo%EB%A1%9C-%EC%98%AE%EA%B8%B0%EB%8B%A4%EA%B0%80-%EA%B2%AA%EC%9D%80-%EB%AC%B8%EC%A0%9C%EB%93%A4/#%ED%8C%80%EC%9B%90%EB%93%A4%EC%9D%98-%EB%B6%88%EB%A7%8C\">팀원들의 불만</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/etc/%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC-%EB%8F%84%EC%9E%85-%EC%8B%A4%ED%8C%A8%EA%B8%B0-Turborepo%EB%A1%9C-%EC%98%AE%EA%B8%B0%EB%8B%A4%EA%B0%80-%EA%B2%AA%EC%9D%80-%EB%AC%B8%EC%A0%9C%EB%93%A4/#%EB%91%90-%EB%B2%88%EC%A7%B8-%EB%AC%B8%EC%A0%9C-%EC%9D%98%EC%A1%B4%EC%84%B1-%EC%A7%80%EC%98%A5\">두 번째 문제: 의존성 지옥</a></p>\n<ul>\n<li><a href=\"/etc/%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC-%EB%8F%84%EC%9E%85-%EC%8B%A4%ED%8C%A8%EA%B8%B0-Turborepo%EB%A1%9C-%EC%98%AE%EA%B8%B0%EB%8B%A4%EA%B0%80-%EA%B2%AA%EC%9D%80-%EB%AC%B8%EC%A0%9C%EB%93%A4/#%EC%88%9C%ED%99%98-%EC%9D%98%EC%A1%B4%EC%84%B1-%EB%B0%9C%EA%B2%AC\">순환 의존성 발견</a></li>\n<li><a href=\"/etc/%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC-%EB%8F%84%EC%9E%85-%EC%8B%A4%ED%8C%A8%EA%B8%B0-Turborepo%EB%A1%9C-%EC%98%AE%EA%B8%B0%EB%8B%A4%EA%B0%80-%EA%B2%AA%EC%9D%80-%EB%AC%B8%EC%A0%9C%EB%93%A4/#%EB%B2%84%EC%A0%84-%EC%B6%A9%EB%8F%8C\">버전 충돌</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/etc/%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC-%EB%8F%84%EC%9E%85-%EC%8B%A4%ED%8C%A8%EA%B8%B0-Turborepo%EB%A1%9C-%EC%98%AE%EA%B8%B0%EB%8B%A4%EA%B0%80-%EA%B2%AA%EC%9D%80-%EB%AC%B8%EC%A0%9C%EB%93%A4/#%EC%84%B8-%EB%B2%88%EC%A7%B8-%EB%AC%B8%EC%A0%9C-git-%ED%9E%88%EC%8A%A4%ED%86%A0%EB%A6%AC%EC%99%80-%EC%B6%A9%EB%8F%8C\">세 번째 문제: Git 히스토리와 충돌</a></p>\n<ul>\n<li><a href=\"/etc/%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC-%EB%8F%84%EC%9E%85-%EC%8B%A4%ED%8C%A8%EA%B8%B0-Turborepo%EB%A1%9C-%EC%98%AE%EA%B8%B0%EB%8B%A4%EA%B0%80-%EA%B2%AA%EC%9D%80-%EB%AC%B8%EC%A0%9C%EB%93%A4/#%ED%9E%88%EC%8A%A4%ED%86%A0%EB%A6%AC-%ED%86%B5%ED%95%A9%EC%9D%98-%EC%96%B4%EB%A0%A4%EC%9B%80\">히스토리 통합의 어려움</a></li>\n<li><a href=\"/etc/%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC-%EB%8F%84%EC%9E%85-%EC%8B%A4%ED%8C%A8%EA%B8%B0-Turborepo%EB%A1%9C-%EC%98%AE%EA%B8%B0%EB%8B%A4%EA%B0%80-%EA%B2%AA%EC%9D%80-%EB%AC%B8%EC%A0%9C%EB%93%A4/#%EB%B8%8C%EB%9E%9C%EC%B9%98-%EA%B4%80%EB%A6%AC%EC%9D%98-%EB%B3%B5%EC%9E%A1%EC%84%B1\">브랜치 관리의 복잡성</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/etc/%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC-%EB%8F%84%EC%9E%85-%EC%8B%A4%ED%8C%A8%EA%B8%B0-Turborepo%EB%A1%9C-%EC%98%AE%EA%B8%B0%EB%8B%A4%EA%B0%80-%EA%B2%AA%EC%9D%80-%EB%AC%B8%EC%A0%9C%EB%93%A4/#%EB%84%A4-%EB%B2%88%EC%A7%B8-%EB%AC%B8%EC%A0%9C-%ED%8C%80-%EB%82%B4%EB%B6%80-%EA%B0%88%EB%93%B1\">네 번째 문제: 팀 내부 갈등</a></p>\n<ul>\n<li><a href=\"/etc/%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC-%EB%8F%84%EC%9E%85-%EC%8B%A4%ED%8C%A8%EA%B8%B0-Turborepo%EB%A1%9C-%EC%98%AE%EA%B8%B0%EB%8B%A4%EA%B0%80-%EA%B2%AA%EC%9D%80-%EB%AC%B8%EC%A0%9C%EB%93%A4/#%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%93%A4%EC%9D%98-%EB%B0%98%EB%B0%9C\">개발자들의 반발</a></li>\n<li><a href=\"/etc/%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC-%EB%8F%84%EC%9E%85-%EC%8B%A4%ED%8C%A8%EA%B8%B0-Turborepo%EB%A1%9C-%EC%98%AE%EA%B8%B0%EB%8B%A4%EA%B0%80-%EA%B2%AA%EC%9D%80-%EB%AC%B8%EC%A0%9C%EB%93%A4/#%EB%82%B4-%EA%B3%A0%EB%AF%BC\">내 고민</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/etc/%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC-%EB%8F%84%EC%9E%85-%EC%8B%A4%ED%8C%A8%EA%B8%B0-Turborepo%EB%A1%9C-%EC%98%AE%EA%B8%B0%EB%8B%A4%EA%B0%80-%EA%B2%AA%EC%9D%80-%EB%AC%B8%EC%A0%9C%EB%93%A4/#%EA%B2%B0%EA%B5%AD-%EB%90%98%EB%8F%8C%EB%A6%AC%EA%B8%B0%EB%A1%9C-%EA%B2%B0%EC%A0%95\">결국 되돌리기로 결정</a></p>\n<ul>\n<li><a href=\"/etc/%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC-%EB%8F%84%EC%9E%85-%EC%8B%A4%ED%8C%A8%EA%B8%B0-Turborepo%EB%A1%9C-%EC%98%AE%EA%B8%B0%EB%8B%A4%EA%B0%80-%EA%B2%AA%EC%9D%80-%EB%AC%B8%EC%A0%9C%EB%93%A4/#%EA%B2%B0%EC%A0%95%EC%9D%98-%EC%88%9C%EA%B0%84\">결정의 순간</a></li>\n<li><a href=\"/etc/%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC-%EB%8F%84%EC%9E%85-%EC%8B%A4%ED%8C%A8%EA%B8%B0-Turborepo%EB%A1%9C-%EC%98%AE%EA%B8%B0%EB%8B%A4%EA%B0%80-%EA%B2%AA%EC%9D%80-%EB%AC%B8%EC%A0%9C%EB%93%A4/#%EB%90%98%EB%8F%8C%EB%A6%AC%EB%8A%94-%EA%B3%BC%EC%A0%95\">되돌리는 과정</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/etc/%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC-%EB%8F%84%EC%9E%85-%EC%8B%A4%ED%8C%A8%EA%B8%B0-Turborepo%EB%A1%9C-%EC%98%AE%EA%B8%B0%EB%8B%A4%EA%B0%80-%EA%B2%AA%EC%9D%80-%EB%AC%B8%EC%A0%9C%EB%93%A4/#%EB%B0%B0%EC%9A%B4-%EC%A0%90%EB%93%A4\">배운 점들</a></p>\n<ul>\n<li><a href=\"/etc/%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC-%EB%8F%84%EC%9E%85-%EC%8B%A4%ED%8C%A8%EA%B8%B0-Turborepo%EB%A1%9C-%EC%98%AE%EA%B8%B0%EB%8B%A4%EA%B0%80-%EA%B2%AA%EC%9D%80-%EB%AC%B8%EC%A0%9C%EB%93%A4/#1-%EB%AA%A8%EB%93%A0-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EC%97%90-%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC%EA%B0%80-%EC%A0%81%ED%95%A9%ED%95%9C-%EA%B2%83%EC%9D%80-%EC%95%84%EB%8B%88%EB%8B%A4\">1. 모든 프로젝트에 모노레포가 적합한 것은 아니다</a></li>\n<li><a href=\"/etc/%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC-%EB%8F%84%EC%9E%85-%EC%8B%A4%ED%8C%A8%EA%B8%B0-Turborepo%EB%A1%9C-%EC%98%AE%EA%B8%B0%EB%8B%A4%EA%B0%80-%EA%B2%AA%EC%9D%80-%EB%AC%B8%EC%A0%9C%EB%93%A4/#2-%EA%B8%B0%EC%88%A0-%EC%84%A0%ED%83%9D%EC%9D%80-%ED%8C%80-%EC%83%81%ED%99%A9%EC%9D%84-%EA%B3%A0%EB%A0%A4%ED%95%B4%EC%95%BC-%ED%95%9C%EB%8B%A4\">2. 기술 선택은 팀 상황을 고려해야 한다</a></li>\n<li><a href=\"/etc/%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC-%EB%8F%84%EC%9E%85-%EC%8B%A4%ED%8C%A8%EA%B8%B0-Turborepo%EB%A1%9C-%EC%98%AE%EA%B8%B0%EB%8B%A4%EA%B0%80-%EA%B2%AA%EC%9D%80-%EB%AC%B8%EC%A0%9C%EB%93%A4/#3-%EC%A0%90%EC%A7%84%EC%A0%81-%EB%8F%84%EC%9E%85%EC%9D%B4-%EC%A4%91%EC%9A%94%ED%95%98%EB%8B%A4\">3. 점진적 도입이 중요하다</a></li>\n<li><a href=\"/etc/%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC-%EB%8F%84%EC%9E%85-%EC%8B%A4%ED%8C%A8%EA%B8%B0-Turborepo%EB%A1%9C-%EC%98%AE%EA%B8%B0%EB%8B%A4%EA%B0%80-%EA%B2%AA%EC%9D%80-%EB%AC%B8%EC%A0%9C%EB%93%A4/#4-%EC%8B%A4%ED%8C%A8%EB%A5%BC-%EB%B9%A0%EB%A5%B4%EA%B2%8C-%EC%9D%B8%EC%A0%95%ED%95%98%EB%8A%94-%EC%9A%A9%EA%B8%B0\">4. 실패를 빠르게 인정하는 용기</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/etc/%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC-%EB%8F%84%EC%9E%85-%EC%8B%A4%ED%8C%A8%EA%B8%B0-Turborepo%EB%A1%9C-%EC%98%AE%EA%B8%B0%EB%8B%A4%EA%B0%80-%EA%B2%AA%EC%9D%80-%EB%AC%B8%EC%A0%9C%EB%93%A4/#%EC%A7%80%EA%B8%88%EC%9D%80-%EC%96%B4%EB%96%BB%EA%B2%8C-%ED%95%98%EA%B3%A0-%EC%9E%88%EB%82%98\">지금은 어떻게 하고 있나</a></p>\n<ul>\n<li><a href=\"/etc/%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC-%EB%8F%84%EC%9E%85-%EC%8B%A4%ED%8C%A8%EA%B8%B0-Turborepo%EB%A1%9C-%EC%98%AE%EA%B8%B0%EB%8B%A4%EA%B0%80-%EA%B2%AA%EC%9D%80-%EB%AC%B8%EC%A0%9C%EB%93%A4/#%EA%B0%9C%EC%84%A0%EB%90%9C-%EB%A9%80%ED%8B%B0%EB%A0%88%ED%8F%AC-%EC%A0%84%EB%9E%B5\">개선된 멀티레포 전략</a></li>\n<li><a href=\"/etc/%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC-%EB%8F%84%EC%9E%85-%EC%8B%A4%ED%8C%A8%EA%B8%B0-Turborepo%EB%A1%9C-%EC%98%AE%EA%B8%B0%EB%8B%A4%EA%B0%80-%EA%B2%AA%EC%9D%80-%EB%AC%B8%EC%A0%9C%EB%93%A4/#%ED%98%84%EC%9E%AC-%EC%83%81%ED%83%9C\">현재 상태</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/etc/%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC-%EB%8F%84%EC%9E%85-%EC%8B%A4%ED%8C%A8%EA%B8%B0-Turborepo%EB%A1%9C-%EC%98%AE%EA%B8%B0%EB%8B%A4%EA%B0%80-%EA%B2%AA%EC%9D%80-%EB%AC%B8%EC%A0%9C%EB%93%A4/#%EB%8B%A4%EB%A5%B8-%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%93%A4%EC%97%90%EA%B2%8C\">다른 개발자들에게</a></p>\n<ul>\n<li><a href=\"/etc/%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC-%EB%8F%84%EC%9E%85-%EC%8B%A4%ED%8C%A8%EA%B8%B0-Turborepo%EB%A1%9C-%EC%98%AE%EA%B8%B0%EB%8B%A4%EA%B0%80-%EA%B2%AA%EC%9D%80-%EB%AC%B8%EC%A0%9C%EB%93%A4/#%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC%EB%A5%BC-%EA%B3%A0%EB%A0%A4%ED%95%9C%EB%8B%A4%EB%A9%B4\">모노레포를 고려한다면</a></li>\n<li><a href=\"/etc/%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC-%EB%8F%84%EC%9E%85-%EC%8B%A4%ED%8C%A8%EA%B8%B0-Turborepo%EB%A1%9C-%EC%98%AE%EA%B8%B0%EB%8B%A4%EA%B0%80-%EA%B2%AA%EC%9D%80-%EB%AC%B8%EC%A0%9C%EB%93%A4/#%EC%8B%A4%ED%8C%A8%EB%A5%BC-%EB%91%90%EB%A0%A4%EC%9B%8C%ED%95%98%EC%A7%80-%EB%A7%90%EB%9D%BC\">실패를 두려워하지 말라</a></li>\n</ul>\n</li>\n<li><a href=\"/etc/%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC-%EB%8F%84%EC%9E%85-%EC%8B%A4%ED%8C%A8%EA%B8%B0-Turborepo%EB%A1%9C-%EC%98%AE%EA%B8%B0%EB%8B%A4%EA%B0%80-%EA%B2%AA%EC%9D%80-%EB%AC%B8%EC%A0%9C%EB%93%A4/#%EA%B2%B0%EB%A1%A0-%EC%8B%A4%ED%8C%A8%EC%97%90%EC%84%9C-%EB%B0%B0%EC%9A%B4-%EA%B2%83\">결론: 실패에서 배운 것</a></li>\n</ul>","wordCount":{"words":853},"fields":{"slug":"/etc/모노레포-도입-실패기-Turborepo로-옮기다가-겪은-문제들/","image":null,"faq":[]},"frontmatter":{"title":"모노레포 도입 실패기 - Turborepo로 옮기다가 겪은 문제들","date":"2026년 1월 5일","dateISO":"2026-01-05T06:00:00.000Z","updatedISO":null,"category":"etc","description":"멀티레포에서 모노레포로 전환하려다가 겪은 실패 경험을 솔직하게 공유한다. Turborepo 도입 과정에서 만난 빌드 시간 증가, 의존성 충돌, 팀 내부 갈등 등 구체적인 문제들과 해결 과정, 그리고 결국 되돌린 이유를 담았다.","tags":["모노레포","Turborepo","실패 경험","프로젝트 경험","개발자 경험","회고","교훈"]}}},"pageContext":{"slug":"/etc/모노레포-도입-실패기-Turborepo로-옮기다가-겪은-문제들/","previous":{"fields":{"slug":"/etc/2026년-개발-트렌드-예측-개발자가-주목해야-할-기술/"},"frontmatter":{"title":"2026년 개발 트렌드 예측 - 개발자가 주목해야 할 기술","tags":["2026년 트렌드","개발 트렌드","기술 예측","개발자 트렌드","미래 기술","개발자 커리어","기술 스택","개발 예측"]}},"next":{"fields":{"slug":"/javascript/레거시-코드-마이그레이션-6개월-JavaScript에서-TypeScript로-옮기며-배운-것들/"},"frontmatter":{"title":"레거시 코드 마이그레이션 6개월 - JavaScript에서 TypeScript로 옮기며 배운 것들","tags":["TypeScript","마이그레이션","레거시 코드","프로젝트 경험","개발자 경험","회고","JavaScript"]}}}},"staticQueryHashes":["213619243","3262363727"]}