728x90
반응형
HTTP 상태 코드 2xx는 **성공(Success)**을 나타내는 코드입니다.
즉, 클라이언트의 요청이 서버에서 정상적으로 처리되었음을 의미합니다.
각 코드마다 의미가 조금씩 다르니 하나씩 정리해드릴게요.
2xx 상태 코드 종류
- 200 OK
- 가장 흔하게 사용되는 성공 코드입니다.
- 요청이 정상적으로 처리되었고, 응답 본문에 요청한 리소스가 포함되어 있을 수 있습니다.
- 예: GET 요청 → 요청한 페이지나 데이터 반환 / POST 요청 → 성공적으로 생성됨.
- 201 Created
- 요청이 성공적으로 수행되었고, 새로운 리소스가 서버에 생성되었음을 의미합니다.
- 일반적으로 POST 요청 후 사용됩니다.
- Location 헤더에 새로 생성된 리소스의 URI가 포함될 수 있습니다.
- 202 Accepted
- 클라이언트의 요청을 서버가 받았지만, 아직 처리하지 않았거나, 처리 중임을 나타냅니다.
- 즉, “요청을 받았으니 처리할게요” 정도의 의미이고, 결과가 완료된 상태는 아님
- 비동기 처리 시 자주 사용됩니다.
- 예: 서버가 작업 큐에 요청을 넣고 나중에 처리할 때.
- 203 Non-Authoritative Information
- 서버가 요청을 성공적으로 처리했지만, 반환된 메타정보가 원 서버의 정보와 다를 수 있다는 의미입니다.
- 프록시 서버나 캐시 서버에서 주로 사용됩니다.
- 204 No Content
- 요청이 성공적으로 처리되었지만, 반환할 콘텐츠가 없음을 의미합니다.
- 예: DELETE 요청 후 서버가 아무것도 반환하지 않을 때 사용.
- 205 Reset Content
- 요청이 성공적으로 처리되었고, 클라이언트는 입력 폼을 초기화해야 함을 의미합니다.
- 웹 애플리케이션에서 폼 초기화 지시용으로 사용됩니다.
- 206 Partial Content
- 클라이언트의 요청(특히 Range 헤더)을 통해 일부 리소스만 전송할 때 사용됩니다.
- 예: 동영상 스트리밍, 대용량 파일 다운로드에서 구간별 전송 시 사용.
- 207 Multi-Status (WebDAV)
- WebDAV 확장에서 사용되는 상태 코드로, 여러 리소스에 대한 처리 결과를 한 번에 반환할 때 사용됩니다.
💡 정리 포인트:
- 2xx = 성공, 클라이언트의 요청이 정상적으로 처리됨
- 세부 코드마다 성공의 형태가 다름 (생성, 일부 처리, 콘텐츠 없음 등)
- 대부분 200, 201, 204가 가장 자주 사용됩니다.
“작업 큐(Task Queue)”를 쉽게 이해할 수 있도록 차근차근 설명할게요.
1. 작업 큐(Task Queue)란?
작업 큐는 처리해야 할 작업을 순서대로 담아두는 대기열입니다.
즉, 바로 처리하지 않고 나중에 처리할 작업을 모아두는 곳이에요.
- 흔히 **비동기 처리(asynchronous processing)**에 사용됩니다.
- 서버가 한 번에 많은 요청을 처리할 수 없거나, 시간이 오래 걸리는 작업을 백그라운드에서 처리할 때 유용합니다.
2. 왜 작업 큐를 쓰는가?
예를 들어보면 이해가 쉬워요:
예시 1: 이메일 발송
- 사용자가 회원가입을 했을 때 환영 이메일을 보내야 한다고 가정
- 이메일 발송은 몇 초가 걸릴 수 있음
- 만약 서버가 바로 이메일을 보내면서 사용자 요청을 처리하면, 사용자는 페이지 로딩이 느려짐
- 해결: 이메일 발송 작업을 작업 큐에 넣고, 서버는 바로 사용자에게 응답 → 백그라운드에서 이메일 발송
예시 2: 이미지 처리
- 사용자가 사진을 업로드하면, 서버가 사진을 리사이징하고 썸네일을 만들어야 함
- 이 작업도 시간이 걸리므로 작업 큐에 넣고 백그라운드에서 처리
3. 작업 큐 동작 구조
- 생산자(Producer): 작업을 큐에 넣음
- 예: 웹 서버, API 요청
- 큐(Queue): 작업이 들어가는 대기열
- FIFO(먼저 들어온 것이 먼저 처리) 방식
- 소비자(Consumer): 큐에서 작업을 꺼내 처리
- 예: 워커(Worker) 프로세스, 백그라운드 서비스
사용자 요청 → 서버 → 큐에 작업 추가 → 백그라운드 워커가 처리 → 필요 시 완료 알림
4. 장점
- 서버 응답 속도 향상 → 사용자가 기다리지 않음
- 시간 오래 걸리는 작업을 분리 → 서버 부하 감소
- 재시도, 실패 처리 등 안정적인 작업 처리 가능
💡 정리:
- 작업 큐 = 대기열 + 백그라운드 처리
- 즉시 처리할 필요 없는 요청을 나중에 처리하게 해주는 시스템
1. “백그라운드(Background)”란?
- 우리가 흔히 쓰는 **포그라운드(Foreground)**와 반대 개념이에요.
- 포그라운드: 사용자가 직접 보고 기다리는 작업 → 예: 브라우저에서 버튼 클릭 후 바로 화면 변화
- 백그라운드: 사용자가 기다리지 않고, 눈에 보이지 않게 처리되는 작업 → 예: 이메일 발송, 사진 리사이징
즉 **백그라운드 = “사용자가 바로 기다릴 필요 없는 작업을 눈에 안 보이게 처리하는 공간”**이에요.
2. 왜 바로 처리하지 않고 큐에 넣고 백그라운드에서 처리할까?
예시 1: 웹 페이지 요청
- 사용자가 게시글 작성 버튼 클릭 → 서버에서 처리
- 만약 서버가 게시글 저장 + 이미지 리사이징 + 알림 발송을 한 번에 처리한다면:
- 사용자는 페이지가 잠시 멈춘 것처럼 느껴짐
- 서버도 동시에 여러 사용자의 요청을 처리해야 하면 과부하가 걸림
해결책:
- 게시글 저장만 즉시 처리 → 사용자에게 바로 응답
- 이미지 리사이징, 알림 발송 → 큐에 넣고 백그라운드에서 처리
- 사용자는 기다리지 않아도 되고, 서버도 부하 분산
예시 2: 이메일 전송
- 이메일은 몇 초 걸리는 작업
- 사용자가 “회원가입 완료” 버튼 클릭 → 바로 이메일 보내려고 하면 페이지가 느려짐
- 대신 작업 큐에 넣고 워커가 백그라운드에서 처리하면 사용자는 기다릴 필요 없음
3. 요약하면
| 구분 | 바로 처리(Foreground) | 백그라운드 처리(Background) |
| 사용자가 기다림? | 네, 기다려야 함 | 아니오, 바로 응답 가능 |
| 처리 속도 | 느려질 수 있음 | 서버 부하 분산 가능 |
| 예시 | 계산기, 검색 결과 | 이메일, 파일 변환, 알림 발송 |
즉, 백그라운드 처리 + 작업 큐를 쓰는 이유는 사용자 경험 향상 + 서버 부하 관리 때문이에요.
작업 큐와 연관
- 서버가 요청을 처리하는 데 시간이 오래 걸리는 작업이 있을 때:
- 서버가 작업을 큐에 넣음
- 클라이언트에게 202 Accepted 응답 반환 → “요청은 접수됐음”
- 백그라운드 워커가 큐에서 작업을 꺼내 실제 처리
- 예:
- 사용자가 대용량 파일 업로드 → 서버가 파일 변환 작업 큐에 넣음 → 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
- 의미: “요청 성공, 새 리소스 생성됨 → URI는 https://example.com/posts/123”
2. 언제 Location 헤더가 있나?
- 일반적으로 POST 요청 후 서버에 새 리소스가 생성될 때 사용
- PUT 요청 후 새 리소스가 생성되었을 때도 가능
GET, DELETE같은 요청에는 거의 사용하지 않음
즉, “새 리소스를 만들었고 클라이언트가 그 위치를 알아야 할 때” 나타나는 헤더입니다.
3. 없을 수도 있음
- 서버가 클라이언트에게 굳이 새 리소스 위치를 알려줄 필요 없다고 판단하면 생략 가능
- 하지만 REST API 설계 원칙에서는 201 Created → Location 헤더 권장
💡 정리
- Location = 새로 생성된 리소스 주소
- 주로 POST → 201 Created 시 사용
- 없을 수도 있음, 하지만 있으면 클라이언트가 새 리소스에 바로 접근 가능
728x90
반응형
'네트워크2' 카테고리의 다른 글
| 요청 헤더 :: Host (목적지) vsOrigin (출처) (0) | 2025.10.08 |
|---|---|
| 정보 제공 상태 코드 :: 1xx (0) | 2025.10.08 |
| 서버 오류 코드 :: 5xx (0) | 2025.10.08 |
| 클라이언트 오류 코드 :: 4xx (0) | 2025.10.07 |
| XML vs HTML 차이점 비교 :: HyperText 란? Markup 이란? (0) | 2025.10.07 |
| 네트워크 탭에서 내가 보낸 요청 확인 방법 (0) | 2025.10.07 |
| HTTP :: 요청 헤더 / 응답 헤더 (0) | 2025.10.07 |
| 쿠키(Cookie) 와 세션(Sessoion) (0) | 2025.10.07 |