4.1 요청과 응답 이해하기
- 서버와 클라이언트
- 클라이언트 요청-> 서버 응답 -> 클라이언트
- http 서버 만들기
createServer
로 요청 이벤트 대기
- req는 요청 res는 응답 정보 저장
4.2 REST API와 라우팅
- REST API (Representaional State Transfer)
- 서버에 요처응ㄹ 보낼 때 주소를 통해 요청의 내용을 표현
- 서버의 자원을 정의하고 자원에 대한 주소를 지정하는 방법
- HTTP 프로토콜
- 언어 상관없이 클라이언트가 누구든 서버와 HTTP 프로토콜로 소통 가능
- 서버와 클라이언트의 분리
4.3 쿠키와 세션 이해하기
- 로그인 로그아웃시 필수로 알아야 하는 것
- 요청의 단점
- 누가 요청을 보냈는지 모름
- 로그인 구현 필욯 (쿠키와 세션)
- 쿠키: 키 = 값의 쌍
- 매 요청마다 서버에 동봉해서 보냄
- 서버는 쿠키를 읽어 누구인지 파악
- 클라이언트 요청 -> 서버(쿠키와 함께 응답) 이후 클라이언트 요청(쿠키와 함께) -> 서버(응답)
writeHead
로 쿠키를 설정 가능 Set-Cookie: key=value
- session쿠키는 브라우저를 닫으면 사라진다.
- favicon.ico 는 크롬 브라우저에서 기본적으로 요청
- 헤더와 본문
- 헤더는 요청 또는 응답에 대한 정보를 가짐
- 본문은 주고 받는 실제 데이터
- 쿠키는 부가적인 정보로 헤더에 저장
- 요청
- 응답
- 쿠키
Expires
- 쿠키 만료 시간
HttpOnly
- 자바스크립트로 쿠키에 접근하지 못하도록
Path=/
- /아래 주소에 있는 곳에서 쿠키를 사용할 수 있다.
- 세션
- 쿠키는 노출되거나 수정될 위험이 있음
- 중요한 정보는 서버에서 관리하고 클라이언트는 세션 키만 제공
- 서버에 세선 객체 생성후 키를 만들어 속성명으로 사용
- 속성 값에 정보를 저장하고 클라이언트로 키를 보냄
4.4 https와 http2
- https
- 웹 서버에 SSL 암호화를 추가하는 모듈 (필수)
- 오고 가는 데이터를 암호화 해서 전달 함
- https모듈을 사용하기 위하여 createServer에 발급 받은 인증서를 전달해야 한다
- 포트는 443으로 해야 생략이 가능하다
- http2
- 현재 보통 http1.1을 쓰고 있다.
- SSL 암호화와 더불어 최신 HTTP 프로토콜인 http/2를 사용하는 모듈
- 요청및 응답이 1.1보다 개선됨
- 속도도 개선
- 작은 이미지가 많은 경우 http2가 1.1에 비해 매우 빠르다.
- http2는 https를 같이 해야 한다.
- 포트는 https와 동일하게 443
4.5 cluster
- 기본적으로 싱글 스레드인 노드가 CPU 코어를 모두 사용할 수 있게 해주는 모듈
- 포트를 공유하는 노드 프로세스를 여러 개 둘수 있음.
- 벙렬로 실행된 서버 개수만큼 요청 분산
- 서버에 무리가 덜감
- 성능이 배수가 되는것은 아니다
- cluster로 코어 하나당 노드 프로세스 하나를 배정 가능
- 컴퓨터 자원(메모리, 세션)등 공유 못함
- redis등을 별로도 구비하여 해결
- 서버 클러스터링
require(cluster)
- 라운드 로빈으로 부하 분산
Comments