AWS 사용하기 03 - DynamoDB - Capacity

AWS 사용하기 03 - DynamoDB - Capacity

2018, Nov 07    

Capacity 란?

1초에 읽거나 쓸 수 있는 용량을 이야기 합니다.
테이블 마다 Capacity 를 설정함에 따라서 필요한 트랜젝션 용량을 조절할 수 있습니다.
이거에 따라서 가격이 천차만별로 갈리기 때문에 잘배워 둬야됨


RCU(Read Capacity Units) 와 WCU(Write Capacity Units)

읽을 때의 capacity를 RCU 쓸때의 Capacity 를 WCU 라고 합니다.
RCU 와 WCU 는 같은 1 capacity 라고 허용 용량이 다르기 때문에 기억해 놓을 필요가 있습니다.

  • 1 capacity 별 최대 허용 데이터양
일관된 읽기(Eventually Consistent Read) 강력한 일관된 읽기(Strongly Consistent Read) 쓰기
4kb * 2 = 8kb 4kb 1kb


RCUs

RCU 에 대해 좀더 자세히 알아보겠습니다. RCU 는 다시 일관된 읽기(Eventually Consistent Read) 와 강력한 일관된 읽기(Strongly Consistent Read) 로 나뉠 수 있습니다.
일관된 읽기강력한 일관된 읽기 의 차이를 이해하기 위해서는 가용 영역 에 대해 먼저 알아야 합니다.

  • 가용 영역과 일관된 읽기

    AWS 의 각 Region 에 DB 데이터가 추가 될때, 이 데이터는 해당 region 에 한곳에만 존재하는 것이 아닙니다.
    같은 리전안에서도 여러 곳으로 같은 데이터를 복사해서 보관되는데, 이렇게 하면 크게 두가지 장점이 있습니다.

    1. 가장 네트워크 처리량이 낮은 가용영역 으로 연결 함으로써 시간 처리 비용을 낮춘다.
    2. 서로 물리적 오류로부터 분리되어 있기 때문에 안전성을 높일 수 있다.

    이런 가용 영역의 장점은 DB에서 데이터를 읽을 때도 마찬가지로 가장 네트워크 처리량이 낮은 가용영역으로 연결합니다.
    이런 가용 영역의 장점 때문에 DynamoDB 는 안정적인 성능의 퍼포먼스를 제공할 수 있게 되었고,
    이것을 일관된 읽기 라고 합니다.

  • 강력한 일관된 읽기(Strongly Consistent Read)

    강력한 일관된 읽기는 일관된 읽기를 보완한 방식의 읽기 입니다.

    예를 들어 하나의 Item 을 갱신한다고 했을 때,
    모든 가용 영역에 데이터가 갱신되기 까지는 최장 1초 정도의 시간이 소요될 수 있습니다.

    그러나 거의 같은 시점에 해당 데이터를 읽게 될 경우,
    데이터를 불러오는 가용 영역에는 아직 최신의 데이터가 갱신 되어 있지 않을 가능성이 있습니다.

    이러한 가능성을 보완하기 위해 강력한 일관된 읽기 는 최신의 데이터를 불러오는 것을 보장합니다.

    하지만 속도가 일관된 읽기 보다 느릴 수 있고,
    capacity 당 데이터 제한이 줄어들기 때문에 필요한 경우가 아니라면 성능면에서는 일관된 읽기가 더 좋지 않을까 생각합니다.

    강력한 일관된 읽기는 따로 option을 지정해 주지 않는 이상, dafault 값으로는 일관된 읽기로 데이터를 불러오게 됩니다.

  • 예시) item 당 9k 의 데이터 15개를 읽을 경우의 필요한 capacity 수(일관된 읽기)

    9k / 8k(일관된 읽기 최대치) = 1.125 => 올림 => 2개 (아이템 하나당 필요한 capacity 수)
    2 capacity * 15 개 = 30 capacity


WCUs

WCUs 경우 앞서 말씀드렸듯이 1 capacity 당 1kb 의 데이터를 쓸 수 있습니다.

  • 예시) item 당 9k 의 데이터 15개를 등록할 경우의 필요한 capacity 수

    9k/ 1k * 15 개 = 135 capacity