KoreaDevKNOWLEDGE SHARING

콘텐츠 유형학습하기

AI SOFTWARE DEVELOPMENT · 01 / 10

웹 개발의 발전과 현대적 아키텍처

정적 문서에서 동적 서비스, SPA와 server rendering까지 웹 구조가 바뀐 이유를 하나의 요청 경로로 연결합니다.

난이도
입문
구성
강의 8개 · 실습 2개 · 평가

CORE UNIT 1 / 1

웹 개발의 발전과 현대적 아키텍처

정적 문서에서 동적 서비스, SPA와 server rendering까지 웹 구조가 바뀐 이유를 하나의 요청 경로로 연결합니다.

난이도
입문
구성
강의 8개 · 실습 2개 · 평가

도해·표 자료: 각 강의의 공식 1차 출처를 바탕으로 저자 구성. 원문과 검토일은 해당 강의 끝에서 확인합니다.

NEW HIRE ONBOARDING

첫 업무를 받는 순서로 시작합니다

중학교를 졸업하고 처음 IT 업무를 맡은 신입사원도 따라올 수 있도록, 어려운 정의보다 상황·할 일·증거·보고할 경계를 먼저 확인합니다.

  1. 01

    상황을 한 문장으로 읽기

    공개 뉴스는 10분마다 갱신되고 검색 유입이 중요합니다. 로그인 대시보드는 사용자별 실시간 잔액을 보여주며 잔액 API는 cache하면 안 됩니다.

  2. 02

    오늘 맡은 일

    브라우저·서버·API·데이터베이스·배포 경계를 한 요청의 왕복 경로로 설명합니다.

  3. 03

    완료를 보여 주는 증거

    직접 진입·새로고침·뒤로 가기·잘못된 주소에서 같은 조회 조건을 검사합니다.

  4. 04

    멈추고 선임에게 확인할 경계

    상태가 두 장소에 생기므로 URL, 뒤로 가기, 오류 복구와 접근성을 별도로 설계해야 합니다.

낯선 용어 먼저 풀기

문서 웹에서 동적 웹으로
웹의 첫 약속은 화면 기술이 아니라 주소로 자원을 요청하고 응답받는 공통 규칙이었습니다.
Frontend와 backend가 분리된 이유
분리는 서버 수를 늘리는 유행이 아니라 변경 주기와 책임을 독립시키는 계약입니다.
JavaScript에서 TypeScript와 React로
React는 UI를 component와 state로 조직하고 TypeScript는 그 경계의 값 형태를 실행 전에 검사합니다.

이 과정의 질문

왜 바뀌었고, 무엇을 검증해야 하는가?

기술의 장점만 외우지 않고 그 장점이 성립하는 조건과 새 실패 경계를 함께 확인합니다.

OBSERVABLE OUTCOMES

학습을 마치면 할 수 있는 일

  1. 브라우저·서버·API·데이터베이스·배포 경계를 한 요청의 왕복 경로로 설명합니다.
  2. MPA·SPA·SSR·SSG·Server Component를 렌더링 위치와 갱신 시점으로 비교합니다.
  3. 기능·검색·초기 로딩·운영 조건에 맞는 구조를 고르고 선택의 비용을 검증합니다.

PREREQUISITE CHECK

본문을 읽기 전에 확인할 세 가지

정답을 외우는 시험이 아닙니다. 질문을 먼저 생각한 뒤 해설을 열어 이번 과목에서 사용할 바탕 개념을 확인하십시오.

1주소를 열었을 때 브라우저가 받는 것은 무엇인가요?

최초에는 보통 HTML 응답을 받고, 그 문서가 CSS·JavaScript·이미지 같은 추가 자원을 요청합니다. 앱 구조에 따라 이후 화면 전환은 새 HTML 또는 데이터 요청으로 이루어집니다.

2Frontend와 backend는 언어 이름인가요?

아닙니다. 사용자 장치에서 보이는 상호작용과 서버에서 규칙·데이터를 처리하는 책임의 경계입니다. 같은 언어로 양쪽을 구현할 수도 있습니다.

3새 기술은 앞 기술을 항상 대체하나요?

대부분은 특정 제약에서 유리한 선택지를 더합니다. 정적 HTML, server rendering, client rendering은 지금도 요구 조건에 따라 함께 쓰입니다.

TEXTBOOK GUIDE

개념의 배경부터 판단 기준까지 읽는 본문

IT를 처음 접하는 독자도 용어를 암기하지 않고 원인과 결과를 연결할 수 있도록 한 절씩 이어서 설명합니다.

CONCEPT FLOW

각 장은 이렇게 연결됩니다

각 장은 따로 외우는 단답이 아닙니다. 왼쪽에서 오른쪽으로 따라가며 앞 장의 개념이 다음 판단에 어떻게 쓰이는지 먼저 살펴보세요.

  1. 1장문서 웹에서 동적 웹으로
  2. 2장Frontend와 backend가 분리된 이유
  3. 3장JavaScript에서 TypeScript와 React로
  4. 4장React에서 Next.js로: 렌더링 위치 선택
  5. 5장API·DB·배포를 잇는 전체 요청 경로
  6. 6장응답 순서가 뒤바뀌는 검색 화면
  7. 7장읽을 수 있는 HTML과 실제 상호작용을 따로 검증하기
  8. 8장URL로 돌아올 수 있는 필터와 상세 화면
웹 개발의 발전과 현대적 아키텍처의 전체 지도입니다. 아래 장문 해설과 각 장을 읽다가 길을 잃으면 이 순서로 돌아오세요.
그림 1-1. 웹 개발의 발전과 현대적 아키텍처의 개념 전개앞 장의 선택과 한계가 다음 장의 문제로 어떻게 이어지는지 보여 줍니다.
  1. 1
    문서 웹에서 동적 웹으로

    웹의 첫 약속은 화면 기술이 아니라 주소로 자원을 요청하고 응답받는 공통 규칙이었습니다.

  2. 2
    Frontend와 backend가 분리된 이유

    분리는 서버 수를 늘리는 유행이 아니라 변경 주기와 책임을 독립시키는 계약입니다.

  3. 3
    JavaScript에서 TypeScript와 React로

    React는 UI를 component와 state로 조직하고 TypeScript는 그 경계의 값 형태를 실행 전에 검사합니다.

  4. 4
    React에서 Next.js로: 렌더링 위치 선택

    현대 framework의 핵심은 SPA를 무조건 선택하는 것이 아니라 route마다 계산 위치와 시점을 선택하는 것입니다.

  5. 5
    API·DB·배포를 잇는 전체 요청 경로

    사용자가 보는 한 번의 클릭은 DNS와 TLS, CDN, frontend, API, DB와 관측 신호를 지나는 운영 계약입니다.

  6. 6
    응답 순서가 뒤바뀌는 검색 화면

    마지막에 도착한 응답이 아니라 현재 사용자가 요청한 상태를 화면에 반영합니다.

  7. 7
    읽을 수 있는 HTML과 실제 상호작용을 따로 검증하기

    본문이 보이는 것과 React 이벤트가 연결된 것은 서로 다른 완료 조건입니다.

  8. 8
    URL로 돌아올 수 있는 필터와 상세 화면

    공유·새로고침·뒤로 가기에서 필요한 상태는 복원 가능한 주소 계약으로 정의합니다.

CONTROLLED EXPLANATION

검색 B를 보존하는 화면 상태

현재 상태: A 요청

검색 B를 보존하는 화면 상태

A의 늦은 실패가 B의 성공을 덮지 않도록 요청 신원과 화면 적용을 분리한 교육용 사례입니다.

사용자 조건 변경응답 검증화면 적용지연 응답덮어쓰기 거부1A 요청2B 요청3B 성공4A 늦은 실패5B 화면 유지
  1. A 요청

    순번 1 · 이전 조건

  2. B 요청

    순번 2 · 현재 조건

  3. B 성공

    현재 순번과 일치

  4. A 늦은 실패

    현재 순번과 불일치

  5. B 화면 유지

    결과 ID와 검색 조건 확인

1 → 2
사용자 조건 변경
2 → 3
응답 검증
3 → 5
화면 적용
1 → 4
지연 응답
4 → 5
덮어쓰기 거부

순번은 요청 신원이며 응답 도착 시간이 최신성의 근거는 아닙니다.

CONCRETE CASES

과정 전체 선택 기준표

TABLE 1-1

과정 전체 선택 기준표

각 장의 기술을 이름이 아니라 작동 원리, 새 비용과 확인할 증거로 비교합니다.

1-1. 웹 개발의 발전과 현대적 아키텍처의 설계 판단 기준
중심 메커니즘주의할 비용확인할 증거
1. 문서 웹에서 동적 웹으로브라우저가 필요한 데이터만 다시 요청하고 DOM의 일부를 갱신해 전체 문서 왕복을 줄입니다.상태가 두 장소에 생기므로 URL, 뒤로 가기, 오류 복구와 접근성을 별도로 설계해야 합니다.JavaScript를 끈 상태, 느린 네트워크와 뒤로 가기에서 핵심 작업이 어떻게 달라지는지 관찰합니다.
2. Frontend와 backend가 분리된 이유API schema와 version 정책이 서로 다른 배포 주기의 구성요소를 느슨하게 연결합니다.경계마다 network·serialization·인증·관측 비용이 추가됩니다.한 기능 변경에 함께 수정·배포해야 하는 구성요소를 그려 실제 결합도를 확인합니다.
3. JavaScript에서 TypeScript와 React로타입 checker가 component props와 함수 호출의 구조를 비교해 실행 전 불일치를 보고합니다.타입 설계와 build 시간이 들며 잘못된 타입은 거짓 안전감을 줄 수 있습니다.외부 JSON의 필드를 바꾸고 type check, runtime validation, UI test가 각각 무엇을 잡는지 비교합니다.
4. React에서 Next.js로: 렌더링 위치 선택route와 component별로 server/client 경계를 정하고 prefetch·streaming으로 필요한 조각을 전달합니다.cache 무효화, hydration, server/client 직렬화와 framework 규칙을 이해해야 합니다.각 route의 개인화 여부, 갱신 허용 시간, 초기 내용 요구를 표로 만들어 전략을 고릅니다.
5. API·DB·배포를 잇는 전체 요청 경로명시적 계약과 correlation ID가 계층별 처리를 하나의 요청 증거로 연결합니다.계층을 추가할수록 timeout·retry·cache 일관성과 소유권 문제가 늘어납니다.한 요청의 status, latency, revision, query와 오류를 계층별로 연결할 수 있는지 확인합니다.
6. 응답 순서가 뒤바뀌는 검색 화면요청 식별자와 현재 화면 조건의 대조가 늦은 응답의 적용을 막습니다.취소와 결과 검증을 함께 설계해야 하며 서버의 이미 실행된 변경까지 취소됐다고 추정하면 안 됩니다.응답 순서를 뒤집고 성공·실패를 섞어 마지막 사용자 조건이 유지되는지 검사합니다.
7. 읽을 수 있는 HTML과 실제 상호작용을 따로 검증하기같은 초기 본문을 보존한 채 client 초기화와 저장된 상태 복원을 단계적으로 확인합니다.초기 렌더와 개인 상태 복원 사이의 차이를 설계하고 실제 상호작용 검사가 필요합니다.본문 노드 보존, 완료 상태 복원, 두 번의 클릭과 저장소 변화를 각각 확인합니다.
8. URL로 돌아올 수 있는 필터와 상세 화면주소를 검증된 조회 조건으로 해석하고 동일한 조건을 화면과 서버에 전달합니다.주소 노출 범위와 잘못된 값 처리 정책을 정해야 하며 모든 state를 URL에 넣지는 않습니다.직접 진입·새로고침·뒤로 가기·잘못된 주소에서 같은 조회 조건을 검사합니다.

CHAPTER 1 / 8

문서 웹에서 동적 웹으로

웹의 첫 약속은 화면 기술이 아니라 주소로 자원을 요청하고 응답받는 공통 규칙이었습니다.

이 개념이 필요해진 배경

초기 웹은 연결된 문서를 배포하는 데 강했습니다. URL, HTTP, HTML의 단순한 조합은 작성자와 독자가 다른 환경에서도 같은 문서를 찾고 읽게 했지만, 사용자마다 달라지는 데이터와 즉각적인 입력 반응은 서버가 새 문서를 만들어 돌려주는 방식으로 처리해야 했습니다.

CGI와 server-side template은 요청마다 프로그램을 실행하거나 HTML을 조립해 동적 화면을 만들었습니다. 계산과 데이터 접근이 서버에 모여 배포는 단순했지만, 작은 상호작용도 전체 페이지 왕복이 필요했고 화면 코드와 업무 규칙이 한 파일에 뒤섞이기 쉬웠습니다.

JavaScript가 브라우저에서 문서를 바꾸고 비동기 요청을 보내면서 일부 화면만 갱신할 수 있게 됐습니다. 이것은 서버를 없앤 변화가 아니라, 사용자 반응을 브라우저로 옮기고 서버는 데이터와 규칙을 제공하도록 책임을 재배치한 변화였습니다.

그림 1-2. 문서 웹에서 동적 웹으로의 판단 흐름문제 조건에서 작동 원리와 검증 증거까지 이어지는 관계입니다.
문제와 선택 조건

웹의 첫 약속은 화면 기술이 아니라 주소로 자원을 요청하고 응답받는 공통 규칙이었습니다.

작동 원리

브라우저가 필요한 데이터만 다시 요청하고 DOM의 일부를 갱신해 전체 문서 왕복을 줄입니다.

검증 증거

JavaScript를 끈 상태, 느린 네트워크와 뒤로 가기에서 핵심 작업이 어떻게 달라지는지 관찰합니다.

구체적인 시스템에서 따라가기

예를 들어 1990년대의 회사 소개 페이지는 모든 방문자에게 같은 파일을 보내면 충분했습니다. 그러나 장바구니, 게시판, 인터넷 뱅킹처럼 사용자마다 다른 상태가 필요해지자 서버는 요청의 cookie와 session을 읽고 database 결과를 HTML에 끼워 넣어야 했습니다. 이때 화면은 여전히 완성된 문서였지만, 문서를 만드는 과정이 파일 복사에서 프로그램 실행으로 바뀌었습니다.

이 역사를 알면 정적 페이지와 동적 애플리케이션을 낡음과 새로움으로 나누지 않게 됩니다. 변경이 드문 도움말은 미리 만든 HTML이 더 빠르고 고장 지점도 적습니다. 반대로 실시간 재고나 개인 권한은 요청 시점의 계산이 필요합니다. 설계자는 페이지마다 누가 내용을 만들고, 언제 다시 만들며, 실패했을 때 어떤 오래된 결과까지 허용할지를 먼저 결정해야 합니다.

선택 기준과 실패 경계

상태가 두 장소에 생기므로 URL, 뒤로 가기, 오류 복구와 접근성을 별도로 설계해야 합니다.

피해야 할 오해: 동적 웹은 항상 JavaScript SPA여야 한다는 생각은 틀립니다.

직접 검증하기

JavaScript를 끈 상태, 느린 네트워크와 뒤로 가기에서 핵심 작업이 어떻게 달라지는지 관찰합니다.

판정할 핵심브라우저가 필요한 데이터만 다시 요청하고 DOM의 일부를 갱신해 전체 문서 왕복을 줄입니다.

이 장을 정리하면

웹의 첫 약속은 화면 기술이 아니라 주소로 자원을 요청하고 응답받는 공통 규칙이었습니다.

이 장의 공식 출처

본문의 기술 사실은 다음 1차 자료를 기준으로 검토했습니다. 도해와 비교는 이 자료를 바탕으로 저자가 재구성했습니다.

  1. Ecma TC39, 「ECMAScript Language Specification검토일 2026-08-28 · 적용 범위 Living specification
  2. Vercel, 「Linking and Navigating검토일 2026-08-28 · 적용 범위 Next.js App Router

CHAPTER 2 / 8

Frontend와 backend가 분리된 이유

분리는 서버 수를 늘리는 유행이 아니라 변경 주기와 책임을 독립시키는 계약입니다.

이 개념이 필요해진 배경

화면이 복잡해지자 component와 client state를 전문적으로 다루는 frontend가 커졌고, 여러 화면과 모바일 앱이 같은 데이터를 사용하면서 backend는 HTML 대신 API를 제공하기 시작했습니다. API는 조직 경계이기 전에 입력, 출력, 오류와 권한을 합의하는 계약입니다.

REST는 HTTP 자원과 method를 활용하는 한 설계 방식이지 모든 API의 정답은 아닙니다. GraphQL, RPC, event도 호출 형태와 결합도, cache, 운영 도구가 다릅니다. 중요한 것은 이름보다 소비자가 예측 가능한 계약과 호환성 정책입니다.

서비스를 작게 나누면 팀별 배포와 일부 확장이 쉬워질 수 있지만 network failure, 분산 transaction, trace와 version 관리 비용이 생깁니다. 하나의 잘 구성된 애플리케이션이 요구를 만족한다면 microservice 수를 늘리는 것이 성숙도의 증거는 아닙니다.

그림 1-3. Frontend와 backend가 분리된 이유의 판단 흐름문제 조건에서 작동 원리와 검증 증거까지 이어지는 관계입니다.
문제와 선택 조건

분리는 서버 수를 늘리는 유행이 아니라 변경 주기와 책임을 독립시키는 계약입니다.

작동 원리

API schema와 version 정책이 서로 다른 배포 주기의 구성요소를 느슨하게 연결합니다.

검증 증거

한 기능 변경에 함께 수정·배포해야 하는 구성요소를 그려 실제 결합도를 확인합니다.

구체적인 시스템에서 따라가기

초기의 server application에서는 URL 처리, SQL, 업무 규칙과 HTML 조립이 한 요청 함수에 모이기 쉬웠습니다. 화면을 조금 바꾸려다 database query까지 건드리고, 모바일 앱을 추가하려면 같은 규칙을 다시 구현하는 문제가 반복됐습니다. Frontend와 backend의 분리는 이 변경 이유가 다른 코드를 API라는 검토 가능한 경계로 나누려는 시도였습니다.

온라인 주문을 예로 들면 frontend는 금액을 보기 좋게 표시하고 입력 오류를 빨리 알려줄 수 있지만 최종 할인과 재고 차감은 backend가 다시 판단해야 합니다. 브라우저의 값은 사용자가 바꿀 수 있기 때문입니다. 따라서 경계의 핵심은 어느 팀이 어느 언어를 쓰는지가 아니라, 신뢰할 수 없는 입력을 어디서 검증하고 어떤 상태 변경을 한 번만 허용하는지에 있습니다.

선택 기준과 실패 경계

경계마다 network·serialization·인증·관측 비용이 추가됩니다.

피해야 할 오해: Microservice가 monolith보다 본질적으로 현대적이라는 서열은 없습니다.

직접 검증하기

한 기능 변경에 함께 수정·배포해야 하는 구성요소를 그려 실제 결합도를 확인합니다.

판정할 핵심API schema와 version 정책이 서로 다른 배포 주기의 구성요소를 느슨하게 연결합니다.

이 장을 정리하면

분리는 서버 수를 늘리는 유행이 아니라 변경 주기와 책임을 독립시키는 계약입니다.

이 장의 공식 출처

본문의 기술 사실은 다음 1차 자료를 기준으로 검토했습니다. 도해와 비교는 이 자료를 바탕으로 저자가 재구성했습니다.

  1. Vercel, 「Server and Client Components검토일 2026-08-28 · 적용 범위 Next.js App Router
  2. Vercel, 「Linking and Navigating검토일 2026-08-28 · 적용 범위 Next.js App Router

CHAPTER 3 / 8

JavaScript에서 TypeScript와 React로

React는 UI를 component와 state로 조직하고 TypeScript는 그 경계의 값 형태를 실행 전에 검사합니다.

이 개념이 필요해진 배경

JavaScript의 유연함은 브라우저에서 빠르게 기능을 만들게 했지만 큰 코드에서는 함수가 어떤 값을 기대하는지 실행 전까지 드러나지 않는 경우가 많았습니다. TypeScript는 JavaScript에 정적 타입 표기를 더하고 검사 후 JavaScript를 출력해 값의 형태가 맞지 않는 호출을 더 이른 feedback으로 바꿉니다.

React component는 UI의 한 부분을 입력 props와 출력 markup으로 묶고, state는 render 사이에 기억해야 할 값을 선언합니다. 이 구조는 화면을 재사용 가능한 단위로 만들지만, component를 지나치게 쪼개거나 state 소유권을 잘못 두면 데이터 흐름이 더 어려워집니다.

TypeScript가 통과해도 외부 JSON, 사용자 입력, 업무 규칙의 정확성은 보장되지 않습니다. `any`와 type assertion은 검사를 우회할 수 있고 구조적 타입은 필요한 속성이 맞으면 이름이 다른 타입도 호환합니다. 그래서 API 경계의 runtime schema와 행동 테스트가 필요합니다.

그림 1-4. JavaScript에서 TypeScript와 React로의 판단 흐름문제 조건에서 작동 원리와 검증 증거까지 이어지는 관계입니다.
문제와 선택 조건

React는 UI를 component와 state로 조직하고 TypeScript는 그 경계의 값 형태를 실행 전에 검사합니다.

작동 원리

타입 checker가 component props와 함수 호출의 구조를 비교해 실행 전 불일치를 보고합니다.

검증 증거

외부 JSON의 필드를 바꾸고 type check, runtime validation, UI test가 각각 무엇을 잡는지 비교합니다.

구체적인 시스템에서 따라가기

상품 카드 component가 `price: number`를 요구하는데 API adapter가 문자열을 넘기면 TypeScript는 두 경계가 합의하지 않았음을 build 전에 드러낼 수 있습니다. 그러나 서버가 실제로 `"무료"`를 보내도 개발자가 응답을 강제로 type assertion했다면 검사는 통과합니다. 정적 타입은 이미 알고 있는 계약의 연결을 검사할 뿐, network 밖의 사실을 관찰하지는 못합니다.

실무에서는 외부 입력을 runtime schema로 확인하고, 확인을 통과한 값을 domain type으로 바꾼 뒤 component에 전달합니다. Component test는 loading, empty, error와 정상 상태가 어떻게 보이는지 확인합니다. 이 세 층을 나누면 type error, 잘못된 외부 data, 화면 행동 오류를 서로 다른 위치에서 더 짧은 feedback으로 찾을 수 있습니다.

선택 기준과 실패 경계

타입 설계와 build 시간이 들며 잘못된 타입은 거짓 안전감을 줄 수 있습니다.

피해야 할 오해: TypeScript가 JavaScript runtime의 모호함을 없애거나 올바른 동작을 증명한다는 주장은 틀립니다.

직접 검증하기

외부 JSON의 필드를 바꾸고 type check, runtime validation, UI test가 각각 무엇을 잡는지 비교합니다.

판정할 핵심타입 checker가 component props와 함수 호출의 구조를 비교해 실행 전 불일치를 보고합니다.

이 장을 정리하면

React는 UI를 component와 state로 조직하고 TypeScript는 그 경계의 값 형태를 실행 전에 검사합니다.

이 장의 공식 출처

본문의 기술 사실은 다음 1차 자료를 기준으로 검토했습니다. 도해와 비교는 이 자료를 바탕으로 저자가 재구성했습니다.

  1. Microsoft, 「TypeScript Handbook검토일 2026-08-28 · 적용 범위 공식 문서 최신판
  2. Microsoft, 「Type Compatibility검토일 2026-08-28 · 적용 범위 공식 문서 최신판
  3. Meta, 「Your First Component검토일 2026-08-28 · 적용 범위 React 공식 학습 문서
  4. Meta, 「State: A Component's Memory검토일 2026-08-28 · 적용 범위 React 공식 학습 문서

CHAPTER 4 / 8

React에서 Next.js로: 렌더링 위치 선택

현대 framework의 핵심은 SPA를 무조건 선택하는 것이 아니라 route마다 계산 위치와 시점을 선택하는 것입니다.

이 개념이 필요해진 배경

Client rendering은 browser가 JavaScript를 실행한 뒤 화면을 구성해 앱 같은 전환을 만들기 쉽지만, 초기 bundle과 data waterfall이 커질 수 있습니다. Server rendering은 요청 시 HTML을 만들어 첫 내용과 공유 가능한 URL을 제공하지만 서버 계산과 hydration 경계를 관리해야 합니다.

Static generation은 build 시 만들어도 되는 페이지를 미리 계산해 빠르게 배포합니다. 반대로 사용자별 데이터는 요청 시 또는 client에서 가져와야 합니다. 한 사이트 안에서도 문서, 상품 목록, 장바구니는 갱신 주기와 개인화 조건이 달라 같은 렌더링 전략을 쓸 이유가 없습니다.

Next.js의 Server Component는 server에서 data를 읽고 client로 보낼 JavaScript를 줄일 수 있지만 상호작용이 필요한 component는 client 경계를 가집니다. 이것은 backend가 사라진다는 뜻이 아니라 data 접근과 UI 조립의 일부가 server component graph로 들어간다는 뜻입니다.

그림 1-5. React에서 Next.js로: 렌더링 위치 선택의 판단 흐름문제 조건에서 작동 원리와 검증 증거까지 이어지는 관계입니다.
문제와 선택 조건

현대 framework의 핵심은 SPA를 무조건 선택하는 것이 아니라 route마다 계산 위치와 시점을 선택하는 것입니다.

작동 원리

route와 component별로 server/client 경계를 정하고 prefetch·streaming으로 필요한 조각을 전달합니다.

검증 증거

각 route의 개인화 여부, 갱신 허용 시간, 초기 내용 요구를 표로 만들어 전략을 고릅니다.

구체적인 시스템에서 따라가기

렌더링 전략은 페이지 이름이 아니라 사용자에게 언제 어떤 byte를 보낼지에 대한 결정입니다. 공개 문서라면 build 시 HTML을 만들고 CDN에서 오래 cache할 수 있습니다. 로그인 후 주문 내역은 요청마다 권한을 확인해야 하고, 필터를 빠르게 바꾸는 표는 초기 골격 뒤 browser에서 일부 data를 다시 가져오는 편이 자연스러울 수 있습니다.

혼합 전략에서는 cache key와 무효화가 가장 중요한 운영 계약이 됩니다. 사용자 A의 응답이 공유 cache에 들어가면 보안 사고가 되고, 상품 가격이 갱신됐는데 정적 page가 남아 있으면 업무 오류가 됩니다. 각 route에 개인화 여부, 갱신 허용 시간, JavaScript 없이 필요한 기능, 오류 시 보여줄 fallback을 적으면 framework 용어보다 먼저 올바른 경계를 고를 수 있습니다.

선택 기준과 실패 경계

cache 무효화, hydration, server/client 직렬화와 framework 규칙을 이해해야 합니다.

피해야 할 오해: SSR, SSG, Server Component는 서로 완전히 배타적인 사이트 종류가 아닙니다.

직접 검증하기

각 route의 개인화 여부, 갱신 허용 시간, 초기 내용 요구를 표로 만들어 전략을 고릅니다.

판정할 핵심route와 component별로 server/client 경계를 정하고 prefetch·streaming으로 필요한 조각을 전달합니다.

이 장을 정리하면

현대 framework의 핵심은 SPA를 무조건 선택하는 것이 아니라 route마다 계산 위치와 시점을 선택하는 것입니다.

이 장의 공식 출처

본문의 기술 사실은 다음 1차 자료를 기준으로 검토했습니다. 도해와 비교는 이 자료를 바탕으로 저자가 재구성했습니다.

  1. Vercel, 「Server and Client Components검토일 2026-08-28 · 적용 범위 Next.js App Router
  2. Vercel, 「Linking and Navigating검토일 2026-08-28 · 적용 범위 Next.js App Router

CHAPTER 5 / 8

API·DB·배포를 잇는 전체 요청 경로

사용자가 보는 한 번의 클릭은 DNS와 TLS, CDN, frontend, API, DB와 관측 신호를 지나는 운영 계약입니다.

이 개념이 필요해진 배경

브라우저 요청은 edge cache나 reverse proxy를 거쳐 정적 자원 또는 애플리케이션에 도달합니다. API는 인증된 주체와 입력을 확인하고 transaction 안에서 데이터를 읽거나 바꾼 뒤 명시된 오류 형식으로 응답해야 합니다.

관계형 DB는 표가 낡아서 남은 것이 아니라 key, constraint, transaction으로 여러 데이터 사이의 규칙을 중앙에서 지키는 데 강합니다. 문서 DB와 cache, 검색 engine은 다른 접근 패턴을 보완하며, PostgreSQL의 JSON과 확장은 일부 요구를 한 운영 경계에 결합하는 선택지를 제공합니다.

운영 설계는 code가 끝난 뒤 붙이는 단계가 아닙니다. asset hash, database migration, health probe, trace ID와 rollback 조건을 미리 정해야 새 version이 어느 경로에서 실패했는지 찾고 안전하게 되돌릴 수 있습니다.

그림 1-6. API·DB·배포를 잇는 전체 요청 경로의 판단 흐름문제 조건에서 작동 원리와 검증 증거까지 이어지는 관계입니다.
문제와 선택 조건

사용자가 보는 한 번의 클릭은 DNS와 TLS, CDN, frontend, API, DB와 관측 신호를 지나는 운영 계약입니다.

작동 원리

명시적 계약과 correlation ID가 계층별 처리를 하나의 요청 증거로 연결합니다.

검증 증거

한 요청의 status, latency, revision, query와 오류를 계층별로 연결할 수 있는지 확인합니다.

구체적인 시스템에서 따라가기

사용자가 결제 버튼을 누르면 browser의 event만 성공해서는 안 됩니다. DNS와 TLS를 거친 요청이 gateway에서 인증되고, API가 idempotency key를 확인하며, database transaction이 주문과 재고를 함께 갱신하고, 응답이 끊겨도 같은 주문 상태를 다시 조회할 수 있어야 합니다. 어느 한 계층의 200 응답만으로 전체 결과를 판정할 수 없는 이유입니다.

요청 지도를 만들 때는 component 이름보다 경계마다 남는 증거를 적습니다. Browser에는 사용자에게 보인 결과, gateway에는 request ID와 인증 주체, API에는 revision과 업무 오류, database에는 transaction 결과, 배포 계층에는 image digest가 남아야 합니다. 이 식별자가 연결되어야 장애가 frontend인지 cache인지 query인지 추측이 아니라 증거로 좁혀집니다.

선택 기준과 실패 경계

계층을 추가할수록 timeout·retry·cache 일관성과 소유권 문제가 늘어납니다.

피해야 할 오해: Frontend가 정상으로 보이면 전체 서비스가 정상이라는 판단은 틀립니다.

직접 검증하기

한 요청의 status, latency, revision, query와 오류를 계층별로 연결할 수 있는지 확인합니다.

판정할 핵심명시적 계약과 correlation ID가 계층별 처리를 하나의 요청 증거로 연결합니다.

이 장을 정리하면

사용자가 보는 한 번의 클릭은 DNS와 TLS, CDN, frontend, API, DB와 관측 신호를 지나는 운영 계약입니다.

이 장의 공식 출처

본문의 기술 사실은 다음 1차 자료를 기준으로 검토했습니다. 도해와 비교는 이 자료를 바탕으로 저자가 재구성했습니다.

  1. Vercel, 「Server and Client Components검토일 2026-08-28 · 적용 범위 Next.js App Router
  2. PostgreSQL Global Development Group, 「Constraints검토일 2026-08-28 · 적용 범위 PostgreSQL 18 / current
  3. OpenTelemetry, 「Context Propagation검토일 2026-08-28 · 적용 범위 공식 문서 최신판

CHAPTER 6 / 8

응답 순서가 뒤바뀌는 검색 화면

마지막에 도착한 응답이 아니라 현재 사용자가 요청한 상태를 화면에 반영합니다.

이 개념이 필요해진 배경

검색창에서 A를 입력한 뒤 바로 B로 바꾸면 요청은 A, B 순으로 출발해도 응답은 B, A 순으로 올 수 있습니다. 네트워크 순서와 사용자의 최신 의도는 같지 않으므로 마지막 응답을 무조건 저장하는 구현은 오래된 결과를 다시 보여줍니다.

각 요청에 검색 조건과 순번을 연결하고 결과를 적용할 때 현재 조건과 다시 대조합니다. 이전 요청 취소는 낭비를 줄이지만 이미 끝난 서버 작업을 되돌린다는 뜻은 아니므로 화면 적용 검사는 별도로 남깁니다.

React의 이벤트 함수는 해당 render가 만든 state 값을 봅니다. state 변경 함수를 호출한 직후 같은 함수 안에서 읽은 값이 새 값이라고 가정하면 연속 입력과 비동기 응답을 잘못 연결할 수 있습니다.

화면에는 입력 중인 문자열, 요청한 조건, 표시 중인 결과의 조건을 구분해 둡니다. 세 값이 다를 때 이전 결과를 유지할지 로딩 상태를 보일지는 제품 결정이지만, 다른 조건의 결과를 최신 결과라고 표시해서는 안 됩니다.

그림 1-7. 응답 순서가 뒤바뀌는 검색 화면의 판단 흐름문제 조건에서 작동 원리와 검증 증거까지 이어지는 관계입니다.
문제와 선택 조건

마지막에 도착한 응답이 아니라 현재 사용자가 요청한 상태를 화면에 반영합니다.

작동 원리

요청 식별자와 현재 화면 조건의 대조가 늦은 응답의 적용을 막습니다.

검증 증거

응답 순서를 뒤집고 성공·실패를 섞어 마지막 사용자 조건이 유지되는지 검사합니다.

구체적인 시스템에서 따라가기

교육용 fixture에서 A 응답을 800ms, B 응답을 100ms 지연시켜 순서를 강제로 바꿉니다. 이 수치는 실제 서비스 성능이 아니라 순서 오류를 재현하기 위한 입력 조건입니다. 타이머가 우연히 원하는 순서로 끝나기를 기다리지 말고 각 응답을 독립적으로 해제할 수 있는 mock을 둡니다. 그래야 느린 시험 장비에서도 같은 인과관계를 재현할 수 있습니다.

B 결과가 나타난 뒤 A 응답을 풀어도 화면의 검색어와 결과 식별자가 B로 유지되는지 확인합니다. 요청 횟수만 맞는 테스트는 잘못된 결과가 마지막에 덮어쓰는 결함을 놓칠 수 있습니다. 검사 대상에는 화면에 보이는 첫 항목과 링크의 대상 ID를 함께 넣습니다. 제목만 B로 남고 클릭 대상이 A로 되돌아가면 겉보기 성공과 실제 사용자 행동이 어긋난 것입니다.

같은 fixture에 실패 응답을 섞어 오류 메시지도 현재 요청에 속하는지 봅니다. A의 늦은 오류가 B의 성공 화면을 오류 화면으로 바꾸면 성공 경로만 고친 것입니다. 오류가 속한 요청 ID를 화면 state에 저장하는지도 살펴봅니다. 일반 error boolean 하나만 공유하면 과거 요청의 실패를 현재 요청의 실패와 구분할 수 없습니다.

검토 기록에는 요청 조건, 적용한 응답 ID, 버린 응답 ID와 화면 결과를 함께 남깁니다. 다음 담당자는 재현 순서를 보고 수정 전에는 실패하고 수정 후에는 통과하는지 같은 조건으로 확인합니다. 버린 응답을 성공 처리량으로 중복 집계하지 않는지도 관찰합니다. 네트워크 응답 수와 사용자가 실제로 본 결과 수는 서로 다른 지표이며 한 숫자로 합치면 재현 해석이 달라집니다.

선택 기준과 실패 경계

취소와 결과 검증을 함께 설계해야 하며 서버의 이미 실행된 변경까지 취소됐다고 추정하면 안 됩니다.

피해야 할 오해: 응답이 나중에 도착했으므로 더 최신이라는 판단은 틀립니다.

직접 검증하기

응답 순서를 뒤집고 성공·실패를 섞어 마지막 사용자 조건이 유지되는지 검사합니다.

판정할 핵심요청 식별자와 현재 화면 조건의 대조가 늦은 응답의 적용을 막습니다.

이 장을 정리하면

마지막에 도착한 응답이 아니라 현재 사용자가 요청한 상태를 화면에 반영합니다.

이 장의 공식 출처

본문의 기술 사실은 다음 1차 자료를 기준으로 검토했습니다. 도해와 비교는 이 자료를 바탕으로 저자가 재구성했습니다.

  1. Meta, 「State as a Snapshot검토일 2026-09-14 · 적용 범위 React 상태 스냅샷 공식 학습 문서
  2. Meta, 「State: A Component's Memory검토일 2026-08-28 · 적용 범위 React 공식 학습 문서
  3. Vercel, 「Linking and Navigating검토일 2026-08-28 · 적용 범위 Next.js App Router

CHAPTER 7 / 8

읽을 수 있는 HTML과 실제 상호작용을 따로 검증하기

본문이 보이는 것과 React 이벤트가 연결된 것은 서로 다른 완료 조건입니다.

이 개념이 필요해진 배경

서버가 만든 HTML은 JavaScript가 오기 전에도 제목과 본문을 보여줄 수 있습니다. 그러나 저장 버튼과 상태 전환은 client 코드가 연결되어야 작동하므로 화면 캡처만으로 상호작용 성공을 증명할 수 없습니다.

Hydration은 기존 HTML에 client 동작을 연결하는 과정입니다. 서버와 첫 client render가 서로 다른 사용자 상태로 시작하면 불일치가 생길 수 있으므로 공개 초기값과 브라우저에 저장된 개인 상태를 언제 읽을지 구분합니다.

브라우저 저장소의 진도는 첫 공개 본문에 섞지 않고 client 초기화 뒤 복원하는 방식으로 분리할 수 있습니다. 복원이 늦다는 이유로 본문을 지우거나 새 화면 전체로 교체하면 읽던 위치와 보조 기술의 탐색이 흔들립니다.

이미지 경로도 초기 HTML과 client가 같은 공개 자산을 가리켜야 합니다. 서버의 파일 위치를 URL로 출력하면 개발 환경에서는 존재해도 사용자의 브라우저가 접근할 수 없으므로 자산 존재와 주소의 공개 범위를 함께 확인합니다.

그림 1-8. 읽을 수 있는 HTML과 실제 상호작용을 따로 검증하기의 판단 흐름문제 조건에서 작동 원리와 검증 증거까지 이어지는 관계입니다.
문제와 선택 조건

본문이 보이는 것과 React 이벤트가 연결된 것은 서로 다른 완료 조건입니다.

작동 원리

같은 초기 본문을 보존한 채 client 초기화와 저장된 상태 복원을 단계적으로 확인합니다.

검증 증거

본문 노드 보존, 완료 상태 복원, 두 번의 클릭과 저장소 변화를 각각 확인합니다.

구체적인 시스템에서 따라가기

교육용 완료 버튼은 저장소에 완료 상태를 넣은 뒤 페이지를 열어 검증합니다. 본문 DOM이 유지되면서 버튼 상태가 복원되는지 기다리고, 고정된 짧은 시간 대신 기대 조건이 성립하는지를 한도 안에서 확인합니다. 대기 한도를 넘기면 임의로 통과시키지 않고 초기 저장값과 최종 버튼 상태를 실패 증거로 남깁니다. 이렇게 해야 단순 지연과 실제 복원 기능의 부재를 구분할 수 있습니다.

복원 뒤 버튼을 눌러 완료를 해제하고 다시 완료로 바꿉니다. 두 번 모두 화면의 접근성 상태와 저장소 값이 함께 바뀌어야 이벤트 연결과 저장 동작을 확인한 것입니다. 화면 상태만 바뀌고 저장값이 그대로면 새로고침 뒤 이전 상태가 돌아옵니다. 따라서 마지막 클릭 후 페이지를 다시 열 때 필요한 값이 실제로 기록됐는지 확인합니다.

Native details의 펼침만 확인하면 JavaScript가 실행되지 않아도 테스트가 통과할 수 있습니다. React state를 실제로 바꾸는 조작과 JavaScript 없이 읽을 수 있는 본문 검사를 서로 다른 증거로 둡니다. 자바스크립트 요청을 차단한 fixture에서는 완료 버튼의 성공을 요구하지 않습니다. 대신 제목과 본문 링크를 읽을 수 있는지 보아 두 검사의 책임을 섞지 않습니다.

실패 보고는 초기 HTML 부재, 자산 경로 오류, state 복원 실패와 클릭 후 저장 실패를 구분합니다. 같은 “화면 오류”로 합치지 않아야 SSR 생성과 client effect 중 어디를 고칠지 결정할 수 있습니다. 오류를 고친 뒤 첫 방문과 재방문을 모두 실행합니다. 저장소가 비어 있는 첫 방문만 확인하면 개인 상태를 복원하는 경로의 불일치는 계속 숨을 수 있습니다.

선택 기준과 실패 경계

초기 렌더와 개인 상태 복원 사이의 차이를 설계하고 실제 상호작용 검사가 필요합니다.

피해야 할 오해: 본문이 보이거나 details가 열리면 hydration도 성공했다는 판단은 틀립니다.

직접 검증하기

본문 노드 보존, 완료 상태 복원, 두 번의 클릭과 저장소 변화를 각각 확인합니다.

판정할 핵심같은 초기 본문을 보존한 채 client 초기화와 저장된 상태 복원을 단계적으로 확인합니다.

이 장을 정리하면

본문이 보이는 것과 React 이벤트가 연결된 것은 서로 다른 완료 조건입니다.

이 장의 공식 출처

본문의 기술 사실은 다음 1차 자료를 기준으로 검토했습니다. 도해와 비교는 이 자료를 바탕으로 저자가 재구성했습니다.

  1. Vercel, 「Server and Client Components검토일 2026-08-28 · 적용 범위 Next.js App Router
  2. Meta, 「State: A Component's Memory검토일 2026-08-28 · 적용 범위 React 공식 학습 문서
  3. Microsoft, 「Playwright Assertions검토일 2026-08-28 · 적용 범위 공식 문서 최신판

CHAPTER 8 / 8

URL로 돌아올 수 있는 필터와 상세 화면

공유·새로고침·뒤로 가기에서 필요한 상태는 복원 가능한 주소 계약으로 정의합니다.

이 개념이 필요해진 배경

검색 결과의 세 번째 페이지에서 상세 항목을 본 뒤 뒤로 갔는데 필터가 사라지면 client 전환은 빨라도 작업은 이어지지 않습니다. URL과 메모리 state 중 어느 쪽이 검색 조건의 정본인지 정하지 않은 경우에 자주 나타납니다.

공유해야 하는 정렬·페이지·공개 검색 조건은 URL에 표현하고, 암호나 개인 토큰처럼 기록에 남으면 안 되는 값은 넣지 않습니다. 주소는 브라우저 기록과 로그에 남을 수 있으므로 복원 편의가 개인정보 최소화를 대신하지 않습니다.

주소에서 읽은 값도 외부 입력입니다. 허용 정렬 목록, 페이지 범위와 기본값을 검증하고 잘못된 값은 명시적으로 정규화해야 새로고침과 client 전환이 서로 다른 조건으로 실행되지 않습니다.

필터 변경으로 결과 집합이 달라지면 이전 페이지 번호가 유효하지 않을 수 있습니다. 화면은 페이지를 처음으로 돌릴지 유효 범위로 조정할지 한 규칙을 쓰고 서버 조회에도 같은 정규화된 조건을 보냅니다.

문제와 선택 조건

공유·새로고침·뒤로 가기에서 필요한 상태는 복원 가능한 주소 계약으로 정의합니다.

작동 원리

주소를 검증된 조회 조건으로 해석하고 동일한 조건을 화면과 서버에 전달합니다.

검증 증거

직접 진입·새로고침·뒤로 가기·잘못된 주소에서 같은 조회 조건을 검사합니다.

구체적인 시스템에서 따라가기

가상의 상품 목록에서 category=books, page=3을 주소로 연 뒤 항목을 선택합니다. 새 탭에 복사한 주소와 뒤로 돌아온 화면이 같은 필터를 복원하는지 비교합니다. 상세 링크에는 원래 목록으로 돌아가는 조건이 보존되어야 합니다. 화면의 뒤로 버튼만 따로 구현하지 말고 브라우저 기록의 이동에서도 같은 결과가 나오는지 살펴봅니다.

page=-1과 지원하지 않는 sort 값을 별도 fixture로 만듭니다. 오류를 보일지 기본값으로 바꿀지 먼저 정하고 결과 URL, 요청 조건과 화면 표시가 합의한 규칙에 맞는지 검사합니다. 같은 잘못된 값을 server 진입과 client 필터 변경 양쪽에 넣습니다. 한쪽은 오류이고 다른 쪽은 조용한 기본값이면 공유한 URL이 사용자마다 다른 행동을 만들 수 있습니다.

네트워크가 느릴 때 이전 결과를 표시한다면 그 결과가 어느 조건에 속하는지도 알려야 합니다. 주소만 새 조건이고 결과는 이전 조건인데 최신이라고 말하면 사용자는 다른 항목을 잘못 선택할 수 있습니다. 로딩 표시가 사라지는 시점도 요청한 조건의 성공에 연결합니다. 먼저 끝난 무관한 요청이 로딩 상태를 해제하면 아직 새 결과가 없는데 선택 가능한 화면으로 오해할 수 있습니다.

완료 증거는 링크 클릭 한 번이 아니라 직접 진입, 새로고침, 뒤로 가기와 잘못된 주소 입력을 포함합니다. 네 경로가 같은 조건 해석을 사용하면 화면 상태가 일회성 메모리를 넘어 공유 가능한 작업이 됩니다. 주소 계약을 바꿀 때는 이전에 공유한 링크 fixture를 보관합니다. 새 화면에서만 맞는 상태 설계는 저장된 북마크와 외부 링크의 사용자를 정상 경로에서 밀어낼 수 있습니다.

선택 기준과 실패 경계

주소 노출 범위와 잘못된 값 처리 정책을 정해야 하며 모든 state를 URL에 넣지는 않습니다.

피해야 할 오해: client에서 화면이 바뀌면 공유와 새로고침도 자동으로 복원된다는 생각은 틀립니다.

직접 검증하기

직접 진입·새로고침·뒤로 가기·잘못된 주소에서 같은 조회 조건을 검사합니다.

판정할 핵심주소를 검증된 조회 조건으로 해석하고 동일한 조건을 화면과 서버에 전달합니다.

이 장을 정리하면

공유·새로고침·뒤로 가기에서 필요한 상태는 복원 가능한 주소 계약으로 정의합니다.

본문의 기술 사실은 다음 1차 자료를 기준으로 검토했습니다. 도해와 비교는 이 자료를 바탕으로 저자가 재구성했습니다.

  1. Vercel, 「Linking and Navigating검토일 2026-08-28 · 적용 범위 Next.js App Router
  2. Meta, 「State: A Component's Memory검토일 2026-08-28 · 적용 범위 React 공식 학습 문서
  3. Microsoft, 「Playwright Best Practices검토일 2026-08-28 · 적용 범위 공식 문서 최신판

INTERACTIVE LAB 1 / 2

실습 1 · 뉴스와 개인 대시보드의 렌더링 경계 정하기

공개 뉴스는 10분마다 갱신되고 검색 유입이 중요합니다. 로그인 대시보드는 사용자별 실시간 잔액을 보여주며 잔액 API는 cache하면 안 됩니다.

두 route의 요구를 가장 정확하게 분리한 설계를 선택하세요.

답 선택

정답 C

A. 모든 화면을 client-only SPA로 만들고 하나의 전역 cache를 사용합니다.구현 방식은 통일되지만 공개 뉴스의 초기 HTML과 사용자별 cache 격리를 놓칩니다.

B. 모든 요청을 server rendering하고 모든 응답을 CDN에서 10분 cache합니다.개인 잔액이 공유 cache에 들어갈 수 있어 보안과 최신성 조건을 위반합니다.

C. 뉴스는 정적 재생성하고 대시보드는 인증된 server 경계와 no-store 잔액 요청을 사용합니다.route마다 갱신·개인화 조건을 반영하고 cache 경계를 분리한 설계입니다.

D. 뉴스와 잔액을 하나의 microservice로 합치면 렌더링 문제는 사라집니다.서비스 개수는 렌더링 위치와 cache 정책 문제를 해결하지 않습니다.

INTERACTIVE LAB 2 / 2

실습 2 · 늦은 응답과 저장 진도를 함께 재현하기

검색 A 뒤 B를 요청했습니다. B는 먼저 성공하고 A는 늦게 실패합니다. 같은 화면의 학습 완료는 이전 방문에서 true로 저장돼 있습니다.

최신 결과와 실제 상호작용을 모두 확인하는 검증을 고르십시오.

답 선택

정답 C

A. 응답 두 개가 끝나면 스크린샷만 비교합니다.화면의 외형만으로 완료 버튼의 이벤트와 저장 동작을 알 수 없습니다.

B. A 오류가 마지막이므로 B 결과를 지웁니다.도착 순서는 현재 사용자의 요청 순서를 대신하지 않습니다.

C. B 결과를 유지하고 저장 진도 복원 뒤 완료 버튼의 해제·재완료와 저장값을 검사합니다.요청 식별자와 React state·저장소의 서로 다른 계약을 모두 확인합니다.

D. details가 열리면 이벤트 연결까지 통과시킵니다.Native disclosure는 React 코드가 실행되지 않아도 작동할 수 있습니다.

KEY TERMS

이번 단원 핵심 용어

문서 웹에서 동적 웹으로
브라우저가 필요한 데이터만 다시 요청하고 DOM의 일부를 갱신해 전체 문서 왕복을 줄입니다.
Frontend와 backend가 분리된 이유
API schema와 version 정책이 서로 다른 배포 주기의 구성요소를 느슨하게 연결합니다.
JavaScript에서 TypeScript와 React로
타입 checker가 component props와 함수 호출의 구조를 비교해 실행 전 불일치를 보고합니다.
React에서 Next.js로: 렌더링 위치 선택
route와 component별로 server/client 경계를 정하고 prefetch·streaming으로 필요한 조각을 전달합니다.
API·DB·배포를 잇는 전체 요청 경로
명시적 계약과 correlation ID가 계층별 처리를 하나의 요청 증거로 연결합니다.
응답 순서가 뒤바뀌는 검색 화면
요청 식별자와 현재 화면 조건의 대조가 늦은 응답의 적용을 막습니다.
읽을 수 있는 HTML과 실제 상호작용을 따로 검증하기
같은 초기 본문을 보존한 채 client 초기화와 저장된 상태 복원을 단계적으로 확인합니다.
URL로 돌아올 수 있는 필터와 상세 화면
주소를 검증된 조회 조건으로 해석하고 동일한 조건을 화면과 서버에 전달합니다.

UNIT WORKBOOK

개념을 새로운 상황에 적용하는 문제와 기록지

기본 원리 확인에서 시작해 실제 업무 판단으로 확장합니다. 답을 제출하면 정답만이 아니라 모든 선택지가 맞거나 틀린 이유를 확인할 수 있습니다.

THREE-LEVEL ASSESSMENT

기본 원리에서 운영 판단까지

답을 제출하면 정답만이 아니라 모든 선택지가 맞거나 틀린 이유를 확인할 수 있습니다.

기본 문제 1

TypeScript static check가 직접 보장하는 것은 무엇인가요?

답 선택

정답 A

A. 검사 대상 코드의 값 형태와 호출 계약 사이에서 발견 가능한 불일치정적 분석이 알 수 있는 범위에서 실행 전에 불일치를 찾습니다.

B. 모든 업무 규칙의 정확성업무 규칙은 테스트와 검토가 필요합니다.

C. 브라우저별 실행 결과의 동일성runtime 환경 차이는 타입만으로 보장되지 않습니다.

D. 외부 API 응답이 항상 선언한 형태라는 사실외부 입력은 runtime 검증 없이는 선언과 다를 수 있습니다.

적용 문제 2

상품 소개와 장바구니에 같은 렌더링 전략을 강제하지 않는 이유는 무엇인가요?

상품 소개는 하루 한 번 바뀌고 장바구니는 사용자 입력마다 바뀝니다.

답 선택

정답 B

A. Server는 사용자 데이터를 처리할 수 없기 때문입니다.Server는 인증된 사용자 데이터를 처리합니다.

B. 갱신 시점, 개인화와 cache 가능 범위가 다르기 때문입니다.요구 조건이 다른 route는 계산 위치와 시점도 달라질 수 있습니다.

C. React는 상품 소개를 만들 수 없기 때문입니다.React 사용 여부와 갱신 전략은 다른 판단입니다.

D. 장바구니에는 URL이 없기 때문입니다.장바구니도 URL과 복구 정책을 가질 수 있습니다.

종합 문제 3

서비스 분리 결정을 내리기 전에 가장 먼저 기록할 증거는 무엇인가요?

답 선택

정답 C

A. 사용할 programming language의 인기 순위언어 인기도는 서비스 경계의 근거가 아닙니다.

B. 배포할 container 이름이름은 구조 결정 뒤의 구현 세부입니다.

C. 함께 변경되는 기능, 독립 확장 요구와 현재 장애 경계분리가 해결할 실제 결합과 운영 제약을 먼저 확인해야 합니다.

D. 유명 기업의 microservice 개수다른 규모와 조직의 숫자는 현재 제약의 증거가 아닙니다.

PRIMARY SOURCES

과정 참고문헌

장별 출처를 다시 모은 목록입니다. 본문의 설명과 저자 도해는 아래 원문을 직접 검토해 작성했습니다.

PERSONAL WORKSHEET

내 환경에 옮겨 적는 학습 기록지

입력 내용은 현재 브라우저 화면에만 머물며 저장하거나 외부로 전송하지 않습니다. 민감한 실제 정보 대신 범주와 가명을 사용하십시오.

OFFICIAL SOURCES

공식 자료에서 다시 확인하기

기술·호환성·모델 정보 검토 연월: 2026년 8월

LEARNING RECORD

본문·판단 활동·모든 해설을 확인했나요?

완료 기록은 이 브라우저에만 저장됩니다.