통신 책임 분리

클라이언트/서버 책임 분리

클라이언트와 서버는 한 기능을 함께 완성하지만 같은 책임을 갖지 않습니다. 클라이언트는 입력과 피드백을 빠르게 처리하고, 서버는 신뢰할 수 있는 검증과 저장, 권한 판단을 맡으며, 응답은 다시 화면 상태로 해석됩니다.

01

요청 생성

클라이언트는 method, URL, headers, body를 API 계약에 맞춰 구성합니다.

request
02

서버가 검증한다

형식, 권한, 소유권, 비즈니스 규칙을 서버에서 최종 확인합니다.

validate
03

상태를 저장한다

DB, cache, session 등 신뢰 가능한 저장소 변경은 서버가 책임지고 원자성을 관리합니다.

persist
04

화면에 반영한다

클라이언트는 응답의 성공, 실패, 재시도 가능성을 UI 상태로 해석합니다.

render
입력 검증
클라이언트는 편의, 서버는 보안과 무결성 프론트 검증이 있어도 API는 같은 규칙을 다시 확인해야 합니다.
trust
오류 처리
status와 메시지를 사용자 행동으로 연결 401, 403, 409, 422, 500은 다른 복구 경로를 가집니다.
error
캐시
클라이언트 속도와 서버 원본 사이의 동기화 stale 상태와 재검증 시점을 정해야 오래된 화면을 줄입니다.
sync

권한 검사 · 낙관적 업데이트 · 계약 문서 점검

권한 검사 UI에서 숨긴 버튼과 서버 API 권한은 별도 방어선입니다.
낙관적 업데이트 서버 실패 시 롤백할 수 있는 변경에만 신중히 적용합니다.
계약 문서 요청/응답 schema와 오류 코드는 화면 구현자가 예측 가능해야 합니다.

책임 분해

클라이언트: 사용자가 입력한 주문 수량 표시
서버: 재고, 가격, 권한, 결제 가능 여부 검증
클라이언트: 성공 응답이면 완료 화면, 실패 응답이면 수정 경로 제시