Computer >> 컴퓨터 >  >> 프로그래밍 >> Redis

Upstash Redis로 Laravel 세션 관리 성능 향상하기

HTTP는 본질적으로 무상태(stateless) 프로토콜입니다. 즉, 서버로 전송되는 모든 요청은 서로 독립적이며, 이전 요청에 대한 어떠한 정보도 유지하지 않습니다. 하지만 로그인 정보나 사용자 환경설정처럼 사용자별 데이터를 여러 요청에 걸쳐 저장해야 하는 동적 웹 애플리케이션을 개발할 때는 이 특성이 큰 걸림돌이 됩니다. 이러한 한계를 극복하기 위해 웹 애플리케이션은 세션(Session)을 활용해 요청 간에 데이터를 저장하고 조회합니다.

가장 널리 사용되는 PHP 프레임워크 중 하나인 Laravel은 이러한 상태 기반 요구사항을 처리하기 위해 유연하고 강력한 세션 관리 시스템을 기본 제공합니다.

Laravel의 기본 세션 드라이버는 SQLite 데이터베이스를 사용하지만, 파일, 데이터베이스, Memcached 등 다양한 드라이버를 지원하며, 그중에서도 Redis는 성능과 확장성 면에서 가장 뛰어난 선택지 중 하나입니다.

이 글에서는 Laravel에서 Redis를 세션 드라이버로 설정하여 애플리케이션의 성능과 확장성을 높이고, HTTP의 무상태 한계를 극복하는 방법을 살펴보겠습니다.

1. Upstash에서 데이터베이스 생성하기

Upstash Redis는 완전관리형 서버리스(serverless) Redis 호환 서비스로, 몇 초 만에 데이터베이스를 구축할 수 있습니다. 넉넉한 무료 티어(free tier)를 제공하기 때문에 부담 없이 다양한 기능을 직접 체험해볼 수 있습니다.

먼저 Upstash 공식 사이트에서 무료 계정에 가입한 뒤, Redis 호환 데이터베이스를 생성합니다.

Upstash Redis로 Laravel 세션 관리 성능 향상하기

2. Laravel 설정하기

Redis 데이터베이스 생성이 완료되었다면, 이제 Laravel이 해당 데이터베이스를 세션 드라이버로 사용하도록 설정해야 합니다.

Upstash 콘솔의 Connect to your database 섹션에서 .env 파일에 바로 적용할 수 있는 설정값을 확인할 수 있습니다.

Upstash Redis로 Laravel 세션 관리 성능 향상하기

제공되는 설정값은 대략 다음과 같습니다:

REDIS_HOST="tls://nearby-lioness-11228.upstash.io"
REDIS_PORT=6379
REDIS_PASSWORD="********"
 
# Upstash Redis를 캐시 스토어로 사용하려면 아래 두 줄의 주석을 해제하세요:
#CACHE_STORE="redis"
#REDIS_CACHE_DB="0"
 
# Upstash Redis를 세션 드라이버로 사용하려면 아래 줄의 주석을 해제하세요:
#SESSION_DRIVER="redis"
 
# Upstash Redis를 큐(Queue) 연결로 사용하려면 아래 줄의 주석을 해제하세요:
#QUEUE_CONNECTION="redis"

설정은 거의 완료되었습니다. 이제 .env 파일에서 SESSION_DRIVER 항목의 주석만 해제하면 모든 준비가 끝납니다.

REDIS_HOST="tls://nearby-lioness-11228.upstash.io"
REDIS_PORT=6379
REDIS_PASSWORD="********"
 
# Upstash Redis를 캐시 스토어로 사용하려면 아래 두 줄의 주석을 해제하세요:
#CACHE_STORE="redis"
#REDIS_CACHE_DB="0"
 
# Upstash Redis를 세션 드라이버로 사용하려면 아래 줄의 주석을 해제하세요:
SESSION_DRIVER="redis"
 
# Upstash Redis를 큐(Queue) 연결로 사용하려면 아래 줄의 주석을 해제하세요:
#QUEUE_CONNECTION="redis"

완성되었습니다! 이제 애플리케이션을 실행하면 Laravel이 자동으로 Upstash Redis를 세션 드라이버로 사용합니다.

마무리

이번 글은 짧았지만, 그만큼 Laravel과 Upstash Redis를 세션 드라이버로 통합하는 작업이 얼마나 간단한지 보여줍니다. 몇 가지 환경 변수만 수정하는 것만으로도 인메모리 기반 Redis의 빠른 응답 속도와 뛰어난 확장성을 그대로 누릴 수 있습니다. 이 글이 Redis와 Laravel을 더 깊이 탐구하는 좋은 출발점이 되기를 바랍니다.

궁금한 점이나 피드백이 있다면 X(트위터)를 통해 언제든지 문의해 주세요.