아키텍처 구성요소 체크리스트 - ChoDragon9/posts GitHub Wiki

아키텍처를 구성할 때 필요한 요소들에 관한 내용이다. 구조나 설계자마다 폴더명을 작명하는 것이 다르다. 그래서 역할과 폴더 예제를 통해서 기술하겠다.

아키텍처 체크리스트

  • 컴파일되지 않은 에셋들을 포함하는 구성요소가 있는가?
  • 정적 파일들을 포함하는 구성요소가 있는가?
  • 페이지나 컴포넌트에 접근하기 전에 실행할 사용자 정의함수를 정의하는 구성요소가 있는가?
  • 테스트 파일들을 포함하는 구성요소가 있는가?
  • 라우터를 정의하는 구성요소가 있는가?
  • 상태관리를 하는 구성요소가 있는가?
  • 외부 라이브러리를 애플리케이션에 사용하도록 연결하는 구성요소가 있는가?
  • 상수를 정의하는 구성요소가 있는가?
  • 컴포넌트를 포함하는 구성요소가 있는가?
  • 컴포넌트 볼륨을 줄일 수 있는 구성요소가 있는가?
  • 페이지 단위를 분리할 수 있는 구성요소가 있는가?
  • 프로젝트 환경 설정을 포함하는 구성요소가 있는가?

운영

  • 서비스 장애 모니터링을 포함하는 구성요소가 있는가?
  • 사용률를 기록할 수 있는 구성요소가 있는가?
  • 성능 개선 포인트를 찾기 위한 디버깅 전략이 있는가?

사례

Angular와 Nuxt의 아키텍처를 빌딩한 사례이다. 기본적으로 Angular와 Nuxt에서 제공한 기능들이 있다. 하지만 미흡한 부분은 추가적으로 추가작업을 진행했다.

Angular

├─ e2e
│  └─ src
├─ src
│  ├─ app
│  │  ├─ app.module.ts
│  │  ├─ constants
│  │  ├─ modules
│  │  │  └─ feature
│  │  │     ├─ feature.module.ts
│  │  │     ├─ feature.page.ts
│  │  │     ├─ feature.page.html
│  │  │     ├─ pipes
│  │  │     ├─ directives
│  │  │     ├─ shared
│  │  │     │  ├─ feature.helper.ts
│  │  │     │  ├─ feature.state.ts
│  │  │     │  └─ child.state.ts
│  │  │     └─ components
│  │  │        ├─ child.ts
│  │  │        ├─ child.html
│  │  │        ├─ child2
│  │  │        ├─ child2.spec.ts
│  │  │        ├─ child2.ts
│  │  │        └─ child2.html
│  │  ├─ core
│  │  │  ├─ core.module.ts
│  │  │  ├─ apis
│  │  │  ├─ guards
│  │  │  ├─ helpers
│  │  │  └─ states
│  │  └─ shared
│  │     ├─ shared.module.ts
│  │     ├─ components
│  │     ├─ directives
│  │     └─ pipes
│  ├─ assets
│  └─ environments
  • [assets] 컴파일되지 않은 에셋들을 포함하는 구성요소가 있는가?
  • [assets] 정적 파일들을 포함하는 구성요소가 있는가?
  • [guards] 페이지나 컴포넌트에 접근하기 전에 실행할 사용자 정의함수를 정의하는 구성요소가 있는가?
  • [e2e/src, *.spec.ts] 테스트 파일들을 포함하는 구성요소가 있는가?
  • [app.routing.ts] 라우터를 정의하는 구성요소가 있는가?
  • [states, *.state.ts] 상태관리를 하는 구성요소가 있는가?
  • [*.helper.ts] 외부 라이브러리를 애플리케이션에 사용하도록 연결하는 구성요소가 있는가?
  • [constants] 상수를 정의하는 구성요소가 있는가?
  • [shared/components, modules] 컴포넌트를 포함하는 구성요소가 있는가?
  • [helper, pipe, directive] 컴포넌트 볼륨을 줄일 수 있는 구성요소가 있는가?
  • [feature.module.ts] 페이지 단위를 분리할 수 있는 구성요소가 있는가?
  • [src/enviroments] 프로젝트 환경 설정을 포함하는 구성요소가 있는가?

Nuxt

├─ nuxt.config.ts
├─ assets
├─ components
├─ constants
├─ directives
├─ filters
├─ layouts
├─ middleware
├─ pages
├─ plugins
├─ static
├─ store
└─ test
  • [assets] 컴파일되지 않은 에셋들을 포함하는 구성요소가 있는가?
  • [static] 정적 파일들을 포함하는 구성요소가 있는가?
  • [middleware] 페이지나 컴포넌트에 접근하기 전에 실행할 사용자 정의함수를 정의하는 구성요소가 있는가?
  • [test] 테스트 파일들을 포함하는 구성요소가 있는가?
  • [pages, Auto Routing] 라우터를 정의하는 구성요소가 있는가?
  • [store] 상태관리를 하는 구성요소가 있는가?
  • [plugins] 외부 라이브러리를 애플리케이션에 사용하도록 연결하는 구성요소가 있는가?
  • [constants] 상수를 정의하는 구성요소가 있는가?
  • [components] 컴포넌트를 포함하는 구성요소가 있는가?
  • [directives, filters] 컴포넌트 볼륨을 줄일 수 있는 구성요소가 있는가?
  • [pages] 페이지 단위를 분리할 수 있는 구성요소가 있는가?
  • [nuxt.config.ts 프로젝트 환경 설정을 포함하는 구성요소가 있는가?