본문 바로가기

전체 글161

BCrypt로 Password Hashing 하기 (2020-04-30에 작성된 글입니다) 사용자의 비밀번호와 같은 credential한 값은 hashing을 통해 관리자 조차도 원래 값을 알 수 없도록 암호화하여 저장해야한다. 이번 포스팅은 비밀번호 암호화 관련하여 BCrypt를 적용한 것과 관련하여 알아본 바를 정리한다. (* update 2021-01-02: 요즘은 Argon2라는 알고리즘이 떠오르는 것 같다.) SHA는 사용하지 마라 일반적으로 Hashing에 사용되는 SHA 방식의 경우 비밀번호와 같은 보안과 관련되서는 사용되지 않는다. 왜냐하면 SHA 방식은 빠르기 때문에 해커들이 반복 연산을 보다 빠르게 할 수 있기 때문이다. 이는 해커가 비밀번호를 얻어내기 좀 더 수월하다는 위험성을 갖는다. 왜 BCrypt를 사용하는가 BCrypt 같은 .. 2021. 1. 2.
Sync & Async / Blocking & Non-Blocking (2019-10-06에 작성된 글입니다.) 나는 원래 Java를 사용하여 개발을 했는데, 이제는 Node.js 기반으로 개발을 하는 입장으로서 Non-Blocking에 대한 개념이 중요하게 됐고, 이에 더해서 Sync와 Blocking에 대한 차이도 이해하는 것이 필요하다고 느꼈는데, 최근 Slipp에서 주최한 세미나에서 자바지기님의 발표를 통해서 이러한 점이 명쾌하게 이해가 되었다. 이번 글은 그 기반으로 Sync & Async / Blocking & Non-Blocking 에 대해서 알아보고 정리한 것이다. Sync & Async / Blocking & Non-Blocking Sync와 Blocking, Async와 Non-Blocking 서로 비슷한 개념이라고 생각할 수 있다. 나 역시 이 점에 대.. 2021. 1. 2.
Nest.js Docker image 만들기 (2020-03-23에 작성한 글입니다.) Nest.js 기본 프로젝트를 Docker image로 만들어보고 해당 image를 container로 실행시키는 과정을 알아보자 코드 예제는 여기에 있다. 1. 프로젝트 생성 먼저 Nest.js CLI를 통해 프로젝트를 생성한다. $ nest new nestjs-docker 2. Docker image 생성을 위한 세팅 다음 Docker image를 만들기 위해 프로젝트 디렉토리에 다음과 같이 Dockerfile을 생성한다. # Step 1 ## base image for Step 1: Node 10 FROM node:10 AS builder WORKDIR /app ## 프로젝트의 모든 파일을 WORKDIR(/app)로 복사한다 COPY . . ## Nest... 2021. 1. 2.
DI with Nest.js (2020-05-23에 작성한 글입니다.) 코드는 여기에서 확인할 수 있다. Nest.js는 기본적으로 DI를 지원하기 때문에 별도의 library를 설치하지 않아도 DI를 적극적으로 사용할 수 있게 도와준다. Hexagonal architecture와 같이 특정 인프라 스트럭쳐에 의존하지 않는 코드를 작성한다면 Repository와 같이 특정 인프라 스트럭쳐를 사용하는 기능은 interface로 추상화하고 이에 대한 구현은 클래스에 할 것이다. 사용자 기능을 구현하는 Nest.js application을 만든다면 아래와 같이 시작할 수 있을 것이다. // src/user/UserService.ts import { Injectable } from '@nestjs/common'; @Injectable() .. 2021. 1. 2.
logrotate 사용법 (2018-11-18에 작성된 글입니다.) logrotate를 사용하여 로그를 관리할 수 있다. 로그 파일에 대해 아무 설정을 하지 않으면 시간이 지나 로그가 쌓이면서 용량이 계속 커지게 될 것이고 로그를 보는 것도 편하지 않을 것이다. 그럴때는 리눅스에서 제공하는 logrotate 기능을 사용하면 큰 어려움 없이 로그를 관리할 수 있다. 예제 $ vi /etc/logrotate.d/[rotate_name] /path/to/log/somelog.out { copytruncate daily rotate 30 missingok notifempty dateext } # log 실행 [루트 권한] logrotate -f /etc/logrotate.d/[rotate_name] 옵션 설명 Option Descrip.. 2021. 1. 2.
Foreign Key에도 index가 걸릴까? (2020-07-08에 작성한 글입니다.) RDS를 쓰면 일대다 관계를 정의해서 사용하는 경우가 잦을 것이다. 테이블 간 일대다 관계를 정의하면 테이블 상으로는 PK, FK를 통해 서로 관계를 매핑시킬 것인데 그러면 FK에는 index가 걸려있을까? 아래와 같이 단순한 유저, 게시물의 경우를 생각해보자. users id (PK) username nickname 1 devson seoul dev 2 chris Chris Brown boards id (PK) user_id (FK) title ... 1 1 DB tuning ... 2 2 What should I do?? ... 테이블에서 확인할 수 있는 것과 같이 유저(users)와 게시물(boards)는 1:N 관계이고 users.id와 boards.us.. 2021. 1. 2.