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

Redis on Flash, 새로운 데이터 엔진과 Amazon EC2 I4i 인스턴스로 최대 3.7배 성능 향상

Redis on Flash(RoF)는 가장 인기 있는 엔터프라이즈 기능 중 하나로, 데이터셋의 최대 80%를 고가의 DRAM 대신 SSD에 저장함으로써 인메모리 컴퓨팅을 비용 효율적으로 실현하면서도 Redis 특유의 밀리초 미만(sub-millisecond) 지연 시간과 높은 처리량을 그대로 유지합니다. 일반적인 배포 환경에서 RoF는 최대 70%의 TCO(총소유비용) 절감 효과를 제공합니다.

이제 두 가지 새로운 협업을 통해 RoF가 동일한 매력적인 총소유비용을 유지하면서 최대 3.7배의 성능을 제공할 수 있게 되었음을 발표하게 되어 기쁩니다. 첫째, AWS가 3세대 Intel Xeon Scalable 프로세서(코드명 Ice Lake)와 AWS Nitro SSD NVMe 기반 스토리지로 구동되는 차세대 인스턴스인 Amazon EC2 I4i의 정식 출시(GA)를 발표했습니다. 이 새로운 세대는 데이터 집약적인 Redis 워크로드를 운영하는 고객에게 상당한 성능 향상을 약속합니다. 아울러 Speedb가 새롭게 선보인 기술을 첫 번째 선택지로 삼아, RoF의 데이터 엔진을 RocksDB 호환 데이터베이스라면 어떤 것이든 사용할 수 있도록 개방할 계획임을 알려드립니다.

새로운 I4i 인스턴스와 데이터 엔진 선택권 제공의 결합은, 현대적인 애플리케이션을 구축하거나 저지연 마이크로서비스 아키텍처를 설계하는 기업들의 실시간 경험에 대한 수요가 급증하는 가운데, RoF를 대규모 데이터셋 처리에 더욱 매력적인 솔루션으로 만들 것이라고 확신합니다.

Amazon EC2 I4i와 Speedb는 Redis on Flash에 무엇을 가져다주는가?

RoF의 새로운 소식을 자세히 살펴보겠습니다. AWS는 4개 리전에서 새로운 Amazon EC2 I4i('i'는 Intel을 의미) 인스턴스를 제공합니다. I4i 인스턴스는 최신 기술인 Intel Ice Lake 프로세서와 AWS Nitro SSD를 탑재하여, 이전 세대인 I3 인스턴스에 비해 IOPS가 개선되고 지연 시간이 단축되었습니다.

하드웨어와는 별개로, 우리는 RoF가 더 큰 성능을 발휘할 수 있는 방법을 모색하던 중 데이터 엔진을 고객과 기업가들의 혁신에 개방할 기회를 발견했습니다. 이제 RoF가 모든 RocksDB 호환 데이터 엔진에 개방되며, Speedb가 Redis가 제공하는 첫 번째 대안이 되었음을 발표하게 되어 기쁩니다. 우리와 협업한 Speedb 팀은 RocksDB의 내부 데이터 구조를 재설계하여 CPU 리소스 사용량을 줄이는 동시에 성능과 확장성을 놀랍도록 끌어올렸습니다.

이번 포스트에서는 사용 중인 AWS EC2 인스턴스가 I4i든 I3든 관계없이, Speedb가 RocksDB 대비 밀리초 미만 테스트에서 거의 50%에 달하는 상당한 성능 향상을 제공하는 방법을 공유합니다.

Speedb를 적용한 RoF는 현재 프라이빗 프리뷰로 제공됩니다. Redis 고객은 담당 계정 팀에 문의하여 추가 정보를 확인하거나 새로운 서비스를 체험해 볼 수 있습니다.

새로운 Redis on Flash 벤치마킹

당사의 성능 엔지니어들은 AWS의 I4i 인스턴스를 확보하여 RoF의 새로운 Speedb 데이터 엔진으로 테스트하기를 몹시 기다렸습니다. 우리는 Amazon EC2 I4i 인스턴스를 철저히 테스트한 최초의 AWS 파트너가 된 것을 자랑스럽게 생각합니다. 다시 한번 설명드리면, RoF는 대규모 데이터셋을 지능적으로 계층화(tiering)하며, DRAM 대비 GiB당 가격이 저렴한 NVMe SSD를 활용하도록 설계되었습니다. 이를 통해 DRAM 기반 인스턴스 총소유비용의 30% 수준으로 Redis급 성능을 제공할 수 있으며, 이제 I4i 인스턴스 덕분에 더욱 빨라졌습니다.

벤치마크 결과를 살펴보기 전에, 고객이 RoF를 고려해야 하는 상황을 먼저 짚어보겠습니다. 우리는 작업 데이터셋(working dataset)이 전체 데이터셋보다 작고, 추가 DRAM 도입이 비용 면에서 부담스러운 사용 사례를 위해 RoF를 개발했습니다. 또 다른 일반적인 RoF 사용 사례는 비즈니스 핵심 애플리케이션을 위해 대량의 데이터를 처리해야 하며, 장기간에 걸쳐 안정적인 낮은 지연 시간과 높은 처리량이 요구되는 배치 데이터 처리입니다.

이제 기대되는 부분, 바로 벤치마크 결과입니다.

벤치마크 대상

네 가지 AWS 인스턴스에서 Redis on Flash의 성능을 비교했습니다:

i3.8xlarge – RAM 244GB, NVMe SSD 4개, 총 7.6TB
I4i.4xlarge – RAM 128GB, NVMe SSD 1개, 총 3.75TB
I4i.8xlarge – RAM 256GB, NVMe SSD 2개, 총 7.5TB
I4i.16xlarge – RAM 512GB, NVMe SSD 4개, 총 15TB

두 가지 데이터 엔진의 성능을 비교했습니다

  • RocksDB
  • Speedb

테스트 파라미터

1KiB 값(value) 크기를 사용하여 대부분의 표준 Redis 사용 사례를 커버했습니다
RAM 히트 비율 50%와 85%(즉, 많은 요청이 RAM에서 직접 처리됨)를 테스트했습니다
20:80의 RAM:Flash 비율로 테스트했습니다
다양한 읽기:쓰기 비율(1:1, 4:1, 1:4)을 벤치마킹했습니다
모든 테스트는 두 대의 서버로 수행되었습니다
인스턴스 유형별로 실행한 데이터베이스 크기는 다음과 같습니다:

  • I4i.4xlarge: 500GB + 복제. 프라이머리 샤드 5개 + 레플리카 샤드 5개
  • i3.8xlarge: 1TB + 복제. 프라이머리 샤드 10개 + 레플리카 샤드 10개
  • I4i.8xlarge: 1TB + 복제. 프라이머리 샤드 10개 + 레플리카 샤드 10개
  • I4i.16xlarge: 2TB + 복제. 프라이머리 샤드 20개 + 레플리카 샤드 20개

각 구성에서 클라이언트 지연 시간(네트워크 제외)을 밀리초 미만으로 유지하면서 달성 가능한 초당 연산 수(ops/sec)를 측정했습니다.

테스트 결과

아래 그래프는 i3 vs I4i, 그리고 RocksDB vs Speedb의 비교 결과를 보여줍니다:

Redis on Flash, 새로운 데이터 엔진과 Amazon EC2 I4i 인스턴스로 최대 3.7배 성능 향상

확인된 성능 향상은 다음과 같습니다:

변경 전변경 후성능 향상 배수
i3.8xlarge rocksdbi3.8xlarge speedb1.3배
I4i.8xlarge rocksdbI4i.8xlarge speedb1.46배
i3.8xlarge rocksdbI4i.8xlarge rocksdb1.94배
i3.8xlarge speedbI4i.8xlarge speedb2.16배
i3.8xlarge rocksdbI4i.8xlarge speedb2.83배

아래 그래프는 Speedb를 적용한 I4i에서의 확장성과 다양한 읽기:쓰기 비율에 따른 결과를 보여줍니다:

Redis on Flash, 새로운 데이터 엔진과 Amazon EC2 I4i 인스턴스로 최대 3.7배 성능 향상

주요 결과와 개선 사항은 다음과 같습니다:

확장성 측면에서 Speedb를 적용한 I4i의 RoF는 거의 선형적으로 확장됩니다.

4xlarge → 8xlarge는 약 1.55~1.8배
8xlarge → 16xlarge는 약 1.85~1.95배의 확장 계수를 기록했습니다

두 번째로 주목할 만한 결과는, Speedb를 적용한 I4i의 RoF가 애플리케이션의 접근 패턴(읽기:쓰기 비율)에 거의 영향을 받지 않는다는 점입니다. 즉, 성능이 안정적이며 예측 가능하게 유지됩니다. 이는 여러 종류의 애플리케이션을 동시에 운영하거나 접근 패턴이 시간에 따라 변동하는 환경에서 특히 유용합니다.

아래 그래프는 전체 3.7배 성능 향상을 보여줍니다:

Redis on Flash, 새로운 데이터 엔진과 Amazon EC2 I4i 인스턴스로 최대 3.7배 성능 향상

부록:
벤치마크 설정

Redis Enterprise 버전: Ubuntu 18.04 기반 v. 6.2.8-39
Redis on Flash 데이터베이스: 위 인스턴스별 세부 정보 참조
클라이언트 머신: EC2 m5.8xlarge (vCPU 32개, RAM 128GB)
부하 생성 도구: memtier benchmark

85% RAM 히트 비율을 위한 Memtier 샘플 명령어:
memtier_benchmark -s <database host IP> -p <database port>
–hide-histogram –pipeline=1 -c 4 -t 256 -d 1000
–key-maximum=771141855 –key-pattern=G:G –key-stddev=50358491
–ratio=1:1 –distinct-client-seed –randomize –test-time=1200

설정 구성도:

Redis on Flash, 새로운 데이터 엔진과 Amazon EC2 I4i 인스턴스로 최대 3.7배 성능 향상