- 웹 애플리케이션에서 사용되는 데이터 저장 방식
웹 애플리케이션에서 사용되는 데이터 저장 방식으로는 쿠키, 세션, 토큰, 캐시가 있다.
1. 쿠키(Cookie)
웹 사이트에서 클라이언트의
웹 브라우저에 저장되는 작은 데이터 파일
쿠키는 서버에서 클라이언트(웹 브라우저)로 전송되어 클라이언트의 로컬에 저장되는 작은 데이터 조각이다. 클라이언트가 서버에 요청을 보낼 때마다 쿠키가 함께 전송되며, 서버는 이를 사용하여 클라이언트에게 적절한 응답을 제공한다. 쿠키는 만료 기간이 있으며, 만료되면 삭제된다.
예를 들어, 쇼핑몰 사이트에서 쿠키를 사용하여 로그인한 사용자를 인식하고, 사용자가 장바구니에 상품을 추가했을 때 그 정보를 저장할 수 있다.
2. 세션(Session)
서버 측에서 사용되는 데이터 저장 방식
서버는 클라이언트에게 세션 ID를 부여하고, 이 세션 ID를 사용하여 클라이언트와 서버 간의 상태를 유지한다. 클라이언트는 서버에 요청할 때마다 세션 ID를 전송하고, 서버는 이를 이용하여 클라이언트의 상태를 유지한다.
세션은 보안이 유지되어야 하는 정보를 저장하기에 적합하며, 만료 시간이 지나면 세션은 자동으로 삭제된다.
- 쿠키와 세션의 차이
쿠키는 클라이언트에 데이터를 저장하고, 세션은 서버에 데이터를 저장한다.
쿠키는 클라이언트 측에 저장되므로, 서버에 부담을 덜 줄 수 있기에 로그인 유지, 쇼핑카트 유지 등에 이용된다. 쿠키는 클라이언트 측에 저장되기 때문에 사용자의 브라우저에서 쿠키를 지웠을 때 로그인 정보도 사라지며, 클라이언트 측에서 수정이 가능하기 때문에 보안 측면에서 취약하다.
세션은 서버에 저장되므로, 클라이언트에서 세션에 대한 정보를 가지고 있지 않아 보안성이 높다. 또한 세션은 클라이언트가 브라우저에서 쿠키를 삭제해도 지워지지 않는다. 하지만 세션은 서버에 저장되기 때문에 서버에 부담을 줄 수 있다. 또한 여러 대의 서버를 사용할 경우, 세션 정보를 공유해야하는 문제가 있다.
따라서 상황에 따라 쿠키와 세션을 적절히 사용하는 것이 중요하다. 민감한 정보의 경우에는 세션을 사용하는 것이 좋으며, 그렇지 않은 경우에는 쿠키를 사용하는 것이 유리할 수 있다.
3. 토큰(Token)
사용자 인증을 위해 사용되는 데이터 저장 방식
클라이언트가 로그인을 하면, 서버는 사용자에 대한 정보를 포함한 토큰을 발급한다. 클라이언트는 이 토큰을 사용하여 서버에 인증 요청을 보내고, 서버는 이를 검증하여 해당 요청이 유효한지 확인한다. 토큰은 세션과 마찬가지로 서버에 저장되지 않으므로 보안성이 높다.
- 세션과 토큰의 차이
세션(Session)과 토큰(Token)은 모두 인증(Authentication)과 인가(Authorization)를 구현하기 위해 사용되는 방식이다. 하지만 그 구현 방식과 특징에서 차이가 있다.
세션은 서버(Server) 측에서 상태(State)를 유지하는 방식이다. 클라이언트(Client)가 서버에 요청(Request)을 보내면, 서버는 그 클라이언트에 대한 세션 정보를 생성하고, 이 세션 정보를 쿠키(Cookie) 등을 이용해서 클라이언트 측에 저장한다. 그 후에, 클라이언트가 다시 서버에 요청을 보낼 때마다 이 쿠키를 이용해서 세션 정보를 전송한다. 서버는 세션 정보를 이용해서 클라이언트가 누구인지 식별하고, 그에 대한 인증 및 인가 처리를 수행한다. 세션은 서버 측에서 상태를 유지하기 때문에, 보안성이 높고, 사용하기 쉽다. 하지만, 세션 정보를 저장하기 위해서는 서버 측에서 별도의 저장 공간을 마련해야 하기 때문에, 서버 자원의 소모가 발생할 수 있다. 또한, 서버가 여러 대일 경우, 세션 정보가 다른 서버에 저장될 수 있기 때문에, 세션 정보의 공유 문제가 발생할 수 있다.
토큰은 클라이언트 측에서 상태를 유지하는 방식이다. 클라이언트가 서버에 로그인(Login) 요청을 보내면, 서버는 해당 클라이언트에 대한 토큰(Token)을 생성하고, 이 토큰을 클라이언트에게 전송한다. 클라이언트는 이 토큰을 이용해서 인증 및 인가 처리를 수행한다. 토큰은 클라이언트 측에서 상태를 유지하기 때문에, 서버 측에서 상태를 유지할 필요가 없어서 서버 자원의 소모가 줄어든다. 또한, 여러 대의 서버에서도 토큰을 공유할 수 있기 때문에, 서버 확장성이 높아진다. 하지만, 토큰의 보안성이 떨어지기 때문에, 토큰을 사용할 때는 보안에 대한 고려가 필요하다.
4. 캐시(Cache)
데이터나 파일 등을 임시로 저장하여
빠르게 접근할 수 있도록 하는 기능
캐시는 반복적으로 사용되는 데이터나 작업 결과를 임시로 저장하여 빠른 접근을 가능하게 하는 메모리 영역이다. 캐시를 사용하면 데이터나 작업 결과를 매번 계산하거나 데이터베이스에서 읽어올 필요 없이 캐시에서 빠르게 결과를 가져올 수 있다.
캐시는 일반적으로 세션과 토큰과 함께 사용되어, 세션 정보나 토큰을 검증한 결과를 캐시에 저장하여 빠른 접근을 가능하게 한다. 캐시는 일정 시간 동안 저장되며, 만료되면 새로운 데이터를 가져와 새로운 캐시를 생성한다.