(이것은 아마도 당신이 찾고있는 것 이상일 것입니다. 그러나 이미 좋은 답변을 추가하기위한 좋은 추가 정보가 필요할 수 있습니다. 게시 됨.)
모범 사례에 대해 언급 했으므로 세션 상태에 대한 아이디어를 좀 더 익히는 데 사용할 수있는 몇 가지 프로젝트/기술을 살펴볼 수 있습니다. 여러 서버에서 웹 응용 프로그램을 수평 적으로 확장하면 서버간에 세션 상태가 유지된다는 공통적 인 함정이 있습니다. (사용자 A는 사용자 세션을 저장하는 서버 A에 로그인하지만 다음 요청에서는 사용자 A 세션에 대해 알지 못하는 서버 B를 친다.)
나는 항상 나 자신에게 말하는 것을 끝내고있다. 그리고 동료들에게 그 자체로 세션은 본질적으로 데이터가 매우 일시적이더라도 데이터를 저장하는 최상의 장소가 아니라는 것입니다. 웹 서버는 데이터 저장소가 아닌 요청/응답 시스템입니다. 그것은 매우 전자에 조정되어 있지만, 항상 그렇게 큰 것은 아닙니다.
따라서 웹 서버와 다른 시스템에서 응용 프로그램의 세션 데이터 (또는 웹의 RESTful 무 상태 속성에서 실제로 최소한의 디자인으로 유지되어야하는 모든 상태 데이터)를 외부화하는 방법이 있습니다. Memcached은 이에 대한 매우 일반적인 도구입니다. SQL 또는 MySQL과 같은 데이터베이스에 세션을 저장하는 드롭 인 세션 대체 (또는 다양한 프레임 워크/환경에 대해 구성 가능한 세션 옵션)도 있습니다.
저는 최근에 세션 데이터 (No Transient Data)를 NoSQL 데이터베이스에 저장하는 방법을 모색 중입니다. CouchDB 및 MongoDB은 현재 나의 가장 좋은 선택이지만 다른 옵션은 부족하지 않습니다. CouchDB는 뛰어난 수평 확장 성을 가지고 있습니다. MongoDB는 완전히 메모리가있는 상태에서 실행되는 경우 매우 빠릅니다.
적어도 이와 같은 주요 이점 중 하나는 배치가 쉽게 비 이벤트가 될 수 있다는 것입니다. 주어진 서버의 웹 서비스는 다시 시작될 수 있으며 내부의 응용 프로그램은 상태 저장 데이터를 손실하지 않고 다시 초기화됩니다.데이터가 디스크에 지속되면 (즉, 메모리 내에서 완전히 실행되지 않는 경우) 서버를 손실하지 않고 재부팅 할 수 있습니다. 서버/서비스는 팜 안팎으로 떨어질 수 있으며 사용자는 차이를 알 수 없습니다.
또한이 데이터를 외부화하면 잠재적으로 유용한 방식으로 데이터를 분석 할 수 있습니다. 쿼리, 메트릭 실행, 다른 웹 응용 프로그램 또는 전적으로 오프라인 도구를 통한 인터페이스 등. 프로젝트가 복잡해지면서 실제로 옵션이 열립니다.
(다시 말하지만이 질문은 실제로 귀하의 질문에 대답하려는 것이 아니라 유용하다고 생각되는 정보를 추가하는 것입니다. 그것은 제 동료들과 제가 늦게까지 수정 한 것입니다. 귀하의 질문은 좋은 것 같았습니다. 그 곳을 언급하십시오.)
질문이 너무 많아 "모범 사례"답변을 얻지 못하십니까? –