Allra Fintech
LearningPhilosophy

상태와 렌더링의 간극

상태가 바뀌어도 화면이 즉시 반영되지 않는 이유를 이해해, 백엔드 사고를 프론트온보딩의 렌더링 관점으로 전환한다.

이 문서의 출발점

백엔드에서 익숙한 모델은 보통 요청 -> 처리 -> 응답입니다.
프론트에서 익숙하지 않게 느껴지는 지점은 여기서 시작됩니다.

여기서는 질문이 바뀝니다.

사용자 입력이 들어오고 → 상태가 바뀌고 → 화면이 바로 바뀌는가?

답은 거의 항상 "아니오"입니다.
백엔드는 곧바로 반환되는 응답을 기준으로 정합성을 보장한다면, 브라우저는 여러 단계의 중간 상태를 거치며 최종 페인트를 합니다.

이 간극이 바로 이 문서의 핵심입니다.

상태-렌더 간극은 왜 생기는가

브라우저는 화면을 “계산해서 그리는” 시스템입니다.
즉, 상태가 바뀐 직후에도 즉시 화면으로 가기보다, 여러 단계를 통과합니다.

  1. 입력 수신 (이벤트, 타이머, 네트워크 응답)
  2. 상태 계산 (애플리케이션 메모리에서 다음 상태 도출)
  3. 브라우저 스케줄링 (우선순위/프레임 단위)
  4. 스타일/레이아웃/페인팅(실제 픽셀 갱신)

문제의 원인은 특정 단계에 한정되지 않고, 입력/계산/스케줄링/페인팅 전 구간 어디에서나 생길 수 있습니다.
“데이터는 맞는데 화면이 다르다”는 말은 결국 상태에서 화면으로 넘어가는 경계의 동기화가 깨졌을 때 나타납니다.

백엔드 사고를 가져와 봐야 하는 이유

백엔드 관점에서의 사고가 완전히 쓸모없어지는 게 아닙니다. 오히려 더 강해집니다.

  • 상태 변경은 결국 “입력의 결과”로 보아야 하지만, 브라우저에서는 화면 반영 시점이 즉시가 아니다.
  • 같은 입력이나 응답이 겹치면, 어떤 상태가 최종 화면으로 남을지에 대한 인과가 흐려지기 쉽다.
  • 눈에 보이는 불일치는 항상 값 자체의 오류보다, 시간 정렬의 실패일 가능성이 크다.

이 차이를 받아들이는 순간 백엔드 개발자는 프론트엔드의 “예측 불가능한 버그”를 덜 신뢰하게 됩니다.

철학으로 정리하기: 간극을 시간축으로 본다

프론트엔드 실무에서의 핵심 철학은 하나입니다.

상태는 즉시 정답이 아니라, 렌더링으로 수렴하는 과정이다.

그래서 문서를 만들거나 리팩터링할 때 이런 기준이 생깁니다.

  • 상태 변경의 의도는 명확한가?
  • 상태와 화면 사이의 시차가 팀에서 공유되고 있는가?
  • 오래된 신호가 최신 화면을 덮는 경로를 차단했는가?
  • 렌더링 중단/재개가 일어나도 사용자가 느끼는 인과 관계가 유지되는가?

정확성은 “지금 당장 바뀜”이 아니라 “최종적으로 일관되게 바뀜”으로 정의합니다.

다른 트랙으로 넘어가기 전 정렬 포인트

이 문서의 개념은 다음 트랙과 연결됩니다.

체크 질문

  • 상태 변경과 화면 반영 사이의 간극이 왜 생기는지 단계별로 설명할 수 있는가?
  • 같은 화면에서 여러 입력이 겹칠 때 인과 관계가 뒤섞이지 않게 볼 수 있는가?
  • 간극에서 발생한 차이를 “오류”가 아니라 “타이밍 모델의 미정의”로 분류할 수 있는가?