목록node (6)
개발스토리
Nest 공식 문서를 바탕으로 정리한 게시글입니다. Introduction Nest는 효율적이고 확장 가능한 Node.js 프레임워크이다. 프로그레시브 자바스크립트를 사용하고 TypeScript로 빌드된다. OOP(객체 지향프로그래밍), FP(함수형 프로그래밍), FRP(함수형 반응형 프로그래밍) 요소를 결합한다. 내부적으로 Nest는 Express(디폴트)와 같은 강력한 HTTP 서버 프레임워크를 사용하며 선택적으로 Fastify를 사용하도로고 구성할 수 있다. Installation 시작하려면 Nest CLI를 사용하여 프로젝트를 스캐폴딩하거나 시작 프로젝트를 복제할 수 있다. 아래 명령어를 실행하면 새 프로젝트 디렉토리가 생성되고 초기 핵심 Nest 파일 및 지원 모듈로 디렉토리가 채워져 프로젝트의..
Mongoose 노드와 몽고디비를 연동해줄 뿐만 아니라 쿼리를 만들어주는 라이브러리이다. 몽구스는 시퀄라이즈와 달리 ODM(Object Document Mapping)이라고 불린다. 몽고디비는 relation이 아니라 document를 사용하기 때문이다. 몽고디비 자체가 이미 자바스크립트인데도 굳이 자바스크립트 객체와 매핑하는 이유는 몽고디비에 없어서 불편한 기능들을 몽구스가 보완해주기 때문이다. 먼저 스키마라는 것이 생긴다. 몽고디비는 테이블이 없어서 자유롭게 데이터를 넣을 수 있지만, 때로는 자유로움이 불편함을 초래한다. 실수로 잘못된 자료형의 데이터를 넣을 수도 있고, 다른 다큐먼트에는 없는 필드의 데이터를 넣을 수도 있다. 몽구스는 몽고디비에 데이터를 넣기 전에 노드 서버 단에서 데이터를 한 번 ..
시퀄라이즈 사용 MySQL 작업을 쉽게 할 수 있도록 도와주는 라이브러리이다. 시퀄라이즈는 자바스크립트 객체와 데이터베이스의 릴레이션을 매핑해주는 도구이다. MariaDB, PostgreSQL 등 다른 데이터베이스도 같이 쓸 수 있다. 시퀄라이즈에 필요한 sequelize와 sequelize-cli, mysql2 패키지를 설치하자. sequelize-cli는 시퀄라이즈 명령어를 실행하기 위한 패키지이고, mysql2는 MYSQL과 시퀄라이즈를 이어주는 드라이버이다. 그 다음 sequelize init 명령어를 호출한다. 그러면 config, models, migrations, seeders 폴더가 생성된다. models 폴더 안의 index.js 내용을 수정하자. models/index.js const ..
cluster cluster 모듈은 기본적으로 싱글 프로세스로 동작하는 노드가 CPU 코어를 모두 사용할 수 있게 해준다. 포트를 공유하는 노드 프로세스를 여러 개 둘 수 있으므로, 요청이 많이 들어왔을 때 병렬로 실행된 서버의 개수만큼 요청이 분산되게 할 수 있다. 서버에 무리가 덜 가게 된다. 성능은 개선되지만, 메모리를 공유하지 못한다는 등의 단점도 있다. 세션을 메모리에 저장하는 경우 문제가 될 수있다. 이는 레디스 등의 서버를 도입하여 해결 가능 const cluster = require('cluster'); const http = require('http'); const numCPUs = require('os').cpus().length; if(cluster.isMaster){ consol..