피드로 돌아가기
Drag & Drop Kanban Board — JIRA/Trello Clone - Frontend Interview
Dev.toDev.to
Frontend

Normalized State Design 기반의 고성능 Drag & Drop Kanban Board 구현

Drag & Drop Kanban Board — JIRA/Trello Clone - Frontend Interview

Mahendranath Reddy2026년 6월 3일19intermediate

Context

중첩된 데이터 구조로 인한 업데이트 복잡도와 렌더링 성능 저하 가능성을 해결해야 하는 상황. 다수의 Card와 Column 간의 잦은 위치 변경 시 발생하는 불필요한 Re-rendering 최소화가 설계의 핵심 과제.

Technical Solution

  • State Normalization을 통한 데이터 구조 최적화로 Card와 Column을 분리하여 Record 형태로 관리하는 아키텍처 설계
  • HTML5 Drag and Drop API를 활용하여 외부 라이브러리 의존성을 제거한 경량 상태 전이 로직 구현
  • cardIds 배열 내 ID 순서만 변경하는 방식으로 데이터 무결성을 유지하며 O(1)에 가까운 Card 조회 성능 확보
  • useRef를 통한 draggingCardId 관리로 불필요한 State 업데이트를 방지하여 드래그 앤 드롭 시의 프레임 드랍 방지
  • LocalStorage 연동을 통한 Client-side Persistence 레이어 구축으로 새로고침 시에도 상태 유지 가능하도록 설계

1. 복잡한 리스트 구조 설계 시 중첩 배열 대신 Normalization(ID 기반 매핑) 적용 검토

2. 빈번한 UI 업데이트가 발생하는 드래그 상태 값은 State 대신 Ref를 사용하여 렌더링 횟수 최적화

3. 대규모 상태 변경 시 전체 객체 교체보다 변경된 부분만 업데이트하는 불변성 유지 패턴 적용

원문 읽기