devops

시스템을 고성능으로 만드는 방법 - DB 본문

DevOps/AWS

시스템을 고성능으로 만드는 방법 - DB

vata500 2022. 7. 20. 18:47
반응형

모든 프로세스에 DB를 거치기 때문에 시스템을 고성능으로 유지하기 위해선 DB의 구조와 매커니즘 또한 아주 중요한 요소 중 하나다.


  • 문제상황 : 너무 많은 읽기 연산
  • 해결책 : 데이터베이스 다중화

Primary를 복제해서 Secondary와 Teriary로 분할한다.

다중화(레플리케이션)의 이점

  • 더 나은 성능(읽기 성능은 부 DB의 갯수와 비례한다)과 CQRS(commit command 책임 분리)
  • 안정성
  • 가용성

주 DB에 문제가 생기면 부 DB가 주 DB로 승격된다.


  • 문제상황 : 너무 많은 데이터(~1TB)
  • 해결책 : 파티셔닝(샤딩)

주 특징은 샤딩된, 나눠진 파티션은 고유한 data만 있다. 그래서 해당 DB를 가지고 하나의 노드를 만들어서 부하분산이 가능해진다. 


  • 문제 상황 : 낮은 검색 성능
  • 해결책 : 인덱싱

인덱스가 없는 데이터베이스는 없다. 보통 행의 고유한 키를 인덱스 도구로 활용한다. 어떤 기준으로 인덱싱을 할것인가가 검색 성능을 좌우한다.


  • 문제 상황 : 동일한 데이터가 너무 자주 조회됨
  • 해결책 : 캐싱을 사용

redis(메모리만 사용)라는 서버가 유명함.ElastiCache가 있다.


  • 문제 상황 : 배치 작업 진행에 따른 성능 저하
  • 해결책 : 근 실시간으로 데이터 웨어하우스로 전달, 변경 데이터 캡처

시스템을 고성능으로 만드는 방법 - 일반적 사례

Throughput 제한 장치 -> 고가용성을 보장할 수 없는 경우

반응형
Comments