server의 형태
-
모놀리식 아키텍쳐(Monolithic Architecture)
- 하나의 큰 서버 안에 모든 기능을 처리함
-
마이크로서비스 아키텍쳐(Mircroservice Architecture-MSA)
- 각각의 기능이 개별서버로 구성되고, 서로 통신하도록 함
- 개발할 때 API를 의미로 만들 수 있으나 작성 양식이 다르면 서로 다르게 쓰게됨 -> 따라서 API 형식과 통신 형식이 중요함
REST API
- Representational State Transfer의 약자로 Resource, Method, Representation of Resource로 구성됨
- 정보를 주고 받을 때 널리 사용되는 형식
- 각 요청이 어떤 동작이나 정보를 위한 것을 요청 모습 자체로 추론할 수 있음
- 기본적인 데이터 처리 - CRUD : Create(새로추가), READ(조회), Update(수정), Delete(삭제)
- 클라이언트 : 요청을 하는 플랫폼, 브라우저같은 웹이나, 앱, python을 사용해 요청하는 것도 클라이언트임
- Resource : Unique한 ID를 가지는 리소스, ex) URI
- Method : 서버에 요청을 보내기 위한 방식, GET, POST, PUT, PATCH, DELETE
URI VS URL
URL : Uniform Resource Locator로 인터넷 상 자원의 위치
URI : Uniform Resource Identifier로 인터넷 상의 자원을 식별하기 위한 문자열의 구성
- URI는 URL을 포함함, URI가 더 포괄적인 범위이다.
HTTP(Hyper Text Transfer Protocol)
- 정보를 주고 받을 때 지켜야 하는 통신 프로토콜(규약), 약속
- HTTP는 기본적으로 80번 포트를 사용하고 있고, 서버에서 80번 포트를 열어주지 않으면 HTTP통신이 불가능하다
HTTP Method
- GET : 정보를 요청하기 위해 사용 - read
어떤 정보를 가져와서 조회하기 위해 사용되는 방식
URL에 변수를 포함시켜 요청함
데이터를 Header에 포함하여 전송함
URL에 데이터가 노출되어 있어 보안에 취약함
캐싱할 수 있음
- POST : 정보를 입력하기 위해 사용 - create
데이터를 서버로 제출해 추가 또는 수정하기 위해 사용되는 방식
URL에 변수를 노출하지 않고 요청함
데이터를 Body에 포함함
URL에 데이터가 노출되지 않아 기본 보안이 되어 있움
캐싱할 수 없음, 다만 그안에 아키텍처로 캐싱할 수 있음
- PUT : 정보를 업데이트하기 위해 사용 - update
- PATCH : 정보를 업데이트하기 위해 사용 - update
- DELETE - 정보를 삭제하기 위해 사용 - delete
-
GET vs POST
-
Header & Body
- Http 통신은 Request하고, Response를 받을 때 정보를 Packet에 저장함
- Packet의 구조 : Header / Body
ex) 메일 : Header - 보내는 주고, 받는 주소, 시간 / Body - 전달하려는 내용
Status Code
- 클라이언트 요청에 따라 서버가 어떻게 반응하는지 알려주는 코드
1xx(정보) : 요청을 받았고, 프로세스를 계속 진행함
2xx(성공) : 요청을 성공적으로 받았고, 실행함
3xx(리다이렉션) : 요청 완료를 위한 추가 작업이 필요
4xx(클라이언트 오류) : 요청 문법이 잘못되었거나 요청을 처리할 수 없음 5xx(서버 오류) 서버가 요청에 대해 실패함
동기 VS 비동기
-
동기(Sync) : 서버에서 요청을 보냈을 때, 응답이 돌아와야 다음 동작을 수행할 수 있음. A 작업이 모두 완료될 때까지 B 작업은 대기해야 함
-
비동기(Async) : 요청을 보낼 때 응답 상태와 상관없이 다음 동작을 수행함. A작업과 B 작업이 동시에 실행됨
IP
- 네트워크에 연결된 특정 PC의 주소를 나타내는 체계
- Internet Protocol의 줄임말, 인터넷상에서 사용하는 주소체계
- 4덩이의 숫자로 구성된 IP 주소 체계를IPv4라고 함
- 각 덩어리마다 0~255로 나타낼 수 있음. 2^32 = 43억개의 IP 주소를 표현할 수 있음
- localhost, 127.0.0.1 : 현재 사용 중인 Local PC
- 0.0.0.0, 255.255.255.255 : broadcast address, 로컬 네트워크에 접속된 모든 장치와 소통하는 주소
- 개인 PC 보급으로 누구나 PC를 사용해 IPv4로 할당할 수 있는 한계점 진입, IPv6이 나옴
port
- IP 주소 뒤에 나오는 숫자
- PC에 접속할 수 있는 통로(채널)
- 사용 중인 포트는 중복할 수 없음
- Jupyter Notebook은 8888
- Port는 0 ~ 65535까지 존재
- 그 중 0~1024는 통신을 위한 규약에 정해짐 - 22 : SSH
- 80 : HTTP
- 443 : HTTPS