주요 콘텐츠로 건너뛰기

Motivation

Feature-Sliced Design여러 개발자들의 연구와 경험을 결합하여
복잡하고 점점 더 커지는 프로젝트의 개발을 단순화하고 비용을 줄이려는 아이디어에서 출발했습니다.

물론 이 방법론이 모든 문제를 해결하는 만능은 아니며, 적용상의 한계가 존재합니다.

그럼에도 불구하고 이 방법론이 제공하는 실질적인 효용성에 대해 많은 개발자들이 관심을 가지고 있습니다.

note

자세한 논의 내용은 토론 게시글에서 확인할 수 있습니다.

기존 솔루션만으로 부족한 이유

일반적으로 다음과 같은 반문들이 제기됩니다:

  • "이미 SOLID, KISS, YAGNI, DDD, GRASP, DRY 같은 확립된 원칙들이 있는데, 왜 또 다른 방법론이 필요한가?"
  • "문서화, 테스트, 구조화된 프로세스로 충분히 해결할 수 있지 않은가?"
  • "모든 개발자가 위의 원칙을 제대로 따른다면 문제가 생기지 않았을 것이다."
  • "이미 필요한 건 다 발명되었고, 당신이 잘 활용하지 못할 뿐이다."
  • "프레임워크 X를 쓰면 된다. 거기에 다 들어있다."

원칙만으로는 충분하지 않다

좋은 아키텍처를 위해 원칙이 존재하는 것만으로는 부족합니다.

  • 모든 개발자가 이러한 원칙을 깊이 이해하고 올바르게 적용하는 것은 어렵습니다.
  • 설계 원칙은 일반적인 지침일 뿐, 확장 가능하고 유연한 애플리케이션 구조를 어떻게 설계할 것인가에 대한 구체적인 답을 주지 않습니다.

프로세스가 항상 작동하지는 않는다

문서화, 테스트, 프로세스 관리가 중요하지만, 여기에 많은 비용을 투자하더라도
아키텍처 문제나 신규 인력 온보딩 문제를 완전히 해결하지는 못합니다.

  • 문서가 방대해지거나 오래되면 각 개발자가 프로젝트에 빠르게 적응하는 데 큰 도움이 되지 않습니다.
  • 모든 구성원이 아키텍처를 동일하게 이해하고 있는지 지속적으로 확인하는 데에도 상당한 리소스가 소모됩니다.
  • bus-factor에 대해서도 잊지 말아야 합니다

기존 프레임워크를 모든 상황에 적용할 수는 없다

  • 많은 솔루션은 진입 장벽이 높아 새로운 개발자를 투입하기 어렵습니다.
  • 대부분의 경우 프로젝트 초기에 기술 스택이 이미 정해지므로, 특정 기술에 종속되지 않고 주어진 조건에서 일할 수 있어야 합니다.

Q: 내 프로젝트에서 React/Vue/Redux/Effector/Mobx/{당신의_기술}을 쓸 때, entities 구조와 관계를 어떻게 더 잘 설계할 수 있을까요?

결과적으로

각 프로젝트는 시간이 많이 들고 다른 곳에 재사용하기 힘든 눈송이처럼 독특한 구조로 남습니다.

@sergeysova: 이것이 현재 프론트엔드 개발의 문제입니다. 각 리드는 제각각의 아키텍처와 구조를 만들지만, 그것이 시간이 지나도 유지될지는 보장할 수 없습니다. 결과적으로 소수의 개발자만 프로젝트를 유지할 수 있고, 새로운 팀원이 합류할 때마다 긴 적응 기간이 필요해집니다.

개발자에게 왜 필요한가?

아키텍처 고민을 줄이고 비즈니스 기능에 집중

이 방법론은 아키텍처 설계 부담을 줄여, 개발자가 비즈니스 로직 구현에 더 집중할 수 있게 합니다.
동시에 구조를 표준화하여 프로젝트 간 일관성을 보장합니다.

커뮤니티에서 신뢰를 얻으려면, 다른 개발자들이 이 방법론을 빠르게 익히고 실제 프로젝트 문제를 해결할 수 있어야 합니다.

경험으로 입증된 솔루션 제공

이 방법론은 복잡한 비즈니스 로직을 다루는 데 검증된 해법을 제공합니다.
또한, 실제 사례와 best practices 모음이기도 하므로 개발자들에게 실질적인 도움이 됩니다.

프로젝트의 장기적 건강성 유지

이 방법론은 많은 리소스를 들이지 않고도 기술 부채와 구조적 문제를 미리 감지하고 해결할 수 있게 돕습니다.
기술 부채는 시간이 갈수록 누적되며, 이를 관리하는 것은 리드와 팀 전체의 책임입니다.

비즈니스에 왜 필요한가?

빠른 온보딩

이 방법론에 익숙한 개발자를 투입하면 추가 교육 없이도 빠르게 프로젝트에 적응할 수 있습니다.
덕분에 프로젝트 투입 속도가 빨라지고, 인력 확보에도 유리해집니다.

검증된 솔루션 제공

이 방법론은 비즈니스가 직면하는 시스템 개발 문제에 대한 실질적인 해결책을 제공합니다.
대부분의 비즈니스는 개발 중 발생하는 문제를 해결할 프레임워크나 솔루션을 필요로 합니다.

프로젝트 전 단계에 적용 가능

이 방법론은 운영, 유지보수 단계뿐 아니라 MVP 단계에서도 도움이 됩니다.

MVP의 목표는 장기 아키텍처가 아닌 실제 기능 제공이지만,
방법론의 best practices를 적용하면 제한된 시간 내에서도 합리적인 타협점을 찾을 수 있습니다.

테스팅에도 같은 원리가 적용됩니다.

방법론이 필요하지 않은 경우

  • 프로젝트 수명이 짧은 경우
  • 지속적인 아키텍처 관리가 필요 없는 경우
  • 비즈니스가 코드 품질과 전달 속도의 연관성을 인식하지 못하는 경우
  • 신속한 납품이 사후 지원보다 우선인 경우

비즈니스 규모

  • 소규모 → 즉시 사용 가능한 빠른 솔루션이 필요. 성장하면서 품질, 안정성 투자 필요성을 인식하게 됨.
  • 중간 규모 → 기능 경쟁 속에서도 품질 개선, 리팩토링, 테스트에 투자하며 확장 가능한 아키텍처를 중시함.
  • 대규모 → 이미 자체적인 아키텍처 접근 방식을 보유하고 있어 외부 방법론을 새로 도입할 가능성은 낮음.

계획

주요 목표는 여기에 정의되어 있으며, 앞으로 방법론이 나아갈 방향도 함께 고려하고 있습니다.

경험 결합

현재 우리는 core-team의 다양한 경험을 모아 더 단단한 방법론을 만들고 있습니다.

물론 그 결과가 Angular 3.0처럼 될 수도 있지만, 중요한 것은 복잡한 아키텍처 설계 문제를 깊이 탐구하는 것입니다.

커뮤니티 경험도 반영하여, 모두가 납득할 수 있는 최적의 합의점을 찾는 것이 목표입니다.

사양을 넘어선 생명력

모든 것이 계획대로 진행된다면, 이 방법론은 단순히 사양과 툴킷에만 국한되지 않을 것입니다.

  • 관련 보고서나 기사
  • 다른 기술로 마이그레이션할 수 있는 CODE_MODE
  • 대규모 솔루션 유지보수자들에게 적용할 기회
    • 특히 React는 다른 프레임워크에 비해 구체적인 해결책을 제시하지 않는다는 점이 문제입니다.

참고 자료