| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 청첩장 모임
- 논문 정리
- 디자인 패턴
- 커머스
- amazon ecs
- terraform
- github
- 경로 계획 알고리즘
- Til
- 지표
- 신혼 여행
- study
- Rust
- 실용주의 프로그래머
- Go-lang
- 생성 패턴
- 토스
- MAPF
- 티스토리챌린지
- leetcode
- docker
- Playwright
- AWS
- DevOps
- 구조 패턴
- AWS 비용 절감
- PostgreSQL
- 오블완
- ssh
- 14일 공부
- Today
- Total
밤 늦게까지 여는 카페
간단하게 정리하려고 했는데 어쩌다보니 늦어진 Amazon Dynamodb 장단점 리뷰 본문
안녕하세요. 오늘은 Amazon Dynamodb 사용 후기를 정리해보려고 합니다.
이전에 동료 분이 Dynamodb를 사용하면서 겪은 문제들이 뭐가 있었는지 물어보셔서 간단하게 답변드린 적이 있었습니다.
그런데 이걸 조금 더 정리해서 포스팅하면 다른 분들께도 도움이 될 수 있을 것 같아서 이렇게 리뷰(?)를 남기게 되었습니다.
처음에는 제가 느꼈던 장단점만 남기려고 했는데 하다보니 다른 블로그 글들도 참고하게 되어 시간이 오래 걸리게 되었네요 ㅋㅋ쿠
1. 제가 느꼈던 Dynamodb 단점
1.1. 복잡한 쿼리를 지원하지 않는 점
복잡한 쿼리를 지원하지 않아서 키와 index를 잘 설정하지 않을 시 쿼리로 데이터를 찾을 수 없어서 많은 양의 데이터를 스캔해야합니다.
다음과 같은 쿼리를 사용할 수 없는 것이죠 ㅜㅠ
SELECT
student.sid, student.name, department.name
FROM
student, department
WHERE
student.department_id = department.id
데이터를 참조하지 않고, 통째로 넣어버리면 되지만...! 그렇게 할 수 없는 경우에는 많은 불편함을 감수해야 하죠 ㅜㅠ
Dynamodb에 한가지 종류의 데이터만 저장했어서 Dynamodb에 저장된 데이터 간의 Join을 할 일은 없었습니다.
- 다른 데이터베이스에 저장된 데이터 간의 Join은 어떻게 하는 것이 효율적일까요?
더 나아가서 통계 분석이 필요할 때 데이터베이스 차원에서 계산할 수 없고, raw data를 직접 다운로드 받은 후에 분석해야 하는 불편함이 생길 수 있습니다.
1.2. 아이템 별 최대 용량이 400KB인 점
NoSQL 데이터베이스는 RDBMS와는 반대로 역정규화를 통해서 조회 성능을 높이곤 합니다.
그래서 이것저것 데이터를 덕지덕지 데이터를 붙이곤 하는데요. 서비스 실시간 데이터를 기록용으로 저장했었는데 어느 순간 400KB 제한에 걸려서 에러가 발생하더라고요.
400KB가 작은 크기는 아니지만 기록용으로는 적합하지 않았던 것 같습니다 ㅋㅋㅋㅋ쿠ㅠ
대안으로 찾아보던 Postgresql 같은 경우에는 jsonb 타입의 컬럼에 255MB까지 저장 가능한 것과 비교하면 아쉽다는 생각이 들었습니다.
1.3. DB 차원에서 pub/sub을 지원하지 않습니다.
Postresgql, Redis를 사용하면서 pub/sub 기능을 정말 유용하게 사용했었습니다.
- 처음에는 DB에 이런 기능이 왜 있을까 갸우뚱했지만 서비스 간 통신, 데이터 변경사항 추적 등 정말 유용했습니다.
Dynamodb는 아쉽게도 pub/sub 기능을 지원하지 않아서 같은 방식을 지원하기 위해서는 별도의 서비스 연동 및 개발이 필요해지더라구요.
2. 제가 겪어본 Dynamodb 장점
2.1. 간단한 데이터 모델링
(Dynamodb만의 장점은 아니지만)데이터 모델링이 간단합니다!
데이터 정규화? 신경 쓰지 마세요! 적극적인 데이터 중복으로 쿼리 효율을 높이면 되니 모델링 정말 단순합니다.
2.2. 완전 관리형 서비스
DB가 살아있는지 죽었는지 신경 안 써도 되는 점, 성능에 대한 완벽한 신뢰는 소규모 팀에서 정말 눈독 들일만한 장점입니다.
- 운영, 관리에 인력을 투입할 여유가 없다보니 ㅜㅠ
- 그런 점에서 Aurora DB도 살펴보려고 합니다!
저희 팀도 소규모일 때 Dynamodb를 적용해서 큰 이득을 볼 수 있었습니다.
2.3. On-demand 요금제
처음에 aws의 RDS나 Elasticache를 사용했을 때 결제된 비용을 보고 정말 깜짝 놀랐습니다.
'고작 redis 하나 실행했을뿐인데 무슨 비용이...' 라고 속상한 적도 있었지만 그것이 완전 관리형 서비스의 장단점인 것을 어찌하겠습니까...
그런 점에서 Dynamodb의 사용한만큼만 지출되는 On-demand 요금제는 매력적이었습니다.
- 데이터 조회, 삽입에 주의하긴 해야하지만 정말 매력적입니다.
- 여기까지 적고보니 Aurora DB에 대한 호기심이 더 커지네요...!
2.4. 데이터 일관성 지원
Dynamodb는 기본적으로는 일관성 있는 읽기를
지원하지 않습니다.
하지만 아주 간단하게 일관성 있는 읽기를 사용할 수 있습니다.
파라미터 하나만 수정하면 됩니다!
- 하지만 비용, 지연 시간이 발생할 수 있으니 참고 부탁드립니다.
3. 같이 보면 좋은 포스팅들
내용을 정리하고 다른 자료들을 찾아보니 훨씬 정리가 잘 된 것들이 많더라구요!
읽어보시면 정말 많은 도움이 될 거에요 :)
- https://sujl95.tistory.com/m/84
- https://rockset.com/blog/5-use-cases-for-dynamodb/
- dynamodb 에 관해서 비판적인 자료도 있었는데 삭제되었는지 이제는 안 보이네요 ㅜㅠ
'aws' 카테고리의 다른 글
| aws sam cli "python3.11 runtime is not supported" 에러 (0) | 2024.03.07 |
|---|---|
| 직접 해보는 AWS Load Balancer LOR 라우팅 정책 실험 - 직접 해보니깐 더 모르겠네요;;; (0) | 2023.11.20 |
| [2023-06-20] 참여하고 2달 넘게 지나서야 작성하는 AWS 글로벌 스타트업 진출 세미나 후기 (2) | 2023.09.03 |
| Amazon NAT Gateway - Network Address Translation이 왜 필요한 것일까요? (0) | 2023.09.01 |
| AWS 고정 IP 할당 방법 - egress 네트워크 트래픽편(EIP, NAT Gateway) (4) | 2023.08.24 |