본문 바로가기

AWS Design Pattern/관계 데이터베이스 패턴

(4)
Sharding Write - 쓰기 효율화 ㅁ 풀어야 할 문제 RDBMS의 읽기에 대한 고속화는 매우 중요하고 난이도가 높은 문제다. 스케일 업으로 낼 수 있는 이상의 성능을 내는 것은 당연히 여러 대의 데이터베이스 서버를 이용하면 되지만, 어떻게 해야 하는지는 언제나 고민이다. ㅁ 해결/패턴 여러 대의 데이터베이스 서버에 쓰기 성능을 높이는 방법으로 [샤딩]이 있다. 기본적으로 같은 구조의 데이터베이스를 만들어 테이블의 컬럼을 키로 사용해 분할하여 쓰기 처리를 분산한다. ㅁ 구현 AWS의 RDBMS 서비스인 [RDS]를 샤딩 백엔드 데이터베이스로 이용하면 가용성과 운영 효율을 높일 수 있다. - Spider 스토리지 엔진을 가지고 있는 MySQL 서버 등의 샤딩 소프트웨어를 EC2에 설치한다. - 여러 대의 RDS를 준비하여 샤딩 백엔드 데이터..
Inmemory DB Cache - 자주 사용되는 데이터 캐시화 ㅁ 풀어야 할 문제 데이터베이스 부하의 대부분은 읽기에 관한 것인 경우가 많다. 그 때문에 데이터베이스의 읽기 성능을 개선하면 시스템 전체의 성능 향상과 연결된다. ㅁ 해결/패턴 데이터베이스에서 읽기 성능을 높이는 방법으로 읽기에 자주 사용되는 데이터를 메모리에 캐시하는 것이 일반적이다. 한번 사용한 데이터를 캐시에 올려두고 다음에 사용할 때(디스크가 아닌)메모리에서 읽기 처리를 끝내는 방법이다. 캐시하는 데이터의 전형적인 예로, 데이터베이스 처리에 있어서 시간이 걸리는 쿼리 결과나 복잡한 계산 결과 등을 들 수 있다. ㅁ 구현 AWS의 ElastiCache는 메모리 캐시 서비스다 이 서비스는 장애 시의 자동 복구 기능 등도 가지고 있다. - 메모리 캐시를 준비한다. ElastiCache를 사용해도 되며..
Read Replica - 읽기 전용 레플리카를 통한 부하분산 ㅁ 풀어야 할 문제 데이터베이스의 액세스 빈도가 높아 DB 서버의 자원이 줄어들 때 서버의 사양을 높이는(즉, 스케일 업) 경우가 많다. 스케일 업이 힘들 때는 DB 서버를 수평 분산하는 스케일 아웃이 이루어지나, 일반적으로 어려워한다. 일반적으로 데이터베이스의 쓰기보다 읽기가 비교적 많기 때문에 읽기 처리를 분산하여 시스템 전체의 성능을 높이는 것이 요구된다. ㅁ 해결/패턴 읽기 성능을 높이기 위해서는 몇 가지 처리 방법이 있다. 이 패턴에서는 읽기를 여러 대의 Read Replica(읽기전용 레플리카)에 분산하는 것으로 전체 성능을 높인다. 읽기 전용 레플리카는 마스터에 대해 쓰기에 따라 자기 자신의 데이터에 반영한다. 읽기는 주로 읽기 전용 레플리카를 이용하는 것으로 마스터의 부하를 줄일 수 있다...
DB Replication - 온라인 DB 복제 ㅁ 풀어야 할 문제 시스템에서 중요한 데이터를 보호하는 기본적인 방법은 데이터 베이스에 저장하는 것이다. 하지만 센터의 대규모 재해 발생 시에 대한 대응 방안을 고려해야 한다. ㅁ 해결/패턴 지리적 위치 간의 레플리케이션 패턴, 이 패턴을 통해 데이터 분실을 방지하고 데이터 액세스의 가용성을 확보한다. 클라우드 이전부터 있던 패턴이지만, 클라우드를 이용하면 저 비용으로 여러 지역을 이용할 수 있어 현실적인 대안이 되고 있다. ㅁ 구현 AWS에는 Region, AZ 이라는 개념이 있다. Region이 더 큰 개념으로 서울 지역에 복수의 가용존이 있는 식이다. 이 점을 고려하면 다른 데이터 센터에 문제 없이 EC2를 배치할 수 있고, 데이터베이스의 레플리케이션을 할 수 있다. 가용존 간의 리플리케이션은 RD..