2020.06.24

클라우드-오픈소스 기업, '배제' 아닌 '공존'에서 답 찾기

Simon Bisson | InfoWorld
마이크로소프트와 레디스랩스가 제휴를 맺고 ‘애저 캐시 포 레디스’에 ‘레디스 엔터프라이즈’를 통합한다. 이번 협력은 오픈소스 기반 서비스 업체와 초대형 클라우드와의 공존을 보여주는 사례라는 점에서 의의가 있다. 

NoSQL 스토리지에는 종류가 많다. 이를테면 문서 지향 데이터베이스도 있고 키-값 쌍을 저장하는 것도 있는데, 모두 서로 다른 인덱스와 쿼리를 지원한다. 또한 디스크 기반 시스템도 있고, 메모리에서 작동하도록 설계된 것도 있다. 이를 통해 대량의 데이터를 효율적으로 처리하는 데 집중하거나 속도에 주력하기도 한다. 이처럼 매우 다양한 제품 중에서 하나를 선택하기란 어렵기 마련이다. 

그중 가장 인기 있는 인메모리 시스템은 레디스(Redis)다. 이는 리모트 딕셔너리 서버(Remote Dictionary Server)의 약자다. 레디스랩스(RedisLabs)에서 후원하는 오픈소스 레디스 서버에 구축되며, 상용 엔터프라이즈 옵션이 있다. 

마이크로소프트는 애저에서 오픈소스 레디스를 자체적으로 구축한 서비스 ‘애저 캐시 포 레디스(Azure Cache for Redis)’를 꽤 오랫동안 제공해왔다. 주로 고성능 캐시로 사용됐다. 그런데 최근 마이크로소프트가 레디스랩스와의 제휴를 발표했다. 즉, 풀 매니지드 레디스 엔터프라이즈가 마이크로소프트 클라우드에 추가된 것이다.  
 
ⓒGetty Images

레디스 엔터프라이즈가 추가된 애저
이 새로운 서비스는 기존의 ‘베이직(Basic)’, ‘스탠다드(Standard),’ ‘프리미엄(Premium)’ 서비스에 ‘엔터프라이즈(Enterprise)’와 ‘엔터프라이즈 SSD(Enterprise SSD)’라는 2가지 계층(Tier)을 더한 것으로 생각하면 된다. 

마이크로소프트의 ‘애저 캐시 포 레디스’는 대규모 클라우드 네이티브 애플리케이션에 고성능 캐시를 제공하는 것에 주력해 왔다. 컨테이너화된 시스템이나 서버리스 시스템을 구축하는 경우 이벤트 주도 코드 또는 세션 상태에 대한 메시지를 관리하는 데 캐시가 유용하기 때문이다. 

캐시는 들어오는 데이터 관리에만 국한되지 않는다. 최신 애플리케이션에서는 사용자가 정기적으로 액세스하는 콘텐츠를 미리 불러오기 위한 방법으로 캐시를 사용할 수 있다. 이를테면 자주 변경되지 않는 헤더 및 로고와 같은 일반 자산으로 애저의 레디스를 미리 불러올 수 있다. 그다음 이를 메모리에 호스팅하면 페이지를 로딩할 때마다 디스크에서 가져오는 것보다 속도가 훨씬 빨라진다.

레디스의 사용 목적은 오로지 성능이다. 인메모리 시스템에 캐시 데이터를 두면 애플리케이션 레이턴시를 크게 줄일 수 있다. 분산 애플리케이션을 대규모로 구축해 실행하는 경우에는 특히 그렇다. 또 레디스 저장소의 콘텐츠는 애저 리전 간에 복제가 가능하다. 따라서 한 리전의 사용자가 지구 반대편에 있는 콘텐츠에 액세스해야 하는 위험이 줄어든다.

‘애저 캐시 포 레디스’로 시작하기
‘애저 캐시 포 레디스’ 서비스는 베이직, 스탠다드, 프리미엄으로 제공된다. 프리미엄 데이터베이스의 경우 최대 크기는 1.2TB다. 베이직은 비교적 단순한 단일 노드로 실행되며 서비스 수준 협약(SLA)은 없지만 메모리 크기는 선택할 수 있다. 

스탠다드는 2-노드 시스템으로 실행되며 SLA를 제공해 신뢰성을 높였다. 성능은 더 높이고 레이턴시는 더 낮춰야 하는 사용자를 위해 프리미엄 옵션은 서로 다른 등급의 애저 하드웨어를 사용하여 처리량을 늘렸다. 이 외에는 스탠다드와 구성이 동일하다. 

애저에 레디스 캐시를 설정하기는 꽤 쉽다. DNS 이름을 만든 다음, 캐시를 리소스 그룹에 추가하고 위치를 선택하면 된다. 그러면 가상머신(VM)이 설정되고 캐시가 시작된다. 애저에서 실행 중임을 확인하고 나면 사용자가 이를 코드에 사용할 수 있다. 

레디스 연결에 필요한 자격증명은 사용자의 애저 포털(Azure Portal)에 있다. 이는 접근 키와 연결 문자열로 구성돼 있다. 또 애저 포털에는 인스턴스 주소와 함께 코드 연결에 필요한 포트가 나와 있다. 기본적으로 이 작업은 SSL(Secure Sockets Layer)을 통해 이뤄진다.

닷넷(.NET) 애플리케이션에서 레디스를 사용하기 위한 다양한 누겟(NuGet) 패키지도 있다. 해당 애플리케이션이 레디스에 연결됐는지 확인하는 것은 물론 레디스 캐시에서 항목을 얻어 설정하는 기능이 포함돼 있다. 

캐시 연결 문자열을 설정한 다음 이를 사용해 레디스 데이터베이스에서 캐시 객체를 생성하면 된다. 비주얼 스튜디오(Visual Studio)를 사용하는 경우 엔티티 프레임워크(Entity Framework)와 같은 익숙한 닷넷 데이터베이스 툴을 통해 레디스 작업을 할 수 있다.

레디스 기반 애플리케이션은 MVC(모델, 뷰, 컨트롤러) 패턴을 사용해 구축하기 용이하다. 이를테면 컨트롤러를 사용해 직렬화된 데이터를 캐시에 기록하고 필요할 때 읽을 수 있다. 마이크로소프트는 데이터 쓰기와 읽기에 JSON(JavaScript Object Notation) 형식 사용을 권장한다. 일반적인 자바스크립트 및 닷넷 라이브러리를 사용해 반환된 JSON 데이터를 쉽게 포맷하고 표시할 수 있다. 

즉 ‘애저 캐시 포 레디스’는 데이터베이스와 일련의 API 그 이상이다. 모니터링을 비롯한 관리 도구 일체가 포함돼 있기 때문이다. 이들 도구를 활용하면 필요에 따라 레디스 인스턴스를 확장하기가 편리하다. 단 베이직에서 스탠다드와 프리미엄으로만 계층을 올릴 수 있다.

크기 변경은 별도 작업이다. 동일한 계층 내에서 크기를 늘리거나 줄일 수 있다(하지만 스탠다드의 가장 작은 크기보다 줄일 수는 없다). 한 계층을 내리고 싶다면 레디스 인스턴스를 새로 생성하고 데이터 또는 구조를 새 데이터베이스에 복사한 후에 구형 버전을 삭제한다. 만약 확장을 자동화할 필요가 있다면 파워쉘(PowerShell)이나 애저 CLI(Azure CLI), 또는 애저 관리 라이브러리(Azure Management Libraries)를 통한 코드를 사용할 수 있다. 

‘레디스 엔터프라이즈’의 인메모리 데이터베이스 기능으로 확장
‘애저 캐시 포 레디스’도 좋긴 하지만 아직 부족하다. 상용 레디스 엔터프라이즈의 모든 기능을 갖추고 있지 않기 때문이다. 마이크로소프트가 레디스랩스와 제휴해 2가지 계층을 추가로 제공하기로 한 이유도 여기에 있다. 이를 통해 관리는 마이크로소프트가, 지원은 양사가 모두 담당한다. 또한 레디스 엔터프라이즈가 애저 포털에 완전히 통합된다. 

구체적으로 살펴보면 기본 계층인 엔터프라이즈는 표준 애저 스토리지를 사용한다. 엔터프라이즈 SSD 계층은 플래시 스토리지 지원을 추가해 메모리 내에서 사용할 수 없는 데이터에 대한 접근 속도를 높였다.

또한 핵심 레디스 엔터프라이즈 모듈 지원을 추가해 캐시된 데이터보다 더 많은 데이터를 대상으로 서비스를 사용할 수 있다. 이 차이점은 중요하다. 속도가 빠른 인메모리 데이터베이스는 대규모 이벤트 주도 시스템의 중요한 부분이기 때문이다. 시계열 데이터에 의존하는 시스템이라면 더욱더 그렇다. 

이 밖에 지원되는 기능으로는 확률적 데이터 필터링 기능을 추가하는 레디스블룸(RedisBloom), 인덱싱 기능을 개선하고 데이터 전문(full-text) 검색을 할 수 있는 레디서치(RediSearch) 등이 있다. 

신규 서비스는 현재 프라이빗 프리뷰로 제공되고 있다. 향후 공식 출시(2020년 말로 예정)와 함께 또 다른 추가 기능들이 공개될 예정이다. 이를테면 지리적 리전 그리고 온프레미스와 애저에서 호스팅된 레디스 인스턴스 사이에서 작동하는 하이브리드 배치 간에 이중화(active-active) 복제를 사용할 수 있다. 온프레미스와 애저 레디스 간에 전용 연결을 갖출 필요는 없다. 이중화 복제는 VPN을 통해 작동된다. 

새 서비스는 포털 내 기존 ‘애저 캐시 포 레디스’와 비슷한 점도 있다. 기존 인스턴스에서 확장할 수 있으며, 아니면 처음부터 시작할 수도 있다. 성능 향상을 꾀한다면 확장이 한 옵션이지만 새로운 데이터베이스 기능을 사용 중이라면 아마도 완전히 새로운 인스턴스를 생성하고 싶을지도 모른다. 

또한 생성 과정에서 신규 인스턴스를 설정할 수 있다. 포털 또는 애저 리소스 관리자 템플릿을 통해 할 수 있다. 관리 및 모니터링 작업의 많은 부분이 애저 포털 내부에서 이뤄지지만 레디스의 자체 관리 툴을 사용해 데이터를 조율하거나 최적화할 수도 있다. 

필자가 볼 때 애저의 ‘애저 캐시 포 레디스’와 레디스랩스의 ‘레디스 엔터프라이즈’의 통합은 상당히 흥미롭다. 오픈소스를 기반으로 구축된 서비스 업체가 초대형 클라우드와 공존할 수 있다는 것을 보여주는 사례이기 때문이다. 

즉 애저는 오픈소스 플랫폼 기반 서비스를 제공하면서, 더 복잡한 구축의 경우에만 레디스랩스의 툴을 사용한다. 이를 통해 레디스랩스는 기존 라이선스 모델을 클라우드 업체를 배제하는 모델로 바꾸지 않고도 새로운 수입원을 창출할 수 있다. 

애저의 레디스 기반 캐시 서비스에서 레디스 엔터프라이즈로의 이동도 간편하다. 관리 툴이나 계약 관계도 그대로 유지된다. 엔드 유저들은 작업 방식을 바꿀 필요 없이 새로운 계층과 기능에 접근할 수 있다. 

* Simon Bisson은 인포월드의 마이크로소프트 블로그 전문 칼럼니스트다. ciokr@idg.co.kr



2020.06.24

클라우드-오픈소스 기업, '배제' 아닌 '공존'에서 답 찾기

Simon Bisson | InfoWorld
마이크로소프트와 레디스랩스가 제휴를 맺고 ‘애저 캐시 포 레디스’에 ‘레디스 엔터프라이즈’를 통합한다. 이번 협력은 오픈소스 기반 서비스 업체와 초대형 클라우드와의 공존을 보여주는 사례라는 점에서 의의가 있다. 

NoSQL 스토리지에는 종류가 많다. 이를테면 문서 지향 데이터베이스도 있고 키-값 쌍을 저장하는 것도 있는데, 모두 서로 다른 인덱스와 쿼리를 지원한다. 또한 디스크 기반 시스템도 있고, 메모리에서 작동하도록 설계된 것도 있다. 이를 통해 대량의 데이터를 효율적으로 처리하는 데 집중하거나 속도에 주력하기도 한다. 이처럼 매우 다양한 제품 중에서 하나를 선택하기란 어렵기 마련이다. 

그중 가장 인기 있는 인메모리 시스템은 레디스(Redis)다. 이는 리모트 딕셔너리 서버(Remote Dictionary Server)의 약자다. 레디스랩스(RedisLabs)에서 후원하는 오픈소스 레디스 서버에 구축되며, 상용 엔터프라이즈 옵션이 있다. 

마이크로소프트는 애저에서 오픈소스 레디스를 자체적으로 구축한 서비스 ‘애저 캐시 포 레디스(Azure Cache for Redis)’를 꽤 오랫동안 제공해왔다. 주로 고성능 캐시로 사용됐다. 그런데 최근 마이크로소프트가 레디스랩스와의 제휴를 발표했다. 즉, 풀 매니지드 레디스 엔터프라이즈가 마이크로소프트 클라우드에 추가된 것이다.  
 
ⓒGetty Images

레디스 엔터프라이즈가 추가된 애저
이 새로운 서비스는 기존의 ‘베이직(Basic)’, ‘스탠다드(Standard),’ ‘프리미엄(Premium)’ 서비스에 ‘엔터프라이즈(Enterprise)’와 ‘엔터프라이즈 SSD(Enterprise SSD)’라는 2가지 계층(Tier)을 더한 것으로 생각하면 된다. 

마이크로소프트의 ‘애저 캐시 포 레디스’는 대규모 클라우드 네이티브 애플리케이션에 고성능 캐시를 제공하는 것에 주력해 왔다. 컨테이너화된 시스템이나 서버리스 시스템을 구축하는 경우 이벤트 주도 코드 또는 세션 상태에 대한 메시지를 관리하는 데 캐시가 유용하기 때문이다. 

캐시는 들어오는 데이터 관리에만 국한되지 않는다. 최신 애플리케이션에서는 사용자가 정기적으로 액세스하는 콘텐츠를 미리 불러오기 위한 방법으로 캐시를 사용할 수 있다. 이를테면 자주 변경되지 않는 헤더 및 로고와 같은 일반 자산으로 애저의 레디스를 미리 불러올 수 있다. 그다음 이를 메모리에 호스팅하면 페이지를 로딩할 때마다 디스크에서 가져오는 것보다 속도가 훨씬 빨라진다.

레디스의 사용 목적은 오로지 성능이다. 인메모리 시스템에 캐시 데이터를 두면 애플리케이션 레이턴시를 크게 줄일 수 있다. 분산 애플리케이션을 대규모로 구축해 실행하는 경우에는 특히 그렇다. 또 레디스 저장소의 콘텐츠는 애저 리전 간에 복제가 가능하다. 따라서 한 리전의 사용자가 지구 반대편에 있는 콘텐츠에 액세스해야 하는 위험이 줄어든다.

‘애저 캐시 포 레디스’로 시작하기
‘애저 캐시 포 레디스’ 서비스는 베이직, 스탠다드, 프리미엄으로 제공된다. 프리미엄 데이터베이스의 경우 최대 크기는 1.2TB다. 베이직은 비교적 단순한 단일 노드로 실행되며 서비스 수준 협약(SLA)은 없지만 메모리 크기는 선택할 수 있다. 

스탠다드는 2-노드 시스템으로 실행되며 SLA를 제공해 신뢰성을 높였다. 성능은 더 높이고 레이턴시는 더 낮춰야 하는 사용자를 위해 프리미엄 옵션은 서로 다른 등급의 애저 하드웨어를 사용하여 처리량을 늘렸다. 이 외에는 스탠다드와 구성이 동일하다. 

애저에 레디스 캐시를 설정하기는 꽤 쉽다. DNS 이름을 만든 다음, 캐시를 리소스 그룹에 추가하고 위치를 선택하면 된다. 그러면 가상머신(VM)이 설정되고 캐시가 시작된다. 애저에서 실행 중임을 확인하고 나면 사용자가 이를 코드에 사용할 수 있다. 

레디스 연결에 필요한 자격증명은 사용자의 애저 포털(Azure Portal)에 있다. 이는 접근 키와 연결 문자열로 구성돼 있다. 또 애저 포털에는 인스턴스 주소와 함께 코드 연결에 필요한 포트가 나와 있다. 기본적으로 이 작업은 SSL(Secure Sockets Layer)을 통해 이뤄진다.

닷넷(.NET) 애플리케이션에서 레디스를 사용하기 위한 다양한 누겟(NuGet) 패키지도 있다. 해당 애플리케이션이 레디스에 연결됐는지 확인하는 것은 물론 레디스 캐시에서 항목을 얻어 설정하는 기능이 포함돼 있다. 

캐시 연결 문자열을 설정한 다음 이를 사용해 레디스 데이터베이스에서 캐시 객체를 생성하면 된다. 비주얼 스튜디오(Visual Studio)를 사용하는 경우 엔티티 프레임워크(Entity Framework)와 같은 익숙한 닷넷 데이터베이스 툴을 통해 레디스 작업을 할 수 있다.

레디스 기반 애플리케이션은 MVC(모델, 뷰, 컨트롤러) 패턴을 사용해 구축하기 용이하다. 이를테면 컨트롤러를 사용해 직렬화된 데이터를 캐시에 기록하고 필요할 때 읽을 수 있다. 마이크로소프트는 데이터 쓰기와 읽기에 JSON(JavaScript Object Notation) 형식 사용을 권장한다. 일반적인 자바스크립트 및 닷넷 라이브러리를 사용해 반환된 JSON 데이터를 쉽게 포맷하고 표시할 수 있다. 

즉 ‘애저 캐시 포 레디스’는 데이터베이스와 일련의 API 그 이상이다. 모니터링을 비롯한 관리 도구 일체가 포함돼 있기 때문이다. 이들 도구를 활용하면 필요에 따라 레디스 인스턴스를 확장하기가 편리하다. 단 베이직에서 스탠다드와 프리미엄으로만 계층을 올릴 수 있다.

크기 변경은 별도 작업이다. 동일한 계층 내에서 크기를 늘리거나 줄일 수 있다(하지만 스탠다드의 가장 작은 크기보다 줄일 수는 없다). 한 계층을 내리고 싶다면 레디스 인스턴스를 새로 생성하고 데이터 또는 구조를 새 데이터베이스에 복사한 후에 구형 버전을 삭제한다. 만약 확장을 자동화할 필요가 있다면 파워쉘(PowerShell)이나 애저 CLI(Azure CLI), 또는 애저 관리 라이브러리(Azure Management Libraries)를 통한 코드를 사용할 수 있다. 

‘레디스 엔터프라이즈’의 인메모리 데이터베이스 기능으로 확장
‘애저 캐시 포 레디스’도 좋긴 하지만 아직 부족하다. 상용 레디스 엔터프라이즈의 모든 기능을 갖추고 있지 않기 때문이다. 마이크로소프트가 레디스랩스와 제휴해 2가지 계층을 추가로 제공하기로 한 이유도 여기에 있다. 이를 통해 관리는 마이크로소프트가, 지원은 양사가 모두 담당한다. 또한 레디스 엔터프라이즈가 애저 포털에 완전히 통합된다. 

구체적으로 살펴보면 기본 계층인 엔터프라이즈는 표준 애저 스토리지를 사용한다. 엔터프라이즈 SSD 계층은 플래시 스토리지 지원을 추가해 메모리 내에서 사용할 수 없는 데이터에 대한 접근 속도를 높였다.

또한 핵심 레디스 엔터프라이즈 모듈 지원을 추가해 캐시된 데이터보다 더 많은 데이터를 대상으로 서비스를 사용할 수 있다. 이 차이점은 중요하다. 속도가 빠른 인메모리 데이터베이스는 대규모 이벤트 주도 시스템의 중요한 부분이기 때문이다. 시계열 데이터에 의존하는 시스템이라면 더욱더 그렇다. 

이 밖에 지원되는 기능으로는 확률적 데이터 필터링 기능을 추가하는 레디스블룸(RedisBloom), 인덱싱 기능을 개선하고 데이터 전문(full-text) 검색을 할 수 있는 레디서치(RediSearch) 등이 있다. 

신규 서비스는 현재 프라이빗 프리뷰로 제공되고 있다. 향후 공식 출시(2020년 말로 예정)와 함께 또 다른 추가 기능들이 공개될 예정이다. 이를테면 지리적 리전 그리고 온프레미스와 애저에서 호스팅된 레디스 인스턴스 사이에서 작동하는 하이브리드 배치 간에 이중화(active-active) 복제를 사용할 수 있다. 온프레미스와 애저 레디스 간에 전용 연결을 갖출 필요는 없다. 이중화 복제는 VPN을 통해 작동된다. 

새 서비스는 포털 내 기존 ‘애저 캐시 포 레디스’와 비슷한 점도 있다. 기존 인스턴스에서 확장할 수 있으며, 아니면 처음부터 시작할 수도 있다. 성능 향상을 꾀한다면 확장이 한 옵션이지만 새로운 데이터베이스 기능을 사용 중이라면 아마도 완전히 새로운 인스턴스를 생성하고 싶을지도 모른다. 

또한 생성 과정에서 신규 인스턴스를 설정할 수 있다. 포털 또는 애저 리소스 관리자 템플릿을 통해 할 수 있다. 관리 및 모니터링 작업의 많은 부분이 애저 포털 내부에서 이뤄지지만 레디스의 자체 관리 툴을 사용해 데이터를 조율하거나 최적화할 수도 있다. 

필자가 볼 때 애저의 ‘애저 캐시 포 레디스’와 레디스랩스의 ‘레디스 엔터프라이즈’의 통합은 상당히 흥미롭다. 오픈소스를 기반으로 구축된 서비스 업체가 초대형 클라우드와 공존할 수 있다는 것을 보여주는 사례이기 때문이다. 

즉 애저는 오픈소스 플랫폼 기반 서비스를 제공하면서, 더 복잡한 구축의 경우에만 레디스랩스의 툴을 사용한다. 이를 통해 레디스랩스는 기존 라이선스 모델을 클라우드 업체를 배제하는 모델로 바꾸지 않고도 새로운 수입원을 창출할 수 있다. 

애저의 레디스 기반 캐시 서비스에서 레디스 엔터프라이즈로의 이동도 간편하다. 관리 툴이나 계약 관계도 그대로 유지된다. 엔드 유저들은 작업 방식을 바꿀 필요 없이 새로운 계층과 기능에 접근할 수 있다. 

* Simon Bisson은 인포월드의 마이크로소프트 블로그 전문 칼럼니스트다. ciokr@idg.co.kr

X