framwork 9

[NestJS] Queue 사용하기 (Redis)

nestjs Queue사용하기 프레임워크 : NestJS 언어 : Typescript 저장소 : Redis 큐를 사용하는 이유는 여러가지 경우가 있겠지만,  오래 걸리거나 당장 응답이 필요하지 않은 작업들을 Queue에 넣고, 워커 노드들이 큐에서  작업을 가져가는 구조는 매우 유용하다.  동작과정 1. 클라이언트 요청 : 클라이언트가 Rest API 서버에 요청을 보낸다.  2. API 응답 및 작업 큐 삽입 : Rest API 가 클라이언트에 즉시 응답을 보내고, 작업은 Queue에 넣는다. 3. 워커 노드의 처리 : Worker Node가 Queue에서 작업을 가져와 처리를 완료한다.  이 과정에서 Rest API는 Producer(생산자), Redis는 큐저장소, Worker는 Consumer(작..

framwork/NestJs 2024.12.26

[Nestjs] Custom Validator 데코레이터 적용하기

NestJs에서 요청에 대한 유효성 검사를 할때 class-validator, class-transformer에서 validationPipe를 제공해주어 유효성 검사를 할 수 있다. https://github.com/typestack/class-validator#usage  GitHub - typestack/class-validator: Decorator-based property validation for classes.Decorator-based property validation for classes. Contribute to typestack/class-validator development by creating an account on GitHub.github.com  이렇게 기본적으로 제공되는..

framwork/NestJs 2024.11.22

[Nestjs] multer로 이미지 파일 업로드하기

multer란 ?  - Node.js 환경에서 파일 업로드를 처리하는 미들웨어로 파일을 서버에 업로드할 때 유용하게 사용됨.  1. 설치 npm install multer @types/multer2. 서버 설정2-1. multer 설정 multer 미들웨어는 파일 저장 위치를 설정할 수 있게 해줌.  두가지 저장방식이 있음 1) 디스크 저장  2) 메모리 저장 나는 디스크에 바로 저장을 할 예정이라서 distStorage 옵션을 사용.  multer 설정옵션에 대한 클래스를 작성할 수 있다. /src/util/multer.config.tsimport { Injectable } from '@nestjs/common';import * as multer from 'multer';import { MulterOp..

framwork/NestJs 2024.11.19

[NodeJS] pnpm 사용하기

*pnpm  (Performant Node Package MAnager) - Node.js 환경에서 사용되는 패키지 매니저로 기존 npm의 단점을 보완하기 위해 탄생했음.  npm이나 yarn과 같은 역할을 하지만, 더 효율적인 디스크 공간 사용과 빠른 설치속도로 주목받고 있음.  *주요 특징 1. 효율적인 디스크사용 - 동일한 버전의 패키지를 프로젝트마다 중복 설치하지 않고, 중앙 저장소에 한번만 저장한 후  심볼릭 링크를 통해 각 프로젝트에서 참조함. 이를 통해 디스크 공간 절약가능 2. 빠른 설치속도 - 모듈 설치가 일반적으로 빠르며, 특히 다수의 패키지를 포함하는 대규모 프로젝트에서 속도 향상 체감가능 3. 엄격한 버전 격리 - 프로젝트별로 패키지 격리가 잘 되어있어, 서로 다른 프로젝트가 각기 ..

framwork/nodejs 2024.11.12

[NodeJS] Nodejs란?

Nodejs는 Chrome V8 Javascript엔진으로 빌드된 Javascript 런타임이다!   Nodejs는 단일 스레드, 단일 프로세스 아키텍처를 사용하며, 이를 통해 비동기식 I/O작업을 효율적으로 처리할 수 있음.   1. 하나의 프로세스  Nodejs는 하나의 프로세스에서 실행됨.  이는 애플리케이션이 단일 프로세스에서 실행된다는 의미. 일반적인 웹 서버 환경에서는 여러 프로세스나 스레드를 사용해 동시 요청을 처리하는 반면, Nodejs는 단일프로세스로도 많은 동시 요청을 처리할 수 있음.   2. 하나의 스레드 Nodejs는 단일 스레드를 사용함.  일반적으로 다중 스레드를 사용하는 환경에서는 동시성문제 (예: 데드락)가 발생할 수 있는데  Nodejs는 이러한 문제를 피하기 위해 단일 ..

framwork/nodejs 2024.07.10

[NestJS] LifeCycle (생명주기)

[NestJS] LifeCycle (생명주기)  NestJS에서의 요청-응답 라이프사이클은 애플리케이션의 요청 처리 흐름을 이해하는데 중요하다. 이 라이프사이클은 여러 단계를 거치며, 각 단계에서는 다양한 기능을 수행함. 단계의 순서는  MiddleWare -> Guard -> pre-interCeptor -> Pipe -> Controller -> post-interceptor -> ExceptionFilter -> Response 각 미들웨어, 가드, 인터셉터, 파이프는 모두 global하게 또는 controller , Route 에 적용할 수 있다.   1. MiddleWare -> 전역으로 적용된 미들웨어가 가장 먼저 실행된다.  (예를들어, 'main.ts'파일에 app.use()로 바인딩된 미..

framwork/NestJs 2024.07.02

[Nodejs / PM2] PM2(Process Manager) 사용법

PM2를 사용해서 노드 서버를 실행시켜보자 !  *PM2 공식홈페이지  https://pm2.keymetrics.io/*PM2란? -> Node.js 프로세스 관리자  node는 싱글 스레드 기반이지만, 멀티 코어 멀티 스레딩을 사용할 수 있게 해준다 !  클라이언트로 부터 요청이 오면 알아서 여러 노드 프로세스에 고르게 분배하는 로드밸런싱 역할을 한다. 1. pm2 모듈을 global로 설치한다. npm install pm2 -g2. ecosystem.config.js 파일을 생성한다pm2 ecosystem=> 해당 파일을 생성하는 이유는 일반적으로 사용하는 env.dev 이런 파일을 pm2가 읽지 못한다고 한다  그래서 pm2가 읽을 수 있는 환경설정 파일을 생성하는 것. pm2 ecosystem을..

framwork/nodejs 2024.03.15

Spring Security 설정 (표준 프레임워크 3.9v, Spring Security 4.2.11 v)

맡고있던 프로젝트를 OWASP ZAP을 사용하여 웹 취약점 분석을 진행 하였다 https://ko.wikipedia.org/wiki/OWASP_ZAP OWASP ZAP은 가장 유명한 무료 보안 툴 중 하나라고 한다. 이 툴을 사용해 보안 테스트를 실시하여 웹 어플리케이션의 보안 취약점을 파악할 수 있다. (이번에 처음 써봤음..ㅎㅎ) 툴을 사용하여 스캐너를 돌려본 결과 X-Content-Type-Options Header Missing Missing Anti-clickjacking Header X-Frame-options Http header Absence of Anti-CSRF Tokens Buffer overflow 등의 취약점을 알게 되었다. Spring Security 설정을 하여 response..

framwork/Spring 2023.10.25