Node.js

    nodeJS(typescript)에 swagger 적용하기

    이전 글에서는 swagger 소개와 장점, 적용 방법에 대해 정리했었고 이번 글에서는 실제 프로젝트에 적용한 사례에 대해 정리해보겠습니다. 이전 글을 안 읽은 분이라면 읽고 오시는 것을 추천드립니다! 👇 이전글) swagger로 API 문서 자동화하기(nodeJS) 기술 스택 : Node.JS(Express), Typescript, MongoDB 예제 : github Swagger yaml 구조 Swagger Editor를 보면 전체적인 구조를 확인할 수 있습니다. json 같은 다른 데이터 포맷을 사용할 수 있지만 간결함을 위해 yaml 포맷을 사용했습니다. 💡 yaml이란? 데이터 표현 양식으로 다른 양식에 비해 사람이 이해하기 쉬운 형태를 가지고 있습니다. yaml은 들여 쓰기를 정확히 맞춰야 하며..

    swagger로 API 문서 자동화하기(nodeJS)

    사이드 프로젝트에서 swagger를 적용한 내용을 공유합니다. postman 문서를 사용하는데에도 큰 불편함이 없었는데도 swagger를 적용하고 나니 너무 편합니다. API 문서 작성에 불편함을 느끼고 있다면 강추드립니다.👍👍 swagger는 다양한 언어를 지원하며 이 글에서는 nodeJS를 기준으로 설명합니다. 예제는 github에서 확인하실 수 있습니다. Swagger란 swagger는 REST API를 편리하게 문서화해주고 설계, 빌드, 조회하는 일을 지원해주는 프레임워크입니다. 간단하게 API 문서를 작성할 수 있으며 내용만 작성하면 아래 사진처럼 페이지를 자동으로 빌드해줍니다. UI가 깔끔해서 문서가 한눈에 들어오고 postman처럼 API를 호출 해볼 수도 있습니다! API를 선택하면 Par..

    NodeJS 환경에서 부하테스트 진행하기(Artillery 이용)

    사이드 프로젝트에서 프로모션을 준비하고 있는데 갑자기 이런 걱정이 들었습니다. 갑자기 사용자가 몰려서 서버가 터지면 어떡하지? 현재 서버는 몇 명의 사용자까지 감당할 수 있지? 지금까지는 사용자가 몰릴만한 이벤트가 없었기 때문에 문제가 없었지만, 링크 공유로 사용자가 급증하거나 누군가 악의적으로 요청을 많이 보낸다면 서버가 어떻게 될지 모르기 때문에 불안했습니다. 찾아보니 NodeJs로 쉽게 부하테스트를 진행할 수 있는 Artillery라는 툴이 있었고 덕분에 서버의 한계치를 알 수 있었습니다 :) 처음 진행한 부하 테스트이다보니 부족한 내용이 있다면 댓글 달아주시면 감사하겠습니다. 🙏 부하테스트란? 임계치의 한계에 도달할 때까지 시스템에 부하를 꾸준히 증가시키며 진행하는 테스트 성능 테스트, 스트레스 ..

    Node.js란? Node.js 특징 정리(이벤트 기반, 논 블로킹 I/O 모델)

    평소 Node.js를 이용해 백엔드를 개발했지만... NodeJS에 대해 단순히 이벤트 기반이고 비동기식이다라고 밖에 모르고 사용했었던 것 같아 자신에게 반성하며 장단점과 특징에 대해 자세하게 정리하려고 합니다. 정리하고 나니 근질근질했던 부분이 싹 가라앉는 것 같아 기분이 좋습니다. 😄 Node.js는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임입니다. Node.js 홈페이지에서 소개하는 Node.js의 정의입니다. Chrome V8 Javascript 엔진이 무엇인지는 모르겠지만 "Jvascript 런타임"이라는 것은 이해할 수 있습니다. 즉 Node.js는 Javascript를 실행할 수 있는 환경입니다. Node.js가 세상에 나오기 전까지는 Javascript..

    Node.js(express) 프로젝트 설계하기

    Node.js 프로젝트 구조를 설계할때 도움이 됐던 글들을 정리하고, 나는 어떻게 처리했는데 공유한다. 😄 best practice를 알아보기 위해 많은 글들을 찾아봤고 그 결과, 좋은 글의 내용을 프로젝트에 녹여낸 것 같아서 뿌듯하다. 코드는 여기서 확인할 수 있고 도움이 됐던 글들은 끝에서 볼 수 있다. 그럼 시작! 폴더 구조 3 계층 설계 관심사 분리 원칙을 위해 API Route와 비즈니스 로직을 분리하고, 비즈니스 로직과 Data Access Layer를 분리했다. Express controller에 비즈니스 로직을 작성해도 되지만 결국 스파게티 소스가 될 수 밖에 없다. 예를 들어 신규 회원 등록 API를 만드는 경우, 처음에는 아래처럼 사용자 데이터를 추가하는 코드만 필요하지만 await U..

    [Node.js] __dirname is not defined 에러

    참조 사이트 : https://github.com/nodejs/help/issues/2907 Express에서 CommonJS 모듈을 사용하다가 ES 모듈을 사용하게 되었을 경우("type": "module" in package.json) ReferenceError: __dirname is not defined 에러가 발생하게 됩니다. CommonJS에서 사용하던 __dirname 변수가 ES 모듈에서는 없기 때문에 발생하는 에러로 아래와 같이 사용하면 됩니다. import path from 'path'; const __dirname = path.resolve(); CommonJS 모듈 const express = require("express"); ES 모듈 import express from 'exp..

    [Node.js] n으로 쉽게 Node 버전변경하기(커맨드 2번으로 끝!)

    2021.11.25 수정 n을 이용하여 nvm보다 쉽게 Node.js 버전을 변경할 수 있습니다. 명령어 2번이면 Node 버전을 변경할 수 있습니다. 👍 npm i -g n // global로 n 설치 n lts // lts 버전으로 Node.js 버전 변경 n -h // 상세한 n 설명 NVM이란? 노드 버전을 업데이트하기 위한 패키지로, 쉽게 Node.js 버전을 관리할 수 있습니다. nvm을 설치해놓으면 명령어 하나로 노드 버전을 변경할 수 있습니다. nvm use 14.15.4 NVM 설치 윈도우를 기준으로 아래 사이트에 접속해서 nvm-setup.zip 파일을 내려받은 후, 압축 파일을 해제하고 npm-setup.exe. 파일을 실행하여 설치합니다. 링크 : github.com/coreybut..