

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon Keyspaces(Apache Cassandra용)란 무엇입니까?
<a name="what-is-keyspaces"></a>

 Amazon Keyspaces(Apache Cassandra용)는 고가용성의 확장 가능한 관리형 Apache Cassandra 호환 데이터베이스 서비스입니다. Amazon Keyspaces를 사용하면 서버를 프로비저닝, 패치 또는 관리할 필요가 없으며 소프트웨어를 설치, 유지 또는 운영할 필요도 없습니다.

Amazon Keyspaces는 서버리스이므로 사용한 리소스에 대해서만 비용을 지불하면 되며 서비스는 애플리케이션 트래픽에 따라 테이블을 자동으로 확장 및 축소합니다. 사실상 무제한의 처리량과 스토리지로 초당 수천 건의 요청을 처리하는 애플리케이션을 구축할 수 있습니다.

**참고**  
 Apache Cassandra는 대량의 데이터를 처리하도록 설계된 오픈 소스 와이드 컬럼 데이터 스토어입니다. 자세한 내용은 [Apache Cassandra](http://cassandra.apache.org/)를 참조하세요.

Amazon Keyspaces를 사용하면 Cassandra 워크로드를 AWS 클라우드에서 쉽게 마이그레이션, 실행 및 확장할 수 있습니다. AWS Management Console 또는 몇 줄의 코드만 클릭하면 인프라를 배포하거나 소프트웨어를 설치하지 않고도 Amazon Keyspaces에서 키스페이스와 테이블을 생성할 수 있습니다.

Amazon Keyspaces를 사용하면 현재 사용하는 것과 동일한 Cassandra 애플리케이션 코드 및 개발자 도구를 AWS 사용하여에서 기존 Cassandra 워크로드를 실행할 수 있습니다.

Github에서 사용할 수 있는 [Amazon Keyspaces(Apache Cassandra용)의 요금 계산기](https://aws-samples.github.io/sample-pricing-calculator-for-keyspaces/#cassandra)를 사용하면 기존 Apache Cassandra 워크로드를 기반으로 Amazon Keyspaces의 월별 비용을 추정할 수 있습니다. Cassandra nodetool 상태 출력의 지표와 Amazon Keyspaces의 의도된 서버리스 구성을 입력하여 두 솔루션 간의 직접 비용을 비교합니다. 이 계산기는 기존 Cassandra 배포와 비교하여 Amazon Keyspaces의 운영 비용에만 중점을 둡니다. 인프라 유지 관리, 운영 오버헤드 또는 Cassandra 지원 비용과 같은 총 소유 비용(TCO) 요소는 포함되지 않습니다.

사용 가능한 AWS 리전 및 엔드포인트 목록은 [Amazon Keyspaces용 서비스 엔드포인트를 참조하세요](https://docs.aws.amazon.com/keyspaces/latest/devguide/programmatic.endpoints.html).

다음 섹션을 읽고 시작하면 도움이 됩니다.

**Topics**
+ [Amazon Keyspaces: 작동 방식](how-it-works.md)
+ [Amazon Keyspaces 사용 사례](use-cases.md)
+ [Cassandra 쿼리 언어(CQL)란 무엇입니까?](what-is-cql.md)

# Amazon Keyspaces: 작동 방식
<a name="how-it-works"></a>

Amazon Keyspaces는 Cassandra를 관리하는 데 따르는 관리 오버헤드를 제거합니다. 이유를 이해하려면 먼저 Cassandra 아키텍처로 시작한 다음 Amazon Keyspaces와 비교해 보는 것이 좋습니다.

**Topics**
+ [상위 수준 아키텍처: Apache Cassandra vs. Amazon Keyspaces](#how-it-works.cassandra-arch)
+ [Cassandra 데이터 모델](#how-it-works.data-model)
+ [애플리케이션에서 Amazon Keyspaces에 액세스](#how-it-works.keyspaces-arch.accessing)

## 상위 수준 아키텍처: Apache Cassandra vs. Amazon Keyspaces
<a name="how-it-works.cassandra-arch"></a>

 기존 Apache Cassandra는 하나 이상의 노드로 구성된 클러스터에 배포됩니다. 클러스터 확장에 따라 각 노드를 관리하고 노드를 추가 및 제거하는 것은 사용자의 책임입니다.

클라이언트 프로그램은 노드 중 하나에 연결하고 Cassandra 쿼리 언어(CQL) 문을 실행하여 Cassandra에 액세스합니다. *CQL*은 관계형 데이터베이스에서 널리 사용되는 언어인 SQL과 유사합니다. Cassandra는 관계형 데이터베이스가 아니지만 CQL은 Cassandra에서 데이터를 쿼리하고 조작하기 위한 친숙한 인터페이스를 제공합니다.

다음 다이어그램은 네 개의 노드로 구성된 간단한 Apache Cassandra 클러스터를 보여 줍니다.

![\[4개의 노드를 포함하고 클라이언트 애플리케이션과 상호 작용하는 Apache Cassandra 클러스터의 다이어그램입니다.\]](http://docs.aws.amazon.com/ko_kr/keyspaces/latest/devguide/images/keyspaces_cassandra-hi-level.png)


프로덕션 Cassandra 배포는 하나 이상의 물리적 데이터 센터에 있는 수백 대의 물리적 컴퓨터에서 실행되는 수백 개의 노드로 구성될 수 있습니다. 이로 인해 소프트웨어를 설치, 유지 관리 및 운영하는 것 외에도 서버를 프로비저닝, 패치 및 관리해야 하는 애플리케이션 개발자에게 운영상의 부담이 발생할 수 있습니다.

Amazon Keyspaces(Apache Cassandra용)를 사용하면 서버를 프로비저닝, 패치 또는 관리할 필요가 없으므로 더 나은 애플리케이션을 구축하는 데 집중할 수 있습니다. Amazon Keyspaces는 읽기 및 쓰기를 위한 두 가지 처리량 용량 모드(온디맨드 및 프로비저닝)를 제공합니다. 테이블의 처리량 용량 모드를 선택하여 워크로드의 예측 가능성과 변동성을 기반으로 읽기 및 쓰기 가격을 최적화할 수 있습니다.

온디맨드 모드를 사용하면 애플리케이션이 실제로 수행하는 읽기 및 쓰기에 대한 비용만 지불합니다. 테이블의 처리량 용량을 미리 지정할 필요가 없습니다. Amazon Keyspaces는 애플리케이션 트래픽이 증가하거나 감소할 때 거의 즉시 수용하므로 트래픽을 예측할 수 없는 애플리케이션에 적합한 옵션입니다.

프로비저닝된 용량 모드를 사용하면 애플리케이션 트래픽을 예측할 수 있고 테이블의 용량 요구 사항을 미리 예측할 수 있는 경우 처리량 가격을 최적화하는 데 도움이 됩니다. 프로비저닝된 용량 모드를 사용하면 애플리케이션에서 수행할 것으로 예상되는 초당 읽기 및 쓰기 수를 지정합니다. [자동 크기 조정](https://docs.aws.amazon.com/keyspaces/latest/devguide/autoscaling.html)을 활성화하여 테이블의 프로비저닝된 용량을 자동으로 늘리거나 줄일 수 있습니다.

워크로드의 트래픽 패턴에 대해 자세히 알아보거나 테이블 트래픽이 많이 발생할 것으로 예상되는 주요 이벤트와 같이 트래픽이 크게 급증할 것으로 예상되는 경우 테이블의 용량 모드를 하루에 한 번 변경할 수 있습니다. 읽기 및 쓰기 용량 프로비저닝에 대한 자세한 내용은 [Amazon Keyspaces의 읽기/쓰기 용량 모드 구성](ReadWriteCapacityMode.md) 섹션을 참조하세요.

Amazon Keyspaces(Apache Cassandra용)는 내구성과 고가용성을 위해 여러 [가용 영역](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/)에 데이터 사본 3개를 저장합니다. 또한 보안에 매우 민감한 조직의 요구 사항에 부합하도록 구축된 데이터 센터 및 네트워크 아키텍처의 혜택을 누릴 수 있습니다. 새 Amazon Keyspaces 테이블을 생성하고 모든 클라이언트 연결에 전송 계층 보안(TLS)이 필요한 경우 저장 시 암호화가 자동으로 활성화됩니다. 추가 AWS 보안 기능에는 [모니터링](https://docs.aws.amazon.com/keyspaces/latest/devguide/monitoring.html), [AWS Identity and Access Management](https://docs.aws.amazon.com/keyspaces/latest/devguide/security_iam_service-with-iam.html)및 [Virtual Private Cloud(VPC) 엔드포인트](https://docs.aws.amazon.com/keyspaces/latest/devguide/vpc-endpoints.html)가 포함됩니다. 사용 가능한 모든 보안 기능의 개요는 [Amazon Keyspaces(Apache Cassandra용)의 보안](security.md) 섹션을 참조하세요.

다음 다이어그램은 Amazon Keyspaces의 아키텍처를 보여 줍니다.

![\[클라이언트 애플리케이션과 상호 작용하는 Amazon Keyspaces의 다이어그램\]](http://docs.aws.amazon.com/ko_kr/keyspaces/latest/devguide/images/keyspaces-hi-level.png)


클라이언트 프로그램은 미리 결정된 엔드포인트(호스트 이름 및 포트 번호)에 연결하고 CQL 문을 발행하여 Amazon Keyspaces에 액세스합니다. 사용 가능한 엔드포인트 목록은 [Amazon Keyspaces의 서비스 엔드포인트](programmatic.endpoints.md) 섹션을 참조하세요.

## Cassandra 데이터 모델
<a name="how-it-works.data-model"></a>

Amazon Keyspaces에서 최적의 성능을 달성하려면 비즈니스 사례에 맞게 데이터를 모델링하는 방법이 매우 중요합니다. 잘못된 데이터 모델은 성능을 크게 저하시킬 수 있습니다.

CQL은 SQL과 비슷해 보이지만 Cassandra와 관계형 데이터베이스의 백엔드는 매우 다르므로 접근 방식도 달라야 합니다. 고려해야 할 몇 가지 중요한 문제는 다음과 같습니다.

**스토리지**  
각 행은 레코드를 나타내고 각 열은 해당 레코드 내의 필드를 나타내는 테이블로 Cassandra 데이터를 시각화할 수 있습니다.

**테이블 디자인: 쿼리 우선**  
CQL에는 `JOIN`이 없습니다. 따라서 비즈니스 사용 사례에 맞게 데이터의 형태와 데이터에 액세스하는 방법을 고려하여 테이블을 설계해야 합니다. 이로 인해 데이터가 중복되어 비정규화가 발생할 수 있습니다. 각 테이블을 특정 액세스 패턴에 맞게 특별히 디자인해야 합니다.

**파티션**  
 데이터는 디스크의 파티션에 저장됩니다. 데이터가 저장되는 파티션 수와 파티션 간에 데이터가 분산되는 방식은 *파티션 키*에 따라 결정됩니다. 파티션 키를 정의하는 방법은 쿼리 성능에 상당한 영향을 미칠 수 있습니다. 모범 사례는 [Amazon Keyspaces에서 파티션 키를 효과적으로 사용하는 방법](bp-partition-key-design.md) 섹션을 참조하세요.

**프라이머리 키**  
Cassandra에서 데이터는 키-값 페어로 저장됩니다. 모든 Cassandra 테이블에는 테이블의 각 행에 대한 고유 키인 프라이머리 키가 있어야 합니다. 프라이머리 키는 필수 파티션 키와 선택적 클러스터링 열로 구성됩니다. 프라이머리 키를 구성하는 데이터는 테이블의 모든 레코드에서 고유해야 합니다.  
+ **파티션 키** - 프라이머리 키의 파티션 키 부분이 필요하며 데이터가 저장되는 클러스터의 파티션을 결정합니다. 파티션 키는 단일 열이거나 둘 이상의 열로 구성된 복합 값일 수 있습니다. 단일 열 파티션 키로 인해 단일 파티션 또는 극소수의 파티션에 대부분의 데이터가 포함되어 대부분의 디스크 I/O 작업이 수행될 경우 복합 파티션 키를 사용합니다.
+ **클러스터링 열** - 프라이머리 키의 선택적 클러스터링 열 부분에 따라 각 파티션 내에서 데이터가 클러스터링되고 정렬되는 방식이 결정됩니다. 프라이머리 키에 클러스터링 열을 포함하는 경우 클러스터링 열에 하나 이상의 열이 있을 수 있습니다. 클러스터링 열에 여러 열이 있는 경우 정렬 순서는 클러스터링 열에 열이 나열된 순서(왼쪽에서 오른쪽)에 따라 결정됩니다.

NoSQL 설계 및 Amazon Keyspaces에 대한 자세한 내용은 [NoSQL 설계의 주요 차이점 및 설계 원칙](bp-general-nosql-design.md) 섹션을 참조하세요. Amazon Keyspaces 및 데이터 모델링에 대한 자세한 내용은 [데이터 모델링 모범 사례: 데이터 모델 설계를 위한 권장 사항](data-modeling.md) 섹션을 참조하세요.

## 애플리케이션에서 Amazon Keyspaces에 액세스
<a name="how-it-works.keyspaces-arch.accessing"></a>

Amazon Keyspaces(Apache Cassandra용)는 Apache Cassandra 쿼리 언어(CQL) API를 구현하므로 이미 사용하고 있는 CQL 및 Cassandra 드라이버를 사용할 수 있습니다. 애플리케이션을 업데이트하는 것은 Amazon Keyspaces 서비스 엔드포인트를 가리키도록 Cassandra 드라이버 또는 `cqlsh` 구성을 업데이트하는 것만큼 쉽습니다. 필수 자격 증명에 대한 자세한 내용은 [Amazon Keyspaces에 대한 AWS 자격 증명 생성 및 구성](access.credentials.md) 섹션을 참조하세요.

**참고**  
시작하는 데 도움이 되도록, [GitHub](https://github.com/aws-samples/amazon-keyspaces-examples)의 Amazon Keyspaces 코드 예제 리포지토리에서 다양한 Cassandra 클라이언트 드라이버를 사용하여 Amazon Keyspaces에 접속하는 엔드 투 엔드 코드 샘플을 찾을 수 있습니다.

 Cassandra 클러스터에 연결하여 테이블을 쿼리하는 다음 Python 프로그램을 고려해 보세요.

```
from cassandra.cluster import Cluster
#TLS/SSL configuration goes here

ksp = 'MyKeyspace'
tbl = 'WeatherData'

cluster = Cluster(['NNN.NNN.NNN.NNN'], port=NNNN)
session = cluster.connect(ksp)

session.execute('USE ' + ksp)

rows = session.execute('SELECT * FROM ' +  tbl)
for row in rows:
    print(row)
```

Amazon Keyspaces에서 동일한 프로그램을 실행하려면 다음을 수행해야 합니다.
+  **클러스터 엔드포인트 및 포트 추가**: 예를 들어 호스트를 `cassandra.us-east-1.amazonaws.com`과 같은 서비스 엔드포인트와 `9142`의 포트 번호로 교체할 수 있습니다.
+  **TLS/SSL 구성 추가**: Cassandra 클라이언트 Python 드라이버를 사용하여 Amazon Keyspaces에 연결하기 위한 TLS/SSL 구성을 추가하는 방법에 대한 자세한 내용은 [Cassandra Python 클라이언트 드라이버를 사용하여 프로그래밍 방식으로 Amazon Keyspaces에 액세스](using_python_driver.md) 섹션을 참조하세요.

# Amazon Keyspaces 사용 사례
<a name="use-cases"></a>

다음은 Amazon Keyspaces를 사용할 수 있는 몇 가지 방법입니다.
+  **짧은 지연 시간이 필요한 애플리케이션 구축** - 산업 장비 유지 관리, 거래 모니터링, 플릿 관리, 경로 최적화와 같이 한 자릿수 밀리초의 지연 시간이 필요한 애플리케이션의 데이터를 고속으로 처리합니다.
+  **오픈 소스 기술을 사용하여 애플리케이션 구축** - Java, Python, Ruby, Microsoft .NET, Node.js, PHP, C\$1\$1, Perl 및 Go와 같은 다양한 프로그래밍 언어에 사용할 수 있는 오픈 소스 Cassandra APIs 및 드라이버를 AWS 사용하여에서 애플리케이션을 구축합니다. 코드 예제는 [Amazon Keyspaces(Apache Cassandra용) 라이브러리 및 도구](examples-tools.md) 섹션을 참조하세요.
+  **클라우드로 Cassandra 워크로드 이동** - Cassandra 테이블을 직접 관리하려면 시간과 비용이 많이 듭니다. Amazon Keyspaces를 사용하면 인프라를 관리 AWS 클라우드 하지 않고도에서 Cassandra 테이블을 설정, 보호 및 확장할 수 있습니다. 자세한 내용은 [Amazon Keyspaces(Apache Cassandra용)에서 서버리스 리소스 관리](serverless_resource_management.md) 단원을 참조하십시오.

# Cassandra 쿼리 언어(CQL)란 무엇입니까?
<a name="what-is-cql"></a>

*Cassandra 쿼리 언어*(CQL)는 Apache Cassandra와 통신하기 위한 기본 언어입니다. Amazon Keyspaces(Apache Cassandra용)는 CQL 3.x API(버전 2.x와 이전 버전과 호환 가능)와 호환됩니다.

CQL에서 데이터는 테이블, 열 및 행에 저장됩니다. 이런 의미에서 CQL은 구조화 쿼리 언어(SQL)와 비슷합니다. 다음은 CQL의 주요 개념입니다.
+ **CQL 요소** - CQL의 기본 요소는 식별자, 상수, 용어 및 데이터 유형입니다.
+ **데이터 정의 언어(DDL)** - DDL 문은 Amazon Keyspaces의 AWS 리소스인 키스페이스 및 테이블과 같은 데이터 구조를 관리하는 데 사용됩니다. DDL 문은의 컨트롤 플레인 작업입니다 AWS.
+ **데이터 조작 언어(DML) ** - DML 문은 테이블 내의 데이터를 관리하는 데 사용됩니다. DML 문은 데이터를 선택, 삽입, 업데이트 및 삭제하는 데 사용됩니다. 이는의 데이터 영역 작업입니다 AWS.
+ **내장 함수** - Amazon Keyspaces는 CQL 문에 사용할 수 있는 다양한 내장 스칼라 함수를 지원합니다.

CQL에 대한 자세한 내용은 [Amazon Keyspaces(Apache Cassandra용)에 대한 CQL 언어 참조](cql.md) 섹션을 참조하세요. Apache Cassandra와의 기능적 차이를 알아보려면 [기능적 차이: Amazon Keyspaces와 Apache Cassandra](functional-differences.md) 섹션을 참조하세요.

CQL 쿼리를 실행하려면 다음 중 한 가지 방법을 시도하면 됩니다.
+  AWS Management Console에서 CQL 편집기를 사용합니다.
+  AWS CloudShell 및 [cqlsh 확장](programmatic.cqlsh.md#using_cqlsh)을 사용합니다.
+ `cqlsh` 클라이언트를 사용합니다.
+ Apache 2.0 라이선스 Cassandra 클라이언트 드라이버를 사용합니다.

CQL 외에도 AWS SDKs 및를 사용하여 Amazon Keyspaces에서 데이터 정의 언어(DDL) 작업을 수행할 수 있습니다 AWS Command Line Interface.

이러한 메서드를 사용하여 Amazon Keyspaces에 액세스하는 방법에 대한 자세한 내용은 [Amazon Keyspaces(Apache Cassandra용) 액세스](accessing.md) 섹션을 참조하세요.