분류 전체보기
-
1. Overview 새로운 프로젝트를 기획했고 이를 이제 개발을 시작하려고 한다. 프론트엔드와 백엔드를 모두 다루어야 하는데 나는 주도메인(primary-domain)이 백엔드이기 때문에 백엔드를 개발하는 것이 비교적 쉬워 백엔드를 먼저 구축한 후에 프론트엔드에서 UI와 API 연결을 마무리 하는 식으로 진행을 할 것이다. 2. 진행 및 완료사항 2-1. 기술 스택 선정 기술 스택을 선정함에 있어서는 신기술을 이용하고자 하는 방향으로 잡았고 이전 프로젝트를 Express.js와 react native를 사용한 경험이 있어 여기서 업그레이드 시켜 Express.js는 NestJS로, React는 NextJS로 진행해보기로 하였고 이에 대한 공부를 진행하였고 현재도 꾸준히 진행 중이다. NextJS를 공부..
[Develog] NestJS와 TypeORM (Entity 클래스 쉽게 만드는 법)1. Overview 새로운 프로젝트를 기획했고 이를 이제 개발을 시작하려고 한다. 프론트엔드와 백엔드를 모두 다루어야 하는데 나는 주도메인(primary-domain)이 백엔드이기 때문에 백엔드를 개발하는 것이 비교적 쉬워 백엔드를 먼저 구축한 후에 프론트엔드에서 UI와 API 연결을 마무리 하는 식으로 진행을 할 것이다. 2. 진행 및 완료사항 2-1. 기술 스택 선정 기술 스택을 선정함에 있어서는 신기술을 이용하고자 하는 방향으로 잡았고 이전 프로젝트를 Express.js와 react native를 사용한 경험이 있어 여기서 업그레이드 시켜 Express.js는 NestJS로, React는 NextJS로 진행해보기로 하였고 이에 대한 공부를 진행하였고 현재도 꾸준히 진행 중이다. NextJS를 공부..
2024.03.11 -
디자인 패턴들은 소프트웨어 디자인 과정에서 자주 발생하는 문제들에 대한 일반적인 해결책들입니다. 이는 우리의 코드에서 반복적으로 되풀이되는 디자인 문제들을 해결하기 위하여 맞춤화할 수 있는 청사진(blueprint)들을 미리 만들어 놓은 것이라고 보면 됩니다. 우리는 JavaScript로 백엔드 애플리케이션을 구축할 때 Node.js를 많이 사용하곤 하는데요. 최근에 이를 지원하는 프레임워크인 NestJS는 객체지향 프로그래밍을 기반으로 구성하기 때문에 객체지향에서 사용되는 많은 아키텍처와 디자인 패턴들을 차용합니다. 하지만 아직 JavaScript을 사용하여 디자인 패턴을 설명하는 글은 많지 않았는데 최근에 좋은 글을 발견하여 이에 대해 공부한 내용을 바탕으로 작성한 포스팅이 되겠습니다. 원글: htt..
[JavaScript] 자바스크립트 Node.js로 알아보는 디자인 패턴들(Design Patterns in JavaScript)디자인 패턴들은 소프트웨어 디자인 과정에서 자주 발생하는 문제들에 대한 일반적인 해결책들입니다. 이는 우리의 코드에서 반복적으로 되풀이되는 디자인 문제들을 해결하기 위하여 맞춤화할 수 있는 청사진(blueprint)들을 미리 만들어 놓은 것이라고 보면 됩니다. 우리는 JavaScript로 백엔드 애플리케이션을 구축할 때 Node.js를 많이 사용하곤 하는데요. 최근에 이를 지원하는 프레임워크인 NestJS는 객체지향 프로그래밍을 기반으로 구성하기 때문에 객체지향에서 사용되는 많은 아키텍처와 디자인 패턴들을 차용합니다. 하지만 아직 JavaScript을 사용하여 디자인 패턴을 설명하는 글은 많지 않았는데 최근에 좋은 글을 발견하여 이에 대해 공부한 내용을 바탕으로 작성한 포스팅이 되겠습니다. 원글: htt..
2024.03.08 -
1. Testing자동화된 테스트는 소프트웨어 개발에 들어가는 모든 공수(effort)의 핵심 파트로 여겨집니다. 테스트를 자동화하면 개발 도중에 개별 테스트 또는 테스트 묶음들을 빠르고 쉽게 반복하여 테스트 해볼 수 있게 됩니다. 또한 제품을 출시할 때 품질과 성능의 만족을 보장하기도 합니다. 이렇듯 자동화는 개발자들에게 커버리지(테스트 범위)를 증가하는데 도움을 주며 더 빠른 피드백 순환을 가능하게 합니다. 그리고 각 개발자들의 생산성을 증가시키고 개발 생명주기의 정점(소스 코드 제어 체크인, 기능 통합, 버전 릴리즈 등)에서 테스트가 실행됨을 보장합니다. 그러한 테스트는 unit 테스트, end-to-end(e2e) 테스트, integration 테스트 등을 포함하여 다양한 유형에 걸쳐 분포합니다...
[NestJS | Docs] Testing 알아보기1. Testing자동화된 테스트는 소프트웨어 개발에 들어가는 모든 공수(effort)의 핵심 파트로 여겨집니다. 테스트를 자동화하면 개발 도중에 개별 테스트 또는 테스트 묶음들을 빠르고 쉽게 반복하여 테스트 해볼 수 있게 됩니다. 또한 제품을 출시할 때 품질과 성능의 만족을 보장하기도 합니다. 이렇듯 자동화는 개발자들에게 커버리지(테스트 범위)를 증가하는데 도움을 주며 더 빠른 피드백 순환을 가능하게 합니다. 그리고 각 개발자들의 생산성을 증가시키고 개발 생명주기의 정점(소스 코드 제어 체크인, 기능 통합, 버전 릴리즈 등)에서 테스트가 실행됨을 보장합니다. 그러한 테스트는 unit 테스트, end-to-end(e2e) 테스트, integration 테스트 등을 포함하여 다양한 유형에 걸쳐 분포합니다...
2024.03.06 -
1. Exception filters (예외 필터)Nest에는 애플리케이션 전체에서 처리되지 않은 모든 예외를 처리하는 예외 계층이 내장되어 있습니다. 애플리케이션 코드에서 처리되지 않은 예외가 발생하면 이 계층에서 해당 예외를 포착하여 적절한 사용자 친화적인(user-friendly) 응답을 자동으로 전송합니다. 기본적으로 이러한 작업은 Nest에 내장된 전역 예외 필터(global exception filter)에 의해 수행되며, 이 필터는 일반적으로 HttpException 유형(및 그 하위 클래스)의 예외를 처리합니다. 예외가 인식되지 않는 경우(HttpException도 아니고 HttpException을 상속하는 클래스도 아닌 경우)에는 예외 필터에서 기본(default)값으로 다음과 같..
[NestJS | Docs] Exception filters (예외 필터)1. Exception filters (예외 필터)Nest에는 애플리케이션 전체에서 처리되지 않은 모든 예외를 처리하는 예외 계층이 내장되어 있습니다. 애플리케이션 코드에서 처리되지 않은 예외가 발생하면 이 계층에서 해당 예외를 포착하여 적절한 사용자 친화적인(user-friendly) 응답을 자동으로 전송합니다. 기본적으로 이러한 작업은 Nest에 내장된 전역 예외 필터(global exception filter)에 의해 수행되며, 이 필터는 일반적으로 HttpException 유형(및 그 하위 클래스)의 예외를 처리합니다. 예외가 인식되지 않는 경우(HttpException도 아니고 HttpException을 상속하는 클래스도 아닌 경우)에는 예외 필터에서 기본(default)값으로 다음과 같..
2024.03.04 -
1. Middleware미들웨어는 라우트 핸들러 전에 호출되는 함수입니다. 미들웨어 함수는 애플리케이션의 request-response 사이클에서 request, response 객체, 그리고 next() 미들웨어 함수에 대한 접근을 갖습니다. next 미들웨어 함수는 next라는 이름을 가진 변수로 흔히 표기됩니다. Next 미들웨어는 기본적으로 express 미들웨어와 동일합니다. express 공식 문서에서는 다음과 같이 미들웨어를 설명하고 있습니다. 미들웨어 함수는 다음과 같은 작업들을 수행할 수 있다:- 어떠한 코드든 실행한다.- request와 response 객체를 수정한다.- request-response 사이클을 종료시킨다.- 스택에서 다음 미들웨어 함수를 호출한다.- 만약..
[NestJS | Docs] Middleware 알아보기1. Middleware미들웨어는 라우트 핸들러 전에 호출되는 함수입니다. 미들웨어 함수는 애플리케이션의 request-response 사이클에서 request, response 객체, 그리고 next() 미들웨어 함수에 대한 접근을 갖습니다. next 미들웨어 함수는 next라는 이름을 가진 변수로 흔히 표기됩니다. Next 미들웨어는 기본적으로 express 미들웨어와 동일합니다. express 공식 문서에서는 다음과 같이 미들웨어를 설명하고 있습니다. 미들웨어 함수는 다음과 같은 작업들을 수행할 수 있다:- 어떠한 코드든 실행한다.- request와 response 객체를 수정한다.- request-response 사이클을 종료시킨다.- 스택에서 다음 미들웨어 함수를 호출한다.- 만약..
2024.02.28 -
1. Execution contextNest는 여러 컨텍스트(예: Nest HTTP 서버 기반, 마이크로서비스 및 웹소켓 애플리케이션 컨텍스트)에서 작동하는 애플리케이션을 쉽게 작성할 수 있도록 도와주는 여러 유틸리티 클래스를 제공합니다. 이러한 유틸리티는 현재 실행 맥락(execution context)에 대한 정보를 제공하여 더 광범위한 컨트롤러, 메서드 및 실행 컨텍스트에서 동작하는 범용 guard, filter 및 interceptor를 구축하는 데 사용할 수 있습니다. 이번 포스팅에서는 두 개의 클래스를 다룰 것입니다: ArgumentHost & ExecutionContext 1-1. ArgumentHost classArgumentsHost 클래스는 핸들러에 전달되는 인자를 가져오는 ..
[NestJS | Docs] Execution context 알아보기 (feat. ArgumentHost)1. Execution contextNest는 여러 컨텍스트(예: Nest HTTP 서버 기반, 마이크로서비스 및 웹소켓 애플리케이션 컨텍스트)에서 작동하는 애플리케이션을 쉽게 작성할 수 있도록 도와주는 여러 유틸리티 클래스를 제공합니다. 이러한 유틸리티는 현재 실행 맥락(execution context)에 대한 정보를 제공하여 더 광범위한 컨트롤러, 메서드 및 실행 컨텍스트에서 동작하는 범용 guard, filter 및 interceptor를 구축하는 데 사용할 수 있습니다. 이번 포스팅에서는 두 개의 클래스를 다룰 것입니다: ArgumentHost & ExecutionContext 1-1. ArgumentHost classArgumentsHost 클래스는 핸들러에 전달되는 인자를 가져오는 ..
2024.02.27 -
1. Configuration애플리케이션은 대개 서로 다른 환경에서 실행됩니다. 그렇기에 환경에 따라 다른 구성 설정을 사용해야 해주어야 하는데요. 예를 들어, 일반적으로 로컬 환경에서는 로컬 DB 인스턴스에만 유효한 특정 데이터베이스 자격 증명에 사용되는 경우가 있습니다. 프로덕션 환경에서는 별도의 DB 자격 증명 세트를 사용합니다. 구성 변수(configuration variables)는 변경되기 때문에 해당 환경에 구성 변수를 저장하는 것이 가장 좋은 방법입니다. 외부에서 정의된 환경 변수는 process.env를 통해 Node.js 내부에서 볼 수 있습니다. 환경 변수를 각 환경에서 개별적으로 설정하여 여러 환경이라 발생할 수 있는 문제를 해결할 수 있습니다. 하지만 이러한 값을 쉽게 ..
[NestJS | Docs] Configuration 사용법1. Configuration애플리케이션은 대개 서로 다른 환경에서 실행됩니다. 그렇기에 환경에 따라 다른 구성 설정을 사용해야 해주어야 하는데요. 예를 들어, 일반적으로 로컬 환경에서는 로컬 DB 인스턴스에만 유효한 특정 데이터베이스 자격 증명에 사용되는 경우가 있습니다. 프로덕션 환경에서는 별도의 DB 자격 증명 세트를 사용합니다. 구성 변수(configuration variables)는 변경되기 때문에 해당 환경에 구성 변수를 저장하는 것이 가장 좋은 방법입니다. 외부에서 정의된 환경 변수는 process.env를 통해 Node.js 내부에서 볼 수 있습니다. 환경 변수를 각 환경에서 개별적으로 설정하여 여러 환경이라 발생할 수 있는 문제를 해결할 수 있습니다. 하지만 이러한 값을 쉽게 ..
2024.02.23 -
1. Custom decoratorsNest는 데코레이터라는 언어 기능을 중심으로 구축되었습니다. 데코레이터는 일반적으로 사용되는 많은 프로그래밍 언어들에서 잘 알려진 개념이지만 자바스크립트 세계에서는 아직까진 비교적 생소한 개념입니다. 데코레이터의 작동 방식을 더 잘 이해하려면 이 글을 읽어보시기 바랍니다. 다음은 데코레이터에 대한 간단한 정의입니다:ES2016 데코레이터는 함수를 반환하고 target, name 및 property descriptor를 인자로 받을 수 있는 표현식입니다. 데코레이터 앞에 '@' 문자를 붙이고 데코레이터를 적용하려는 대상의 맨 위에 배치합니다. 데코레이터는 클래스, 메서드 또는 프로퍼티에 대해 정의할 수 있습니다. 1-1. Param decoratorsNe..
[NestJS | Docs] Custom Decorators 알아보기 (커스텀 데코레이터)1. Custom decoratorsNest는 데코레이터라는 언어 기능을 중심으로 구축되었습니다. 데코레이터는 일반적으로 사용되는 많은 프로그래밍 언어들에서 잘 알려진 개념이지만 자바스크립트 세계에서는 아직까진 비교적 생소한 개념입니다. 데코레이터의 작동 방식을 더 잘 이해하려면 이 글을 읽어보시기 바랍니다. 다음은 데코레이터에 대한 간단한 정의입니다:ES2016 데코레이터는 함수를 반환하고 target, name 및 property descriptor를 인자로 받을 수 있는 표현식입니다. 데코레이터 앞에 '@' 문자를 붙이고 데코레이터를 적용하려는 대상의 맨 위에 배치합니다. 데코레이터는 클래스, 메서드 또는 프로퍼티에 대해 정의할 수 있습니다. 1-1. Param decoratorsNe..
2024.02.21