AI 시스템 구축: 웹 배포 및 서버리스 – REST API
ㅁ 웹 배포 및 서버리스
ㅇ 정의:
– 웹 애플리케이션이나 AI 모델을 HTTP 기반으로 외부에 제공하기 위해 사용하는 아키텍처 중 하나로, REST(Representational State Transfer) 원칙에 따라 설계된 API를 의미함.
ㅇ 특징:
– 클라이언트-서버 구조로 동작하며, 무상태(stateless) 특성을 가짐.
– HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하여 자원(Resource)을 CRUD 방식으로 조작.
– JSON, XML 등 다양한 데이터 포맷을 지원하나, 최근에는 JSON이 표준처럼 사용됨.
– 확장성과 호환성이 높아 다양한 플랫폼과 연동이 용이함.
ㅇ 적합한 경우:
– 모바일 앱, 웹 서비스, IoT 기기 등 다양한 클라이언트에서 동일한 API를 호출해야 하는 경우.
– 서버리스 환경(FaaS)에서 AI 모델 예측 결과를 제공할 때.
– 마이크로서비스 간 통신이 필요한 경우.
ㅇ 시험 함정:
– REST API는 반드시 JSON만 사용해야 한다는 오해(O). → JSON이 일반적이지만 XML, YAML 등도 가능(X)
– REST API는 상태를 유지해야 한다는 설명(O). → REST는 무상태(stateless) 원칙을 따름(X)
– 모든 HTTP 기반 API가 RESTful하다는 주장(O). → REST 원칙을 지켜야만 RESTful API임(X)
ㅇ 시험 대비 “패턴 보기” 예시:
– “REST API는 클라이언트-서버 구조와 무상태성을 특징으로 한다” (O)
– “REST API는 반드시 JSON 데이터만 전송할 수 있다” (X)
– “REST API는 HTTP 메서드와 URI를 통해 자원을 조작한다” (O)
– “REST API는 세션 상태를 서버에 저장하여 효율성을 높인다” (X)
ㅁ 추가 학습 내용
REST API 설계의 6가지 제약조건은 다음과 같다.
1. 클라이언트-서버 구조: 클라이언트와 서버를 명확히 분리하여 역할을 구분하고 독립적으로 확장 가능하게 한다.
2. 무상태성(Stateless): 각 요청은 독립적으로 처리되며, 서버는 클라이언트 상태를 저장하지 않는다.
3. 캐시 처리 가능(Cacheable): 응답 데이터에 캐시 가능 여부를 명시하여 성능과 효율성을 높인다.
4. 계층화 시스템(Layered System): 서버와 클라이언트 사이에 중간 계층(프록시, 게이트웨이 등)을 둘 수 있으며, 각 계층은 독립적으로 동작한다.
5. 코드 온 디맨드(Code on Demand, 선택적): 서버가 클라이언트에 실행 가능한 코드를 전송하여 기능을 확장할 수 있다.
6. 균일한 인터페이스(Uniform Interface): 리소스 식별, 표현을 통한 리소스 조작, 자기 서술적 메시지, HATEOAS를 포함한다.
REST API와 다른 API 스타일 비교:
– gRPC: HTTP/2 기반, 프로토콜 버퍼 사용, 양방향 스트리밍 지원, 성능 우수, 강한 타입 검증.
– GraphQL: 클라이언트가 필요한 데이터만 요청 가능, 단일 엔드포인트 사용, Over-fetching/Under-fetching 문제 해결.
– REST: HTTP 기반, 표준 메서드(GET, POST, PUT, DELETE 등) 사용, 단순하고 널리 사용됨.
RESTful API URI 설계 원칙:
– 명사형 사용: 동작이 아닌 리소스를 표현.
– 소문자 사용: 일관성 유지.
– 복수형 사용: 리소스 집합 표현.
HTTP 상태 코드 의미:
– 200 OK: 요청 성공.
– 201 Created: 리소스 생성 성공.
– 400 Bad Request: 잘못된 요청.
– 404 Not Found: 리소스를 찾을 수 없음.
– 500 Internal Server Error: 서버 내부 오류.
서버리스 환경에서 REST API 구현:
– AWS API Gateway: REST API 엔드포인트 제공, Lambda와 연계 가능.
– Azure Functions: HTTP 트리거로 REST API 구현 가능.
– Google Cloud Functions: HTTP 함수로 API 제공 가능.
CORS(Cross-Origin Resource Sharing):
– 다른 도메인 간 리소스 요청을 허용하거나 제한하는 메커니즘.
– 브라우저 보안 정책(Same-Origin Policy)을 우회하기 위해 사용.
REST API 보안:
– 인증(Authentication)과 인가(Authorization) 적용 필요.
– OAuth 2.0: 토큰 기반 인증/인가 표준 프로토콜.
– JWT(JSON Web Token): 클라이언트와 서버 간 인증 정보 안전하게 전달하는 토큰 포맷.