본문 바로가기
ETC

로그용 NoSQL 뭐가 좋을까?

by 2세1의 행복한 개발 2020. 4. 29.
반응형

안녕하세요

회사에서 많은 로그를 통합으로 관리하기 위하여 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

댓글