본문으로 건너뛰기

버그 제보

이상한 점을 알려 주시면 고칠게요. 지금 보고 있는 페이지와 브라우저 정보가 함께 담겨요.

페이지:

Backend

웹 앱의 요청·응답 구조

작성 2026. 10. 14.추가
목차5개 항목
출처와 참고

「백엔드가 하는 일」 절은 팔만코딩경(42Seoul 커뮤니티 위키)의 「백엔드에 발 적셔보기」를 바탕으로 재구성한 노트다.

웹 서비스는 결국 "누가 요청하고, 누가 처리해서, 무엇을 돌려주는가"의 반복이다. 이 흐름을 이해하면 Express든 NestJS든 Django든 프레임워크가 하는 일이 같은 그림 위에서 보인다. 요청과 응답의 규칙 자체는 HTTP가 정한다.

역할 나누기

주소 입력부터 화면이 그려지기까지의 전체 단계(DNS, 연결, 렌더링)는 브라우저에 URL을 입력하면 일어나는 일에 있다. 여기서는 그 흐름에 등장하는 서버들의 역할만 나눈다. 프론트엔드가 버튼 이벤트에 맞춰 백엔드 API를 부르고, 받은 JSON을 UI에 맞게 가공해 보여 준다.

역할하는 일응답 형태
프론트엔드 서버화면(UI)에 해당하는 코드를 내려줌HTML/JS/CSS
백엔드(API) 서버데이터 처리, 인증, 저장주로 JSON
데이터베이스데이터 영속화쿼리 결과

브라우저 개발자 도구의 Network 탭에 보이는 수많은 파일이 모두 이 흐름을 따라 서버에서 받아 온 것이다. 정적 파일을 내려주는 웹 서버와 로직을 실행하는 WAS를 어떻게 나누는지는 웹 서버, WAS, 그리고 Nginx에 있다.

백엔드가 하는 일: 요청 하나 따라가기

백엔드를 한 줄로 정의하면 클라이언트가 원하는 데이터를 정해진 규약으로 제공하는 서버를 만드는 일이다. 여기서 클라이언트는 요청하는 쪽 전부다. 서비스 사용자뿐 아니라 API를 호출하는 프론트엔드 동료, 다른 서버도 클라이언트다.

공용 사물함 대여 서비스에서 "회원 A가 32번 사물함 대여"를 누르면 이렇게 흐른다.

sequenceDiagram
  participant B as 브라우저
  participant W as 웹 서버
  participant A as WAS
  participant D as DB
  B->>W: POST /lent/cabinets/32 { user: "A" }
  W->>A: 요청을 받아 해석하고 WAS(애플리케이션)로 넘긴다
  Note over A: 라우터가 URL·메서드를 보고 핸들러를 고른다<br/>대여 서비스.대여하기(A, 32)
  A->>D: 32번이 이미 대여 중인가? (DB 조회)
  A->>D: A가 이용 정지 상태인가? (DB 조회)
  A->>D: 둘 다 아니면 대여 기록 생성 (DB 저장)
  A-->>W: 201 Created { cabinet: 32, until: ... }
  W-->>B: 201 Created { cabinet: 32, until: ... }
  Note over B: 응답 데이터로 화면의 사물함 상태를 다시 그린다
  • 백엔드 개발 시간의 대부분은 가운데 상자, 즉 비즈니스 로직에 쓰인다. 비즈니스 로직은 "이미 대여 중이면 거절", "연체자는 대여 불가"처럼 서비스의 정책을 코드로 옮긴 것이다.
  • 웹 서버 기능과 라우팅은 대부분 프레임워크가 제공한다. 직접 짜는 것은 정책과 데이터 처리다.
  • 이 한 번의 요청에 HTTP, 언어, 프레임워크, DB, 서비스 정책이 모두 걸려 있다. 그래서 CRUD 게시판처럼 작은 서비스 하나의 사이클을 끝까지 돌려 보는 것이 백엔드를 익히는 가장 빠른 길이다.

요청과 응답의 규칙: HTTP

프론트엔드와 백엔드가 주고받는 메시지는 모두 HTTP 요청(메서드·URL·헤더·바디)과 응답(상태 코드·헤더·바디)이다. 메서드 표, 상태 코드, 헤더, Stateless 성격, <form>이 요청을 만드는 방식은 HTTP 프로토콜에 정리했다.

포트(Port)

IP 주소가 "어느 컴퓨터인지"를 가리킨다면, 포트는 그 컴퓨터 안에서 어느 애플리케이션(프로세스)인지를 구분하는 번호다. 프론트엔드 개발 서버와 백엔드 API 서버를 한 컴퓨터에서 함께 띄울 수 있는 것도 포트가 달라서다. 0~1023번 well-known 포트(HTTP 80, HTTPS 443)는 리눅스에서 관리자 권한이 있어야 열 수 있어서, 개발 서버는 3000·8000·8080처럼 1024 이상을 쓴다. 포트 번호 범위와 자주 보는 포트 표, 열린 포트 확인 명령은 전송 계층: 포트, TCP, UDP에 있다.

핵심 정리

  • 프론트엔드는 화면을, 백엔드는 데이터와 로직을 담당하고 둘은 HTTP API로 대화한다.
  • 백엔드는 요청을 받아 서비스 정책(비즈니스 로직)을 처리하고 필요하면 DB를 거쳐 JSON으로 응답한다.
  • 포트는 한 컴퓨터 안의 프로세스를 구분하며 1024 미만은 시스템 예약 영역이다.

관련 노트: HTTP 프로토콜, REST API 설계, 세션 기반 인증과 토큰 기반 인증, 전송 계층: 포트, TCP, UDP, 쿠키와 세션

원본 기록1

댓글

GitHub 계정으로 댓글을 남길 수 있어요.