마이크로 서비스란? aws - 소프트웨어가 잘 정의된 API를 통해 통신하는 소규모의 독립적인 서비스 redhat - 마이크로서비스란 소프트웨어를 구축하기 위한 아키텍처이자 하나의 접근 방식으로, 애플리케이션을 상호 독립적인 최소 구성 요소로 분할합니다. 마이크로서비스에서는 모든 요소가 독립적이며 연동되어 동일한 태스크를 완수합니다. 위의 정의에서 볼 수 있듯이, 마이크로서비스는 기존의 모든 것을 하나로 통합하는 모놀리식 아키텍처와 달리 애플리케이션을 구성하는 서비스들이 서로 독립한 상태로 존재하는 것을 마이크로서비스라고 하며, 이 마이크로 서비스들을 종합적으로 사용하는 인프라 구조를 마이크로서비스 아키텍처라고 하며 이렇게 설계되는 애플리케이션을 마이크로서비스 애플리케이션 이하 MSA라고 부릅니다. 마이..
nestjs
캐싱 캐싱은 어플리케이션의 수행 속도를 향상시키는 데에 큰 도움을 주는 간단하지만 강력한 기술입니다. 이는 일시적인 저장소 역할을 하며, 고성능 데이터 접근을 제공합니다. 프로젝트 생성 먼저 실습할 프로젝트 폴더를 하나 생성합니다. 저는 nestjs-cache로 명명했습니다. 해당 폴더에서 nest cli를 사용하여 새로운 프로젝트를 생성합니다. 사이드 프로젝트에서 패키지 매니저를 yarn으로 쓰고 있어서 yarn을 선택했습니다. 패키지 설치 캐싱에 필요한 패키지를 설치해줍니다. 먼저 cache-manager를 설치합니다. yarn add cache-manager # npm i cache-manager 그후에는 타입을 지정하기 위해 @types/cache-manager를 설치합니다. yarn add -D..
종종 어플리케이션의 시작은 한 개 이상의 비동기 작업이 완료될 때까지 지연되어야 합니다. 예를 들어, 데이터베이스의 연결이 설립될 때까지 요청이 들어오는 것을 원치 않을 수 있습니다. 비동기 프로바이더를 사용하면 해결할 수 있습니다. 이에 대한 문법은 useFactory 문법과 함께 async/await를 사용하는 것입니다. 팩토리는 Promise를 반환하며 팩토리 함수는 비동기 작업을 await를 사용해 대기할 수 있습니다. Nest는 프로바이더에 의존 혹은 주입하는 모든 클래스의 인스턴스화 이전에 프로미스의 처리를 기다릴 수 있게 만들어 줍니다. { provide: 'ASYNC_CONNECTION', useFactory: async () => { const connection = await creat..
이전 챕터에서, DI의 다양한 측면과 Nest에서 이를 활용하는 방법을 다루었습니다. 생성자 기반 의존성 주입을 사용해 인스턴스를 클래스에 넣는 것이 그 예입니다. 지금까지 한 가지 주요한 패턴에 대해서만 알아봤습니다. 어플리케이션이 점점 복잡해질수록, DI 시스템의 모든 기능을 사용해야 합니다. 의존성 주입 기초 의존성 주입은 제어 역전(inversion of control, IoC) 기술입니다. 여기서 자체적으로 코드에서 수행하는 대신 의존성의 인스턴스화를 IoC 컨테이너(여기서는 NestJS의 런타임 시스템)에 위임합니다. 먼저, 프로바이더를 정의합니다. @Injectable() 데코레이터는 CatsService 클래스를 프로바이더로 지정합니다. import { Injectable } from '@..