TDD는 제품 코드를 작성하기 전에 테스트 코드를 먼저 작성하여 기능을 정의하고 품질을 확보하는 소프트웨어 개발 방법론이다. 이는 'Red(실패)-Green(성공)-Refactor(개선)'라는 짧고 지속적인 반복 주기를 핵심으로 하며, 초기 시간 투자는 발생하나 디자인 개선, 버그 감소, 리팩토링 안정성을 제공함.배경 및 문제전통적인 '코드 작성 후 테스트(Test-Last)' 방식은 설계상의 문제점을 늦게 발견하게 하거나, 시간 부족으로 테스트 자체를 생략하게 만들어 버그율을 높일 수 있다. 리팩토링에 대한 두려움으로 인해 코드 부패가 발생할 수 있으며, 이를 방지하기 위해 테스트를 디자인의 피드백 도구로 활용하는 접근이 필요.상세 내용TDD의 핵심은 피드백 루프이다. 위 이미지 처럼 세 가지 단계로 ..
HTML5 데이터 속성(data attributes)은 표준 HTML 요소에 추가적인 맞춤형 정보를 내장할 수 있는 메커니즘을 제공한다. data- 접두사로 시작하는 특성을 사용하여 애플리케이션 고유의 데이터를 DOM 구조 내에 직접 저장할 수 있다. 이 데이터는 JavaScript의 dataset API 및 CSS 속성 선택기를 통해 쉽게 접근 및 활용이 가능하여, HTML 콘텐츠와 애플리케이션 로직/스타일 간의 깔끔한 분리를 지원한다.배경 및 문제HTML5 이전에는 비표준 속성을 요소에 추가하여 데이터를 저장하는 방식이 널리 사용되었으나, 이는 HTML 유효성 검사를 통과하지 못하고 향후 브라우저 업데이트 시 예기치 않은 문제를 야기할 수 있는 위험이 있었다. 또한, JavaScript 클래스나 전역..
Streaming SSR은 서버에서 전체 HTML을 모두 렌더링한 후 클라이언트로 전송하는 전통적인 SSR 방식과 달리, HTML을 청크(Chunk) 단위로 분할하여 생성되는 대로 브라우저에 스트리밍하는 방식이다. 이를 통해 TTFB(Time to First Byte)와 FCP(First Contentful Paint)를 획기적으로 개선하며, React 18의 Suspense와 결합하여 Selective Hydration을 가능하게 함. 이는 사소한 데이터 페칭 지연이 전체 페이지의 초기 페인트를 블로킹하는 문제를 해결하는 현대적인 웹 성능 최적화 기법임.배경 및 문제전통적인 SSR 방식(예: React 16의 renderToString)은 "All or Nothing" 접근 방식을 따름. 서버는 전체 ..
리액트 서버 컴포넌트(RSC)는 서버에서만 렌더링되고 클라이언트로 JavaScript 번들을 전송하지 않는 새로운 컴포넌트 유형이다. 이를 통해 클라이언트 측 JavaScript 양을 획기적으로 줄여 초기 로딩 성능을 향상시키며, DB 등 서버 리소스에 직접 접근하여 데이터 페칭 효율성을 극대화할 수 있다. 상호작용이 필요한 클라이언트 컴포넌트와 상호 보완적으로 작동한다.배경 및 문제 기존 SPA(Single Page Application) 및 SSR(Server-Side Rendering) 방식은 모든 상호작용을 위해 브라우저가 컴포넌트 로직이 담긴 JavaScript 번들을 다운로드하고 하이드레이션(Hydration) 해야 했다. 애플리케이션 규모가 커질수록 JavaScript 양이 증가하여 초기 로..
JavaScript 번들러는 현대 웹 애플리케이션 개발에서 필수적인 도구이다. 수많은 모듈과 외부 의존성(라이브러리)을 병합하여 브라우저가 이해하고 효율적으로 로드할 수 있는 단일 혹은 몇 개의 최적화된 파일(번들)로 변환하는 역할을 수행하기 때문인데, 이는 네트워크 성능 향상(HTTP 요청 수 감소), 모듈성 관리, 그리고 구형 브라우저와의 호환성 확보를 위해 반드시 필요하다. 번들링 과정에서 미니피케이션(Minification), 트리 쉐이킹(Tree Shaking) 등의 최적화 기법도 적용된다.배경 및 문제현대 웹 애플리케이션은 복잡성이 매우 높아 수많은 JavaScript 파일(모듈)로 구성된다. 브라우저는 기본적으로 ESM(ECMAScript Modules)을 지원하지만, 수백 개의 모듈을 개별..
Web Storage API는 브라우저에 데이터를 키-값 쌍으로 저장하는 메커니즘을 제공한다. localStorage와 sessionStorage는 데이터의 지속성(Persistence)과 범위(Scope)에서 결정적인 차이가 있다. localStorage는 데이터가 브라우저를 닫아도 유지되며 동일 원리(Origin)의 모든 탭/윈도우에서 공유되는 반면, sessionStorage는 데이터가 세션(탭/윈도우)이 열려 있는 동안만 유효하며 각각의 세션마다 독립적으로 관리된다. 두 저장소 모두 용량은 약 5MB 수준이며 문자열 데이터만 저장이 가능하다.배경 및 문제웹 애플리케이션 개발 시 사용자 설정, 장바구니 정보, JWT 토큰 등 클라이언트 측에 데이터를 임시로 저장해야 하는 요구사항이 자주 발생함. 기..
프론트엔드(FE) 아키텍처는 복잡한 애플리케이션 상태를 관리하고, 유지보수성을 높이기 위해 진화해왔다. 전통적인 양방향 데이터 바인딩 패턴인 MVC(Vue, Angular)는 간결한 구현을 제공하지만 상태 추적이 어려워졌다. 이에 React는 단방향 데이터 흐름을 강제하는 Flux 패턴을 도입하여 예측 가능한 상태 관리를 가능하게 하였다. 최근에는 아키텍처론적 접근인 FSD(Feature-Sliced Design)가 대두되어, 기술 계층(Layer)이 아닌 비즈니스 도메인(Domain) 중심으로 프로젝트 파일을 구조화하여 확장성을 확보함.배경 및 문제Single Page Application(SPA)의 등장으로 프론트엔드가 감당해야 할 상태(State)와 로직의 복잡도가 기하급수적으로 증가함. 초기 MV..
프론트엔드(FE) Structural Architecture는 복잡한 웹 애플리케이션의 유지보수성, 확장성, 성능을 확보하기 위한 필수적인 구조 설계 기준이다. 현대 FE 개발(React)은 컴포넌트 기반 아키텍처(Component-based)와 단방향 데이터 흐름(Unidirectional Data Flow)을 핵심 원칙으로 채택하여, UI와 로직을 분리하고 예측 가능한 애플리케이션 상태를 관리하고 있다.배경 및 문제초기 웹은 단순한 문서 전달 목적이었으나, Single Page Application(SPA)의 등장으로 프론트엔드 로직의 복잡도가 급격히 상승했다. 만약, 체계적인 구조 설계 없이 개발될 경우, 코드 간 강한 결합(Tightly Coupled), 스파게티 코드, 상태 관리 불능, 디버깅 ..