2011-04-09 2 views
0

고객 경험이 중단되지 않도록 새 코드를 프로덕션 환경에 배포하는 방법은 무엇입니까?배포 도중 고객 중단 최소화

세션 상태가 공유되지 않는로드 균형 환경에있는 전자 상거래 웹 사이트를 가정 해 보겠습니다. Tomcat은 응용 프로그램 서버입니다.

내가 생각해 낼 수있는 유일한 아이디어는 (1) JavaRebel을 사용하는 것입니다.하지만이 작업에 대한 경험이 없으며 무엇이 잘못 될지 모릅니다 (예 : 세션 개체가 일치하지 않습니다. 예를 들어 클래스) (2) 사용자가 쇼핑 경험에있는 곳을 실시간으로 모니터링하고 새 항목이 장바구니에 추가되지 않도록합니다. 기존의 모든 구매자가 주문을 완료하거나 만료 될 때까지 기다리십시오. 그런 다음 서버를 끄고 새 코드를 배포하십시오.

아이디어가 있으십니까? 아니면 테라코타 같은 것으로 웹 서버간에 세션 데이터를 공유하는 것이 중요한 상황입니까? 그런 다음 세션의 객체 멤버가 제거되었거나 추가 된 웹 서버에 새로운 코드를 어떻게 배치합니까?

+0

이 질문에 대한 답변을 닫기를 요청하는 사람들에게 어떻게 주제가 있습니까? FAQ는 "프로그래밍 전문인들만의 문제"에 대해 질문 할 수 있다고 말합니다. – Bradford

+0

닫을 투표를하지는 않았지만 배포는 대개 개발자가 아닌 sysadmin/작업의 관심사이므로 서버 오류가 더 적절할 수 있습니다. – SimonJ

답변

1

일반적인 접근 방식은 한 번에 하나의 서버를로드 균형 조정 풀 밖으로 가져 와서 새 코드를 배포 한 다음 다시 풀에 배치하는 것입니다. 내가 본

+0

하지만이 방법을 사용하면 사용자가 맹목적으로 세션 정보가없는 다음 사용 가능한 웹 서버로 이동할 수 있습니다. – Bradford

2

일반적인 접근 방법 :

  • 많은 상태는 쿠키에, 클라이언트 측을 저장 한 후가 아니라면 -이 또한 요청이 더 고르게 분포 할 수 있도록 IP 선호도를 필요로하지 않는 장점이 있습니다
  • 공유 스토리지 (등 DB, 테라코타,) - 분명이 조용한 시간에 병목 현상을
  • 배포 될 수 있으며, 희망 아무도, 다음 로그를 모니터링하고 기다릴 새 세션 풀에서
  • 제거 서버를 통지하지 죽기를 요구하다
관련 문제