대용량 트래픽일 때 JWT 블랙리스트 방식 vs 세션 방식 중 어느 방식이 트래픽 처리하기에 유리함?
그래도 JWT 블랙리스트가 나을거 같긴한데 실제 대용량 트래픽을 다루는 회사에서 어떤지가 궁금함 ㅇㅅㅇ
그리고 결국 JWT 블랙리스트까지 구현하면 세션이랑 본질적으로 차이가 없는게 맞지 않나??
한국 블로그보면 헛소리만 해서 제대로 알기가 힘듬 뭐 보안이니 팩트로 알려주셈
대용량 트래픽일 때 JWT 블랙리스트 방식 vs 세션 방식 중 어느 방식이 트래픽 처리하기에 유리함?
그래도 JWT 블랙리스트가 나을거 같긴한데 실제 대용량 트래픽을 다루는 회사에서 어떤지가 궁금함 ㅇㅅㅇ
그리고 결국 JWT 블랙리스트까지 구현하면 세션이랑 본질적으로 차이가 없는게 맞지 않나??
한국 블로그보면 헛소리만 해서 제대로 알기가 힘듬 뭐 보안이니 팩트로 알려주셈
무서운사실 네이버 메인은 세션이다
그니까 더 궁금해 어떤 대기업은 세션이고 어떤 대기업은 JWT인데 트래픽 처리에 어떤게 유리 방식이 유리한건지, 본질적으로 블랙리스트까지 구현하면 차이가 없는거 같은데 어떤 차이가 있는건지 모르겠네
보안이나 Statefull, less이런 개소리는 ㄴㄴ
내생각은 극한으로 갈수록 jwt가 이점이 많지만 마이크로 서비스 여러개 만드는 상황이 아니라면 세션과 그걸 커버하는 약간의 돈정도로 충분한듯 트래픽이 더 들어오면 세션으로는 더 비싸지니깐
세션을 redis로 관리하면 충분히 성능 나옴
ㅇㅇ 안해봤지만 대충 그런방식으로 할것 같다고 추측은됨
세션이 더 빠르긴 할거같아 토큰 검증 비용이랑 블랙리스트 비용이 있으니까 근데 진짜 세션이 더 빠를까?
빠르고 느리고는 1리퀘스트에 차이 나봤자 얼마나 나겠어 요청 많이 쌓여야 의미가 있는거라고생각함
블랙리스트 끼워넣는다고 세션이랑 왜 본질적으로 차이가 없어 임마
무슨 차이가 있는거지?
o(n)인데 n 차이가 나지않나 - dc App
그래서 글에 썼잖아 속도 차이를 제외하고 본질적으로 무슨 차이가 있냐고
개인적으로는 큰 차이 없다고 느낌. 보통 JWT는 토큰 페이로드 추출만 하면되서 DB 커넥션이 필요없고, 세션은 DB(인메모리 포함) 등에 접근해야하니까 DiskIO + NetworkIO 비용 때문에 어쩌고 이렇게 설명하긴하는데
ㄹㅇ 저대로 차이나려면 트래픽 때려죽일 정도로 받아야됨
왜냐면 MSA 구조 적용하다보면 결국 API Gateway를 쓰게 될건데, 여기서 클라이언트에 대한 인증 정보를처리하게 되면, 각 방식의 장단점은 위에 쓴거랑 똑같이 가져가지만, 확장성 측면에선 별 차이가 없게됨. 보통 레디스같은 스토리지를 세션 저장소로 쓰게되면 DiskIO 는 없어지고, Network IO 만 생기는거니까 속도도 큰 문제 없고 확장성도 크게 문제가 없거든. 결국 API Gateway에서 약간의 Network IO로 인한 IO Bound가 생긴다 정도고 이 조차도 비동기 처리 때문에 서버쪽 입장에서 보면 큰 문제가 아님.
그러면 JWT를 왜 쓰는거지? 쓰는놈들은 븅신임??
트래픽을 때려 죽일 정도로 많이 받으면 차이가 나긴해?
취준생이 JWT 쓰면 븅신이라고 세션이 훨씬 구현하기도 쉬운데 왜 JWT 쓰냐고 ㅋㅋ
잘 모르고 그냥 남들 다 JWT 쓰니까 쓰는거지
왜 JWT를 쓰냐면, 무상태라는 그 특성 자체가 매우 편리하기 때문. 세션을 API Gateway에서 처리한다고 쳐도, 결국 세션을 저장/조회하기 위한 인프라가 하나 더 추가되는거잖아. 이게 관리포인트가 하나 늘어나는거고, API Gateway 자체에도 의존성이 생겨버리니까 장애포인트도 늘어남. 단순 트래픽 측면에서보면 어지간한 규모에서는 유의미하게 큰 차이가 생기진 않겠지만, 이런 사소한것들이 결국 전체 시스템의 신뢰도와 운영 비용에 영향을 미치기 때문임. 세션이 필요한 경우엔 세션도 쓰고, 그런거 필요없으면 JWT 쓰면된다.
근데 블랙리스트까지 구현하면 어차피 블랙리스틀 관리하기 위한 인프라가 추가되어야 하지 않아?
님 말 제가 올바로 이해한거 맞다면 어지간한 트래픽에선 큰 차이가 없어서 세션 레디스 하지만 사소한게 중요한 시점에서는 jwt 하지만 그래봤자 jwt도 토큰 인증을 위한 서버가 수평적으로 확장은 불가능해서 확장성은 x 장단점은 그대로 가져감
블랙리스트는 Refresh Token을 대상으로 운용하는거잖아. 이건 API Gateway에 대해 의존성이 생기는게 아니라 토큰 발급을 담당하는 서비스(인증 서비스) 에 의존성이 생기는거지. API Gateway같은 부분에 의존성이 생기는게 아님. 한 서비스 내로 장애 포인트가 격리되는거야.
아 이해했음 ㄱㅅㄱㅅ
JWT는 확장성에서 훨씬 유리하다는 소리임. 지금 말하느 간단한 예제에서 조차 가령 트래픽이 존나게 많아져서 API Gateway 자체도 늘어나고 그만큼 API Gateway <-> 세션 스토리지간 커넥션이 늘어나면 세션 스토리지 인프라도 키워야 API Gateway도 정상적으로 동작하겠지? 반대로 JWT를 쓰는 경우엔 그냥 API Gateway만 늘리면 됨.
JWT를 사용하는 가장 큰 이유는 확장성 측면이 전부야?? 왜 이렇게 자세하게 알음? 인증 / 인가팀에서 일함?
걍 좆병신 회사에서 프로젝트 밑바닥부터 만들다보니 인증/인가를 만들어보기도 했고, 키클록이나 Auth0 같은 외부 서비스 써보면서 느낀것들로 내가 내린 결론임 그냥. 어지간한 MAU에서는 솔직히 MSA 필요도 없고, MSA할만한 인력도 충분히 안되는데 MSA해서 개지랄나본 경험도 있다보니 내가 느낀거 적은거임
매 요청마다 조회하기 vs 5분에 한 번 조회하기 라는 글을 어디서 본 적이 있긴한데
이것도 케바케임. 보통 세션이 필요한 엔드포인트들에 대해서만 세션을 처리하는거지 무지성으로 다 체크하면 걍 무지성 JWT쓰는게 나음
시간복잡도가 같더라도 상수를 존나게 크게 줄여서 이득보는 그런느낌