본문 바로가기
반응형

개발공부/NodeJS14

NodeJS20에서의 변경 사항 아주추운날 ㄷㄷ ㅜㅜ 너무 추워서 회사 끝나고 진심으로 집에 갈까 했는데, 다시 정신을 차리고! 강남 프로그래머스 강의장 가서 책 저자의 강연을 들어봤습니다~!! Node.js 개발자되기 - 박승규 프로세스 기반 퍼미션 모델 퍼미션 → 리소스 접근 제한 (리소스: 파일, 프로세스, 스레드, 애드온) 파일 권한을 제어할 수 있다. --exprimental-permission 옵션사용 파일 권한 제어 --allow-fs-read/write 서브프로세스 생성 제어 --allow-child-process 워커스레드 접근 제어 --allow-worker 보통 node test.js 만 입력하면 바로 실행 가능한데 편리하지만 문제점이 있다. => 권한 제어 기능이 필요한 이유?! 악성 npm으로 훔칠 수 있다. 실.. 2024. 1. 24.
[공유/번역] Concise 간결한 Typescript Book 타입스크립트를 clean하고 강격한 코드를 자석하기 위한 핵심 개념과 기술을 알아볼 수 있다. Typescript 5.2 버전을 다룹니다. 출처 GitHub - gibbok/typescript-book: The Concise TypeScript Book: A Concise Guide to Effective Development in TypeScript. Free and O The Concise TypeScript Book: A Concise Guide to Effective Development in TypeScript. Free and Open Source. - GitHub - gibbok/typescript-book: The Concise TypeScript Book: A Concise Guide t.. 2023. 8. 5.
[공유] 이벤트 루프를 차단하지 않기 위한 실용적인 가이드 메인 스레드를 차단하지 않고 동기식 작업을 처리하는 방법 동기식 작업이 실행되는 동안 이벤트 루프는 어떤 작업도 수행할 수 없습니다. 방법1. 더 많은 노드(리소스) 투입하기 Node.js 의 기능 중 하나는 클러스터를 통한 손쉬운 수평 확장을 지원한다. 여러 서버를 병렬로 실행하여서 한 서버가 사용중일 경우 다른 서버가 들어오는 요청을 처리할 수 있도록 한다. 구현은 간단하지만, 이벤트 루프를 차단하지 않고 단순히 더 추가할 뿐이다. 방법2. 비동기적으로 수행하도록 리팩터링 하기 비동기 작업은 일반적으로 CPU에 종속되지 않는다. ex) 파일을 읽는데 10ms 가 걸리는 경우 - 1ms 미만은 CPU 대기 시간이고 나머지는 디스크 대기 시간일 경우가 많다. 동기 실행 블록 사이에 간격을 추가하여 알고리.. 2023. 6. 24.
Nodejs 싱글스레드 스레드 한 프로세스에서 다양한 작업을 담당하는 최소 실행 단위ex) 크롬 브라우저(프로세스)에서 블로그 작성하기(스레드) , 유튜브 보기(스레드2)  멀티스레드 프로그래밍CPU는 한번에 하나의 명령만 실행할 수 있지만, 운영체제의 스케줄러가 매우 짧은 주기로 각기 다른 명령을 우선순위에 따라 실행시키면 동시에 여러 로직도 수행 가능하다.Context Switching이 발생하면서 부분적으로 각각의 스레드 작업을 끝낸다.대용량 처리에서 필수적단점: 오류를 찾아내기 어렵고 고려사항이 많다. Nodejs 싱글스레드 프로그래밍Nodejs는 하나의 메인스레드와 하나의 콜스택을 가지고 있다.싱글스레드라고 모두 같은 스레드 위에서 동작하지 않는다.단일 스레드이지만 백그라운드에서는 스레드 풀을 구성해 작업을 처리한다... 2023. 6. 7.
마이크로서비스와 Nodejs 마이크로서비스 모놀리식 아키텍처를 단독으로 실행 가능한 다수의 모듈로 분해한 아키텍처 특징 개발과 배포에 상호 독립적이다. 독립적인 데이터 저장소를 가진다. 단점 공유 자원 접근이 어렵다. 배포와 실행이 복잡해진다. 분산 시스템 구현이 어렵다. 마이크로서비스가 유기적으로 동작해야 하므로 작고 가벼워야 한다. I/O가 동기 방식이라면 응답이 올 때까지 다음 요청을 처리하지 못하기 때문에 성능이 좋지 않다. --> 메시지-큐를 이용해 해결한다. I/O를 실제로 처리하는 서버를 별도로 두고, 요청받은 서버는 큐로 데이터를 전송한 후 이 요청을 처리한다. 처리가 되면 클라이언트에 보낸다. 하지만 위의 서버들을 구현하기에는 쉽지 않다. Node.js 내부적으로 이러한 메커니즘을 처리해주기 때문에 고민하지 않아도 .. 2023. 6. 6.
Nodejs 환경에서 Artillery로 부하테스트 하기 설치 프로덕션 레벨에서는 쓰이지 않기때문에 npm i -D artillery 맛보기 실행 --count : 가상의 사용자 수 -n : 요청 횟수 --rate : 초당 요청 ex) 100명의 사용자가 50번의 요청을 각각 보내는 것 = 5000번 요청 npm start npx artillery quick --count 100 -n 50 http://localhost:8001 ex) 60초 동안 5명이 초당 10번 요청을 보낸다. = 3000번 요청 artillery quick --duration 60 --rate 10 -n 5 http://localhost:5000 시나리오 설정 파일 (yaml 또는 json) config target : 테스트할 URL phases ex) 60초 동안 매초 1개의 요청을.. 2023. 5. 29.
Express 웹서버 구축 - route, body-parser, compression, cookie-session, express-session, session-file-store, cors, morgan, multer, response-time, connect-timeout Express.js Nodejs 에서 API 서버를 구축하는 데 가장 많이 사용되는 대표적인 프레임워크 미들웨어 모듈: 요청과 응답의 중간에서 목적에 맞는 특정 기능을 하는 함수 같이 사용하는 모듈 route body-parser compression cookie-session / express-session session-file-store cors morgan multer response-time connect-timeout package.json 생성 npm init Express 설치 node_modules라는 폴더가 자동으로 생성된다. npm i express nodejs 실행 node app.js 라우팅 특정 엔드 포인트에 대한 클라이언트 요청에 응답하는 방법을 결정하는 것 const expr.. 2023. 5. 28.
[NodeJS] json-server 이용하기 json-server json 기반으로 가상의 REST API 서버를 구축할 수 있는 npm 모듈 프론트엔드 개발자가 아직 웹서버가 구축 되지 않았을 때 프런트엔드 개발을 진행할 수 있도록 도와준다. 설치 npm i -g json-server json server 실행 json-server --watch db.json Fetch API로 GET/POST/PUT/DELETE 조회 POST 조회 예시 fetch("http://localhost:3000/posts", { method: "POST", body: JSON.stringify({ title: "The Great", author: "Jermy" }) headers: { "content-type": "application/json; charset=UTF.. 2023. 5. 27.
Nodejs 내장 모듈과 객체 Console console.log() console.error() console.table() console.time() / console.timeEnd() console.dir() Timers setTimeout(콜백함수, 밀리초) : 설정한 밀리초 이후에 지정된 콜백함수 수행 반드시 설정한 밀리초 후에 실행된다는 보장은 없다 --> 이벤트 루프를 블로킹하거나 이벤트 큐에 보유하고 있는 다른 실행 코드가 타임아웃의 실행을 뒤로 밀 수 있기 때문에 setInterval(콜백함수, 밀리초) : 설정한 밀리초마다 지정된 콜백 함수 수행 setImmediate(콜백함수) : 현재 이벤트 루프 주기 끝에 코드를 실행 Process 현재 실행되고 있는 Node.js 프로세스에 대한 정보와 제어를 제공 Proce.. 2023. 5. 27.
728x90
반응형