개요
이번 글에서는 세션 클러스터링(session clustering) 구축을 다룬다. IBM WAS ND v7으로 서버 클러스터링을 구축하면 서버를 병렬로 구성해 성능을 높일 수 있으며 서버 장애에 대처도 할 수 있다. 여기서 한 가지 생각해 볼 것이 있는데 바로 애플리케이션에서 세션 클러스터링을 사용할 경우다. 서버 클러스터링만을 구축했다면 병렬로 위치된 다른 서버 덕에 서비스는 지속할 수 있지만 세션 클러스터링을 보존하고 다른 서버로 넘겨줄 수 있는 방법이 없기 때문에 장애가 생기면 세션 클러스터링을 소실할 수밖에 없다.
여기서 좀 더 이해하기 편하도록 잠시 세션 클러스터링 이야기를 하고 넘어가겠다. 세션 클러스터링은 이미 잘 알겠지만 WAS 서버 단에서 클라이언트의 연결 정보나 상태를 가지고 있는 객체(object)다. 인터넷 쇼핑몰 등에서 자주 볼 수 있는 장바구니를 생각하면 이해하기 편한데, 한번 로그인하면 장바구니에 상품을 넣어두었다가 브라우저를 닫고 다시 접속해도 장바구니 페이지를 보면 장바구니가 비어 있지 않고 내가 주문한 상품들을 장바구니에서 계속 확인할 수 있다. 이것이 바로 세션 클러스터링을 이용한 것이다.
즉, 세션 클러스터링은 클라이언트가 접속하면 클라이언트 정보를 서버에 있는 세션 클러스터링 객체에 저장해 두고 똑같은 클라이언트가 접속하면 해당 세션 클러스터링을 계속 사용할 수 있게 해서 상태가 저장되지 않는(stateless) HTTP의 한계성을 극복하고 계속적으로 여러 요청에 대해 클라이언트가 마치 자신의 상태를 보존하는 것처럼 보여주는 기술이다.
애플리케이션에 대한 세션 클러스터링은 서버에 생성되기 때문에 서버 장애가 나면 클라이언트 상태를 저장해 둔 세션 클러스터링을 잃어버리게 된다. 그 말은 결국 장바구니에 넣어놓은 상품을 다 잃어버리는 일이 발생할 수 있다는 것이다.
장바구니는 어느 정도 괜찮지만 돈에 관련된 정보라면 피해가 클 것이다. 이를 막기 위해 WAS에서는 세션 클러스터링 기능을 제공한다. 세션 클러스터링 기능이란 세션 클러스터링을 해당 서버에만 보존하는 것이 아니라 이웃한 다른 서버나 세션 클러스터링 서버, DB에 저장하여 장애가 발생하면 저장된 위치에서 세션 클러스터링을 복구하여 다른 서버로 처리되는 경우라도 같은 세션 클러스터링을 유지하여 장바구니에 넣어놓은 상품을 그대로 다 볼 수 있는 기능이다.
댓글 없음:
댓글 쓰기