leesin1040 / node_personal2

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

내일배움캠프 Node.js 3기 숙련주차 2번째 과제

환경변수

  • DB_HOST
  • DB_USER
  • DB_PASS
  • DB_NAME
  • DB_PORT
  • JWT_SECREAT_KEY

API 명세서 URL

ERD URL

더 고민해 보기

1. 암호화 방식

  • 비밀번호를 DB에 저장할 때 Hash를 이용했는데, Hash는 단방향 암호화양방향 암호화 중 어떤 암호화 방식에 해당할까요? ⭐️ 단방향 암호화방식입니다.
  • 비밀번호를 그냥 저장하지 않고 Hash 한 값을 저장 했을 때의 좋은 점은 무엇인가요? ⭐️ 혹시나 DB가 해킹되면 사용자의 비밀번호들이 노출될 수 있다. Hash를 하게 되면 개발자도, 운영자도 비밀번호를 모르게 되어 개인정보에 대한 노출을 최소화할 수 있다.

2. 인증 방식

  • JWT(Json Web Token)을 이용해 인증 기능을 했는데, 만약 Access Token이 노출되었을 경우 발생할 수 있는 문제점은 무엇일까요? ⭐️ Access Token이 노출되어 탈취되는 경우 탈취자가 사용자로 위장하여 계정에 접근할 수 있다.
  • 해당 문제점을 보완하기 위한 방법으로는 어떤 것이 있을까요? ⭐️ Access Token의 유효기간을 짧게 설정한다. Refresh Token 을 겸용한다.

3. 인증과 인가

  • 인증과 인가가 무엇인지 각각 설명해 주세요. ⭐️ 인증은 요청자가 자신이 누구인지 증명하는 과정이다. 인가는 인증을 통과한 유저가 요청한 기능을 사용할 권한이 있는지 판별하는 것이다.
  • 과제에서 구현한 Middleware는 인증에 해당하나요? 인가에 해당하나요? 그 이유도 알려주세요. ⭐️ 해당 과제에서 Middleware는 인증과 인가 두가지에 모두 사용되었다. ⭐️ 회원가입, 로그인, 로그아웃, 인증 ⭐️ 내정보조회, 비밀번호 수정, 내정보 삭제(탈퇴), 내가 쓴 상품 수정, 상품 상품등록 에서는 인가로 사용되었다.

4. Http Status Code

  • 과제를 진행하면서 사용한 Http Status Code를 모두 나열하고, 각각이 의미하는 것어떤 상황에 사용했는지 작성해 주세요. ⭐️ (200) - 요청 성공 / (201) - 데이터 생성 성공 ⭐️ (400) - 요청에 빈칸이 있는 경우 / (401) - 잘못된 양식의 요청, DB에 존재하지 않는 데이터 요청 / (409) - 중복된 데이터가 있음 / (500) - 서버 오류

5. 리팩토링

  • MongoDB, Mongoose를 이용해 구현되었던 코드를 MySQL, Sequelize로 변경하면서, 많은 코드 변경이 있었나요? 주로 어떤 코드에서 변경이 있었나요? ⭐️ 주로 Sequelize 명령어를 바꾸는데에 코드 변경이 있었다. post 메소드에서 save -> create, get메소드의 find, filter -> findOne, findAll, put에서 updateOne -> update, delete에서 delete -> destroy로 변경하였다.
  • 만약 이렇게 DB를 변경하는 경우가 또 발생했을 때, 코드 변경을 보다 쉽게 하려면 어떻게 코드를 작성하면 좋을 지 생각나는 방식이 있나요? 있다면 작성해 주세요. ⭐️ 변경 전 코드를 충분히 이해하고 있어야 하고, 변경될 수 있는 코드들이 무엇인지 표시해두어야 한다.

6. 서버 장애 복구

  • 현재는 PM2를 이용해 Express 서버의 구동이 종료 되었을 때에 Express 서버를 재실행 시켜 장애를 복구하고 있습니다. 만약 단순히 Express 서버가 종료 된 것이 아니라, AWS EC2 인스턴스(VM, 서버 컴퓨터)가 재시작 된다면, Express 서버는 재실행되지 않을 겁니다. AWS EC2 인스턴스가 재시작 된 후에도 자동으로 Express 서버를 실행할 수 있게 하려면 어떤 조치를 취해야 할까요? (Hint: PM2에서 제공하는 기능 중 하나입니다.) ⭐️ PM2 Startup 기능을 사용한다.

7. 개발 환경

  • nodemon은 어떤 역할을 하는 패키지이며, 사용했을 때 어떤 점이 달라졌나요? ⭐️ 개발중에 nodemon을 사용하면 코드를 수정하고 매번 node app.js로 실행할 필요가 없이 적용되어 개발과정 중에 테스트하기가 편했다.
  • npm을 이용해서 패키지를 설치하는 방법은 크게 일반, 글로벌(--global, -g), 개발용(--save-dev, -D)으로 3가지가 있습니다. 각각의 차이점을 설명하고, nodemon은 어떤 옵션으로 설치해야 될까요? ⭐️ 일반 설치는 해당 프로젝트에서만 사용할 수 있다. ⭐️ 글로벌 설치는 시스템 전역에서 사용된다. ⭐️ 개발용 설치는 개발과정에서만 사용되는 도구나 라이브러리를 설치할때 사용된다.

About


Languages

Language:JavaScript 100.0%