본문 바로가기

Node.js

(10)
[Node] package.json과 node-modules package.json - 설치한 패키지 버전을 관리하는 파일 - 노드 프로젝트를 시작하기 전에 폴더 내부에 무조건 package.json을 만들고 시작 - scripts : npm 명령어를 저장해두는 부분 - npm run [스크립트 명령어] : 해당 명령어가 실행됨 - npm install [패키지 이름] : package.json이 저장된 폴더 위치에서 패키지 설치 (npm install express) - dependencies : 의존관계에 있는 패키지들이 모여 있음 - devDependencies : 개발용 패키지들 - nodemon : 소스코드가 바뀔때마다 자동으로 노드를 실행시켜주는 개발용 패키지 node-modules - 설치한 패키지들이 모여있는 폴더 - Express 하나만 설치했는데..
[Node] cluster cluster 모듈 - 싱글 프로세스로 동작하는 노드가 CPU 코어를 모두 사용할 수 있게 해주는 모듈 cluster 모듈의 장점 - 포트를 공유하는 노드 프로세스를 여러개 둘 수 있음 → 요청이 들어왔을 때 병렬로 실행된 서버의 개수만큼 요청이 분산되게 할 수 있음 → 서버에 무리가 덜 가게 되게 함 cluser 모듈의 단점 - 프로세스들 간에 메모리를 공유하지 못하는 문제 - 세션을 메모리에 저장하는 경우 문제가 될 수 있음 → 레디스 등의 서버를 도입하여 해결 cluster의 종류 - 마스터 프로세스 : CPU 개수만큼 워커 프로세스를 만듦. 8086 포트에서 대기, 요청이 들어오면 만들어진 워커 프로세스에 요청을 분배 - 워커 프로세스 : 실제로 일을 하는 프로세스 const cluster = r..
[Node] https와 http2 1️⃣ https 모듈 - 웹 서버에 SSL 암호화를 추가 - GET 이나 POST 요청을 할 때 오가는 데이터를 암호화해서 중간에 다른 사람이 요청을 가로채더라도 내용을 확인할 수 없게 함 - 로그인이나 결제가 필요한 창에서 https 적용이 필수 - 인증서를 인증기관에서 구입 혹은 Let's Encrypt 같은 기관에서 무료로 발급 받아야함 const https = require('https'); const fs = require('fs'); https.createServer({ cert: fs.readFileSync('도메인 인증서 경로'), key: fs.readFileSync('도메인 비밀키 경로'), ca: [ fs.readFileSync('상위 인증서 경로'), fs.readFileSync(..
[Node] 쿠키와 세션 쿠키 - 유효기간이 있음 - 키-값의 쌍 형태 - 서버는 미리 클라이언트에 요청자를 추정할 만한 정보를 쿠키로 만들어 보내고, 그 다음부터는 클라이언트로부터 쿠키를 받아 요청자를 파악 서버에서 쿠키 만들기 const http = require('http'); http.createServer((req, res) => { console.log(req.url, req.headers.cookie); res.writeHead(200, { 'Set-Cookie': 'mycookie=test' }); res.end('Hello Cookie'); }) .listen(8083, () => { console.log('8083번 포트에서 서버 대기 중입니다!'); }); - 쿠키는 문자열 형식(mycookie=test)으로..
[Node] REST, HTTP 메서드 개념 REST? - REpresentational State Transfer - 서버의 자원을 정의하고 자원에 대한 주소를 지정하는 방법 ( = 약속 ) - HTTP URI를 통해 자원을 표시하고, HTTP 메서드를 통해 해당 자원에 대한 CRUD 연산을 적용한 것 - 꼭 파일일 필요는 없고 서버가 행할 수 있는 것들을 통틀어서 의미함. HTTP 요청 메서드 - 클라이언트가 웹 서버에게 사용자 요청의 목적이나 종류를 알리는 수단 GET : 존재하는 자원에 대한 요청 데이터 조회, CRUD로 따지면 Read POST : 새로운 자원을 생성 데이터 등록, CRUD로 따지면 Create PUT : 존재하는 자원에 대한 변경 (자원 전체를 갱신) 데이터 수정, CRUD로 따지면 Update PATCH : 존재하는 자..