쿠키는 웹 사이트에 방문했을 때, 브라우저를 통해 접속자의 컴퓨터에 보관하는 기록물이다.
예를 들어 페이스북은 쿠키를 활용해서 접속자가 페이스북 외에 어떤 사이트를 방문하고 인터넷에서 무엇을 하는지 관찰한다.
이 것이 가능한건 http 때문이다. http는 서버와 사용자가 인터넷에서 정보를 주고받기 위한 규칙인데, 이 http에서 서버와 사용자는 항상 연결되어 있지 않다는 특징이 있다(stateless). 즉, 정보를 주고받은 뒤에는 또다른 요청이 오기 전 까지 연결을 끊어두는 것이다. 그리고 다음 요청을 할 때 서버는 사용자에 대해서 전혀 기억하지 못한다. 하지만 가끔은 유저가 누군지 알아야 (회원인지 아닌지 정도는 알아야) 일처리를 해줄 수 있는 경우가 있다. 그래서 쿠키가 필요하다.
브라우저를 종료한 뒤 같은 사이트에 방문했을 때 로그인이 유지되는 경험, 언제 접속하던 한글번역 상태로 유지되는 영문 사이트 등이 바로 쿠키에 우리의 정보가 저장되기 때문이다.
쿠키에는 편의, 보안 등의 이유로 규칙이 존재한다.
그렇다면 위에서 말한 예시에서 페이스북은 어떻게 다른 사이트의 이용 기록을 쿠키를 통해 알 수 있는걸까?
페이스북과 전혀 상관없는 내 블로그에 "페이스북에 공유하기" 와 같은 버튼이 있고 누군가 그 버튼을 사용해 공유한다면? 내 블로그는 페이스북 서버와 연결되고, 페이스북은 사용자의 정보가 담긴 쿠키를 내 블로그로부터 얻게 되는것이다.
서버리스란 정말 서버가 없다는걸 의미하진 않는다. 다만 응당 있어야 할 물리서버 (컴퓨터)를 내 옆에 두는 대신 aws같은 클라우드로 옮기고, 그 서버의 운영체제, 보안, 데이터 백업 등등 소프트웨어 관리까지 맡기는 것이다.
이렇게 서버리스 서비스를 이용하면 우리의 서버에서 작동할 코드들은 항상 깨어있지 않고 잠을 잔다. 보통의 서버가 24시간 요청에 응답하기 위해 깨어있는 것과 차이가 있다. 그렇기 때문에 운영비용 측면에서 큰 이점이 있는 것이다. 하지만 24-7 요청대기를 하지 않기 때문에 실제 요청이 들어왔을 때 이를 알아차리고 잠에서 깨는 작업이 필요하다 (콜드스타트). 그렇기 때문에 응답속도 측면에서 약간의 손해가 있을 수 있다.