ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [DynamoDB (1)] DynamoDB란? DynamoDB 사용 조건, DynamoDB 핵심 개념 설명
    AWS 2023. 2. 16. 18:05

    1. 정의

    1.1. DynamoDB란?

    • DynamoDB는 무한대에 가까운 items 속에서 하나 혹은 몇개의 items을 primary key로 빠르게 찾는 것을 잘하는 AWS NoSQL 서비스
    • 서버 구성, 확인, 용량 기획 등이 필요 없다. (Fully Managed Serverless
    • 규모에 따른 스케일링 기능을 제공한다.
      • 모든 규모에서 10ms 미만 성능을 제공한다. 
      • 읽기, 쓰기 용량이 증가함에 따라, 성능도 같이 증가한다.
      • PutItem, GetItem은 항상 10ms 이내로 응답 되고, Query는 20~30ms내에 리턴된다.
      • 초당 수천, 수백만개 요청 가변적으로 처리할 수 있다.
      • 전역 테이블 사용하여 전역 복제 자동화 제공 (글로벌 레플리케이션 생성/삭제 간편)

    1.2. DynamoDB 사용에 필요 조건

    • 대량의 Range 쿼리, 집계 쿼리, FULLTEXT 검색 같은 일은 부적절하다.
    • 애플리케이션의 종류가 OLTP(다수 트랜잭션 처리) 라면 적절하다.
    • OLAP와 같은 분석, 통계가 필요하다면 부적절하다.
    • DynamoDB는 NoSQL 서비스로 관계 디비와 달리 모든 데이터 엑세스 패턴을 예상하고, 결과 값을 알고 있어야한다.

    OLTP? OLAP? : 참고 → https://too612.tistory.com/511

    1.3. 사용할때 생각해야할 핵심

    1. 애플리케이션의 Use Case 확인하고 적용할 것. (1.2 사용에 필요 조건 참고)
    2. 데이터의 life cycle 관리 설정
      • TTL 설정 기능 지원
        • dynamoDB에서 제공하는 데이터를 자동으로 삭제해주는 기능이다.
        • TTL 통한 삭제는 비용이 무료. (삭제할때 쓰기 비용이 무려 무료)
        • 백그라운드에서 실행되어서 읽기 / 쓰기가 쓰루풋에 영향을 주지 않는다.
        • 단,삭제하도록 설정한 시간에서 최대 48시간 소요되어 삭제 될 수 있다.
      • BackUp/Archival 설정
        • 특정 시점으로 복구 지원한다. (최대 30일)
        • 용량 관계 없이 온디멘드로 데이터에 대한 백업 Scheduler 기능을 지원한다.
    3. 데이터 모델링하기
      • Entity별로 테이블을 만들지 말고 하나의 큰 테이블만을 사용한다.(Single Table)
      • 관계형 디자인 패턴을 피한다.
        • 운영, 관리 편하려고 사용하는데, 테이블이 관계를 가지면 관리가 어렵다.
        • 동시에 여러 파티션 조회, 사용량 알림 등이 올 확률이 올라감
    4. 데이터 Access Pattern 식별
      • 읽기 / 쓰기 워크로드를 이해해야 테이블 모델링을 잘하고, 서비스를 최대로 활용할 수 있다.
    5. Primary Key 디자인
      • 키 디자인이 필요하다. RDB와 다르게 공식이 없다. 10명이 디자인하면 10개의 다른 결과 나온다. 모든 직원이 함께 Review → Repeat → Review 반복 필요
    6. 가격 정책 설정하기
      • DynamoDB 가격 정책은 2가지
      • 1) 프로비저닝 모드
          • DynamoDB는 다른 DB와 다르게 Read capacity, Write capacity를 기준으로 비용이 책정된다. 여기서 말하는 capacity는 초당 얼마나 많은 read/write를 할 수 있는가에 대한 것이고, 다른 말로 하면 초당 얼마나 많은 데이터를 read/write를 허용할지 미리 정해둔 값만큼 지불하게 된다. (미리 정해놓고 쓰는 것이 가격상 이점이 있다.)
          • 내가 설정한 capacity를 넘어서면 AWS에서 알림을 받아서 더 키우기도 하고, 마케팅 캠페인이 시작되기 전 capacity를 미리 올려두고 하는 방식으로 고객 패턴에 따른 가격 설정을 할 수 있다.
      • 2) 온디맨드 모드
        • 필요한 만큼 자동으로 스케일링 제공 → 유연한 대응 가능하지만 프로비저닝 보다 비용적으로 비싸다. 트래픽을 예측하기 힘든 경우에 사용한다.

    1.4. 그 외 부가적인 기능

    1. 엔터프라이즈 기능 제공
      • DynamoDB Accelerator (DAX)를 이용하면 읽기 캐시를 추가해 성능을 더 개선할 수 있다.
      • ACID 트랜잭션
      • 저장 중 암호화
      • S3로 데이터 축출 (클릭 몇번으로 가능)
      • CloudTrail (로깅 기능 2021년부터 제공)
      • 글로벌 복제 가능
        • 국가 정책상, 데이터 복제 금지 규정이 많아서 개인정보가 있는 데이터와 없는 데이터의 분리가 중요
      • NoSQL workbench (다운 받으면 모델링 시각적으로 해볼 수 있음)

    ###########

    2. DynamoDB 목적

    • 소프트웨어는 그 고유의 목적을 가지고 있다.
    • RDBMS로 비즈니스가 잘 돌아가는데 DynamoDB는 왜 등장 했을까?

    2.1. 비즈니스적 이유에 따른 등장 이유

    연도별 등장 배경

     

    2.2. 기술적 발전에 의한 NoSQL 등장

    [RDBMS vs NoSQL]

    • RDBMS가 등장한 1970-80년대에는 컴퓨터의 3대 요소 CPU, Memory, Disk중에 CPU보다 DISK가 비쌌다. 따라서 정규화로 DISK 사용을 최소화하고 런타임에서 CPU 리소스를 많이 쓰도록 했다.
      • DISK 사용 최소화 위한, 데이터 모델 정규화 노력
        • 조인으로 ad-hoc 쿼리 가능
        • 대부분의 오픈소스 RDBMS는 대부분 아래와 같이 클러스터 구성
          • 1개의 쓰기 노드 / 여러개의 복제본의 읽기 노드
            • 트래픽이 증가하면 스케일업 → 샤딩 할지, 파티셔닝 할지 → 시간, 라이선스 비용 지불, 전문인력 필요
    • NoSQL은 2000년 중반 DISK 가격이 1GB당 1$ 아래로 떨어지면서 디스크를 많이 사용하고 런타임에서 CPU 사용을 줄이는 방식으로 탄생. NoSQL은 처음부터 스케일 아웃을 생각하고 등장
    • DymanoDB
      • 샤딩 할지, 파티셔닝 할지 → 시간, 라이선스 비용 지불, 전문인력 필요 -> Fully Manged Serverless로 제공

    "기술 발전으로 등장한 Key-Value NoSQL DynamoDB"

     

     

    Reference 

     

     

    반응형
Designed by Tistory.