jtwjs Dev Wiki
  • DEV_ROAD
    • 💪🏻 생존하기
    • Week 1
      • 개발 환경 세팅
      • 타입스크립트
      • 리엑트
      • Testing Library
      • Parcel & ESLint
    • Week 2
      • JSX
      • Virtual DOM
    • Week 3
      • React Component
      • React State
    • Week 4
      • Express
      • Fetch API & CORS
      • React Hook
      • useRef & Custom Hook
    • Week 5
      • TDD
      • React Testing Library
      • MSW
      • Playwrite
      • Snapshot
    • Week 6
      • Separtion of Concerns
      • Principle
      • DI, (Dependency Injection)
      • Reflect-metadata
      • TSyringe
      • External Store
      • Follow Redux
      • usestore-ts
      • useSyncExternalStore
    • Week 7
      • Routing
      • Routes
      • Router
      • Navigation
    • Week 8
      • Design System
      • Style Basics
      • CSS-in-JS
      • Styled-Components
      • Global Style & Theme
    • Week 9
      • 개발하기 전 준비
      • 상품 목록 페이지
      • 상품 상세 페이지
      • 장바구니 페이지
    • Week 10
      • 로그인
      • 로그아웃
      • 회원가입
      • 주문 목록 & 주문 상세
    • Week 11
      • 배송 정보 입력
      • 포트원 결제 요청
      • 배송 및 결제 정보 전달
    • Week 12
      • 관리자 웹사이트개발시작
  • DEV_NOTE
    • TypeScript
      • 기본적 문법
        • Enum
        • 다형성
          • Untitled
        • 구조적 타이핑
        • 제너릭 타입
        • 컨디셔널 타입
        • 함수 메서드 타이핑
        • infer로 타입스크립트의 추론 직접 활용
        • 재귀 타입
        • 템플릿 리터럴 타입
        • 추가적인 타입 검사 satisfies 연산자
        • 타입스크립트 건망증
        • 원시 자료형에도 브랜딩 기법 사용 가능
        • 타입 좁히기
        • 유용한 타입 만들기
        • 데코레이터 함수
        • 앰비언트 선언도 선언 병합이 된다.
        • 앰비언트 선언도 선언병합이 된다.
    • Testing
      • Unit Testing
      • 단위 테스트의 두 분파
      • 좋은 단위 테스트를 구성하는 4대 요소
      • 테스트 대역과 식별할 수 있는 동작
      • 단위 테스트 스타일
      • 가치 있는 단위 테스트를 위한 리팩토링
      • 통합 테스트
      • Cross Browsing Testing
      • 기능 테스트 종류
      • React Testing Pattern
      • 프론트엔드 테스트 입문
        • 테스트 범위
        • 단위 테스트 검증
        • Mock
        • UI 컴포넌트 테스트
        • 테스트 커버리지
        • 웹 통합 테스트
        • MSW
        • 스토리북
        • 시각적 회귀 테스트
        • E2E 테스트
        • Github Actions 설정
        • 깃허브 액션에서 E2E
      • 시프트 레프트
        • 테스트 기본중의 기본
        • 단위 테스트
        • 코드 복잡도
        • 리팩터링
        • 코드 리뷰
        • 통합 테스트 패턴
        • 시스템 테스트의 자동화
        • 탐색적 테스트
      • Test Tip
      • vitest
      • playwright
      • Test Data Generator
      • MSW
    • Algorithm
      • coding test
      • Data Structure
    • Next.js
      • Data Fetching
      • Hydration
      • Next 13
      • Optimization
      • Next 15
    • Tailwind
      • Tailwind CSS
      • Theme
      • Directives
      • Tool
      • Design System
    • Storybook
      • Storybook
      • CSF3
      • CDD
      • Headless Component
    • Funtional Programming
      • 함수형 프로그래밍
      • 참조 투명성
      • 부수효과
      • 함수 합성
      • 제너릭 타입 활용하기
      • 암묵적 입출력
      • 액션과 계산, 데이터
      • 계층형 설계
      • 호출 그래프
      • 함수형 설계
      • 불변성
      • 일급 함수
      • 함수형 도구
    • Git
      • Github Actions
      • Conflict
      • Branch 전략
    • Contents Format
      • Audio
    • 3D Graphic
      • 3D keyword
      • Three.js
      • Geometry
      • Material
      • Light
      • Camera
      • Decal
      • Rotation
      • Text
      • Shadow
      • Fog
      • Post Processing
      • Animation
      • Math
        • Vector Space
        • 벡터의 연산
        • 회전 계산
      • 3D 컨텐츠가 만들어지는 과정
      • R3F
      • Env
      • Scene
      • Transform
      • R3F
      • Interaction & Raycast
      • Rendering Algorithnm
      • Blender
      • Blender
    • Accessibility
      • 접근성이란
    • Interactive Web
      • Parallax
      • Canvas
      • requestAnimationFrame
      • Effect
      • HSL
      • React.js + Canvas
      • Matter.js
    • AWS
      • DevOps
      • Amplify
      • S3
      • 클라우드 컴퓨팅
        • 온프레미스와 클라우드
        • 클라우드 도입효과
        • 클라우드 컴퓨팅의 범위
        • 컴퓨팅 옵션
          • EC2 - Virtual Machin
          • ECS, EKS - Container
          • Lambda - Serverless
        • 네트워크 가상화
        • 스토리지
        • 데이터베이스
        • 데이터 수집
        • 머신 러닝 영역
        • IoT 영역
        • 블록체인 영역
      • 클라우드 아키텍처 설계
    • Network
      • Web Server & WAS
    • System Design
      • System Design
      • Component
      • 의존성을 배제한 개발
      • Error Handling
      • Architecture
        • 모노로틱 아키텍처
        • Clean Architecture
        • Layered Architecture
        • 이벤트 기반 아키텍처
      • 상황을 파악하는 메타인지
      • 중복 문제 해결하기
      • Monorepo Arhitecture
        • 모노레포 운영과 트러블슈팅
        • Module Federation
      • 코드 병목지점
      • API 대응
      • 공통 코드
      • Infra 구축
      • 모듈 기반의 개발 방식
      • Design System
        • 최소 수준의 아키텍처 설정
        • 더 효율적인 디자인시스템 만들기
        • 디자인 시스템과 UI 라이브러리 목적
        • 디자인 토큰
      • 효율적인 업무
        • 업무 프로세스 병목 파악
      • Clean Code
      • Design Pattern
        • CQRS Pattern
        • Strangler Fig Pattern
        • 데코레이터 패턴
        • 커맨드 패턴
        • 전략 패턴
        • 옵저버 패턴
      • A/B 테스팅
      • 대규모 리엑트 웹앱 개발
        • 복잡성 관리
        • 모듈성
        • 성능
        • 디자인 시스템
        • 데이터 패칭
        • 상태 관리
        • 국제화
        • 코드 조직화하기
        • 개인화 A/B 테스팅
        • 확장 가능한 웹 아키텍처
        • 테스팅
        • 툴링
        • 기술적 마이그레이션
        • 타입스크립트
        • 라우팅
        • 사용자 중심 API 디자인
        • 리액트 미래
    • Performance
      • React DevTools
      • Component 최적화
      • Page Load
      • API
    • MFA
      • MSA
      • MFA 도입하기
      • Monorepo
        • Monorepo Tool
        • Yarn Berry Workspace
        • Turborepo
      • MFA Composition
      • SPA 통합
      • Design System
      • Package Manager
        • Yarn
        • pnpm
      • Transpiler & Bundler
        • Babel
        • Rollup
        • esbuild
        • swc
        • Webpack
        • Vite
      • 분해와 통합을 위한 여러 기술 비교
    • State Management
      • Zustand
    • React v18
      • Automatic batching
      • Suspense
      • Transition
    • SEO
      • Search Engine Optimization
      • Open Graph Element
      • Metadata
    • FE Develop
      • Scrubbing
      • Clipboard
    • Refactoring
      • 리팩토링 깊게 들여다보기
      • 긴 코드 조각내기
      • 타입 코드 처리하기
      • 유사한 코드 융합하기
      • 데이터 보호
      • 코드 추가 및 제거
    • OAuth 2.0
    • Analytics
      • Mixpanel
    • ETC
      • VSCode
    • React Hook In Action
      • useContext & Provider
      • 커스텀 훅
      • 코드 분할하기 with Suspense, lazy
      • Suspense와 이미지 적재하기
      • useTransition, uesDeferredValue
      • SuspenseList
Powered by GitBook
On this page
  • 유비쿼터스 랭귀지(Ubiquitous Language)
  • 프론트엔드 개발자들끼리 협업 이점
  • 백엔드 개발자와 협업 이점
  • Example
  • 비즈니스 요구사항 분석하기
  • 비즈니스 목표 이해하기
  • 요구사항 도출해내기 (기능 정의하기)
  • 우선순위 정리하기
  • 유저 플로우 그리기
  • 데이터 플로우 그리기
  • 기술 요구사항 정리하기
  • 개발 환경 세팅
  • 추가로 설치한 도구들
  • 그 외 고려사항
  1. DEV_ROAD
  2. Week 9

개발하기 전 준비

유비쿼터스 랭귀지(Ubiquitous Language)

비즈니스 도메인에 각 직군 별로 동일한 용어와 개념을 사용하여 의사소통할 수 있도록 공통 용어를 정의한다.

하나의 단어는 여러가지 의미로 해석될 수 있기 때문에 구체화 시킬수록 좋다.

  1. 도메인을 분석하고 도메인의 핵심 개념과 용어를 식별한다.

  2. 도메인 분석을 토대로 모두 이해할 수 있는 공통된 용어를 정의한다.

  3. 개발자 간 의사소통을 원활히 할 수 있도록 코드내에 반영한다.

프론트엔드 개발자들끼리 협업 이점

  • 공통된 용어를 사용하여 변수명, 타입명 등을 일관성 있게 작성함으로써, 코드의 가독성과 일관성을 유지할 수 있다.

백엔드 개발자와 협업 이점

  • 서로의 요구사항을 정확하게 이해하고 소통이 원활해진다.

  • 미리 정해놓은 용어들로 API 응답 값이 구성되기 때문에 프론트 측 코드의 일관성과 코드 수정사항이 적어 개발 시간이 단축된다.

Example

Product: 상품
    Summary: 상품에 대한 요약 정보
    Detail: 상품에 대한 상세 정보
    Image: 상품 이미지
    Option: 상품에 대한 상세 옵션 종류 (색상, 크기 등)
        OptionItem: 옵션에 대한 상세 옵션 값 (옵션이 색상이라면 이건 Blue, Red 같은 걸 의미함)
Category: 상품에 대한 분류
Cart: 장바구니
    LineItem: 장바구니에 담긴 것 (상품, 옵션, 수량 등을 동시에 다룸)
        여기서도 Option과 OptionItem을 사용한다.
        용어는 동일하지만 Product와 다른 구성을 갖기 때문에, 여기서는 Product와 Order라는 접두어를 활용한다.
        시스템을 분리할 수 있다면, 근본적으로 나누는 걸 추천(상품 정보 확인 / 장바구니 / 주문).
Order: 주문
    여기서도 동일한 LineItem 활용.
User: 사용자

비즈니스 요구사항 분석하기

비즈니스 목표 이해하기

제품을 만들 때 비즈니스 목표를 온전히 이해해야 디테일을 신경쓸 수 있다.

즉, 어떤 가치가 만들어지고 있는지 모르는 상태로 단순히 기능만 구현한다면 사용자를 위한 제품을 만들기 어렵다.

  • 제품을 만들 때 어떤 것이 가장 중요한지는 목표에서 결정된다.

  • 비즈니스를 알고 있어야 어떤 제품을 만들지 어떤 부분에 더욱 신경을 써야할지 결정할 수 있다.

요구사항 도출해내기 (기능 정의하기)

비즈니스 요구사항은 우리가 어떤 목표를 추구하는지에 따라서 결정됨

비즈니스 요구사항들을 바탕으로 앞으로 만들어 낼 기능들을 나열할 수 있다.

쇼핑몰
  구매자
    상품 목록 확인
    상품 상세 정보 확인
    상품 문의하기
    장바구니에 상품 담기
    주문하기 → 배송지 입력, 결제
    주문 목록 확인
    주문 상세 확인
    로그인
    회원 가입
 관리자
   회원 관리
   상품 관리
   주문 관리
   문의 관리
   공지사항 관리
   배너 관리
   통계 관리

우선순위 정리하기

비즈니스 요구사항이 도출되면 우선순위(중요도)를 결정짓게 된다.

  • 요구사항에 따른 우선순위를 알고 있어야 어떤 기능을 고도화 시키고 집중할지를 알 수 있다.

  • 우선순위를 정한 후 어떤 기능을 먼저 구현해야 할지 결정할 때는 대체재가 어떤 것들이 있는지 인지하는 것이 중요

  • 대체 불가능한 것들은 직접 개발해야하기 때문에 우선순위를 높히고, 우선순위가 높더라도 대체 가능한것들은 후순위로 미룬다.

1. 상품 목록 확인
2. 상품 상세 정보 확인
3. 장바구니에 상품 담기
4. 주문하기 → 배송지 입력, 결제
5. 주문 목록 확인
6. 주문 상세 확인
7. 로그인
8. 회원 가입

비즈니스 레이어와 밀접하게 일을 하고 우선순위를 결정할 수 있는 능력은 개발자의 중요 역량 중 하나이다.

유저 플로우 그리기

사용자가 제품을 이용하기 위해 거쳐야 하는 단계를 순서대로 연결한 것

각 단계에서 필요한 액션과 정보를 표시하여 사용자 관점에서의 이해도를 높히고 사용자 경험을 개선할 수 있다.

  • 유저 플로우를 그리면 제품의 기능을 구체화하여 개발할 수 있다.

  • 유저 플로우는 사용자의 제품 진입점(Entry Point)에 따라 달라질 수 있다.

  • 사용자는 다양한 경로를 통해 들어올 수 있기 때문에 진입점이 항상 메인 페이지가 아니라는 것을 인지해야 한다.

  • 모든 플로우를 고려하는 것은 불가능하므로 놓치고 있는 플로우가 존재할 수 있다.

  • 제품의 완성도를 높이기 위해 필요한 기능들을 찾아내고 적절하게 제시할 수 있는 것이 기술을 잘 이해하고 있는 개발자의 의무이다.

사용자(구매자) → 상품 목록 → 상품 상세 → (로그인 & 회원가입) → 주문 → 결제 → 주문 확인

각 플로우의 실패 케이스들도 모두 고려해서 정리해야 한다.

데이터 플로우 그리기

어느 시점에 어떤 데이터를 사용할지 데이터 흐름을 정의하는 것

  • 전체적인 데이터 구조의 흐름을 파악하여 API 스펙을 미리 설계하고 Mock API를 작성

  • 필요로 하는 데이터 구조와 흐름을 먼저 정의하여 백엔드 개발자에게 요청하면 편할것 같다.

기술 요구사항 정리하기

기술적인 이해도를 바탕으로 제품을 어떻게 구현할지 기술들을 나열하는 것. 즉, 디테일을 잡아가는 과정

  • 서비스 아키텍처는 어떤식으로 구성할 것인지

  • 배포 주기는 어떤식으로 정할 것인지

  • 프로덕션 환경을 어떻게 구성할 것인지

  • SEO에 민감한지

  • 결제 모듈은 어떤 것을 사용해야 하는지

  • 소셜 로그인을 지원해야 하는지

  • 유저 트래킹이 가능해야 하는지

  • 상세 페이지가 얼마나 자주 변경될 것인지

기술 요구사항을 정리할 때, 명확하지 않은 부분들은 다른 직군과 소통하면서 모두 물어봐야 한다.

기술 도입을 위해 팀원에게 설득시키는 일은 개인의 문제가 아닌 우리가 가진 문제를 바탕으로 이 기술을 왜(Why) 사용해야 하는지에 대해 설득할 수 있어야 한다.

항상 Why를 바탕으로 기술을 사용해야 한다.

개발 환경 세팅

추가로 설치한 도구들

그 외 고려사항

  • Unit Test → 모든 단위 테스트는 TDD를 따른다.

    • 비즈니스 로직은 테스트 커버리지 100%를 목표로 삼는다.

    • 컴포넌트 단위로 각 컴포넌트가 맡은 역할을 잘 수행하는지 동작을 검증한다.

  • E2E Test → 작성한 유저 시나리오를 바탕으로 테스트를 작성하고 모두 통과하는 것을 목표로 삼는다.

  • Type 정의 → 특별한 경우가 아니라면, 미리 정한 용어집과 API 스펙에 맞추어 설정한다.

  • MSW 세팅 → REST API 스펙에 맞춰 Mock API 핸들러를 준비한다.

유저 시나리오는 사용자가 제품 서비스를 어떻게 이용할지 정의하는 것

  • 제품 서비스를 이용할 타겟 유저를 먼저 정의하고 서비스를 어떤 상황에서 어떤 목적으로 사용되는지를 묘사한다.

  • 제품 스펙을 개발자 관점에서 미리 정의하여, 테스트 케이스를 작성하는 데 도움이 될 것 같다.

PreviousWeek 9Next상품 목록 페이지

Last updated 1 year ago

기본 세팅
CodeceptJS 세팅
React Router
styled-components
styled-reset
usehooks-ts
Axios
tsyringe
reflect-metadata
usestore-ts
jest-dom
MSW