할 일 목록 작성 (1) App.module에서 전역적으로 모든 요청을 기록할 logger middleware를 제작하기 위해 먼저 logger middleware의 할 일 목록을 작성한다. 1. LoggerMiddleware 클래스를 만든다. 2. NestMiddleware의 use 메서드에서 next를 호출한다. 가장 간단해 보이는 구현부터 시작해서 Red, Green Refactor의 단계를 거치도록 한다. LoggerMiddleware 클래스를 만든다. [Red] logger.middleware.spec.ts describe('LoggerMiddleware', () => { it('should be defined', () => { expect(LoggerMiddleware).toBeDefined(..
요구사항 분석 nomadia는 디지털 노마드를 위한 커뮤니티 서비스로 기획을 했다. 그 이유는 다음과 같다. 디지털 노마드를 위한 서비스는 지속적으로 성장하고 있으며, 아직 시장 지배적인 기업이 없기 때문에. 이전부터 관심이 있었던 주제이기 때문에. 하나의 서비스이지만 다양한 기능들을 필요로 하며 이러한 기능을 구현 해보며 실력을 늘릴 수 있을 것이라 생각 했기 때문에. 좋은 서비스는 고객의 필요에 의해 만들어진다. 이 때 개발 자원은 한정되어 있기 때문에 많은 기능을 넣는 것이 반드시 고객의 필요에 부합한다고 볼 수는 없다. ‘지역’의 주요 관광지는 관광 전문 사이트 혹은 Google map을 이용하면 되고 ‘구인’은 Linkedin을 포함한 사이트에서 찾는 편이 더 적절하다. 따라서 먼저 고객의 니즈..
Why winston logger? winston logger는 다양한 커스터마이징과 logger level 설정, daily rotate를 이용한 로깅 저장 등의 기능을 제공하기 때문에 기본 내장 로거가 아닌 winston logger를 사용했다. How to imply? 1. app.module.ts 설정 import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { AppController } from './app.controller'; import { AppService } from './app.servi..
Why Nest.js? nest.js는 최근 부상하고 있는 node.js의 프레임워크로 모듈 단위의 관리, DI, TypeScript 친화적 환경 및 다양한 이점을 제공하고 있다. 레어이드 아키텍처 및 모듈화를 기반으로 프로젝트를 시작할 것이기 때문에 다양한 디자인 패턴을 쉽게 적용할 수 있게 만든 nest.js가 적합한 프레임워크로 생각된다. Why do use validator? 배포 상황에서 환경파일을 실수로 넣지 않아 오작동을 하는 경우가 종종 있어 이를 검증하고 싶었다. nest.js에서 환경 파일의 validation을 할 수 있는 것은 class-validator와 joi 두가지로 보인다. class-validator를 사용하기 위해서는 클레스를 작성해야 하고, 데코레이터가 점점 길어져 가독..
Why 'as const'? enum과 const enum, as const는 비슷해 보이지만 어떠한 차이점이 있고 무엇을 써야 하는지 고민을 한 뒤 as const로 타입 지정을 바꾸기로 했다. 이유는 아래에서 설명한다. enum enum이란 여러 값들에 미리 이름을 정의하여 열거해두고 사용하는 타입이다. TypeScript에서 enum은 다음과 같은 특징을 가진다. 1. reversed mapping이 가능하다. reversed mapping이란 object 안의 객체에 암시적으로 숫자가 mapping되는 것을 의미한다. enum { one // 0 two // 1 } 이러한 reversed mapping을 통해 역으로 숫자 비교 등을 할 수 있다. if (one > 0) { ... } one은 0에..
Why atomic pattern? 이전에 관리자 페이지를 만들면서 아토믹 패턴을 변형한 atom, block, page 3단 구조의 독자적인 디자인 패턴으로 프런트 엔드 코드를 작성해 보았는데 장점과 단점은 다음과 같았다. 장점 단점 빠른 코드 작성 page가 비대해짐 일관된 디자인의 코드 작성 가능 커스터마이징이 힘듦 코드의 구조화 프런트엔드 개발자가 아니기에 최대한 빠르고 일관되게 페이지를 작성할 필요가 있었고, 일관되고 구조적인 코드를 짜면서, 특정 부분(이전에는 page에서 모든 디자인을 한번에 했다)의 비대화를 막기 위해 아토믹 패턴의 변형이 아닌 best practice로 프런트엔드 코드를 작성하기로 했다. How to make it? - atoms 1. 기능의 최소 단위로 분리한다. But..