pile·
프론트엔드·인프랩 (인프런)인프런 (인프랩)·

AI로 디자인시스템 마이그레이션하기 (1): 여정의 시작

인프랩 프론트엔드 팀이 20개 이상의 앱이 의존하는 Mantine 기반 디자인시스템을 v6에서 v8로 올리면서 AI 에이전트를 어떻게 활용했는지 다룬다. 단순 버전업이 아닌 스타일 기반 자체를 교체하는 작업이라 1차 시도가 실패했고, v6/v8 공존 격리 설계와 AI 에이전트 오케스트레이션으로 전사 규모 마이그레이션을 진행했다.

핵심 포인트
  • Mantine v6 → v8은 스타일 기반 교체 수준의 대공사 — 1차 "한 번에 모두 전환" 접근은 혼합 사용 불가로 실패
  • CSS 클래스 접두사(mantine-next-) + Provider 분리 + 의존성 격리로 v6/v8 공존 달성, 점진적 전환 가능하게 설계
  • 컴포넌트를 4가지 유형(순수 래핑 ~ 완전 커스텀)으로 분류해 AI 에이전트가 migrate → test → verify 3단계를 독립 세션으로 실행
  • AST 기반 codemod(ds-codemod)를 자체 개발해 20개 앱의 import 경로와 prop 변환을 자동화
  • MIGRATION.md + WORK_LOG.md로 에이전트 세션 간 컨텍스트 전달, 실패 시 자동 재시도 및 이력 관리
  • "AI는 절차와 검증이 명확할 때 진가를 발휘" — 1차 출처 문서화 + 단계별 절차 + 자동 검증 체계가 핵심
상세 정리
  • 마이그레이션 동기: 상위 버전 전용 컴포넌트 필요, TS5 호환성, 반응형 DX 개선, AI 활용을 위한 Storybook 표준화 등 복합 이유로 추진
  • 1차 실패: 기존 v6와 신규 v8 혼합 사용 불가 — 모든 앱을 한 번에 전환해야 한다는 부담이 너무 커서 중단
  • 공존 설계: CSS 클래스명에 mantine-next- 접두사를 추가해 v6/v8 CSS 충돌 방지, 영역별 ThemeProvider 분리로 같은 앱에서 두 버전 독립 동작
  • 의존성 격리: v8 패키지가 자체 @mantine/core 의존성을 포함하도록 구성해 버전 충돌 회피
  • Emotion 유지: Mantine v7+는 네이티브 CSS로 전환했으나 마이그레이션 복잡도 증가를 피하기 위해 신규 DS에서도 Emotion 유지 결정
  • 컴포넌트 분류: Type1(순수 래핑) ~ Type4(완전 커스텀) 4단계 난이도 체계로 AI 에이전트 작업 범위 명확화
  • 에이전트 인프라: Mantine v6/v8 공식 문서를 로컬 Markdown으로 보관, 색인 파일로 컴포넌트별 필요 문서만 참조해 컨텍스트 낭비 방지
  • 3단계 커맨드 파일: migrate(v8 API 변환) → test(동작 검증 + 비교 테스트) → verify(빌드 + 픽셀 비교)로 표준화, 각 단계 독립 세션 실행
  • 오케스트레이션: MIGRATION.md(현재 단계 추적)와 WORK_LOG.md(단계 간 정보 전달)로 에이전트 세션 컨텍스트 관리, 실패 시 자동 재시도 및 이력 기록
  • codemod 개발: AST 기반 자동화로 import 경로(@inflearn/ds-react → @inflearn/ds-react-next)와 prop 변환(leftIcon → leftSection, compact → size="compact-sm") 처리
  • 진행 관리: 20개 앱 마이그레이션 진행률 대시보드, 커밋 수 적은 앱부터 시작해 절차 검증 후 복잡한 앱으로 확대
  • 주요 이슈: TS5 전용 문법 에러(pnpm patch 임시 패치), 모듈 페더레이션 싱글톤 충돌(선언 제거), CSS 우선순위(css → styles 속성 전환)
  • 현재 상태: 1차 마이그레이션 완료, v6 패키지 완전 제거 / TS5 버전업 / Storybook 체계화 등 후속 작업 남음
왜 읽나대형 디자인시스템을 점진적으로 교체해야 하는 프론트엔드 팀, 특히 AI 에이전트를 실제 엔지니어링 작업에 도입하려는 팀에 실전 오케스트레이션 패턴과 함정 회피 전략을 제공한다.
인프랩 (인프런)
인프런 (인프랩) 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 프론트엔드·LINE EngineeringLINE Engineering·

    AI로 웹 엔지니어 없이 LINE 앱 안에서 그룹 영상 통화 서비스 만들기

    LINE Planet 팀의 PM과 Android 엔지니어 두 명이 웹 전문 엔지니어 없이 LINE 앱 내에서 그룹 영상 통화 서비스를 개발한 과정을 다룬다. LIFF(LINE Front-end Framework)와 LINE Planet SDK를 활용해 React/Vite 기반 웹 앱을 구성했고, Firebase Cloud Functions로 별도 서버 인프라 없이 구현을 완료했다.

    #react#webrtc#firebase+2
  2. 프론트엔드·vercel-blogVercel Blog·

    Vercel과 Shopify의 Hydrogen 전면 재설계

    Vercel과 Shopify가 Hydrogen을 오픈소스·런타임 무관 프레임워크로 전면 재설계했다. 기존 Hydrogen은 빠른 헤드리스 스토어프런트 배포를 지원했지만 플랫폼 종속성이 있었고, 새 버전은 Svelte, Nuxt, Next.js 등 어느 JavaScript 프레임워크에서도 동작한다. 3레이어 아키텍처(코어/클라이언트/서버)로 재구성하면서 각 레이어가 명확한 역할을 분담한다.

    #react#nextjs#i18n+2
  3. 프론트엔드·토스 SLASH토스 SLASH·

    es-toolkit: 사내 소형 라이브러리에서 글로벌 프로젝트로

    토스 프론트엔드 팀이 사내 공유 유틸리티 라이브러리를 발전시켜 만든 es-toolkit이 주간 npm 다운로드 2,000만 건을 넘기며 글로벌 오픈소스 프로젝트로 자리 잡은 과정을 다룬다. lodash의 구조적 한계를 넘어 현대 웹 개발 환경에 최적화된 유틸리티 라이브러리를 처음부터 설계한 경험을 정리한다.

    #lodash#open-source#tree-shaking+2