안녕하세요
회사에서 많은 로그를 통합으로 관리하기 위하여 NoSQL로 구성하기로 했어요
3개의 DB가 후보로 있어요
1. MongoDB
2. Amazon ES
3. Amazon DynamoDB
1.MongoDB - WiredTiger
선택한 이유
AWS에서 제공하는 DB와 다르게 EC2에 직접 세팅하는 형태로 지원 기능을 100% 활용 가능
사용자가 많아 관련 자료가 많음
데이터를 압축할 수 있다는 특징
분석방식
Aggregation Pipeline
장점
가장 배포되고 안정화 된 nosql 중 하나
Compression 기능을 통해 저장 공간의 최소화가 가능하다.
sql과 비슷한 방식의 쿼리
지원하는 언어가 매우 다양
단점
직접적인 트랜잭션 처리 불가능 - 레플리카 세트 생성해야 가능해짐
물리적인 메모리 사이즈가 성능에 많은 영향
B-Tree 인덱스로 인한 데이터양에 따라 효율이 떨어짐
2.Amazon ES
선택한 이유
Restful API가 제공되어 별도의 API개발이 필요없음
Kibana에서 자체적으로 데이터 시각화를 제공
타 NoSQL에 비해 뛰어난 확장성(AWS)
분석방식
Amazon ES -> Kibana
장점
Restful API 제공 (별도 API를 작성할 필요가 없음)
데이터 갱신이나 재시작이 필요없는 실시간 분석
SQL문 제공
단점
업데이트 제공하지 않음
실시간 처리 불가 - 1초 정도의 딜레이가 있음(commit, flush)
엘라스틱에서 지원하지 않는 플러그인이 많음
3.DynamoDB
선택한 이유
다른 NoSQL 과 다르게 serverless DB라는 특징으로 서버관리가 필요 없음
중단 없이 스케일업이 가능
분석 방식
AWS EMR -> Hive
장점
full_managed 환경 (클러스터링, 백업정책, 성능상향, 다중리젼 지원 등)
서버 관리 불필요
서버정지 없이 설정을 변경할 수 있음
단점
자료가 많지 않다
DB workbench 툴이 없다
쿼리가 용량(쓰기,읽기)을 초과할 경우 성능을 지연시키지 않고 요청을 거부한다
비용 비교
기준 사양 : 온디맨드 - m5.xlarge
EC2 MongoDB |
AWS ES |
AWS DynamoDB |
|
기본 |
시간당 0.236 USD |
시간당 0.348 USD |
쓰기 요청 유닛 100만 개당 1.3556 USD 읽기 요청 유닛 100만 개당 0.271 USD 1유닛 당 1KB |
스토리지 |
범용 SSD(gp2) 볼륨 월별 제공된 스토리지 GB당 0.114 USD |
범용 SSD(gp2) 볼륨 USD월별 GB당 0.154 USD |
월별 GB당 0.27075 USD |
순위 |
1 |
2 |
3 |
결과
Amazon ES를 선택하였습니다
개발기간과 편리함으로 인하여 이쪽으로 오게 되었습니다
사업부에 빠른 피드백을 주고 다음 프로젝트를 위하여 선택되었습니다
'ETC' 카테고리의 다른 글
PHP MongoDB "No suitable servers found" ERROR (0) | 2020.05.15 |
---|---|
JMeter로 서버부하 테스트하기 (0) | 2020.05.14 |
AWS - EC2 - ELB 구성하기 (0) | 2020.05.14 |
댓글