Amazon Web Services 한국 블로그

Amazon Managed Apache Cassandra Service(MCS) – 미리 보기 출시

대규모 데이터베이스를 관리하기란 결코 쉽지 않습니다. 키-값 및 테이블 형식과 같은 대량의 구조화된 데이터를 저장하고 검색하고 관리할 때 사용할 수 있는 옵션 중 하나는 Apache Cassandra입니다. Cassandra에서는 명시적 CQL(Cassandra Query Language)을 사용하여 애플리케이션을 빠르게 구축할 수 있습니다.

그러나, 대규모 Cassandra 클러스터를 관리하기가 어렵고 많은 시간이 소모될 수 있습니다. 기반 인프라를 설정, 구성 및 유지 관리하는 데 필요한 전문 지식이 있어야 하고 Apache Cassandra 오픈소스 소프트웨어를 포함한 전체 애플리케이션 스택을 심층적으로 이해해야 합니다.

노드를 수동으로 추가하거나 제거하여 파티션 균형을 재조정하는 동시에 애플리케이션에 요구되는 성능을 지속적으로 제공할 수 있어야 합니다. 고객의 이야기에 따르면 클러스터를 축소하기가 어렵기 때문에 피크 로드에 맞춰 클러스터를 확장한 상태로 유지하는 경우가 많다고 합니다. Cassandra 클러스터를 업데이트할 때는 노드별로 업데이트를 수행해야 합니다. 업데이트 중에 문제가 발생하면 클러스터를 백업하고 복원하기가 어렵기 때문에 결국 패치를 건너뛰거나 오래된 버전을 실행하게 될 수 있습니다.

Amazon Managed Cassandra Service 소개
오늘, 확장성 및 가용성이 뛰어난 관리형 Apache Cassandra 호환 데이터베이스 서비스인 Amazon Managed Apache Cassandra Service(MCS)의 공개 미리 보기가 출시됩니다. Amazon MCS는 서버리스 서비스이므로 사용한 리소스에 대해서만 요금이 부과되며 애플리케이션 트래픽에 따라 테이블 크기가 자동으로 확장되고 축소됩니다. 개발자는 초당 수천 회의 요청을 지원하고 거의 무제한적인 처리량 및 스토리지를 제공하는 애플리케이션을 구축할 수 있습니다.

Amazon MCS를 사용하면 AWS에서 현재 사용하는 것과 동일한 Cassandra 애플리케이션 코드와 개발자 도구를 사용하여 Cassandra 워크로드를 실행할 수 있습니다. Amazon MCS는 Apache Cassandra 버전 3.11 CQL API를 구현하므로 애플리케이션의 기존 코드와 드라이버를 사용할 수 있습니다. 엔드포인트를 Amazon MCS 서비스 테이블에 있는 것 중 하나로 변경하는 간단한 방법으로 애플리케이션을 업데이트할 수 있습니다.

Amazon MCS는 모든 규모에서 단일 밀리초의 일관적인 읽기 및 쓰기 성능을 제공합니다. 따라서 짧은 지연 시간으로 원활한 사용자 경험을 제공하는 애플리케이션을 구축할 수 있습니다. Amazon CloudWatch를 사용하면 애플리케이션의 성능을 파악할 수 있습니다.

테이블 크기 또는 항목 수에 제한이 없으므로 스토리지를 프로비저닝할 필요가 없습니다. 완전관리형의 고가용성 데이터 스토리지가 제공됩니다. 테이블 데이터는 내구성을 위해 여러 AWS 가용 영역에 자동으로 복제됩니다.

모든 고객 데이터는 기본적으로 암호화되어 저장됩니다. AWS Key Management Service(KMS)에 저장된 암호화 키를 사용할 수 있습니다. Amazon MCS는 AWS Identity and Access Management(IAM)와도 통합되며 통합할 경우 테이블 및 데이터에 대한 액세스를 관리할 수 있습니다.

Amazon Managed Cassandra Service 사용
콘솔, CQL 또는 기존 Apache 2.0 라이선스 Cassandra 드라이버를 통해 Amazon MCS를 사용할 수 있습니다. 콘솔에서는 CQL 편집기를 사용하거나 cqlsh를 사용하여 연결할 수 있습니다. 

cqlsh를 사용하여 연결하려면 기존 IAM 사용자에 대한 서비스별 자격 증명을 생성해야 합니다. AWS CLI(명령줄 인터페이스)에서 다음과 같은 명령을 사용하면 됩니다.

aws iam create-service-specific-credential --user-name USERNAME --service-name mcs.amazonaws.com

{
    "ServiceSpecificCredential": {
        "CreateDate": "2019-11-27T14:36:16Z",
        "ServiceName": "mcs.amazonaws.com",
        "ServiceUserName": "USERNAME-at-123412341234",
        "ServicePassword": "...",
        "ServiceSpecificCredentialId": "...",
        "UserName": "USERNAME",
        "Status": "Active"
    }
}

Amazon MCS는 TLS를 사용한 보안 연결만 허용합니다.  Amazon 루트 인증서를 다운로드하고 이 인증서를 사용하도록 cqlshrc 구성 파일을 편집합니다. 이제, 다음 명령을 사용하여 연결할 수 있습니다.

cqlsh {endpoint} {port} -u {ServiceUserName} -p {ServicePassword} --ssl

먼저, 키스페이스를 생성합니다. 키스페이스는 하나 이상의 테이블을 포함하며 포함된 모든 테이블에 대한 복제 전략을 정의합니다. Amazon MCS에서 모든 키스페이스의 기본 복제 전략은 단일 리전 전략입니다. 이 전략은 단일 AWS 리전의 여러 가용 영역에 데이터를 3회 복제합니다.

키스페이스를 생성하려면 콘솔 또는 CQL을 사용합니다. Amazon MCS 콘솔에서 키스페이스의 이름을 지정합니다.

마찬가지로, CQL을 사용하여 bookstore 키스페이스를 생성할 수 있습니다.

CREATE KEYSPACE IF NOT EXISTS bookstore WITH REPLICATION={'class': 'SingleRegionStrategy'};

이제, 테이블을 생성합니다. 테이블은 데이터가 구성되고 저장되는 위치입니다. 이 작업에도 콘솔 또는 CQL을 사용할 수 있습니다. 콘솔에서 bookstore 키스페이스를 선택하고 테이블 이름을 지정합니다.

그 아래에 books 테이블에 대한 열을 추가합니다. 테이블의 각 행은 기본 키로 참조됩니다. 기본 키는 하나 이상의 열로 구성될 수 있으며 해당 값에 따라 데이터를 저장할 파티션이 결정됩니다. 이 데모에서 기본 키는 ISBN입니다. 필요한 경우 파티션 내 레코드의 정렬 순서를 결정하는 클러스터링 열을 추가할 수 있습니다. 이 테이블에는 클러스터링 열을 사용하지 않겠습니다.

또는 CQL에서 다음 명령을 사용하여 테이블을 생성할 수 있습니다.

USE bookstore;

CREATE TABLE IF NOT EXISTS books
(isbn text PRIMARY KEY,
title text,
author text,
pages int,
year_of_publication int);

이제, CQL을 사용하여 books 테이블의 레코드를 삽입합니다.

INSERT INTO books (isbn, title, author, pages, year_of_publication)
VALUES ('978-0201896831',
'The Art of Computer Programming, Vol. 1: Fundamental Algorithms (3rd Edition)',
'Donald E. Knuth', 672, 1997);

간단한 쿼리를 실행합니다. 콘솔에서 books 테이블을 선택하고 [Query table]을 선택합니다.

CQL 편집기에서 기본 쿼리를 사용하고 [Run command]를 선택합니다.

기본적으로 쿼리 결과는 테이블 보기에 표시됩니다.

원하는 경우 JSON 형식으로 결과를 표시할 수 있습니다. Cassandra API를 사용하는 애플리케이션에 표시되는 결과와 유사합니다.

더 많은 레코드를 삽입하기 위해 csqlsh를 다시 사용하고 로컬 CSV 파일의 데이터 일부를 업로드합니다.

COPY books (isbn, title, author, pages, year_of_publication)
FROM './books.csv' WITH delimiter=',' AND header=TRUE;

books 테이블의 콘텐츠를 다시 봅니다.

SELECT * FROM books;

기본 키를 사용하여 행을 선택하거나 추가 조건에 대한 필터링을 사용할 수 있습니다. 예를 들어 다음과 같습니다.

SELECT title FROM books WHERE isbn='978-1942788713';

SELECT title FROM books WHERE author='Scott Page' ALLOW FILTERING;

Amazon MCS에서는 기존 Apache Cassandra 2.0 라이선스 드라이버와 개발자 도구를 사용할 수 있습니다. Java, Python, Ruby, .NET, Node.js, PHP, C++, Perl 및 Go를 위한 오픈소스 Cassandra 드라이버가 제공됩니다.

Amazon MCS 설명서에서 자세한 내용을 확인할 수 있습니다.

공개 미리 보기로 제공
Amazon MCS는 오늘부터 미국 동부(버지니아 북부), 미국 서부(오하이오), EU(스톡홀름), 아시아 태평양(싱가포르), 아시아 태평양(도쿄)에서 공개 미리 보기로 제공됩니다.

Cassandra API 라이브러리 작업을 진행하면서 오픈소스 Apache Cassandra 프로젝트에 대한 버그를 수정하고 있습니다. 또한 AWS 인증(SigV4)에 대한 기본 지원을 제공하는 등 지원 부문에 대한 개선 작업도 진행 중입니다. 이 인증을 사용하면 EC2와 IAM에서 인스턴스 역할을 사용하여 자격 증명의 배포와 관리를 자동으로 처리할 수 있으므로 Amazon Elastic Compute Cloud(EC2)에서 Cassandra를 실행하는 고객의 자격 증명 관리가 간편해집니다. Cassandra 관련 오픈소스 프로젝트 테스트를 위한 AWS 프로모션 서비스 크레딧 펀딩도 진행 중입니다. 이러한 기여에 대해 자세히 알아보려면 오픈소스 블로그로 이동하십시오.

미리 보기 중에는 온디맨드 용량으로 Amazon MCS를 사용할 수 있습니다. 정식 출시되면 예측 가능한 워크로드에 프로비저닝된 처리량을 사용할 수 있는 옵션을 제공할 예정입니다. 온디맨드 용량 모드에서 Amazon MCS 요금은 애플리케이션이 읽고 쓰는 테이블 데이터의 양을 기준으로 부과됩니다. Amazon MCS는 확장 또는 축소를 통해 워크로드를 즉각적으로 수용하므로 테이블에 프로비저닝할 읽기 및 쓰기 처리 용량을 지정하지 않아도 됩니다.

AWS 프리 티어의 일부로 Amazon MCS를 무료로 시작할 수 있습니다. 첫 3개월간 매월 3천만 건의 쓰기 요청, 3천만 건의 읽기 요청 및 1GB 스토리지가 제공됩니다. 프리 티어는 첫 번째 Amazon MCS 리소스가 생성될 때부터 시작됩니다.

내년에는 데이터를 Amazon MCS로 보다 쉽게 마이그레이션할 수 있도록 AWS Database Migration Service 사용에 대한 지원을 추가할 계획입니다.

Amazon MCS는 새 애플리케이션을 구축하거나 기존 애플리케이션을 마이그레이션하는 단순한 프로그래밍 인터페이스를 제공하여 모든 규모의 Cassandra 워크로드를 손쉽게 사용할 수 있도록 합니다. 이 서비스가 많은 사용 사례에 도움이 되기를 바랍니다!

– Danilo Poccia;