Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

Contents

Aurora

AWS의 RDS는 관계형 데이터베이스(Relational Database)를 서비스한다. EC2, ELB, ElasticCache와 함께 가장 많이 사용하는 AWS 서비스 중 하나다.

RDS는 Mysql, Postgresql, Oracle, Microsoft SQL Server 등과 같은 익숙한 데이터베이스 시스템을 제공하는데, 2015년경 Aurora라는 새로운 데이터베이스를 RDS에 추가했다.

이미 다양한(그리고 널리 알려진) 데이터베이스를 제공함에도 불구하고 새로운 데이터베이스 서비스를 개발한 이유를 살펴보자.

많은 기업들이 DAS(directly attached storage)를 이용해서 데이터를 저장한다. 대기업의 경우 SAN(Storage area network)를 이용하기도 한다. 이들 방식의 아래의 문제를 가지고 있다.

AWS RDS의 경우 Mysql과 PostgreSQL의 사용이 매우 높다. 넓은 사용자 층, 공개 소프트웨어(무료), 적당한 성능, 적당한 수준의 안정성, 손쉬운 인터페이스, 관리 등의 이점을 제공하기 때문이다. 하지만 고성능을 요구하는 서비스에 사용하기에는 아쉬운 성능을 가지고 있다. 과거에는 별 문제가 아니었지만, 인터넷 서비스 사용자의 규모가 커진 지금에는 부족한 성능이 심각한 문제가 될 수 있다. NoSQL 솔류션을 찾는 주된 이유 중 하나다. 여전히 많은 개발자들은 익숙한 SQL, 관리, 검증, 안정성의 이유로 RDBMS를 고려하고 있다. 문제는 성능이다.

Aurora는 성능을 크게 개선한 데이터베이스 엔진이다. Aurora는 전혀 새로운 데이터베이스가 아니다. MySQL과 PostgreSQL을 클라우드 기반에 맞게 리엔지니어링한 데이터베이스다. MySQL 타입의 Aurora는 표준 MySQL에 비해서 5배의 성능을, PostgreSQL의 경우 3배의 성능을 제공한다. 그러면서 MySQL과 PostgreSQL의 기술을 그대로 사용한다. 개발자는 소스코드의 변경 없이, Aurora로 이전하는 것만으로 성능을 크게 높일 수 있다.

아래는 Mysql 타입의 Aurora와 Mysql을 비교한 그림이다.

 Aurora I/O

MySQL RDS는 EBS 볼륨과 EBS 미러에 대한 쓰기를 수행하는데, 둘다 종료 돼면 ACK를 반환한다. 이 작업과 동시에 스탠바이 인스턴스에 쓰기 복제를 시도한다. 이 과정은 순차적으로 실행되며 동기화 되야 한다.

Aurora는 단지 Redo 로그 데이터만을 전송한다. 데이터 저장 볼륨이 공유 가능한 분산된 클라우드 스토리지 이기 때문에가능한 방식이다. 이 방식은 비동기화 될 수 있으며, 그만큼 쓰기, 읽기, 응답속도에 있어서 향상을 기대 할 수 있다.

Aurora는 3개의 AZ에 데이터를 저장하며, 복제된 데이터는 99.9999999%의 내구성을 제공하도록 설계된 S3에 백업이 된다. 이 설계 덕분에 하나의 AZ 혹은 동시 2개의 스토리지 노드의 손실을 견딜 수 있다.

Mysql은 서버와 스토리지가 연결된 DAS 모델을 따르고 있는 반면, Aurora는 서버와 스토리지가 네트워크로 분리된 SAN 모델과 비슷하다. 저렴한? 비용으로 SAN의 효과를 누릴 수 있다는 얘기다.

RDS Mysql에 비해서 5배 이상의 성능을 보인다. 위 데이터는 R3.8XL을 기준인데 (2017년 12월 31일)현재 최고 사양인 db.r4.16XL로 할 경우 초당 20만건 이상의 쓰기 성능을 보여준다. NoSQL처럼 스케일링하는 만큼 성능을 뽑아낼 수 있다.

공간(Spatial) 색인

Mysql도 공간 색인을 제공하긴 한다. 성능이 나오지 않아서 그렇지. Spatial Index로 색인을 하면 R-Tree 색인을 만든다. 반면 Aurora는 Z-index(z-order-curve)를 사용한다.

아래는 성능 측정 결과다. 위치기반 온라인 서비스를 위한 충분한 성능을 제공한다.

MongoDB, Redis, CouchBase, DynamoDB 뭘 써야하지라고 고민 중이었는데, 그냥 Aurora 써야 겠다.

Aurora를 사용할 만한 이유

  • 5배 이상의 성능
  • 최대 60%가량의 비용 절감
  • 손쉬운 마이그레이션
  • 고성능/고가용성, 각종 백업/복구/모니터링 툴
  • 공간 색인

참고