개발이야기 43

Nest.js 에서 cluster로 요청 격리하기

기본적으로 Node.js를 계승한 Nest.js는 Node.js와 마찬가지로 요청이 격리되지 않는 이슈가 있다. (싱글스레드) 다른 Asp.net, Spring, PHP 등보다 안정성이 떨어지는 건 바로 이 부분인데, 요청이 격리되는 다른 웹언어들은 한곳에서 오류가 나도 그 요청에 대한 오류로 끝나지만, Node.js나 Nest.js는 서버 응용프로그램이 종료되는 치명적인 문제를 가지고 있다. 때문에, 반드시 요청을 격리시켜주는 별도의 작업이 필요하게 되는데, 그중 가장 기본적인 방법을 기술해보자. 먼저 node 의 cluster를 원활히 사용하기 위해 type/node를 설치해 주자. npm install --save-dev @types/node 그런 다음 tscofnig.json 파일에 compile..

Nest.js + mssql 연동하기

이번에는 nest.js와 mssql 을 연동해 보자. 먼저 mssql 라이브러리를 설치해 준다. npm install mssql 먼저 프로젝트에 Cors 이슈를 해결하기 위해 app에서 enableCors() 함수를 호출해 준다. import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger'; async function bootstrap() { const app = await NestFactory.create(AppModule); const config = new DocumentBuilder() .s..

Windows11에서 Nest.js 개발환경 셋팅

먼저 nest.js를 설치한다. npm i -g @nestjs/cli 이제 원하는 폴더로 이동해서 프로젝트를 생성해 보자. nest new sampleproject 여기서 [sampleproject] 는 내가 원하는 프로젝트명인데, 가급적 소문자를 권장한다. 그럼 다음과 같이 설치에 사용할 저장소를 선택해 달라는 질문이 나온다. 여기서는 그냥 "npm"을 선택해서 진행했다. 셋팅이 완료되고 나면 dir 명령을 통해 폴더를 확인해 보자. 내가 지정한 프로젝트명과 동일한 폴더명이 생겨 있을 것이다. 해당 폴더로 이동하고, vs code로 에디터를 열어보자. 루트 폴더 아래로 기본 파일들이 생성된 것을 볼 수 있다. 기본 생성된 결과물로 실행을 시켜보자. 이제 swagger을 설치해 보자. npm instal..

웹브라우저 console.log 의 맹점

프론트엔드를 개발하는 사람이라면 웹브라우저에 찍히는 console.log를 활용하는 경우는 종종 있을 것이다. 하지만, console.log를 사용함에 있어 주의해야할 것이 있다. 다음의 예시 코드를 보자. let arr = [1, 2, 3, 4]; console.log('before : ', arr); let test = arr.shift(); console.log('after : ', arr); console.log(test); shift 는 배열의 첫번째 요소를 잘라내어 반환하므로 원본 배열에서 해당 요소가 사라진다. 그런데 저렇게 console.log를 출력해 보면 before 와 after가 동일한 배열이 반환된다. 즉 before이후에 배열이 변했지만, before에서 이미 변경된 배열이 출력..

개발이야기 2023.07.22

2023년도 스택오버플로우 설문조사

모든 통계는 "전문 개발자" 기준입니다. (1) 사용언어 순위 역시 1위는 javascript 네요. Typescript까지 포함시키면 점유율은 압도적인 것 같습니다. 글로벌 순위다 보니, 국내랑 다르게 Java와 C#의 점유율이 불과 1% 수준입니다. (2) 사용 데이터베이스 순위 PostgreSQL의 인기가 글로벌하네요. MySQL이 MariaDB와 합치면 1위자리를 놓고 경쟁하고 있는 셈인 것 같습니다. SQLite는 모바일앱때문에 점유율이 높은 것 같고 다음으로 MS-SQL 순이네요. (3) 클라우드 뭐 예상한대로 AWS가 압도적이네요. Azure와 GCP가 근소한 차이로 뒤따르고 있는데, 근래에 두 클라우드가 공짜를 열심히 뿌리고 있지만 별다른 진전을 못보고 있는 것 같네요. (4) 웹 프레임워..

개발이야기 2023.06.16

우분투 서버에 mariadb 설치하기

(1) 먼저 apt-get 을 업데이트 해줍니다. sudo apt-get update (2) mariadb를 설치합니다. sudo apt-get install mariadb-server (3) db에 접속합니다. mysql (4) 원하는 데이터베이스를 생성합니다. create database 데이터베이스이름 default character set UTF8; (5) db에 접속할 계정 정보를 생성합니다. create user 아이디@localhost identified by '비밀번호' (6) 생성한 db와 계정을 연결해 줍니다. grant all privileges on 데이터베이스이름.* to 아이디@localhost; ※ mysql도 동일하다.

개발이야기 2023.04.21

우분투 서버에 node.js + nginx 셋팅

1. 깨끗한 VM인 경우에 먼저 apt를 업데이트 해줍니다. sudo apt update 2. Nodsjs 설치 sudo apt install nodejs 3. Nodejs 버전 업그레이드 (1) nvm 설치 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash (2) source ~/.bashrc (3) nvm install 16.0.0 4. NPM 설치 sudo apt install npm 5. 환경설정 nano ~/.bashrc 수정화면이 열리면 맨 하단에 다음줄 추가 export PATH="$PATH:/usr/local/bin" 6. pm2 설치 sudo npm install -g pm2 7. nginx 설치..

개발이야기 2023.04.21

푸티와 파일질라에서 ppk 사용하기

1. PuTTY를 설정하는 방법입니다. (1) PuTTY를 다운로드하고 설치합니다. (2) PuTTY를 실행하고, 좌측 메뉴에서 "Connection" -> "SSH" -> "Auth"를 클릭합니다. (3) "Private key file for authentication"에서 "Browse" 버튼을 클릭하고, 받은 ppk 파일을 선택합니다. (4) "Session" 탭으로 돌아가서, 접속할 원격 서버의 호스트 이름이나 IP 주소를 입력합니다. (5) "Connection" -> "Data"에서 사용자 이름을 입력합니다. (6) "Open" 버튼을 클릭하여 원격 서버에 연결합니다. 2. 파일질라를 사용하여 ppk 파일을 설정하는 방법입니다. (1) 파일질라를 다운로드하고 설치합니다. (2) 파일질라를 실..

개발이야기 2023.04.20
반응형