확장성은 JWT를 쓰는 이유가 못 된다

coding S's avatar
Apr 19, 2024
확장성은 JWT를 쓰는 이유가 못 된다
form 태그를 쓰게 되면, form 태그로 로그인 요청을 하지 자바 스크립트로 요청한게 아니다. 그럼 응답 시 JWT를 돌려준다한들 JWT를 로컬 스토리지에 저장할 수 없다. 로컬 스토리지에 저장할 수 없으니 JWT를 넣어놓고 요청 할 수 없다는 말! 즉, HTML 태그를 통해선 JWT를 어떻게 할 방법이 없다. 때문에

[ 모든걸 AJAX로 바꿔야 함. 그러나… ]

notion image
편하게 할 수 있는 SSR 프로젝트를... 굳이 JWT쓰려고 AJAX로 힘들게 바꿀 필요가 있을까? AJAX는 힘들기 때문에 그냥 세션 쓰면 된다. 근데 이러면 서버가 여러개로 늘어나니까 세션 관리가 안됨... (운 좋으면 로그인 되고, 운 좋으면 댓글썼던.. 그렇게 됨...) 레디스 쓰던가 스티키 쓰면 되지 ㅎ 했을 것이다. 그러나....
 

[ 브라우저를 제외한 모든 클라이언트들은 전부 json ]

notion image
클라이언트의 종류는 매우 많다. 브라우저, 키오스크, 자동차LCD, 휴대폰, 데스크탑APP(Slack 같은 것) 등등 이 중에서 '브라우저'만 html에 '세션'이길 바랄 것이고, '브라우저를 제외한 모든 클라이언트들은 전부 json'으로 돌려줘야함! (그림 그리는 도구가 다 따로이기 때문) 그럼 이건 브라우저용 서버, 이건 다른 애들 서버.. 하면서 서버를 따로 만들까? 번거롭게 굳이? 서버를 여러 개 운영하기보다는 하나의 서버에서 다양한 형식을 제공하는 것이 효율적이다. 그래서 다른걸 안 바꿔도 되니까 브라우저만 ajax로 사용하는... JWT을 브라우저에 서버 확장성이 좋다는 이유로 쓸 필요가 있을까? 세션은 확장성이 안늘어나나? 세션도 로드 밸런서의 스티키 세션이나, 세션을 공유하는 레디스 서버로 늘어납니다. 그러니까 확장성은 JWT를 쓰는 이유가 못된다구요
 

[ 그럼 JWT를 왜 썼나요? 세션 써도 되잖아요 ]

브라우저는 세션에 대한 프로토콜이 명확하게 있지만 (자동으로 일어남) 브라우저가 아닌 모든 클라이언트 프로그램들은 그 프로토콜이 없다. 그래서 괜히 스티키 세션이나 레디스로 갈 바에야 프론트는 여러가지니까 (다른 클라이언트 프로그램들은 여러가지니까) 편하게 JWT를 쓰는게 유리해서 사용하는 것이다. 브라우저 하나 때문에 JWT를 포기할 수 없었던 것임. 세션의 장점은 진짜.. 자동으로 세션 담아서 요청해주는 것. 딱 브라우저일 때 밖에 없다. 근데 브라우저가 아닌 모든 프로그램들은 개발자가 직접 만드는데, 그럴바엔 그냥 JWT가 훨씬 편하다. 서버 쪽으로 토큰 들고가서 토큰 검증만 하면 되니까 서버 확장도 더 편하고 낫다. 모든 프로그램이 json을 원하는데 브라우저만 세션바라기임 그래서 AJAX를 쓰는 것임. 근데 너무너무너무 힘드니까, 그래서 리액트로 만드는 것이다 (리액트가 다 ajax 기반) 그래서 서버는 그저 '자원을 전달해주는 프로그램'으로 끝나고, 클라이언트에서는 자바 스크립트로 HTML을 동적으로 생성하는 것. 뷰는 스스로 만들어라. html도 자바 스크립트로 스스로 만들면 되는 것 *자원 - 데이터 또는 기능 (JSON이나 XML 같은 형식으로 표현되는 데이터)
 

 
💡
로그인하면 토큰을 주는, JSON 웹 서버를 만들어서 프런트한테 주면 된다. 그 이후는 프런트가 알아서 할 것
 
Share article

codingb