← 개발 로그 목록

my-blog: 칸반 보드 기능 제거 및 프로젝트 관리 단순화

/ 9분 분량 / 개발 로그

이번 커밋은 프로젝트 관리 기능에서 칸반 보드와 관련된 코드를 제거하고, 프로젝트 생성 및 삭제 로직을 단순화하는 데 집중했습니다. 이로써 코드베이스가 간결해지고 관리 부담이 줄어들었습니다.

my-blog: 칸반 보드 기능 제거 및 프로젝트 관리 단순화

이번 커밋은 프로젝트 관리 기능에서 칸반 보드와 관련된 코드를 제거하고, 프로젝트 생성 및 삭제 로직을 단순화하는 데 집중했습니다. 이로써 코드베이스가 간결해지고 관리 부담이 줄어들었습니다.

요약

이번 작업은 my-blog 레포지토리의 master 브랜치에서 이루어졌으며, 2026년 2월 2일에 완료되었습니다. 주요 변경 사항은 칸반 보드 관련 기능(Controller, Service, Route)의 제거와 backend/services/projectService.js 파일의 프로젝트 생성 및 삭제 로직 리팩토링입니다. 총 5개의 파일이 수정되었으며, 5개의 코드가 추가되고 444개의 코드가 삭제되었습니다.

배경 및 목적

기존 프로젝트에는 칸반 보드 형태로 프로젝트를 관리하는 기능이 포함되어 있었습니다. 하지만 이 기능이 실제 프로젝트 관리 워크플로우에 필수적이지 않다고 판단되었고, 오히려 코드의 복잡성을 증가시키는 요인이 되었습니다. 따라서 칸반 보드 관련 코드를 제거하여 프로젝트 관리의 전반적인 단순화를 목표로 삼았습니다. 또한, 프로젝트 생성 및 삭제 시 칸반 상태 및 위치를 관리하는 로직을 제거하여 해당 서비스들의 의존성을 낮추고 더 간결하게 동작하도록 개선하고자 했습니다.

구현 내용

주요 변경사항은 다음과 같습니다.

  • 칸반 보드 관련 코드 제거: backend/services/kanbanService.js, backend/controllers/kanbanController.js, backend/routes/kanbanRoutes.js 파일에서 칸반 보드 데이터 조회, 카드 이동, 카드 삭제와 관련된 모든 로직이 삭제되었습니다. backend/app.js 파일에서도 kanbanRoutes에 대한 참조가 제거되었습니다.
  • 프로젝트 서비스 리팩토링: backend/services/projectService.js 파일에서 프로젝트 생성(createProject) 시 칸반 보드의 'todo' 상태에 자동으로 추가하고 위치를 조정하는 로직이 제거되었습니다. 또한, 프로젝트 삭제(deleteProject) 시에도 칸반 상태 및 위치를 관리하는 로직이 제거되었습니다.

변경된 파일 목록

  • backend/app.js
  • backend/controllers/kanbanController.js
  • backend/routes/kanbanRoutes.js
  • backend/services/kanbanService.js
  • backend/services/projectService.js
  • frontend/src/pages/projects.astro (이 파일은 패치 정보가 제공되지 않았으나, canonical_url에 의해 변경된 것으로 추정됩니다.)

코드 변경 규모

  • 추가 라인: 5
  • 삭제 라인: 444

핵심 코드 설명

backend/services/kanbanService.js 파일에서 다음과 같은 로직들이 제거되었습니다:

// Get all kanban cards grouped by status
export const getKanban = async () => { ... };

// Move card between columns
export const moveCard = async (cardId, fromColumn, toColumn, toIndex) => { ... };

// Delete card (project)
export const deleteCard = async (cardId) => { ... };

이 함수들은 더 이상 사용되지 않으므로 완전히 제거되었습니다.

backend/services/projectService.js 파일의 createProject 함수에서는 다음과 같은 로직이 변경되었습니다:

-    // Shift all existing todo cards down by 1
-    await client.query(
-      `UPDATE projects
-       SET kanban_position = kanban_position + 1
-       WHERE kanban_status = 'todo'`
-    );
-
-    // Insert new project at position 0 in todo column
-    const result = await client.query(
-      `INSERT INTO projects (title, description, content_markdown, content_html, stack, github_url, kanban_status, kanban_position)
-       VALUES (2, 4, 6, 'todo', 0)
+    const result = await pool.query(
+      `INSERT INTO projects (title, description, content_markdown, content_html, stack, github_url)
+       VALUES (2, 4, 6)
        RETURNING *`,
       [title, description, content_markdown, content_html, stack, github_url]
     );

이전에는 프로젝트 생성 시 kanban_status와 kanban_position 필드를 자동으로 설정했지만, 이제는 이러한 칸반 관련 정보 없이 프로젝트만 생성하도록 변경되었습니다.

마찬가지로 deleteProject 함수에서도 칸반 관련 로직이 제거되었습니다.

기술적 의사결정

이번 작업은 특정 라이브러리나 프레임워크의 새로운 도입보다는, 기존 기능의 제거와 로직 단순화에 초점을 맞췄습니다. 따라서 기술적 의사결정보다는 기능 제거 결정이 핵심이었습니다.

  • 칸반 보드 기능 제거:

    • 선택: 칸반 보드와 관련된 모든 코드(Service, Controller, Route)를 제거하기로 결정했습니다.
    • 이유: 해당 기능이 프로젝트의 핵심 요구사항이 아니며, 코드 복잡성을 증가시키고 유지보수 부담을 가중시킨다고 판단했습니다. 전체적인 프로젝트 관리의 단순화를 통해 개발 생산성을 높이고자 했습니다.
    • 대안: 기능을 유지하되, 추후 개선하는 방안도 고려할 수 있었지만, 현재로서는 제거하는 것이 장기적으로 더 이득이라고 판단했습니다.
    • 장단점:
      • 장점: 코드베이스가 간결해지고, 관련 버그 발생 가능성이 줄어들며, 프로젝트 생성/삭제 로직이 단순화되었습니다.
      • 단점: 칸반 보드를 활용하던 사용자(만약 있다면)는 해당 기능을 사용할 수 없게 됩니다. 하지만 본 프로젝트에서는 필수 기능이 아니었으므로 큰 단점은 아니라고 판단했습니다.
  • 프로젝트 서비스 로직 단순화:

    • 선택: 프로젝트 생성 및 삭제 시 칸반 관련 로직을 제거했습니다.
    • 이유: 칸반 보드 기능 자체가 제거되므로, 이를 위한 프로젝트 서비스 단의 연동 로직도 불필요해졌습니다. projectService가 kanbanService에 의존하는 것을 제거하여 더 독립적인 모듈로 만들 수 있습니다.
    • 대안: 칸반 로직을 남겨두고, 다른 방식으로 프로젝트를 관리할 수도 있었지만, 기능 제거라는 큰 결정과 함께 관련 로직도 함께 정리하는 것이 일관성 있다고 판단했습니다.
    • 장단점:
      • 장점: projectService의 책임이 명확해지고, 코드가 더 간결해졌습니다.
      • 단점: 이전에는 프로젝트 생성 시 자동으로 칸반 보드에 추가되는 부가적인 기능이 사라졌습니다.

배운 점 및 개선점

이번 작업을 통해 불필요한 기능을 과감하게 제거하는 것의 중요성을 다시 한번 느꼈습니다. 기능이 많아진다고 해서 반드시 좋은 서비스가 되는 것은 아니며, 오히려 핵심 기능에 집중하고 코드베이스를 간결하게 유지하는 것이 장기적으로 개발 효율성과 서비스 안정성에 더 큰 도움이 된다는 것을 배웠습니다.

앞으로 개선할 점:

  • frontend/src/pages/projects.astro 파일의 실제 변경 내용을 파악하여 해당 부분에 대한 설명도 추가하면 더 완벽한 포스팅이 될 것입니다.
  • 제거된 칸반 보드 기능 대신, 프로젝트 관리에 유용한 다른 기능(예: 태그 기능, 상태 변경 기능 등)을 고려해 볼 수 있습니다.

다음 단계 계획:

  • 프로젝트 관리 기능을 더욱 간소화하고 사용자 경험을 개선하기 위한 추가적인 리팩토링을 진행할 예정입니다.

참고 자료

  • GitHub 커밋 데이터 (제공된 JSON)