분산 환경

많은 트래픽과 데이터를 처리하기 위해 여러 개의 서버와 데이터베이스를 두어 분산 처리, 저장을 하는 방식이다. 최근 등장하는 대부분의 서비스들은 분산 환경이다. 로드밸런서를 통해 각각의 서버에 트래픽을 분산하여 처리한다.

웹 어플리케이션에서의 세션

웹 어플리케이션에서 세션은 사용자의 상태를 유지하기 위해 사용된다. 사용자가 로그인하면, 서버는 그 사용자의 정보를 세션에 저장한다. 이렇게 저장된 세션 정보는 사용자가 서버와 연결된 상태임을 나타내며 서버는 세션 정보를 이용하여 접근 제어, 사용자 정보 재사용 등에 사용할 수 있다.

분산 환경에서의 세션 관리

분산환경에서는 같은 사용자의 요청이더라도 하나의 서버에서 처리하는 것이 아닌 다른 서버에 분산되어 처리될 수 있다. 즉, 최초 로그인한 서버만이 세션 정보를 저장하고 있기 때문에 다른 서버에서는 해당 세션 정보에 대해 알지 못한다. 때문에, 분산환경에서 세션 정보를 관리하기 위해서는 외부 세션 스토어를 사용하여 관리하게 된다.

Redis를 이용한 세션 스토어

Redis를 이용하여 세션 스토어를 관리하면 많은 이점이 있다.

Redis를 사용한 세션 스토어 구현

분산 시스템을 간단하게 구현하기 위해 8080, 8081 2개의 포트를 사용하여 서버를 구동한다.

내부 세션 방식

HashMap<String, String> sessionMap = new HashMap<>();

    @GetMapping("/login")
    public String login(HttpSession httpSession, @RequestParam String name){
        sessionMap.put("name", name);
        return "saved.";
    }

    @GetMapping("/get-session")
    public String getSession(){
        return sessionMap.get("name");
    }

서버 내부에 세션스토어를 구현할 경우 다른 서버에서는 해당 세션에 대한 데이터에 접근할 수 없다.