웹 프로그래밍의 기본 원리와 중요한 개념을 배워보자
실시간으로 데이터를 처리하고 즉각적인 결과 반환
실시간성을 요구하는 경우에 유용
주로 Cloud나On-Premise 서버에서 모델 호스팅 후 요청 들어오면 모델이
예측반환하는구조
예시) 음식배달플랫폼
상품 품절 여부와 실시간 교통 상황에 따라 input 데이터가 다르기 때문에 실시간성이 요구됨

멘토님의 추천은 특정 오픈 소스나 툴에 숙련도를 키우는 것보다 여러 선택지 중에서 적절한 옵션을 고르는 능력과 기반 지식을 먼저 기르는 것을 추천하시기 때문에 FAST API부터 추후에 배워보자!!
유동적으로 성능 확인해서 문제를 해결하는 역량이 필요하다.
실제 회사에서 어떻게 서버들이 배포되어 있을까?
모놀리스 아키텍처
서비스 개발 초기에는 단순하고 직관적이서 좋다.
규모가 작고, 개발 조직이 하나인 회사인 경우에 사용된다.

마이크로 서비스 아키텍처
통신구조가 복잡하기 하지만 거대한 코드 베이스를 작게 나누어 담당시킬 수 있다.
규모가 있고, 개발과 ML이 분리 되어 있는 회사의 경우에 사용된다.

"Application Programming Interface"의 약자로,쉽게 말해 특정 소프트웨어에서 다른 소프트웨어를 사용할 때의 인터페이스
기본적으로 사람을 위한 인터페이스(UI,UserInterface)가 아니라,소프트웨어를 위한 인터페이스이다.
API의 구현에는 웹API, 라이브러리, OS시스템 콜 등 다양한 종류가 존재
Web에서 사용되는 API
라이브러리 API나 시스템 콜등의 API는 Web에서 사용되지 않고,Web을 이용하지 않는다.
주로 HTTP를 통해 웹 기술을 기반으로 하는 인터페이스
HTTP란?
HyperTextTransferProtocol의 약자로 정보를 주고 받을 때 지켜야 하는 통신 프로토콜이다.
이중에서 가장 대중적인 REST API에 대해서 알아보자!
자원을 표현하고 상태를 전송하는것에 중점을 둔 API
REST라고 부르는 아키텍처 “스타일”로 HTTP 통신을 활용
대부분의 서버들이 이 방식을 채택한다!!
각 요청이 어떤 동작이나 정보를 위한 것을 요청 모습 자체로 추론
기본적인 데이터 처리: 조회작업, 새로추가, 수정, 삭제
Resource, Method, Representation of Resource로구성
Resource : Unique한 ID를 가지는 리소스, URI
Method : 서버에 요청을 보내기 위한 방식 : GET, POST, PUT, PATCH, DELETE
GET http://localhost:8080/users?name=seungcheol
이 API는 users라는 리소스를 조회하는 API 호출
GET : HTTPMethod부분
하고자 하는 것을 주 표현함
HTTP Method 종류로 주로 사용되는것
http:// : URL 내 Schema. 사용하는 프로토콜
여기서는 HTTP를 사용하겠다는 것!
localhost : URL 내 Host 부분
localhost는 127.0.0.1이라는 IP(PC의 주소)의 예약된 Domain Name
127.0.0.1은 외부 네트워크에서 접근 불가능한 내 컴퓨터의 로컬 IP
8080: URL 내 PORT부분
Port는 PC에 접속할 수 있는 통로(채널)로 중복될 수 없다.
각 프로세스(서버)는 하나의 Port를 사용하여 네트워크 통신
/users : URL내 Path 부분
API 엔드 포인트(Endpoint)라고도 불림
여기서 URL이란?
URL : Uniform Resource Locator로 인터넷상 자원의 위치
URI : Uniform Resource Identifier로 인터넷상의 자원을 식별하기 위한 문자열의 구성
URI는 URL을 포함하게 되며, URI가 더 포괄적인 범위
URL내 Parameter의 구성하는 방식
Resource를 식별해야 하는 경우(필수적인 정보) : PathParameter가 더 적합
정렬, 필터링을 해야 하는 경우(선택적인 정보) : QueryParameter가 더 적합
HTTPMethod와 URL뿐이 아니라, HTTP Header와 HTTP Payload를 사용하여 요청
ex) curl-XPOST-H"Content-Type:application/json"-d'{"name":"seungcheol"}'
http://localhost:8080/users
'-H"Content-Type:application/json"' : HTTP Header
우리가 지금 보내는 데이터가 JSON타입임을 표현
'-d'{"name":"seongyun"}'' : HTTP Payload
Payload로 JSON을 추가
클라이언트 요청에 따라 서버가 어떻게 반응하는지를 알려주는 Code