관리 메뉴

아보카도 Blog

Node.js 숙련주차 과제 해설 본문

Node.js

Node.js 숙련주차 과제 해설

수수 아보카도 2022. 12. 23. 20:24

숙련주차 과제

너무 어려워서 실상 sequelize 등의 개인 과제를 거의 하지 못했다...

그나마 열심히 들은 해설 강의를 옆에서 받아적으며 본다.

 

1. swagger의 의미

api를 문서화하는 도구. 프로젝트에서 저장한 url들을 html화면으로 확인할 수 있게 해주는 프로젝트.

swagger

2. saas laas paas

 

클라우드 컴퓨팅, IaaS, PaaS, SaaS이란?

클라우드 컴퓨팅의 여러 서비스 모델 목차 Cloud Computing이란? 정리 클라우드 컴퓨팅은 서로 다른 물리적인 위치에 존재하는 컴퓨터들의 리소스를 가상화 기술로 통합해 제공하는 기술을 말합니

wnsgml972.github.io

 

3. 클라이언트 -> 컨트롤러 -> 서비스 -> 모델 -> DB

서비스는 실제로 로직을 수행하는 모듈이고

컨트롤러는 특정 엔드포인트를 호출 할 때 수행되는 로직을 담당하는 모듈

const userService = require("./user.service")
const { Router } = require("express")

Router.post("/register", loginCheckMiddleware, userService.process.register)

 

레지스터에서는 다음과 같은 순서로 일이 수행된다.

1. /register 엔드포인트 호출
2. 컨트롤러는 userService라는 서버의 register 함수를 호출한다.
3. userService는 user 모델과 통신하여 회원가입 (DB에 새 회원 데이터를 저장)을 수행
4. 컨트롤러는 userService의 결과를 클라이언트에게 응답한다.

 

4. 유효성 검사: 라우터 미들웨어가 할 수 있는 것

최소한 req를 검사할 수 있다. 이 요청이 유효한 요청인지 검사할 수 있다.

공통적으로 validation해야하는 것은 미들웨어로 처리하기.

const process = {
  like: async (postId, userId) => {
    // 이 postId에 해당되는 게시물이 있는지 확인
    // 없으면 404
    // 있으면 like 테이블에 insert
    // 이미 있으면 like  테이블에 delete
  
    // 클라이언트는 throttle, debounce를 통해 요청의 횟수를 제한
    // 서버는 rate limit을 통해 요청의 횟수를 제한한다.
  
  }
}

trottle, debounce 추가설명

 

5. mvc 패턴

튜터님이 app.js에 한꺼번에 코딩하지 않고, service와 controller로 나누어서 코딩하는 걸 보고 이해가 잘 안되었다.

알고보니 역할과 책임을 확실히 구분하기 위해서 파일을 나눈 것이었다. 이를 mvc 패턴이라고 한다.

간단하게 말하면,

클라이언트에게 요청을 받는 녀석들과

로직을 돌려서 따로 돌려야하는 녀석들을 구분해준 것.

6. class Comment안에 write()를 만들어서 호출한다.

7. Sequelize

8. RDB 관계형 데이터 베이스 ex. MySQL

9. 무결성 제약조건

10. jwt 보안 다루는 법

SECRET_KEY가 보안적으로 관리가 잘 되어야 한다. ASW, ASM(AWS Secrets Manager)을 통해서 관리해야 한다.

그밖에는 dotenv를 써서 환경변수로 관리할 수도 있다.

11.Access Token, Refresh Token

AccessToken만을 썼을 때 문제점은 보안이다.

그래서 유효기간을 짧게 가져서 보안 유지한 것. 길어야 하루.

이를 보수한 방법이: RefreshToken이 있는 애한테만 Access Token을 다시 받을 수 있다.

보통 Refresh Token은 2주정도 유효기간을 갖는다.

Refresh Token은 ASM이나 접근하기 어려운 DB에 두었다가,

Refresh Token이 맞다고 할 때 Access Token 재발급 받을 수 있다.