@@ -10,76 +10,74 @@ sidebar_position: 1
1010
1111### Bus-factor & 온보딩
1212
13- 제한된 수의 사람들만이 프로젝트와 그 아키텍처를 이해합니다.
13+ 제한된 인원만이 프로젝트와 그 아키텍처를 이해합니다.
1414
1515** 예시:**
1616
17- - * "개발에 새로운 인력을 추가하기가 어렵습니다"" *
18- - * "모든 문제에 대해 각자가 해결 방법에 대한 자신만의 의견을 가지고 있습니다 (앵귤러가 부러워요) "*
17+ - * "개발에 새로운 인력을 추가하기가 어렵습니다"*
18+ - * "문제 해결 방식에 대한 명확한 가이드라인이 없어 개발자마다 각기 다른 접근 방식을 사용합니다 "*
1919- * "이 거대한 모놀리스에서 무슨 일이 일어나고 있는지 이해할 수 없습니다"*
2020
21- ### 암묵적이고 통제되지 않는 결과들
21+ ### 의도치 않은 부작용과 통제되지 않는 영향
2222
23- 개발/리팩토링 중 많은 암묵적인 부작용들이 있습니다 * ("모든 것이 모든 것에 의존합니다")*
23+ 개발/리팩토링 중 많은 의도치 않은 부작용들이 있습니다 * ("모든 것이 모든 것에 의존합니다")*
2424
2525** 예시:**
2626
27- - * "기능이 다른 기능을 임포트합니다 "*
28- - * "한 페이지의 스토어를 업데이트했더니 다른 페이지의 기능이 작동하지 않습니다 *
29- - * "로직이 애플리케이션 전체에 퍼져있어서 어디가 시작이고 어디가 끝인지 추적할 수 없습니다 "*
27+ - * "기능 간의 부적절한 의존성이 발생하고 있습니다 "*
28+ - * "한 페이지의 상태(store) 변경이 다른 페이지의 기능에 예기치 않은 영향을 미칩니다" *
29+ - * "비즈니스 로직이 애플리케이션 전반에 분산되어 있어 로직의 흐름을 추적하기 어렵습니다 "*
3030
3131### 통제되지 않는 로직의 재사용
3232
3333기존 로직을 재사용하거나 수정하기 어렵습니다.
3434
3535동시에, 보통 [ 두 가지 극단적인 경우] ( https://github.com/feature-sliced/documentation/discussions/14 ) 가 나타납니다:
3636
37- - 각 모듈에 대해 로직을 완전히 처음부터 작성하거나 * (기존 코드베이스에서 반복 가능한 부분을 포함하여)*
38- - 또는 모든 구현된 모듈을 ` shared ` 폴더로 옮기려는 경향이 있어, * 대부분 한 곳에서만 사용되는 모듈들로 이루어진 커다란 코드 dump 만들어집니다 .*
37+ - 각 모듈에 대해 로직을 완전히 처음부터 작성하거나 * (기존 코드베이스에서 재사용 가능한 부분까지 포함하여)*
38+ - 또는 모든 구현된 모듈을 ` shared ` 폴더로 이동하려는 경향이 있어, * 대부분 단일 사용 목적의 모듈들이 무분별하게 축적되는 현상이 발생합니다 .*
3939
4040** 예시:**
4141
42- - * "프로젝트에 동일한 비즈니스 로직이 ** N** 개 구현되어 있으며, 이를 유지하는 데 지속적으로 비용이 발생하고 있습니다. "*
43- - * "button/pop-up/... 의 6가지 같은 형태의 컴포넌트가 있습니다 "*
44- - * "Dump of helpers "*
42+ - * "프로젝트 내에 동일한 비즈니스 로직이 ** N** 번 중복 구현되어 있어 유지보수 비용이 지속적으로 발생합니다 "*
43+ - * "동일한 기능의 버튼/팝업 등 UI 컴포넌트가 여러 버전으로 존재합니다 "*
44+ - * "유틸리티 함수들이 체계 없이 누적되어 있습니다 "*
4545
4646## 요구사항
4747
48- 따라서 이상적인 아키텍처를 위한 * 필요 요건 * 을 정의하는 것이 합리적일 것입니다 .
48+ 이상적인 아키텍처를 위한 * 핵심 요구사항 * 을 다음과 같이 정의할 수 있습니다 .
4949
5050::: note
51-
52- "쉽다"는 대부분의 개발자들이 상대적으로 쉽게 이해할 수 있다는 의미입니다. [ 모든 사람에게 완벽한 솔루션을 제공하는 것은 현실적으로 불가능하기 때문입니다.] ( /docs/about/mission#limitations )
53-
51+ 여기서 "쉽다"라는 표현은 "대다수의 개발자들이 합리적인 시간 내에 이해하고 적용할 수 있다"는 의미입니다. [ 모든 개발자와 상황에 완벽하게 부합하는 솔루션은 현실적으로 불가능하기 때문입니다.] ( /docs/about/mission#limitations )
5452:::
5553
5654### 명시성
5755
58- - 팀이 프로젝트와 아키텍처를 ** 쉽게 이해하고 설명할 수 있어야** 합니다.
59- - 구조는 프로젝트의 ** 비즈니스 가치를 반영** 해야 합니다.
60- - 추상화 간의 ** 연결과 부작용** 이 명확히 드러나야 합니다.
61- - ** 중복된 로직을 쉽게 탐지 ** 할 수 있어야 합니다.
56+ - 팀원들이 프로젝트 구조와 아키텍처를 ** 직관적으로 이해하고 설명할 수 있어야** 합니다.
57+ - 아키텍처는 프로젝트의 ** 비즈니스 도메인과 가치를 명확히 반영** 해야 합니다.
58+ - 추상화 계층 간의 ** 의존성과 부작용** 이 명확히 파악되어야 합니다.
59+ - ** 중복 로직을 효과적으로 식별 ** 할 수 있어야 합니다.
6260- 프로젝트 전반에 걸쳐 ** 로직이 분산** 되지 않도록 해야 합니다.
63- - ** 너무 많은 이질적인 추상화와 규칙** 이 생기지 않도록 해야 합니다.
61+ - ** 불필요한 추상화와 복잡한 규칙** 을 최소화해야 합니다.
6462
6563### 제어
6664
67- - 좋은 아키텍처는 ** 기능 추가와 문제 해결 속도를 높여야 ** 합니다.
68- - 프로젝트의 전반적인 개발 과정을 효율적으로 제어할 수 있어야 합니다.
69- - ** 코드를 확장, 수정, 삭제하기 ** 쉽게 만들어야 합니다.
70- - 기능별로 ** 분리와 격리** 가 명확히 이루어져야 합니다.
71- - 각 컴포넌트는 ** 쉽게 교체하고 제거할 수 있어야 ** 합니다.
72- - * [ 변경을 대비한 최적화는 필수가 아닙니다 ] [ ext-kof-not-modification ] - 미래를 정확히 예측할 수 없기 때문입니다.*
73- - * [ 삭제를 용이하게 하는 최적화가 더 중요합니다] [ ext-kof-but-removing ] - 이미 존재하는 컨텍스트를 기반으로 작업하는 것이 더 현실적입니다 .*
65+ - 효과적인 아키텍처는 ** 새로운 기능 개발과 문제 해결의 생산성을 향상 ** 시켜야 합니다.
66+ - 프로젝트의 전반적인 개발 흐름을 효율적으로 관리할 수 있어야 합니다.
67+ - ** 코드의 확장성, 유지보수성, 제거 용이성 ** 을 보장해야 합니다.
68+ - 기능 단위의 ** 명확한 경계와 격리** 가 보장되어야 합니다.
69+ - 각 컴포넌트는 ** 높은 교체성과 제거 용이성 ** 을 가져야 합니다.
70+ - * [ 변경을 위한 과도한 최적화는 지양합니다 ] [ ext-kof-not-modification ] - 미래의 변경사항을 정확히 예측하기 어렵기 때문입니다.*
71+ - * [ 제거 용이성을 위한 설계가 더 중요합니다] [ ext-kof-but-removing ] - 현재의 컨텍스트를 기반으로 한 의사결정이 더 실용적이기 때문입니다 .*
7472
7573### 적응성
7674
77- - 좋은 아키텍처는 ** 대다수의 프로젝트** 에서 활용 가능해야 합니다.
78- - * 기존 인프라와 잘 연동될 수 있어야 합니다.*
79- - * 개발의 모든 단계에서 유연하게 적용될 수 있어야 합니다.*
80- - 특정 프레임워크나 플랫폼에 의존하지 않아야 합니다.
81- - 개발이 병렬로 진행될 수 있도록 하며, ** 프로젝트와 팀을 쉽게 확장** 할 수 있어야 합니다.
82- - ** 변화하는 요구사항과 상황에도 쉽게 적응 ** 할 수 있어야 합니다.
75+ - 효과적인 아키텍처는 ** 다양한 규모와 유형의 프로젝트** 에 적용 가능해야 합니다.
76+ - * 기존 시스템 및 인프라와의 원활한 통합이 가능해야 합니다.*
77+ - * 프로젝트의 모든 개발 단계에서 일관되게 적용될 수 있어야 합니다.*
78+ - 특정 기술 스택이나 플랫폼에 종속되지 않아야 합니다.
79+ - ** 병렬 개발과 팀 확장** 이 용이해야 합니다.
80+ - ** 비즈니스 요구사항과 기술 환경의 변화 ** 에 유연하게 대응할 수 있어야 합니다.
8381
8482## See also
8583
0 commit comments