메모리 세션 사용
한계 : 사용자가 많아지면 scale-up ( 메모리 사양 업그레이드 ) 이나 scale-out ( 추가 백엔드 서버 설치 )을 해야한다.
극복방안 : scale- out 방식 사용
scale-out 방식
한계 : 로그인한 유저가 다시 접속했을 때 다른 백엔드 서버로 연결된다면 로그인 정보가 없어서 로그인이 풀린다. ( stateful 상태 )
극복방안 : 데이터베이스에 세션 테이블을 만들고 저장한다 ( stateless 상태 )
세션 테이블 ( stateless )
한계 : DB의 병목현상이 발생한다 ( aka. 느려진다 ) . Scale-out 방식은 너무 복잡하다
해결방안 : scale-up 방식을 사용하거나 샤딩 방식을 사용한다
샤딩은 수평 파티셔닝의 일종이다
수평적 파티셔닝 : 동일한 DB 서버 내에서 테이블을 분할하는 것이다
샤딩 : DB 서버를 분할하는 것이다
샤딩 + 세션 테이블 방식
한계 : DISK Input / Output DISK I / O 시간 이 소요된다 .
해결방안 : RAM 인 Redis 를 이용한다.
Redis 사용
한계 : Redis는 비용이 많이 든다 .
해결방안 : Redis 없이 JWT를 이용해서 로그인을 처리하기도 한다
JWT 토큰 방식 ( Json Web Token )
나중에 중복로그인 방지 , 토큰해킹 방어등을 위해서 Redis가 필요하긴 하다.
** 주의 : JWT 토큰은 누구나 복호화가 가능하다. 암호화화 복호화를 하는 이유는 내용을 숨기기 위함이 아니라 내용이 변조되었는지를 확인하기 위함이다.
728x90
'Frontend 프론트엔드' 카테고리의 다른 글
[ 9 ] 리액트와 컴포넌트 feat. 함수형 컴포넌트 와 클래스형 컴포넌트 (0) | 2024.06.09 |
---|---|
[ 8 ] JWT (0) | 2024.04.01 |
[ 5 ] flex 속성 정리 1편 (1) | 2024.03.22 |
[ 4 ] [ 실습 ] CSS-IN-JS 실습 (emotion) (0) | 2024.03.20 |
[ 3 ] emotion JSX 와 CSS-IN-JS (0) | 2024.03.19 |