시대인재 북스 마이그레이션 & 디자인 시스템
- 프로젝트 설명
- ASP 기반 모바일/PC 도서 판매 서비스를 Next.js 기반의 반응형 웹으로 통합 마이그레이션하고, 배포 파이프라인을 재구성한 프로젝트입니다.
- 팀 구성
- FE 4명, 퍼블리셔 1명, BE 2명, 기획자 2명, 디자이너 2명
- 기여도
- 프론트엔드 프로젝트 리딩, 프로젝트 환경 설정, CI/CD 배포 프로세스 구축, 디자인 시스템 개발, 도서·구매 서브도메인 관련 페이지 퍼블리싱 및 프론트엔드 개발을 담당했습니다.
- 기술
- Next TypeScript tailwindcss pnpm monorepo zustand daisyUI orval react-query
이슈 1
디자인 개편과 마이그레이션이 동시에 진행되면서 디자이너와 개발자가 재사용 기준 없이 화면을 만들면 서비스마다 구현 방식이 달라지고, 통일된 UI 체계를 세우기 어려운 상황이었습니다.
디자이너와 함께 Figma 컴포넌트를 기준으로 재사용 범위와 디자인 시스템 적용 가능성을 먼저 검증하고, 공통 UI와 브랜드별 스타일을 분리하는 구조를 설계했습니다.
TailwindCSS와 daisyUI를 채택하고 style layer로 framework 스타일을 커스터마이징했습니다. 프리미티브 UI를 조합한 Molecule/Organism 컴포넌트를 구축해 Storybook으로 화면과 개발 범위를 공유했고, 컬러·타이포그래피·breakpoint·spacing을 디자인 토큰으로 분리해 브랜드별 스타일을 앱 단위로 주입할 수 있게 설계했습니다.
Figma-Storybook-앱 구현이 같은 컴포넌트 단위로 연결되면서 디자인 일관성과 협업 생산성을 높였고, 동일 컴포넌트를 서비스별 브랜드 스타일에 맞게 재사용할 수 있는 기반을 마련했습니다.
디자인 시스템은 컴포넌트 구축 자체보다 재사용 기준과 운영 원칙을 디자이너와 먼저 합의하는 과정이 더 중요하다는 점을 확인했습니다.
이슈 2
기존 ASP 환경은 ASP 친화적인 개발자에게 업무가 편중되기 쉬웠고, 화면 로직과 정책이 여러 레이어에 분산돼 FE·BE 역할 경계가 모호했습니다. 또한 SP 기반 구조와 query가 함께 얽혀 있어 유지보수와 연동 방식 정리에 비효율이 있었습니다.
Next.js 마이그레이션을 계기로 FE·BE 책임 경계를 명확히 나누고, 화면 정책·연동 구조·공통 자산을 각 영역의 전문성에 맞게 관리할 수 있는 구조로 재편하고자 했습니다.
ASP 화면을 Next.js로 전환하면서 기존 SP 기반 구조와 query가 함께 얽혀 있던 연동 방식을 API 중심으로 재정리하고, Swagger 명세를 추적해 Orval로 API interface와 호출 함수를 자동화했습니다. 또한 공통 유틸리티와 UI를 모노레포 구조로 분리하고 패키지 버전까지 한곳에서 관리하도록 구성했습니다.
FE·BE 역할 경계가 명확해져 협업 효율과 유지보수성이 개선됐고, API 연동 코드와 패키지 관리가 표준화되면서 생산성을 높였습니다.
Lighthouse (dev환경 기준):
- Performance 5.3p, Best Practices 36.3p 개선
- FCP 약 16%, LCP 약 37%, TBT 약 60%, Speed Index 약 55%, TTI 약 66% 단축
이슈 3
마이그레이션 작업 중 API 스펙이 자주 변경돼 변경사항을 매번 공유받는 피로도가 컸고, 어떤 값이 어떻게 바뀌었는지 프론트엔드에서 빠르게 파악하기도 쉽지 않았습니다.
Swagger 결과물을 기준으로 직전 배포 대비 변경점만 비교해, 프론트엔드가 먼저 확인해야 할 API와 변경 범위를 빠르게 식별할 수 있는 자동화 구조를 만들고자 했습니다.
AI를 활용해 Docker 기반 n8n workflow를 설계·구현하고, 각 서비스의 Swagger JSON에서 METHOD + path 기준 endpoint snapshot을 생성해 직전 snapshot과 비교하는 구조를 만들었습니다. parameters, requestBody, responses만 추려 변경점을 added, changed, removed로 분류했고, $ref는 가능한 범위에서 실제 schema 기준으로 해석해 diff를 계산한 뒤 변경된 API 링크와 함께 Slack 봇으로 알림하도록 구성했습니다. 또한 닷컴·북스·컨텐츠 3개의 서비스에 대해 workflow를 운영해, 프론트에서 관리하는 서비스 전반의 API 변경을 탐지할 수 있게 했습니다.
API 변경사항을 수동으로 공유하는 부담을 줄였고, 프론트엔드가 확인해야 할 endpoint와 변경 범위를 빠르게 파악할 수 있게 해 마이그레이션 대응 속도와 협업 효율을 높였습니다.