현 상황
재생량을 전송하는 작업에서 uuid로 구분되는 MySQL(RDBMS) 로그 데이터 테이블에 insert와 update가 빈번하게 발생하고 있다. 이를 개선시키고자 한다.
이슈
- 재생량 전송 처리 서버를 분리한다 (API 추출)
- 데이터를 쌓는 과정과 조회 과정이 동시에 일어남에 따라 조회 지연이 길다.
해결방안
- AWS DynamoDB(NoSQL)을 도입한다.
- 기본키의 구성을 바꾼다.
- 데이터 삽입 방법과 조회 방법을 바꾼다.
- 메세지 큐를 사용해 주기적으로 데이터를 정해진 곳으로 전송하도록 한다.
💬 DynamoDB
장점
- 데이터가
key-value
형태로 저장된다. JSON file로 저장되는 개념이라 사용하기 간편하다.
key-value
형태 이므로 READ 속도가 빠르다. (5ms 이하의 읽기 및 쓰기 성능)
- 확장성이 좋다.(수평적. 초당 수천 건의 요청 처리 가능)
- 속성에 대한 추가와 변경이 자유롭다.
- 완전 관리형 서비스이므로 운영 부담이 발생하지 않는다.
- 요청 수에 따라 원활하게 확장되기 때문에 비용 효율적이고 IO 작업을 원활하게 지원한
- 성능과 가용성을 위해 데이터를 3곳의 가용 영역에 복제하여 저장하고 있다.