Frontend 프론트엔드

[ 7 ] 로그인 처리 과정

박민우_ 2024. 4. 1. 15:54

메모리 세션 사용

한계 : 사용자가 많아지면 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