https 모듈은 웹 서버에 SSL 암호화를 추가한것
GET, POST 요청을 할 때 오가는데이터를 암호화 하여 중간에
요청 데이터를 가로 채더라도 그 내용을 확인 못하게 만든다
이 SSL이 적용된 사이트는 저렇게 자물쇠가 걸려있다
일반적인 http 서버가 있다
암호화를 걸려면 https 모듈을 쓰면 되는데
아무나 쓸수있는건 아니다
암호화를 적용하기위해 그걸 인증해줄 기관이 필요하다
그 인증은 인증 기관에서 구매야하거나
Let's Encrypt - 무료 SSL/TLS 인증서
letsencrypt.org
이런데서 무료로 발급 받을 수 있다
그리고 인증서를 발급 받기 위해선
도메인을 발급 받아야 하며
그 발급을 받기위한 과정이 좀 복잡한갑드라
발급 인증서가 있다는 가정하에 이렇게 하며 된다
createServer 메서드가 인수 두개를 받는다
첫번째 인수는 인증서에 관련된 옵션 객체
두번째 인수는 http 모듈같은 서버 로직
인증서를 구매하면
pem, crt, key 확장자를 갖는 파일들을 준다
이 파일을 fs.readFileSync() 메서드로 읽어
확장자 명 넣고 각자 넣어주면 된다.
실 서버엔 80 포트 대신 443 포트를 쓰면 된다
http2
처음 듣고 처음 보는 녀석인데...
노드의 http2 모듈은 SSL 암호화와 같이
최신 HTTP 프로토콜인 http/2를 사용할 수 있게 한다
http | http2 | |
처리 | 한개씩 | 여러개 동시 가 |
데이터 | String | Binary |
헤더 정보 | 요청마다 쿠키 담고 중복된 값을 던지기도 함 | 헤더 정보 HPACK압축해 전 |
응답 순위 | X | 내가 순위 지정 가능 |
리소스 요청 | 클라이언트에서 요청보냄 | 서버 요청 없이 보낼수 있음 |
http보다 http2의 요청응답 방식이 훨씬
개선되어 효율적으로 요청 보낸다
웹의 속도 역시 더 빠르다
http | http2 |
![]() |
![]() |
바뀐 부분은 거의 없고 비슷하다
http => http2 로
createServer() => createSecureServer() 정도 바꼈다
cluster
클러스터
이 모듈은 싱글 프로세스로 도는 Node가
CPU 코어를 모두 쓸수 있게 해주는 모듈이다
포트를 서로 공유하는 Node 프로세스를 여러개 둘수도 있고
요청이 많이 들어왔을시 병렬로 실행된 서버의 개수 만큼
요청을 분산 처리할 수도 있다
서버에 무리가 덜가게 하는거다
cluster 모듈을 설정하면
코어 하나당 Node 프로세스 하나 돌아가게 할 수 있는것
성능이 8배가 되진 않으나 전보다 성능이 개선된건 맞다
하지만 단점으론 메모리를 서로 공유 못한다는것.
세션을 메모리에 저장하는 경우엔 문제가 될수도 있다
클러스터 함 써보자
![]() |
![]() |
https://whaledowny.tistory.com/32
3)Nodejs_기능정리_노드 내장 모듈(2) os, path, url, querystring, crypto, util, worker_threads, child_process, 기타
노드는 os 정보에도 접근 되고 클라이언트 요청 주소에 대한 정보도 갖고올수있으며 이런것들이 다 내장 모듈을 통해 가능함 노드 내장 모듈 os 웹에서 쓰는 JS는 OS 정보를 못갖고 오지만 Node에선
whaledowny.tistory.com
Worker_threads와 비슷하나
대신 Thread가 아닌Process다
Cluster엔 Master Process와 Worker Process가 있다
Master Process는 CPU갯수만큼 Worker Process를 만든뒤
8080 포트에 대기했다가 요청 시 만들어진 Worker Process에 요청을 분배한다
Worker Process가 실질적 일을 하는 프로세스이다
![]() |
![]() |
![]() |
총 8개의 스레드를 갖고있어 8개가 나왔으며
처음과달리 워커 번호가 바껴있음을 알 수 있음
새로고침 할때 마다 하나씩 프로세스가 죽으며
총 8개가 다 종료 될 시 서버가 종료됨을 알수있다
저기 code에는 process.exit의 인수로 넣은 코드가 출력되고
signal은 존재 한다면 프로세스 종료한 신호의 명을 출력
이렇게 Worker Process가 있으니 에러나 셧다운 되더라도
총 8개까지는 서버가 정상 작동을 할 수 있다
그리고 종료된 워커를 다시 작동시킴으로 오류 떠도
계속 버틸 수있... 으나 하진 말자
오류떠서 종료 됬다면
그 오류 찾아 고칠 생각을 하는게 맞다
억지로 다시 돌린다고 해서 그 오류를 회피하는것도 아닌디
자! [ 정리 ]
cluster모듈로 클러스터링을 구현 할 수도 있으나
현장에선 pm2 모듈로 cluster 기능을 쓴다
웹 서버는
HTML, CSS 같은 정적인 파일을 요청하는 주소와
서버의 users 자원을 요청하는 주소
로 나뉘어있다
당연한거지만 파일이든 자원이든 그 수가 늘어난다면
당연 주소의 종류도 많아져야한다
그러면 if문이 겁나 많아져 코드가 지저분하고 시안성도 떨어질 상황이 발생할거다
Cookie나 Session도 들어가면 더 복잡해 질거다
이때 이런 불편함을 해소시킬 모듈이 바로
Express 모듈이
이건 누가 쓰기 편하라고 만든 모듈인데..
요거 깔아서 써보자고
'Back-End Frameworks > Node.js' 카테고리의 다른 글
9)Nodejs_ npm(패키지 메니져)_(2) npm의 버전, 명령어, 배포 (0) | 2023.07.13 |
---|---|
8)Nodejs_ npm(패키지 메니져)_(1) (0) | 2023.07.13 |
6)Nodejs_http로 서버 만들기(2)_ Cookie and Session (0) | 2023.07.11 |
5) Nodejs_ http로 서버 만들기(Request, Response, REST, Routing, (0) | 2023.07.10 |
4)Nodejs_기능정리_ event, error (0) | 2023.07.07 |