본문 바로가기

Programming

(465)
6. 패키지 매니저 (1) - npm [5] npm에는 전역(global) 설치 옵션이 존재합니다. 지금까지 모듈을 설치하였을 경우 프로젝트 폴더 내의 [node_modules] 폴더에 해당 패키지들이 설치된 것을 확인할 수 있었습니다. 전역 설치를 진행할 경우, 이는 node_modules가 아닌 npm이 설치된 폴더에 설치를 진행하게 됩니다.  윈도우의 경우 기본 경로는 C:\Users\사용자명\AppData\Roaming\npm이고 맥의 경우는 /usr/local/lib/node_modules가 됩니다. 보통 이 경로는 환경변수에 등록된 상태이기 때문에, 전역 설치를 진행한 패키지는 콘솔에서 명령어로 사용할 수 있다는 장점이 있습니다. 즉, '패키지를 모든 곳에서 사용한다'는 뜻은 아닙니다. 대부분 명령어로 사용하기 위한 것이죠. 그럼 rim..
6. 패키지 매니저 (1) - npm [4] 앞서서 간단히 npm 모듈을 설치해 보았는데, 이번에는 모듈 여러개를 동시에 설치해 보겠습니다. npm install [패키지1] [패키지2] [...] 형태로 실행할 수 있습니다.  C:\>npm install morgan cookie-parser express-sessionadded 11 packages, and audited 76 packages in 5s12 packages are looking for funding run `npm fund` for detailsfound 0 vulnerabilities  위와 같이 설치한 후, package.json을 살펴보겠습니다. dependencies에 설치한 패키지들의 속성이 추가로 기록된 것을 확인할 수 있습니다.  { "name": "npmtest..
6. 패키지 매니저 (1) - npm [3] 이제부터 실제로 패키지 설치를 진행해 보겠습니다. 우선 익스프레스(Express)를 설치할텐데, 기본적으로 패키지 설치 방식은 npm install [패키지 이름] 입니다. 참고로 명령어는 package.json이 있는 폴더에서 진행합니다.  C:\>npm install expressadded 64 packages, and audited 65 packages in 6s12 packages are looking for funding run `npm fund` for detailsfound 0 vulnerabilities  위와 같이 정상적으로 설치가 완료된 이후에 package.json을 확인해 보겠습니다.  [package.json]{ "name": "npmtest", "version": "0.0...
6. 패키지 매니저 (1) - npm [2] 우선 npm init을 실행했을 때 볼 수 있는 입력 값들의 종류에 대해서 살펴보겠습니다. ...package name: (npmexample) npmtestversion: (1.0.0) 0.0.1description: hello package.jsonentry point: (index.js)test command:git repository:keywords:author: johndoelicense: (ISC)... package name : 패키지 이름으로, package.json의 "name" 속성 값이 됩니다.version : 패키지 버전입니다. 별도로 살펴보겠습니다.entry point : 자바스크립트 ㅅ실행 파일의 진입점입니다. 일반적으로 module.exports를 하는 파일을 지정합니다. "m..
6. 패키지 매니저 (1) - npm [1] npm은 Node Package Manager입니다. 대부분의 JS프로그램은 패키지라는 이름으로 npm에 등록되어 있으며, 어떤 피처를 가진 패키지가 필요할 경우 npm에서 찾아서 실행하게 됩니다. npm에 등록된 약 190만개의 패키지를 ㅇ활용할 수 있고, 대부분 오픈소스여서 노드를 사용해 웹을 개발할 때 유용하게 사용됩니다.  npm에 업로드 된 노드 모듈을 패키지라고 칭하며, 모듈과 모듈의 관계와 마찬가지로 패키지에서도 다른 패키지를 사용할 수 있습니다. 참고로 npm의 대체제로 yarn과 pnpm이 존재합니다.    패키지를 여러개 설치하면 패키지의 숫자가 엄청나게 늘어나고, 또 각각의 패키지의 버전에 대한 관리도 필요해집니다. 이를 위해서 사용하는 것이 package.json입니다. 이는 노드 ..
5. http 모듈로 서버 만들기 (5) - cluster [2/2] 앞서 작성했던 cluster.js 예제를 이어서 살펴보도록 하겠습니다.  const cluster = require('cluster');const http = require('http');const numCPUs = require('os').cpus().length;if (cluster.isMaster) { console.log(`마스터 프로세스 아이디: ${process.pid}`); // CPU 개수 만큼 워커 프로세스 생성 for (let i = 0; i { console.log('${worker.process.pid} 번 워커가 종료되었습니다.'); console.log('code', code, 'signal', signal); });} else {..
5. http 모듈로 서버 만들기 (5) - cluster [1/2] 노드는 기본적으로 싱글 프로세스를 기반으로 동작합니다. cluster 모듈은 이런 노드가 CPU의 코어를 모두 사용할 수 있게 만들어 줍니다.  예를 들어, 어떤 서버가 코어를 8개 갖고 있을 때, 노드는 당연히 코어 하나만을 활용하게 됩니다. 하지만 cluster 모듈을 사용해서 코어 하나당 노드 프로세스 하나가 돌아가도록 할당이 가능하죠. 성능이 8배가 되는 것은 아니지만 꽤 성능이 개선됩니다. 이러한 과정을 통해서 포트를 공유하는 노드 프로세스를 여러개 두고, 요청이 많으면 병렬로 실행된 서버의 개수 만큼 요청을 분산 시킬수도 있습니다.  물론 메모리를 공유하지 못하기 때문에 세션을 메모리에 저장하는 경우 문제가 되는 단점이 있으며, 이는 레디스 등의 서버를 도입해 해결합니다.  우선 다음 예제를 ..
5. http 모듈로 서버 만들기 (4) - https와 http2 [2/2] 우리는 앞선 아티클에서 http가 아닌 https 모듈을 사용하는 예제를 살펴보았습니다.   5. http 모듈로 서버 만들기 (4) - https와 http2 [1/2]웹 사이트를 이용하다보면, https에 대해서 흔히 접하게 됩니다. 대충 '무언가 보안이 강화된' 장치인 것은 알겠는데, 정확히 무엇인지는 알 수 없었습니다. 이번 아티클에서 https에 대해서도 간단nozeroslope.tistory.com  이번 아티클에서는 https와 또 다른 또 하나의 모듈, http2 모듈을 사용하는 방식에 대해서도 살펴보겠습니다. 간단하게 http2 모듈을 사용하게 되면 최신의 HTTP 프로토콜인 http/2를 사용할 수 있게됩니다. http/2 프로토콜은, 우리가 기존에 사용하던 http/1.1 프로토콜 대..