본문 바로가기

Web5

다중 서버 환경에서 Session은 어떻게 공유하고 관리할까? - 4편(Redis vs Memcached) 개요 지난 시간 세션 저장소로 In-Memory Database를 사용하기로 하였습니다. 하지만, In-Memory Database에는 다양한 데이터베이스들이 존재합니다. 각각의 데이터베이스는 저장하는 데이터의 형태 및 특성에 따라 분류됩니다. 과연 세션 객체를 저장하기 위해서 어떤 데이터베이스가 적합할까요? 지금부터 어떤 데이터베이스에 세션을 저장하는 것이 적합할 지에 대해 하나하나 알아보도록 하겠습니다! 세션 객체는 어떤 형태로 구성되어 있을까? 데이터베이스를 선정하기 전에 어떤 형태의 데이터가 저장되는지가 중요하다고 언급하였습니다. 그렇다면 우리가 저장해야 할 데이터인 세션 객체가 어떤 형태로 구성되어 있는지 알아야겠죠? 우선, 세션 객체에 대해서 간단히 알아봅시다. 세션 객체는 Key에 해당하는 .. 2020. 7. 8.
다중 서버 환경에서 Session은 어떻게 공유하고 관리할까? - 3편 (Disk based database vs In-Memory database) 개요 지난 시간 다중 서버 환경에서 별도의 세션 스토리지를 구성하여 정합성 이슈를 해결하기로 하였습니다. 여기서 생각해볼 문제가 있습니다. 웹 서비스의 특성상 대부분의 요청은 인가된 사용자가 보내는 요청인지 확인하는 절차가 선행되어야 합니다. 즉, 대부분의 요청에서 로그인한 사용자인지 아닌지 확인하기 위해 매번 세션 스토리지를 방문해야 합니다. 이러한 특성을 고려한다면 세션 스토리지를 선정할 때, 성능에 영향이 미치지 않도록 빠르게 데이터를 찾아서 제공할 수 있는 데이터베이스를 사용해야 하겠죠? 지금부터 어떠한 데이터베이스가 세션 스토리지에 적합한지 알아보겠습니다. 매번 왕복하기에 디스크는 너무 느린걸? 데이터베이스는 데이터가 어느 곳에 저장이 되는가를 기준으로 디스크 기반의 데이터베이스와 In-Memo.. 2020. 6. 27.
다중 서버 환경에서 Session은 어떻게 공유하고 관리할까? - 2편(Sticky Session, Session Clustering, Session Storage 분리) 개요 지난 시간에 서버의 성능을 업그레이드하는 두 가지 방법을 알아보았습니다. 그중 스케일 아웃을 하면 여러 대의 서버가 각각 세션 저장소를 독립적으로 갖게 되므로 정합성 이슈가 발생하였습니다. 이번 시간에는 스케일 아웃을 하였을 때 세션을 어떻게 공유하여 정합성 이슈를 해결하는지에 대해 알아보겠습니다. Multi Server 환경에서 Session이 어떻게 구성되는지 다시 한번 볼까요? 보시는 바와 같이 세션은 서버 1대에 하나의 저장소가 형성됩니다. 지난 시간에 알아보았듯이 나누어진 세션 저장소에 대한 별도의 처리가 없다면 각각의 세션들은 정합성 이슈를 발생시킵니다. 위 그림처럼 여러 대로 나뉜 서버가 하나의 서비스를 운영하기 위해서는 4개의 분리된 세션을 하나의 시스템처럼 동작하게 하거나, 고정된 .. 2020. 6. 17.
다중 서버 환경에서 Session은 어떻게 공유하고 관리할까? - 1편 (Scale-Up / Scale-Out이란?) 개요 지난 시간 세션과 쿠키를 이용한 로그인에 대해 알아보았습니다. 이러한 개념을 바탕으로 로그인 기능 개발을 들어가기 전에 생각해볼 문제가 생겼습니다. 현재 프로젝트의 사용자가 많아져서 가용 중인 서버로 수많은 클라이언트들을 감당할 수 없는 환경에 이르면 어떻게 해야 할까요? 지금부터 서버가 대량의 트래픽을 해결하는 방법에 대해서 알아보겠습니다. Scale-Up / Scale-Out에 대해 알아보자! 스케일 업이란 단일 서버(하드웨어)의 성능을 증가시켜서 더 많은 요청을 처리하는 방법을 의미합니다. 즉, 단일 하드웨어의 성능을 높이기 위해 CPU, 메모리, 하드디스크 등을 업그레이드하거나 추가하는 것을 의미합니다. 반면, 스케일 아웃은 동일한 사양의 새로운 서버를 추가하여 성능을 증가시키는 방법을 말합.. 2020. 5. 25.