내배캠 123일차

·2023년 3월 16일
0

내일배움캠프

목록 보기
126/142

목요일

발표자료준비

기술적 의사결정

  • Express vs Nest
    NestJS는 백엔드 서버가 갖추어야 하는 많은 필수 기능을 프레임워크 내에 내장하고 있고 추가로 필요한 기능을 설치하고 적용하는 방법을 문서로 제공합니다. 또한 DI, IoC를 채용하여 객체지향 프로그래밍과 모듈화를 쉽게 할 수 있습니다. Express를 사용한다면 이 모든 것들을 npm에서 찾아서 검토하는 과정이 필요합니다.
    하지만 NestJS도 결국 Express를 기반으로 하고, Express는 전 세계 NodeJS 프레임워크로 1위로 가장 많이 보편적으로 사용되어 구글링을 통해 충분한 레퍼런스를 검색할 수 있기 때문에 이번 프로젝트를 Express로 구성하게 되었습니다.

  • nunjucks
    ejs, pug, nunjucks 중에서 고민하였지만, nunjucks를 사용해보기로 하였습니다.
    넌적스는 문법 자체가 가독성이 안좋은 점이 단점이지만, ejs와 pug보다 nunjucks가 활용도가 뛰어난 것 같기 때문입니다.
    성능면에서는 pug가 렌더링 속도가 nunjucks보다 빠르지만, pug는 따로 html태그를 pug용 문법으로 변환해야 되지만 넌적스는 html 문법을 그대로 차용이 가능하기 때문에 호환성이 매우 좋기 때문입니다.
    ejs와 nunjucks는 비슷하지만 ejs보다 nunjucks가 문법적으로 더 쉽기때문에 최종적으로 nunjucks를 사용하기로 하였습니다.

  • session vs token(jwt)
    세션의 경우 모든 인증 정보를 서버에서 관리하기 때문에 보안 측면에서 조금 더 유리하다. 하지만 토큰 기반 인증 방식은 HTTP의 비상태성(Stateless)를 그대로 활용할 수 있고, 따라서 높은 확장성을 가질 수 있다. 따라서 토큰 기반 인증 방식을 사용하고 보안적인 면은 refreshToken과 accessToken을 같이 발급하여 보안을 강화하도록 하였습니다.

  • passport
    회원가입과 로그인은 직접 구현할 수도 있지만, 세션과 쿠키 처리 등 복잡한 작업이 많으므로 검증된 모듈을 사용하는 것이 좋습니다. passport는 사용하기 좋은 검증된 모듈입니다.
    일반 회원가입 로그인은 직접 구현해보았었지만, refreshToken은 이번에 처음 작업해보기때문에 passport 모듈을 사용하지 않고 구현하고 나머지 소셜로그인은 passport를 이용하여 구현하였습니다.

  • Joi
    전에는 정규식을 이용하여 서비스 내에서 유효성 검사를 해주었지만, 생산성을 향상시키기 위해서 이번에는 간단하게 사용할 수 있는 유효성 검사 라이브러리 Joi를 사용해보았습니다.

profile
개발자 꿈나무

0개의 댓글