본문 바로가기
반응형

backend/NestJS16

[NestJS] EC2 배포 시 secretOrPrivateKey must have a value 해결 현재 개발 중이던 프로젝트를 ec2에 올려 테스트 배포를 시도 했다. ec2 인스턴스를 열고 nodejs를 설치하고 깃헙에서 코드를 받아 배포를 했는데... 이런 에러가 떴다. 쉽게 말하면 .env에 있는 jwtConstant라는 환경 변수를 읽는 과정에서 발생한 에러로 JWT 토큰 발행 시 있어야 하는 secret key를 읽지 못해 발생하는 에러이다. 로컬에서는 잘 되었는데... 아마 환경변수를 읽어 오기 전 시크릿 키가 먼저 register 되는 것 같았다. //기존 코드 @Module({ imports:[ JwtModule.register({ global: true, secret: jwtConstants.secret, signOptions: { expiresIn: '1d' }, }), ], con.. 2024. 4. 23.
[NestJS] NestJS Docker 이미지 빌드 기존 진행하던 프로젝트를 도커로 빌드하기 위한 시도. 간단하게 이미지를 만드는거라 어렵진 않다. 먼저 프로젝트 루트 디렉토리에 도커파일을 만들어준다. D는 대문자여야 한다. 그리고 다음과 같이 입력 FROM node:20 WORKDIR /usr/src/app COPY package.json ./ RUN npm install --legacy-peer-deps COPY ./ ./ CMD ["npm","run","start:dev"] 라인 하나하나 설명하자면 제일 첫번째 줄은 베이스 이름을 명시해준다. 도커 이미지를 만들 때는 아예 아무것도 없는 상태에서 만드는게 아니라 어느 정도 기본적인 구성 요소들이 갖추어진 상태의 이미지를 토대로 만들게 되며 이를 베이스 이미지라고 한다. FROM에서 베이스 이미지를 지.. 2023. 12. 19.
[Node.js] PM2 알아보기 PM2는 Node.js 어플리케이션을 쉽게 관리할 수 있게 해주는 Process Manager이다. 어플리케이션을 cluster mode로 실행시킨다거나, 메모리가 넘친다거나 오류로 인해 프로세스가 종료되는 등의 상황에서 PM2를 사용하면 간단한 설정으로 이러한 처리를 쉽게 해결 가능하다. 설치는 다음 명령어를 실행하면 된다. npm install -g pm2@latest Cluster mode 기본적으로 Node.js는 싱글스레드이다. 싱글스레드의 경우 구동 중인 서버의 CPU 개수와 상관 없이 1개만 사용할 수 있기 때문에 서버 전체의 성능을 온전히 사용하지 못한다. 만약 멀티스레드는 최대 서버 CPU 수 만큼 프로세스를 생성해 최대 성능을 끌어낼 수 있다. # pm2 start app.js -i m.. 2023. 9. 26.
[NestJS] NestJS에서의 Interceptor를 통한 AOP 구현 이번 포스팅에서는 NestJS에서 AOP를 인터셉트를 사용해 구현하는걸 알아보고자 한다. 기본적으로 Nest에서 인터셉터는 AOP에서 영감을 받았기 때문이다. AOP(Aspect Oriented Programming) AOP는 우리말로 관점 지향 프로그래밍이라고 한다. 목적은 바로 모듈성을 높이는 것. AOP에서의 관점은 흩어진 관심사를 응집시키는 것을 말한다. 기본적으로 객체지향 프로그램에서는 설계 시 책임, 관심사에 따라 단일 책임을 지도록 클래스를 분리하고 함수를 짜게 된다. 이로 인해 결합도는 낮아지고 응집도는 높아져서 변화하는 요구사항에 더 유연하게 대처하고 유지보수를 하기 편한 안전하고 생산성 높은 프로그래밍이 가능해진다. 하지만 만약 특정 클래스들에서 공통적으로 사용하는 기능이 있다면? 심지.. 2023. 8. 11.
반응형