처음 시작하는 Fast API 책을 읽으면서 책 내용 정리한 내용입니다.
모던 웹과 파이썬
1)서비스란?
"사용자에게 어떤 기능이나 가치를 제공하는 시스템 전체"를 말합니다.
즉 서비스는 하나의 "기능 묶음" 또는 시스템 전체를 말합니다.
그안에 여러개의 API가 들어있습니다.
2)API란?
"서비스 내부의 기능에 접근하기 위한 인터페이스"를 말합니다.
간단하게 말해서 "서비스 내부의 기능에 접근하기 위한 약속"이라고 생각하면 간단합니다.
예시)
로그인 시도 -> POST/users/login
클라이언트가 이런 API주소로 요청(request)을 보내면 서버가 응답(response)을 돌려주는 구조입니다.
API는 어떻게 제ㅔ어하고 어떤 형식으로 데이터를 주고 받는지에 따라 여러 방식으로 나눌 수 있습니다.
주요 API 종류
REST
REST는 웹에서 자원을 정의하고 자원에서 접근하는 방법을 규정한 아키텍처 스타일입니다.
간단하게 말해서 웹에서 정보를 주고 받는 규칙이라고 보면 됩니다.
REST의 특징
- HTTP 기반 통신(클라이언트-서버 프로토콜 사용)
- 상태 비저장(Stateless)
- 캐시 가능(Cacheable)
- 리소스 기반(Resource-based)
리소스는 식별하고자하는 작업을 수행할 수 있는 데이터입니다. 웹서비스는 노출하고자 하는 각 기능에 대해 고유한 URL, HTTP인 EndPoint를 제고으합니다 EndPoint는 URL을 기능으로 라우팅해서 '라우트'라고 부르기도합니다.
REST의 핵심 개념
잘못된 예시
GET /getUserInfo
POST /createNewUser
RESTful한 예시
GET /users
POST /users
GET /users/1
DELETE /users/1
URL은 자원을 표현하고 HTTP 메서드는 행위를 나타내는 것이 RESTful 설계의 핵심입니다.
요청(Request)
- Header(헤더): 인증 정보, 콘텐츠 타입 등 요청의 메타데이터를 담습니다.
- URL Path(URL 문자열): 자원의 위치를 나타냅니다.
- Query Parameters(쿼리 매개변수): 추가적인 필터나 검색 조건 등을 전달합니다.
예: /users?age=100&city=Daejeon- Body(본문): 주로 POST나 PUT 요청시 실제 데이터를 전송합니다.
예: JSON 형식의 사용자 정보등
응답(Response)
서버는 요청을 처리한 뒤 HTTP 응답을 반환합니다. 응답에는 다음과 같은 정보가 포함됩니다.
- 상태코드(Statuse Code)
요청의 처리 결과를 정수 값으로 나타냅니다.
- 100번대: 정보, 계속진행
- 200번대: 성공
- 300번대: 리디렉션
- 400번대: 클라이언트 오류
- 500번대: 서버 오류
각 숫자는 요청의 성공, 실패, 오류 유형으로 구분하는 데 사용됩니다.
👀.리디렉션: 요청이나 출력의 흐름을 다른 곳으로 돌리는 것을 의미합니다.
1. JSON이란?
JSON(JavaScript Object Notation)은 가장 많이 쓰이는 데이터 교환형식(Data Format)중 하나입니다.
즉 서버와 클라이언트가 데이터를 주고 받을때 사람이 읽기 쉽고 기계가 처리하기 쉬운 구조로 만들어진 형식입니다.
JSON의 예시
{
"name": "김민트초코",
"age": "28",
"city": "Daeejon"
"skills": ["Python", "MySQL", "AWS"]
}
JSON은 Key-Value(키-값)구조로 되어있으며 Python의 dict와 형태가 매우 비슷합니다.
2. JSON의 특징
3. API에서의 데이터 형식
API에서는 클라이언트와 서버가 서로 정보를 주고받기 위해 데이터를 특정 형식으로 주고받습니다.
1. JSON: 자주사용되는 표준 데이터 형식 -> 가볍고 호환성이 높음
2. XML: 태그기반구조의데이터 형식 -> 가독성은 낮기만 구조적 표현에 강함
3. Form Data: HTML 폼에서 전송되는 형식 -> 로그인, 파일 업로드등에 사용
4. Multipart Form Data: 파일+일반 데이터 함께 전송 -> 이미지 업로드시 자주 사용
1. 동시성이란?
"여러 작업을 동시에 다루는 것"을 의미합니다. 즉 한번에 여러 일을 처리하는 것 처럼 보이게 하는 기술입니다.
예: 웹 서버가 여러 사용자의 요청을 동시에 받는 상황이라 가정했을때 한 사용자의 요청을 처리하는 동안 다른 사용자의 요청도 멈추지 않고 처리할 수 있다면 그 서버는 동시성 처리를 지원한다고 할 수있습니다.
2. 동시성과 병렬성의 차이
많은 사람들이 혼동하는 개념이 바로 동시성과 병렬성입니다.
동시성은 여러작업을 빠르게 번갈아 가며 처리하는 방식이고 병렬성은 여러 작업을 진짜로 동시에 처리하는 방식입니다.
간단하게 논리적인지 물리적인지에 따라 다르다고 생각하면 됩니다.
예시로 요리사가 있다고 생각합시다
먼저 찌개를 조금 끓이다가 불을 줄이고,
그동안 볶음밥을 잠시 조리한 뒤,
다시 찌개로 돌아가 조리를 이어간다면
이는 논리적으로는 동시에 하는 것처럼 보이지만,
사실 한 번에 하나의 작업만 처리하는 것이죠.
👉 이런 방식을 동시성(Concurrency) 이라고 합니다.
반면에,
요리사가 한 손으로는 찌개를 끓이고, 다른 손으로는 볶음밥을 볶는다면
두 작업이 실제로 물리적으로 동시에 진행됩니다.
👉 이것이 바로 병렬성(Parallelism) 입니다.
3. 왜 중요한가?
동시성은 특히 웹 서버나 대규모 트래픽을 처리하는 서비스에 매우 중요합니다.
간단한 예시로는 아래와 같습니다.
계층은 시스템을 여러 단계(레이어)로 나누어 구성하는 구조를 말합니다. 즉 모든 기능을 한 곳에서 처리하지 않고 역할에 따라 나눠서 관리하는 방식을 말합니다.
**1. 계층 구조의 장점