CS 08 쿠키 세션

이상인·2023년 9월 4일
0

8. 쿠키, 세션의 개념과 차이를 설명해보세요

쿠키 (Cookies)

  • 쿠키는 클라이언트 측에서 저장되는 작은 데이터 조각입니다.
  • 이 데이터는 클라이언트와 서버 간의 요청 및 응답에서 전송됩니다.
  • 주로 사용자의 브라우저에 저장되며, 특정 도메인 또는 경로와 관련된 정보를 유지하는 데 사용됩니다.
    예를 들어, 로그인 상태, 장바구니 내용, 사용자 선호 설정 등을 저장하고 전송할 때 사용됩니다.
  • 쿠키는 클라이언트 측에서 관리되므로 서버에서 클라이언트에 데이터를 보내거나 클라이언트에서 서버에 데이터를 전송할 때 사용됩니다.

세션 (Session):

  • 세션은 서버 측에서 관리되는 클라이언트와 서버 간의 상태 정보입니다.
  • 클라이언트가 서버에 접속하면 서버는 클라이언트에 대한 고유한 세션 ID를 생성하고 이를 클라이언트에게 제공합니다. 클라이언트는 이 세션 ID를 쿠키 또는 URL 매개변수를 통해 서버에 다시 제공합니다.
  • 서버는 세션 ID를 사용하여 클라이언트의 상태 및 데이터를 유지하고 관리합니다. 세션은 서버 메모리, 데이터베이스 또는 외부 스토리지에 저장될 수 있습니다.
  • 주로 로그인 정보, 장바구니 내용, 사용자 상태 등을 저장하고 관리하는 데 사용됩니다.

차이점

위치 및 관리

  • 쿠키는 클라이언트 측에서 관리되며 클라이언트의 브라우저에 저장됩니다.
  • 세션은 서버 측에서 관리되며 서버 메모리나 데이터베이스에 저장될 수 있습니다.

용도

  • 쿠키는 주로 클라이언트 측에서 사용되며, 클라이언트가 서버에 데이터를 전송하거나 저장하기 위해 사용됩니다.
  • 세션은 주로 서버 측에서 사용되며 클라이언트의 상태 및 데이터를 관리하고 유지하기 위해 사용됩니다.

보안

  • 쿠키는 클라이언트 측에서 쉽게 수정될 수 있으므로 민감한 정보를 저장하기에는 적합하지 않습니다.
  • 세션은 서버 측에서 관리되므로 더 안전합니다.

무상태 기술의 등장배경

확장성

  • 초기 웹은 작고 단순한 웹 페이지로 시작했지만 시간이 흐름에 따라 웹 사용자와 트래픽이 급증했습니다.
  • 이로 인해 서버에 대한 부하가 증가했습니다. 무상태 웹은 각 요청이 독립적으로 처리되므로 서버 확장성을 향상시키고 대규모 트래픽을 처리할 수 있게 했습니다.

단순성

  • 무상태 웹은 각 HTTP 요청이 서로 독립적이라는 특성을 가지고 있습니다.
  • 이는 서버 및 클라이언트 코드를 단순하게 유지할 수 있으며, 각 요청은 이전 상태에 의존하지 않습니다.
  • 이러한 단순성은 웹 애플리케이션의 개발과 유지보수를 용이하게 만들었습니다.

부하 분산

  • 무상태 웹은 클라이언트 요청을 서로 다른 서버로 분산하여 부하를 분산시키기 쉽습니다.
  • 각 요청은 서버 상태에 관계없이 독립적으로 처리되므로 여러 서버에서 효율적으로 요청을 처리할 수 있습니다.

견고성

  • 무상태 웹은 서버나 애플리케이션 오류에 강합니다.
  • 하나의 요청이 실패하더라도 다른 요청은 영향을 받지 않으며, 오류가 발생했을 때 복구가 용이합니다.

클라이언트 독립성

  • 무상태 웹은 클라이언트와 서버 간의 통신을 단순하게 만들어 다양한 클라이언트(웹 브라우저, 모바일 앱, 웹 서비스 등)가 독립적으로 서비스에 접근할 수 있도록 합니다.

무상태 웹의 등장은 초기 웹에서 대규모 웹 애플리케이션과 서비스를 개발하고 운영하기 위한 필수적인 개념 중 하나로, 웹의 성장과 발전을 지원하는 역할을 하였습니다. 이러한 이유로 무상태 웹은 현대 웹 개발에서 중요한 개념 중 하나로 남아 있습니다.

무상태 기술의 등장배경

무상태 기술이 없었을 때, 웹 애플리케이션은 상태를 관리하고 유지하기 위한 다른 방식을 사용했습니다.
이러한 방식은 현재의 웹 환경과 비교하면 복잡하고 확장성이 부족한 단점을 가지고 있었습니다.
몇 가지 이전의 상태 관리 방식은 다음과 같습니다

서버 측 상태 관리

  • 초기 웹 애플리케이션은 서버 측에서 모든 상태 정보를 관리하는 경향이 있었습니다.
  • 예를 들어, 사용자 세션 데이터와 같은 정보를 서버 메모리에 저장하고 관리했습니다.
  • 이로 인해 서버가 사용자 수에 따라 과부하가 걸릴 수 있었고, 서버 확장이 어려웠습니다.

Hidden Fields (숨겨진 필드)

  • 상태 정보를 클라이언트 측으로 전달하기 위해 HTML 폼 내에 숨겨진 필드를 사용하는 방식이 있었습니다.
  • 이 방식은 간단하게 상태 정보를 전송할 수 있었지만, 보안 문제와 데이터 크기 제한으로 인한 한계가 있었습니다.

URL 매개변수

  • 상태 정보를 URL의 매개변수로 전달하는 방식도 사용되었습니다. 예를 들어, 세션 ID를 URL에 포함하여 상태를 유지하는 방식입니다.
  • 그러나 이 방식은 보안 문제와 사용자 경험 측면에서 적합하지 않았습니다.

쿠키 (Cookies)

  • 쿠키는 무상태 기술의 등장 이전에도 사용되었으며, 클라이언트 측에서 상태 정보를 저장하고 전송하는 데 사용되었습니다.
  • 그러나 쿠키를 사용하는 것만으로는 모든 상태 관리 문제를 해결하기 어려웠습니다.

이러한 방식들은 복잡하고 확장성이 부족하며 보안과 프라이버시 문제를 야기할 수 있었습니다.
무상태 기술의 등장은 이러한 문제를 해결하고 웹 애플리케이션의 발전과 확장성을 가능하게 하였습니다.
그 결과, 현대의 웹 애플리케이션은 무상태 기술을 기반으로 개발되며 사용자 경험과 안정성을 향상시키는 데 큰 역할을 합니다.

0개의 댓글