분류 전체보기
다중 서버 환경에서의 세션 불일치 문제와 해결 방법
다중 서버 환경에서의 세션 불일치 문제와 해결 방법
2023.06.16다중 서버 환경에서의 세션 불일치 문제와 해결 방법 세션 불일치 문제는 단일 서버 환경에서는 발생하지 않으므로 따로 걱정하지 않아도 된다. 하지만, 최근 웹 서비스는 대부분 수직 확장(Scale Up)이 아닌 수평 확장(Scale out) 으로 서버를 확장하기 때문에 일반적으로 다중 서버 환경일 것 이다. 이런 다중 서버 환경에서는 세션 불일치 문제가 발생할 수 있다. 기본적으로 세션은 서버의 메모리(RAM)에 저장되기 때문이다. 예를 들어, 우리가 서버를 수평적으로 확장하기 위해 A, B, C 총 3대의 서버를 설치했다고 가정하자. 이때, 로드 밸런서는 유저의 요청이 들어올 때 마다 A -> B -> C -> A ... 순서대로 요청을 분산 한다고 가정하자.(이를 라운드로빈 방식이라고 한다.) 가운데 ..
세션 기반 인증과 토큰 기반 인증(feat. Authentication 과 Authorization)
세션 기반 인증과 토큰 기반 인증(feat. Authentication 과 Authorization)
2023.06.16인증과 인가 세션기반 인가와 토큰기반 인가에 대해 알아보기 이전에 먼저, 인증과 인가가 무엇인지 부터 알아야 할 필요가 있다. 인증과 인가를 같거나 비슷한 개념이라고 생각하는 사람들이 많을텐데, 엄밀하게는 서로 다른 개념이다. 인증과 인가는 요약하자면 시스템의 자원을 적절하고 유효한 사용자에게 전달하고 공개하는 방법이다. 인증(Authentication) 인증은 쉽게 말하자면, 로그인 이다. 클라이언트가 자기자신이라고 주장하고 있는 사용자가 맞는지를 검증하는 과정이다. 예를 들어 로그인 화면에서 내가 유저 아이디를 USER1 로 입력하고 패스워드를 입력해 제출하면, 서버에서는 내가 진짜로 USER1 이라는 유저가 맞는지 확인한다. 인가(Authorization) 인가는 인증 작업 이후에 행해지는 작업으로..
쿠키와 세션 (feat. HTTP의 Connectionless 와 Stateless)
쿠키와 세션 (feat. HTTP의 Connectionless 와 Stateless)
2023.06.16HTTP의 Connectionless와 Stateless HTTP는 요청과 응답을 한번 주고받으면 바로 연결을 끊어버리는 특성을 가지고 있다. 그리고 다음 요청을 하기 위해 다시 연결을 맺어야 한다. 이를 HTTP의 Connectionless(비연결성) 라고 한다. 또한 HTTP 프로토콜은 요청과 응답을 교환하는 동안 상태(Status)를 저장하지 않는다. 따라서 HTTP 레벨에서는 이전에 보냈던 request나 response를 기억하지 못한다. 즉, HTTP 요청은 직전의 요청과 전혀 관련이 없다. 이를 HTTP의 Stateless(비상태성) 라고 한다. HTTP가 상태를 갖지 않음으로서 연결을 맺을 때 발생하는 오버헤드가 줄어들고, 데이터를 빠르고 확실하게 처리할 수 있다. 또한 요청간의 상태를 공..
JWT 직접 만들어보며 이해하기
JWT 직접 만들어보며 이해하기
2023.06.15JWT 직접 만들어보며 이해하기 본 포스팅에서는 JWT의 정의, 구조, 원리 등을 알아보며 실습을 통해 '라이브러리 없이' 직접 JWT를 생성하고 해독해본다. 1. JWT에 대하여 1-1. JWT의 정의 Json Web Token의 줄임말이다. RFC 7519 에 명세되어 있는 국제 표준으로써, 통신 양자간의 정보를 JSON 형식을 사용하여 안전하게 전송하기 위한 방법이다. JWT는 정보가 토큰 자체에 포함된 (Self-Contained)클레임(Claim)기반 토큰이다. JWT는 인증(Authentication) 과 권한부여(*인가)(Authorization) 에 사용되는 것이 가장 일반적이다. 인증 절차를 거쳐 서버에서 JWT를 발급해주면, 클라이언트는 이를 잘 보관하고 있다가 API 등을 사용할 때에..
Blocking과 Non-Blocking, Sync와 Async 그만 헷갈리기
Blocking과 Non-Blocking, Sync와 Async 그만 헷갈리기
2023.06.12Blocking과 Non-Blocking, Sync와 Async 그만 헷갈리기 OS를 공부하면서 Blocking과 Non-Blocking, Sync와 Async 개념을 이해했었는데, 다시 떠올려보니 너무 헷갈렸다. 특히 둘을 섞어서 생각해보면 더 혼란스러워졌다. 헷갈리는 것을 찾아보다가, 우연히 보게 된 좋은 예시가 있어서 정리해두고자 한다. 사무실에 있다. 복합기를 사용해서 스캔을 뜨고싶다. 그런데 문서의 양이 많아서 시간이 좀 오래걸린다. 10분 이상 걸린다고 가정하자. 복합기의 시작 버튼을 눌렀다. 그리고 그 앞에서 스캔이 완료될 때까지 하염없이 기다렸다가 스캔 된 파일 결과물을 갖게 된다면, 이것은 Blocking 이다. 10분은 아무것도 안하기에는 꽤 긴시가이다. Blocking 방식에는 다른 ..
[백준] 9372번 상근이의 여행 (feat. 그래프 이론, 최소 신장 트리)
[백준] 9372번 상근이의 여행 (feat. 그래프 이론, 최소 신장 트리)
2023.04.11https://www.acmicpc.net/problem/9372 문제 분석 첫 번째 단계(문제 요약 및 조건 파악) - 문제 요약 N개의 국가를 여행하려고 함. 비행 스케줄이 주어졌을 때, 가장 적은 종류의 비행기를 탈 수 있도록 하는 프로그램을 작성할 것. 한 국가에서 다른 국가로 이동할 때, 다른 국가를 겨쳐 가도됨. - 입력 첫 번째 줄에는 테스트 케이스의 수 T(T