슉슉슉 읽고 넘어가는 중...
22장. MongoDB
서버 개발 시 DB를 이용하면 웹 서비스에서 사용되는 데이터를 저장하고, 효율적으로 조회하거나 수정할 수 있다.
기존에는 대부분 MySPL, OracleDB, PostgreSQL 같은 관계형 데이터베이스를 사용했다.
하지만 요 녀석들의 단점은...
1. 데이터 스키마가 고정적
- DB에 들어갈 데이터 형식이 고정적이라 새로운 형식의 데이터가 추가되면 기존 데이터를 몽땅 수정해야 한다.
2. 확장성
- 저장, 처리할 데이터양이 늘어나면 여러 컴퓨터에 분산시키는 것이 아닌, DB 서버의 성능을 업그레이드하는 방식.
MongoDB는 이런 한계를 극복한 문서 지향적 NoSQL DB!
즉 데이터의 구조가 자주 바뀐다면 문서 지향적 DB가,
까다로운 조건으로 데이터를 필터링해야 하거나 DB 트랜잭션을 안전하게 처리하려 할 때는 관계형 DB가 유리하다!
23장, JWT를 통한 회원 인증 시스템
JWT는 JSON Web Token의 약자! 데이터가 JSON으로 이루어져 있는 토큰을 의미한다.
1) 세션 기반 인증과 토큰 기반 인증의 차이
1. 세션 기반 인증 시스템
요 녀석은 간단하게... 서버가 사용자가 로그인 중임을 기억하고 있다는 뜻!
사용자가 로그인을 하면, 서버는 세션 저장소에 사용자의 정보를 조회하고, 세션 id를 발급한다.
이 때 발급된 id는 브라우저의 쿠키에 저장!
이후 사용자가 다른 요청을 보낼 때마다,
서버는 세션 저장소에서 세션을 조회한 후 로그인 여부를 결정해 작업을 처리하고 응답을 보내준다.
세션 기반 인증의 단점은 서버 확장이 번거롭다는 점!
서버의 인스턴스가 여러 개가 된다면, 모든 서버끼리 같은 세션을 공유해야 하므로... 귀찮은 일이 많아진다.
2. 토큰 기반 인증 시스템
토큰은 로그인 이후 서버가 만들어 주는 문자열!
해당 문자열 안에는 사용자의 로그인 정보가 들어 있고, 해당 정보가 서버에서 발급되었음을 증명하는 서명이 들어있다.
(따라서 토큰은 정보가 변경되거나 위조되지 않았음을 증명해준다)
사용자가 로그인을 하면, 서버는 사용자에게 해당 사용자 정보를 지닌 토큰을 발급한다.
추후 사용자가 다른 API를 요청할 때 발급받은 토큰과 함께 요청!
서버는 해당 토큰이 유효한지 검사한 후, 결과에 따라 작업을 처리하고 응답한다.
토큰 기반 인증의 장점은 서버에서 사용하는 리소스가 적다는 점!
사용자 쪽에서 로그인 상태를 지닌 토큰을 가지고 있으므로, 서버의 확장성이 매우 높다.
'source-code > React' 카테고리의 다른 글
Insta 클론 코딩 _ 자잘자잘 에러 해결 (0) | 2021.03.29 |
---|---|
API 요청으로 데이터 사용하기 (0) | 2021.03.26 |
리액트를 다루는 기술 _ 21장 (0) | 2021.03.23 |
리액트를 다루는 기술 _ 19장, 20장 (0) | 2021.03.23 |
리액트를 다루는 기술 _ 17장 (0) | 2021.03.22 |