Learn abount DynamoDB
Brunch Story
아래는 DynamoDB에 대해서 공부하면서 배운 내용 10가지입니다.
1. DynamoDB는 유연한 수평확장을 지원합니다. 데이터가 많아지거나 요청이 많아지더라도, DynamoDB는 파티션 분리를 통해서 일정한 응답속도를 제공합니다. 사용자는 파티션 분리나 수평 확장에 대해서 신경쓸 필요가 없습니다. 참고로, Amazon.com은 2023년 Prime Day에 최대 초당 1억 2천 6백만 건의 요청을 DynamoDB로 처리했습니다.
2. DynamoDB는 globally active write를 지원하는 서비스입니다. Global Tables를 사용하면 글로벌 리전에 복제본을 생성할 수 있고, 어디서나 가장 가까운 리전으로 요청을 보낼 수 있습니다. 버튼만 클릭하면 글로벌 어디에서나 빠르게 접근할 수 있는 Active Multi-Region 데이터베이스를 만들 수 있습니다.
3 DynamoDB는 완전 관리형 서비스입니다. 단순한 관리형 서비스보다 더 나아가서, 버전 관리, 보안 패치 등에 대한 설정이 전혀 필요 없습니다. 보안 그룹, 파라미터 그룹 등을 생성하거나 관리할 필요도 없습니다.
4. DynamoDB는 내부적으로 3개의 AZ에 데이터를 저장합니다. 데이터를 쓸 때는 리더 스토리지 노드에 먼저 저장하고, 이를 두 개의 팔로워에 각각 복제합니다. 2개 AZ에서 쓰기가 완료되면 사용자는 200 OK 응답을 받습니다.
5. DynamoDB는 기본적으로 Eventually Consistent Read를 지원합니다. 읽기 요청을 하면 3개의 AZ에 있는 스토리지 노드 중 하나에서 데이터를 가져옵니다. 따라서 복제 중간에는 1/3의 확률로 이전 데이터를 가져올 수 있습니다.
6. Strongly Consistent Read를 사용하려면 Eventually Consistent Read보다 2배의 RCU를 사용해야 합니다. Strongly Consistent Read를 사용하면 DynamoDB는 리더 스토리지 노드에서 데이터를 조회합니다. 따라서 최신 데이터를 보장받을 수 있습니다.
7. DynamoDB는 파티션 키에 따라서 파티션을 결정합니다. 파티션 키를 Hash한 값이 바로 파티션의 위치가 되는 셈입니다. 따라서 파티션 키는 다양성이 높은 값으로 정하는 것이 좋습니다. 정렬 키(Sort Key)는 파티션 내에서 정렬을 하는데 사용됩니다.
8. DynamoDB 파티션은 최대 초당 3000RCU / 1000WCU를 지원합니다. 이보다 더 많은 양의 요청을 처리해야할 때는 DynamoDB가 알아서 파티션을 분리해줍니다. 또한 파티션 사이즈는 최대 10GB까지 지원합니다. 10GB가 넘어가면 파티션을 분리합니다.
9. DynamoDB는 하나의 아이템이 요청을 지나치게 많이 받는 경우에, 해당 아이템을 별도의 파티션으로 분리합니다. 이는 파티션마다 고정되어 있는 자원을 고르게 분산시키기 위함입니다. 그 덕분에 DynamoDB는 저장된 데이터가 많건, 요청이 많건 일정한 응답속도를 지원할 수 있습니다.
10. DynamoDB는 사용하기 전에 설계하는 작업이 필수입니다. 먼저 사용 사례를 검토해야합니다. 예컨대, DynamoDB는 OLAP보단 OLTP성 업무에 적합하고, Write Heavy한 애플리케이션에서 유용하게 사용할 수 있습니다.
10-1. 사용 사례에 DynamoDB가 적합하다면, 테이블을 구성하는 Entity를 정의하고, Entity간의 관계를 정의합니다. 그 이후에는 Access Pattern을 정리합니다.
10-2. Access Pattern은 실제 서비스를 구성하는데 필요한 API 리스트라고 보면 쉽게 이해할 수 있습니다. 예컨대, "userID로 사용자 정보 조회", "postID로 게시글 정보 조회" 등이 있습니다.
10-3. Access Pattern이 정리되면 실제 Key Design을 진행합니다. 이때, 파티션 키는 중복도가 적도록 prefix 또는 postfix 등을 사용하여 분산하는 것이 좋으며, 정렬 키의 경우 begins_with 함수로 조회할 수 있도록 prefix 패턴을 사용하는 것이 좋습니다.
https://brunch.co.kr/@growthminder/133
다음 내용이 궁금하다면?
이미 회원이신가요?
2024년 3월 16일 오후 2:08
『Clean Architecture』의 “FUNCTIONAL PROGRAMMING” 마지막에는
... 더 보기이
... 더 보기J
... 더 보기오
... 더 보기이 친구도 만만치않게 독특한 편
... 더 보기