반응형

서론

AWS의 DynamoDB는 AWS의 대표적인 NoSQL Database입니다. 이번 장에서는 Java를 가지고 DynamoDB를 Local환경에서 개발 및 테스트 해보는 것을 알아 보도록 하겠습니다. 이번 포스팅을 따라해보기 위해서는 먼저 사용하는 PC 환경에서 AWS CLI가 설치되어 있어야 하며 본인 소유의 AWS 계정(Account)와 Access Key ID, 그리고 Security Credentials(보안 자격 증명)이 필요합니다. AWS CLI에 대한 설치는 여기를 클릭하셔서 본인의 운영체제에 맞는 버전의 AWS CLI를 설치하시기 바라며, Access Key ID와 Security Credentials을 본인 PC에 환경 구성하기 위해서는 여기를 클릭하셔서 따라하시기 바랍니다.

 

이번 포스팅은 Mac OS를 기준으로 설명합니다.

 

본론

DynamoDB Local 버전 다운로드 및 압축 풀기

 

Deploying DynamoDB locally on your computer - Amazon DynamoDB

The YAML scripts require that you specify an AWS access key and an AWS secret key, but they are not required to be valid AWS keys for you to access DynamoDB Local.

docs.aws.amazon.com

위 링크를 통해 접속해서 여러분과 가장 가까운 리전(당근 Tokyo겠지요...)의 라이브러리를 다운로드 하면 됩니다. 저는 Asia Pacific(Tokyo) Region에서 Zip 파일로 다운로드 받았습니다.

 

다운로드 했으면 아래와 같이 압축을 풀도록 합니다.

 

 

라이브러리 실행 및 접속

콘솔이나 터미널을 통해 다운로드 받은 DynamoDB 디렉토리로 이동합니다. 그리고 다음의 명령어를 실행해 DynamoDB를 Local에서 실행하시기 바랍니다.(단, 서론에서 말했듯이 콘솔에서 AWS 계정에 대한 configuration 작업이 선행되어 있어야 합니다.)

java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb

다음의 명령어를 통해 현재 실행된 로컬의 DynamoDB에 접속해 테이블 리스트를 가져와 보도록 합니다.

aws dynamodb list-tables --endpoint-url http://localhost:8000

현재 구성된 테이블이 없어 테이블이 보이지 않습니다.

 

테이블 생성

다음의 명령어를 통해 'MusicCollection'이라는 테이블을 생성해 봅니다. 이때 접속 엔드포인트를 localhost로 생성해 로컬의 DynamoDB에 테이블을 생성하도록 합니다. 엔드포인트를 로컬로 지정하지 않으면 aws configuration을 통해 설정한 계정의 DynamoDB에 테이블을 생성합니다.

aws dynamodb create-table \
    --table-name MusicCollection \
    --attribute-definitions AttributeName=Artist,AttributeType=S AttributeName=SongTitle,AttributeType=S \
    --key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1 --endpoint-url=http://localhost:8000

테이블이 정상적으로 생성되면 아래와 같이 생성된 테이블에 대한 정보가 표시됩니다.

이제 생성된 테이블을 확인해 보도록 합니다.

aws dynamodb list-tables --endpoint-url http://localhost:8000

이제는 생성된 테이블이 보입니다.

 

데이터 입력

다음의 명령어로 데이터를 입력해 봅니다.

aws dynamodb put-item \
    --table-name MusicCollection \
    --item '{
        "Artist": {"S": "No One You Know"},
        "SongTitle": {"S": "Call Me Today"} ,
        "AlbumTitle": {"S": "Somewhat Famous"} 
      }' \
    --return-consumed-capacity TOTAL --endpoint-url=http://localhost:8000

정상적으로 데이터가 입력 되었다면 아래와 같은 화면을 볼 수 있습니다

 

데이터 조회

지금 입력한 데이터를 아래의 쿼리를 통해 조회해 보도록 합니다.

aws dynamodb query \
    --table-name MusicCollection \
    --key-condition-expression "Artist = :name" \
    --expression-attribute-values  '{":name":{"S":"No One You Know"}}' --endpoint-url=http://localhost:8000

정상적으로 실행되었다면 아래와 같이 입력된 데이터가 조회되는 것을 확인해 볼 수 있습니다.

 

결론

DynamoDB는 AWS의 완전관리형 NoSQL 데이터베이스로 초당 천만 개 이상의 읽기 및 쓰기 요청이 있는 테이블과 페타바이트의 데이이터 스토리지 활용을 통해 하루에 10조 개 이상의 데이터 요청이 가능한 우수한 데이터베이스입니다. 하지만 개발자 입장에서 원격의 AWS EC2에 붙어 DynamoDB를 조작하기란 여간 귀찮은 것이 아닙니다. 이럴 경우를 대비해 DynamoDB를 로컬에 설치해 본 블로그 포스팅에서 작성한 것 처럼 테스트 용도로 쓰는 것이 가능하므로 편의에 따라 사용해 보시는 것을 권장합니다.

 

감사합니다.

 

이번 포스팅은 여기까지입니다.

반응형

+ Recent posts