본문 바로가기
네트워크2

요청 성공 상태 코드 2xx

by 로맨틱스터디 2025. 10. 7.
728x90
반응형

HTTP 상태 코드 2xx는 **성공(Success)**을 나타내는 코드입니다.

즉, 클라이언트의 요청이 서버에서 정상적으로 처리되었음을 의미합니다.

 

각 코드마다 의미가 조금씩 다르니 하나씩 정리해드릴게요.


2xx 상태 코드 종류

  1. 200 OK
    • 가장 흔하게 사용되는 성공 코드입니다.
    • 요청이 정상적으로 처리되었고, 응답 본문에 요청한 리소스가 포함되어 있을 수 있습니다.
    • 예: GET 요청 → 요청한 페이지나 데이터 반환 / POST 요청 → 성공적으로 생성됨.
  2. 201 Created
    • 요청이 성공적으로 수행되었고, 새로운 리소스가 서버에 생성되었음을 의미합니다.
    • 일반적으로 POST 요청 후 사용됩니다.
    • Location 헤더새로 생성된 리소스의 URI가 포함될 수 있습니다.
  3. 202 Accepted
    • 클라이언트의 요청을 서버가 받았지만, 아직 처리하지 않았거나, 처리 중임을 나타냅니다.
    • 즉, “요청을 받았으니 처리할게요” 정도의 의미이고, 결과가 완료된 상태는 아님
    • 비동기 처리 시 자주 사용됩니다.
    • 예: 서버가 작업 큐에 요청을 넣고 나중에 처리할 때.
  4. 203 Non-Authoritative Information
    • 서버가 요청을 성공적으로 처리했지만, 반환된 메타정보원 서버의 정보와 다를 수 있다는 의미입니다.
    • 프록시 서버캐시 서버에서 주로 사용됩니다.
  5. 204 No Content
    • 요청이 성공적으로 처리되었지만, 반환할 콘텐츠가 없음을 의미합니다.
    • 예: DELETE 요청 후 서버가 아무것도 반환하지 않을 때 사용.
  6. 205 Reset Content
    • 요청이 성공적으로 처리되었고, 클라이언트는 입력 폼을 초기화해야 함을 의미합니다.
    • 웹 애플리케이션에서 폼 초기화 지시용으로 사용됩니다.
  7. 206 Partial Content
    • 클라이언트의 요청(특히 Range 헤더)을 통해 일부 리소스만 전송할 때 사용됩니다.
    • 예: 동영상 스트리밍, 대용량 파일 다운로드에서 구간별 전송 시 사용.
  8. 207 Multi-Status (WebDAV)
    • WebDAV 확장에서 사용되는 상태 코드로, 여러 리소스에 대한 처리 결과를 한 번에 반환할 때 사용됩니다.

💡 정리 포인트:

  • 2xx = 성공, 클라이언트의 요청이 정상적으로 처리됨
  • 세부 코드마다 성공의 형태가 다름 (생성, 일부 처리, 콘텐츠 없음 등)
  • 대부분 200, 201, 204가 가장 자주 사용됩니다.

 

“작업 큐(Task Queue)”를 쉽게 이해할 수 있도록 차근차근 설명할게요.


1. 작업 큐(Task Queue)란?

작업 큐는 처리해야 할 작업을 순서대로 담아두는 대기열입니다.
즉, 바로 처리하지 않고 나중에 처리할 작업을 모아두는 곳이에요.

  • 흔히 **비동기 처리(asynchronous processing)**에 사용됩니다.
  • 서버가 한 번에 많은 요청을 처리할 수 없거나, 시간이 오래 걸리는 작업을 백그라운드에서 처리할 때 유용합니다.

2. 왜 작업 큐를 쓰는가?

예를 들어보면 이해가 쉬워요:

예시 1: 이메일 발송

  • 사용자가 회원가입을 했을 때 환영 이메일을 보내야 한다고 가정
  • 이메일 발송은 몇 초가 걸릴 수 있음
  • 만약 서버가 바로 이메일을 보내면서 사용자 요청을 처리하면, 사용자는 페이지 로딩이 느려짐
  • 해결: 이메일 발송 작업을 작업 큐에 넣고, 서버는 바로 사용자에게 응답 → 백그라운드에서 이메일 발송

예시 2: 이미지 처리

  • 사용자가 사진을 업로드하면, 서버가 사진을 리사이징하고 썸네일을 만들어야 함
  • 이 작업도 시간이 걸리므로 작업 큐에 넣고 백그라운드에서 처리

3. 작업 큐 동작 구조

  1. 생산자(Producer): 작업을 큐에 넣음
    • 예: 웹 서버, API 요청
  2. 큐(Queue): 작업이 들어가는 대기열
    • FIFO(먼저 들어온 것이 먼저 처리) 방식
  3. 소비자(Consumer): 큐에서 작업을 꺼내 처리
    • 예: 워커(Worker) 프로세스, 백그라운드 서비스
 
사용자 요청 → 서버 → 큐에 작업 추가백그라운드 워커가 처리 → 필요 시 완료 알림

4. 장점

  • 서버 응답 속도 향상 → 사용자가 기다리지 않음
  • 시간 오래 걸리는 작업을 분리 → 서버 부하 감소
  • 재시도, 실패 처리 등 안정적인 작업 처리 가능

💡 정리:

  • 작업 큐 = 대기열 + 백그라운드 처리
  • 즉시 처리할 필요 없는 요청을 나중에 처리하게 해주는 시스템

1. “백그라운드(Background)”란?

  • 우리가 흔히 쓰는 **포그라운드(Foreground)**와 반대 개념이에요.
  • 포그라운드: 사용자가 직접 보고 기다리는 작업 → 예: 브라우저에서 버튼 클릭 후 바로 화면 변화
  • 백그라운드: 사용자가 기다리지 않고, 눈에 보이지 않게 처리되는 작업 → 예: 이메일 발송, 사진 리사이징

즉 **백그라운드 = “사용자가 바로 기다릴 필요 없는 작업을 눈에 안 보이게 처리하는 공간”**이에요.


2. 왜 바로 처리하지 않고 큐에 넣고 백그라운드에서 처리할까?

예시 1: 웹 페이지 요청

  • 사용자가 게시글 작성 버튼 클릭 → 서버에서 처리
  • 만약 서버가 게시글 저장 + 이미지 리사이징 + 알림 발송을 한 번에 처리한다면:
    1. 사용자는 페이지가 잠시 멈춘 것처럼 느껴짐
    2. 서버도 동시에 여러 사용자의 요청을 처리해야 하면 과부하가 걸림

해결책:

  • 게시글 저장만 즉시 처리 → 사용자에게 바로 응답
  • 이미지 리사이징, 알림 발송큐에 넣고 백그라운드에서 처리
  • 사용자는 기다리지 않아도 되고, 서버도 부하 분산

예시 2: 이메일 전송

  • 이메일은 몇 초 걸리는 작업
  • 사용자가 “회원가입 완료” 버튼 클릭 → 바로 이메일 보내려고 하면 페이지가 느려짐
  • 대신 작업 큐에 넣고 워커가 백그라운드에서 처리하면 사용자는 기다릴 필요 없음

3. 요약하면

구분 바로 처리(Foreground) 백그라운드 처리(Background)
사용자가 기다림? 네, 기다려야 아니오, 바로 응답 가능
처리 속도 느려질 수 있음 서버 부하 분산 가능
예시 계산기, 검색 결과 이메일, 파일 변환, 알림 발송

즉, 백그라운드 처리 + 작업 큐를 쓰는 이유는 사용자 경험 향상 + 서버 부하 관리 때문이에요.

 


 

작업 큐와 연관

  • 서버가 요청을 처리하는 데 시간이 오래 걸리는 작업이 있을 때:
    1. 서버가 작업을 큐에 넣음
    2. 클라이언트에게 202 Accepted 응답 반환 → “요청은 접수됐음
    3. 백그라운드 워커큐에서 작업을 꺼내 실제 처리
  • 예:
    • 사용자가 대용량 파일 업로드 → 서버가 파일 변환 작업 큐에 넣음 → 202 반환나중에 변환 완료

💡 정리

  • 200 OK → 요청 처리 완료
  • 202 Accepted → 요청 접수 완료, 아직 처리 중이거나 미처리 상태
  • 202는 즉시 처리 불가, 시간이 걸리는 비동기 작업에 적합

 

1. Location 헤더란?

  • HTTP 응답 헤더 중 하나
  • 서버가 새로 생성한 리소스의 URI(주소)를 클라이언트에게 알려주는 용도
  • 주로 201 Created 상태 코드와 함께 사용됩니다.

예시:

 
HTTP/1.1 201 Created
Location: https://example.com/posts/123
Content-Type: application/json

2. 언제 Location 헤더가 있나?

  • 일반적으로 POST 요청 후 서버에 새 리소스가 생성될 때 사용
  • PUT 요청 후 새 리소스가 생성되었을 때도 가능
  • GET, DELETE 같은 요청에는 거의 사용하지 않음

즉, “새 리소스를 만들었고 클라이언트가 그 위치를 알아야 할 때 나타나는 헤더입니다.


3. 없을 수도 있음

  • 서버가 클라이언트에게 굳이 새 리소스 위치를 알려줄 필요 없다고 판단하면 생략 가능
  • 하지만 REST API 설계 원칙에서는 201 Created → Location 헤더 권장

💡 정리

  • Location = 새로 생성된 리소스 주소
  • 주로 POST → 201 Created 시 사용
  • 없을 수도 있음, 하지만 있으면 클라이언트가 새 리소스에 바로 접근 가능
728x90
반응형