애리밍
3k
2020-09-24 09:47:24
2
1356

AWS의 Aurora MySql은 왜 더 빠를까?


안녕하세요~

AWS SA를 목표로 관련 업종에서 5년간 AWS Cloud 아키텍쳐링 및 관리를 해온 애리밍 입니다~


제목과 같이 AWS는 항상 Aurora MySql이 일반 RDS MySql보다 빠르다고 주장하는데 어째서인지 자세히 아는사람은 없을것 같아서 간단하게 설명 드리려고 합니다.


자 우선 AWS의 Service들의 특징을 알아보면 기본적으로 AWS는 고 가용성을 위해서 내부적으로 데이터를 AZ단위(예를 들어 EBS) 또는 Zone 단위(예를 들어 s3 standard)로 복제를 합니다. RDS또한 마찬가지 이며 EBS 베이스로 데이터를 저장하죠.


Mysql의 경우는 Storage Engine 에 bin Log와 InnoDB Engine에 Transaction Log 인 Read Log가 있습니다. 


우선 RDS MySql의 멀티 AZ및 다중 복제 인스턴스를 활성화 한 아키텍쳐를 보겠습니다.

게시물 이미지
자 위와 같은 경우 데이터가 primary instance에 저장되었을때면 해당 instance storage에 bin, read log가 남습니다. 그리고 제가 이전에 말한 것 처럼 AWS는 기본 가용성을 위하여 EBS의 경우 데이터를 AZ단위로 복제합니다. az단위 복제시 이 부분은 동기적으로 처리 되기 때문에 위의 아키텍쳐에서는 복제가 총 4변 일어난다고 보면 됩니다.


반면 Aurura의 경우는 어떨까요???

게시물 이미지

단순하죠? Storage Cluster가 추가 되었습니다. AWS RDS MySql의 경우는 bin Log 기반의 복제를 이용하여 멀티 AZ및 ReadReplica를 유지하지만 Aurora의 경우는 Storage Cluster를 이용하여 복제하는 시간을 단축 시켰습니다. bin log를 읽어 동기화 할 필요가 없어지죠


RDS MySql의 경우는 Read Replica가 bin Log를 읽어 동기화를 해야 하고 그 bin Log 조차도 Mirror EBS에 저장하는 시간이 걸리는 반면 Aurora MySql은 Storage Cluster를 이용하기 때문에 Read Replica가 순전히 100% Read 업무에 집중 할 수 있습니다.


참고 : https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/Aurora.Overview.html


아시는 분들은 아시겠지만 모르고 그냥 좋다니까 쓰는 사람들이 의외로 많더라고요. 가끔 왜 좋은지 물어보시는 분들도 계시고 ㅎㅎ


업무 하실때 도움 되시길 바라며 글을 올립니다~



0
  • 댓글 2

  • 지붕뚫고높이차
    949
    2020-09-25 10:43:54
    log 파일은 회복을 위해 사용되기 때문에
    트랜젝션 직렬성이 적용됩니다.
    느릴수 밖에 없구요.

    log 파일을 사용하지 않으면
    당연히 빠르겠죠.

    하지만
    중복 저장 이벤트가 실패하거나
    특정 노드 장애 발생시
    데이터 무결성 보장은 힘들 것 같네요.

    장단점이 있는 것 같습니다.
  • 구경꾼111
    21
    2020-09-26 19:42:28

    기술적인 얘기와는 별도로 실무에서 Aurora 5.7버전 쓰다가

    갑자기 서비스 장애 나서 깜놀했던 기억이 있네요.

    로그기록을 갖고 AWS에 문의하니 자기들은 원인을 모르겠다고 사람 환장하게 만들어서 

    온갖 종류의 테스트와 로그분석을 통해 AWS의 정기서버점검 때 접속장애가 발생한다는 것을 밝혀냈습니다.

    여차저차해서 결국 Aurora 버전업으로 해결했는데 AWS는 사과나 보상 한마디 없더군요. 

    Aurora가 좋은지는 잘 모르겠는데 AWS의 오만함에는 치가 떨립니다.


  • 로그인을 하시면 댓글 을 등록할 수 있습니다.