관계형 DB는 수직확장(Scale Up)에 유리하고 NoSQL은 수평 확장(Scale Out)에 유리하다고 한다. 이를 추상적으로만 알고 있었기에 시각적으로 표현해 확실히 하고자 기록해두려고 한다. Scale Up과 Scale Out Scale Up은 간단하게 이야기해 기존의 서버를 이전보다 높은 사양으로 업그레이드하는 것을 말한다. 이는 하드웨어 적으로 보면 용량을 늘리기 위한 목적으로 디스크를 늘리거나 혹은 성능을 높이기 위한 목적으로 CPU 또는 메모리를 업그레이 하는 등의 예시를 들 수 있다. Scale Out은 서버를 추가하는 방식을 말한다. 기존 서버의 용량 혹은 성능이 한계를 도달했을 때, 성능이 비슷한 혹은 낮은 성능을 가진 서버를 추가로 연결하는 방식이다. 이는 데이터의 저장 용량을 늘릴..
Backend
최근 객체지향적인 코드를 만들어 보려고 노력하다 보니 다양한 디자인 패턴을 경험할 수 있었다. 객체를 생성하는 방법은 new 키워드를 이용하는 방법만 생각하고 있었는데, 그 왜에도 Factory functino과 ES6부터 추가된 class 문법을 이용해 객체를 만들 수 있다는 것을 확인했고 이 글에서는 박복 객체를 생성할 때 쓰이는 패턴인 Factory Pattern에 대해 남겨두려고 한다. Factory Pattern Factory Pattern 객체를 사용하는 코드에서 객체 생성 부분을 때어내 추상화한 패턴이자 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴 Factory Pattern은 공장(Factory)이라..
이전에 진행한 프로젝트에 유효성을 검증하는 기능을 넣으려고 했다.하나하나 조건문을 이용해 검증하기에는 코드도 지저분해지고 미들웨어로 넣어 처리해주고 싶었다.그래서 joi라는 것을 사용해 유효성 검증 기능을 넣었다.https://joi.dev/ joiSite## Build Setupjoi.devjoi 왜에도 node.js 환경에서 유효성 검증을 도와주는 모듈은 다양하다.express-validator, yup 등이 있지만 정확한 차이는 잘 모르겠고 이용 수가 가장 많으면서 스키마로 따로 정의할 수 있다는 저에서 joi를 선택했다.모듈을 설치$ yarn add joi 사용법은 간단했다.내가 작성한 코드를 간단하게 얘기하자면유효성 검증을 위한 조건을 가진 스키마들을 따로 정의하고 요청과 함께 들어온 데이터들을..
이전에 express 프레임워크 환경에서 작업을 하면서 api 명세를 swagger로 진행했다.당시 swagger-ui-express와 swagger-jsdoc을 이용해 router를 작성한 코드 위해 바로 yaml형식의 swagger데이터를 데코레이터와 주석을 이용해 명세를 했었다.너무 마음에 안 들었다. router 영역은 몇 줄 안되는데 자세하게 명세를 하다 보면 코드가 router의 3~4배나 길게 적혔다.그래서 방법을 찾아 swagger 명세는. yaml 파일로 분리해 리팩터링을 진행하려고 한다. 우선 swagger-jsdoc는 사용하지 않을 거다.swagger-ui-express는 설치되어 있다는 전제하에 아래 모듈들을 설치해 주자$ npm i swagger-cli yamljs상황에 따라 de..
Bycrypt는 현업에서 가장 많이 사용한다고 한다. 나도 종종 사용했는데 많은 알고리즘 중에 이것이 선택되고 있는지 알아보고 기록해두려고 한다. bcrypt? 1999년 USENIX에서 발표한 Blowfish 암호를 기반으로 Niels Provos와 David Mazières가 설계한 단방향 해싱 함수라고 한다. 단방향 해시 함수? 해시 함수는 입력값을 문자와 숫자를 임의로 나열한 일정한 길이의 다이제스트(Digest) 형태로 변환시켜준다. 다이제스트란, 해시 함수를 통해 생성된 암호화된 메시지이다. 이를 단방향으로 암호화하고 복호화는 불가능해 원본을 알 수 없게 하는 것이 단방향 해시이다. 패스워드를 바로 데이터베이스에 저장하지 않고 다이제스트를 저장하는 것이 보편화되었다. salting과 키 스트레..
이전에 express를 사용할 때도 jwt를 사용해 토큰을 생성하게 만들었었다. 이번에 NestJS를 공부하면서 반가운 jwt를 적용해 보려고 한다. 설치 모듈$ yarn add @nestjs/jwt @nestjs/passport passport passport-jwt총 4가지를 yarn add를 통해 다운로드하였다.여기서 passport도 함께 다운로드하였는데 이는 다음에 얘기할 거고 여기서는 토큰을 발급받는 과정만 적어보려고 한다.passport.js여권이라는 이름과 같이 서버에서 사용자를 인증하기 위해 사용하는 Node.js용 미들웨어이다. JWT 모듈 등록// auth.module.ts@Module({ imports: [ PassportModule.register({ defaultStrat..