일반적으로 공부할 때 레디스를 로컬에서 실행합니다. 하지만 실무에서는 열에 아홉은 외부 레디스를 씁니다. 왜 그럴까요?
먼저, 레디스를 로컬에서 실행할 때 얻을 수 있는 장점은 다음과 같습니다.
- 빠른 응답 속도 (Low Latency)
- 애플리케이션과 같은 서버에서 실행되므로 네트워크 지연이 최소화됩니다.
- 설치 및 운영이 간편함
- 별도의 네트워크 설정 없이 바로 실행할 수 있어 개발 및 테스트 환경에서 사용하기 용이합니다.
- 비용 절감
- 클라우드 또는 별도의 외부 Redis 서버를 운영하지 않아 추가적인 비용이 발생하지 않습니다.
- 네트워크 장애 영향을 받지 않음
- 네트워크 연결이 불안정해도 로컬 환경에서는 Redis가 정상적으로 동작할 수 있습니다.
그렇다면 단점은 무엇일까요? 누구나 쉽게 예상할 수 있듯이 다음과 같습니다.
- 데이터 손상
- 로컬에 레디스가 존재하는 경우 데이터 손실이 우려됨. ex) 서버가 중단되는 경우
- 확장성이 낮음
- 서버가 하나라면 문제가 없지만, 여러 애플리케이션 인스턴스를 운영할 경우 각 서버마다 별도로 Redis를 운영해야 하므로 데이터 일관성이 어려움.
- 고가용성(HA, High Availability) 부족
- 서버 장애 시 Redis 데이터가 함께 손실될 가능성이 큼.
- 메모리 관리 어려움
- Redis가 서버 내에서 실행되므로, 메모리 사용량이 애플리케이션과 경쟁하여 성능 저하를 유발할 수 있음.
- 운영 및 관리의 부담
- 직접 백업, 장애 처리 등을 수행해야 하므로 유지보수가 필요함.
이러한 로컬 레디스의 단점이, 고스란히 외부 레디스의 장점이 됩니다.
- 확장성이 뛰어남
- 여러 애플리케이션 인스턴스에서 동일한 Redis 서버를 공유할 수 있어 마이크로서비스 및 분산 환경에서 유리함.
- 고가용성 및 장애 복구 지원
- 클라우드 서비스(AWS ElastiCache, Azure Cache for Redis) 또는 Redis Cluster를 활용하여 복제(Replication) 및 자동 장애 복구(Failover)가 가능함.
- 데이터 일관성 보장
- 중앙 집중식으로 데이터를 관리하므로 캐시 일관성을 유지할 수 있음.
- 보안 강화
- VPC, 방화벽, 인증(ACL, TLS) 등을 활용하여 보안을 강화할 수 있음.
- 운영 및 유지보수 자동화 가능
- 클라우드 서비스에서는 자동 백업, 모니터링, 스케일링이 가능하여 유지보수 부담이 적음.
이러한 장점이 서비스를 위한 서버를 외부에 위치시키는 이유가 됩니다. 실제 서비스 구성할 때 저 문제가 있으면...
그리고 외부 레디스의 장점 중 가장 큰 장점은
- 고가용성 및 장애 복구 지원
- 클라우드 서비스(AWS ElastiCache, Azure Cache for Redis) 또는 Redis Cluster를 활용하여 복제(Replication) 및 자동 장애 복구
입니다.
레디스는 기본적으로 휘발성 메모리기 때문에 위의 장점이 정말정말 큽니다.
'Development' 카테고리의 다른 글
| Forward Proxy, Reverse Proxy 정의와 차이점 (1) | 2025.08.26 |
|---|---|
| [Test] Mock vs. Stub (2) | 2025.08.17 |
| [JPA] Spring Data JPA는 어떻게 새로운 Entity인지 알아내는걸까? (0) | 2025.01.22 |
| [Server] RAID 란? (0) | 2025.01.20 |
| [ORM] OSIV 옵션이 무엇인가요 (2) | 2025.01.20 |
댓글