SQL과 NoSQL의 특성 비교
·
개발/Glossaries
SQL (Structred Query Language) NoSQL(Not only Sstructed Query Language) 특징 전통적인 데이터베이스 구성 방식 SQL에 비해 새로운 방식 구성 방식 테이블 방식 다큐먼트 방식 구성 스키마가 필수적 보다 유연하게 구성 가능 관계 설정 관계 설정이 용이 복잡한 관계를 설정하기 어려움 대표 DB MySQL / PostgreSQL MongoDB / Redis 확장성 수직적 스케일 확장 수평적 스케일 확장
NestJS 기초 (11) API 문서 작성하기 (스웨거)
·
개발/NestJS
API 문서는 보통 개발한 API 기능을 명시하고 다른 개발자와 공유하기 위해 사용합니다. Nest에서는 스웨거(swagger)를 사용하여 간편하게 API 문서를 작성하고 이를 테스트해볼 수 있습니다. 스웨거 설치하기 다음 명령어로 스웨거를 설치합니다. npm install --save @nestjs/swagger swagger-ui-express API 문서 작성하기 스웨거 설치가 완료됐다면 이제 다음과 같이 main.ts 파일을 업데이트해줍니다. 타이틀이나 설명 등은 프로젝트에 맞게 수정하시면 됩니다. //main.ts import { NestFactory } from '@nestjs/core'; import { DocumentBuilder, SwaggerModule } from '@nestjs/sw..
NestJS 기초 (10) 파이프와 유효성 검사
·
개발/NestJS
파이프(pipes)는 @Injectable() 데코레이터와 함께 명시되는 클라스이며 PipeTransform 인터페이스를 통해 구현됩니다. 파이프는 두 가지 주된 유형을 갖습니다. 변형(transformation): 입력 데이터를 원하는 형식으로 전환(예를 들면, 문자열에서 숫자열로) 검증(validation): 입력 데이터가 유효한지 평가하고 예외가 발생하면 오류 메시지를 전송 두 가지 경우에서 파이프는 컨트롤러 라우트 핸들러에서 처리되고 있는 arguments 위에서 작동합니다. Nest는 메소드 호출 전에 파이프를 끼워넣고, 파이프는 메소드에게 전달되는 아규먼트를 받아서 처리합니다. 파이프가 변형 또는 검증을 마치면 이후 라우트 핸들러가 작동합니다. Nest는 다음과 같은 다양한 기본 파이프들을 제..
NestJS 기초 (9) 예외 처리
·
개발/NestJS
Nest는 자체적인 예외 처리 레이어를 제공하며 이를 통해 애플리케이션 전반의 에러를 처리할 수 있습니다. 개발자가 애플리케이션 코드에서 예외를 처리하지 않은 경우, Nest 레이어가 이를 포착하여 응답을 전송해줍니다. 이는 NestJS의 글로벌 예외 처리 필터에 의해 진행되며 HttpException 유형의 예외를 처리합니다. 알 수 없는 예외가 발생할 경우 다음과 같은 JSON 응답이 자동으로 생성됩니다. { "statusCode": 500, "message": "Internal server error" } 일반적인 예외 처리 방식 Nest 자체 HttpException 클래스는 @nestjs/common 패키지 내에 있습니다. 앞서 우리가 만들었던 CatsController에서 GET 라우트 핸들러..
NestJS 기초 (8) 미들웨어
·
개발/NestJS
미들웨어란 라우트 핸들러 이전에 호출되는 함수입니다. 미들웨어 함수는 애플리케이션의 요청-응답 사이클 내에서 request 및 response 객체와 next() 미들웨어 함수에 접근할 수 있습니다. next 미들웨어 함수는 보통 next라는 변수명으로 사용됩니다. Nest 미들웨어는 기본적으로 express 미들웨어와 동일합니다. 다음은 express 문서에서 설명하고 있는 미들웨어의 역할입니다. 미들웨어 함수는 다음과 같은 일을 할 수 있습니다. 코드 실행 request, reponse 객체 요청 변경 요청-응답 사이클 종료 스택 내 다음 미들웨어 함수 호출 현재 미들웨어 함수가 요청-응답 사이클을 종료하지 않으면 next()를 반드시 호출하여 다음 미들웨어 함수로 권한을 넘겨야 합니다. 함수 또는 ..
NestJS 기초 (7) 환경 변수 관리하기
·
개발/NestJS
애플리케이션은 보통 서로 다른 환경에서 작동하며, 환경에 따라 다른 설정을 사용합니다. 예를 들어, 개발자의 로컬 환경과 개발된 기능을 사용자에게 배포하기 전에 테스트하는 스테이지 환경, 마지막으로 실제 운용하는 프로덕션 환경이 있을 것입니다. 각 환경에 따라 데이터베이스를 포함한 다른 설정이 사용될 수 있습니다. 이를 관리하는 좋은 방법은 설정 변수를 환경에 저장하는 것입니다. Node.js 애플리케이션에서는 보통 .env 파일을 사용합니다. 이는 키-값 페어로 구성되며 각 키는 해당 환경의 특정 값을 나타냅니다. 서로 다른 환경에서 앱을 실행하려면 해당하는 .env 파일로 변경하면 됩니다. 예를 들면, .dev.env, .stage.env, .production.env가 될 수 있을 것입니다. Nes..
초라했던 하루 ⏐ 57 ⏐ 일상 에세이
·
기록/일상 에세이
오늘의 나는 너무도 초라했다. 프로젝트 팀원들과 함께 모인 자리에서 횡설수설하는 했던 이유는 결국 실력과 경험이 부족했기 때문이었다. 리더는 아니라고, PM은 아니라고 공표했음에도 결국 내가 하(려)고 하는 행동은 리더이고 PM인 거 같아서 스스로가 참 편안한 선택만을 하려는 거 같다는 자괴감이 들었다. 맡아서 하던가, 비키던가. 그러나 무언가를 이끌어본 적도 사실 너무 오래되었고 무엇보다도 현 시점에서는 역량이 부족했다. 그것들을 커버해 줄 겸손함이나 따뜻한 마음씨도 이젠 내게 희미해진 가치들이었다. 그렇다고 비키기에는 그럼 누가 할까?하는 초조함과 회의적인 마음이 있었다. 이끌거면 확실히 이끌어야 한다. 아니라면, 확실히 빠져서 다른 이들에게 공간을 마련해주어야 한다. 너무 좋은 사람들과 함께 하고 ..
NestJS 기초 (6) 모듈
·
개발/NestJS
모듈의 개념 모듈은 여러 컴포넌트를 조합하여 작업을 수행하는 단위를 의미합니다. 말이 조금 어려울 수 있는데요. 예를 들어, 배달 앱을 만든다고 해보겠습니다. 이 경우 사용자, 사장님, 배달원 등의 작업을 별도로 처리하는 구조와 설계가 필요할 것입니다. 이때 모듈은 UsersModule, OwnersModule, RidersModule과 같이 구성될 수 있고, 각 모듈에는 해당하는 컨트롤러와 서비스 등이 포함됩니다. 이러한 모듈을 모두 모으면 배달 서비스를 제공하는 DeliveryModule이 될 수 있습니다. 모듈을 사용하는 이유는 컴포넌트를 효과적으로 구조화할 수 있습니다. 서비스를 작은 단위로 나누고 유사한 기능끼리 모음으로써 응집도를 높이는 것이 모듈을 사용하는 이유입니다. Nest에서 각 애플리..