DevOps/AWS

AWS Aurora DB

kyoulho 2023. 6. 18. 16:56

AWS가 MySQL 및 PostgreSQL을 호환해서 만든 RDBMS로 RDS와는 다른 AWS만의 RDBMS로 기존 소스들을 AWS에 맞게 고쳐서 만들어졌다.

 

특징

성능

오로라는 기존의 MySQL과 PostgreSQL 데이터베이스보다 뛰어난 성능을 제공합니다. 오로라는 분산 스토리지 및 복제 기능을 활용하여 처리량과 응답 시간을 향상시킵니다. 또한 자동 스케일링 기능을 통해 워크로드의 요구에 따라 자동으로 리소스를 조정할 수 있습니다.

 

확장성

 오로라는 수평 및 수직 확장이 가능합니다. 수평 확장을 통해 여러 개의 인스턴스를 사용하여 데이터베이스 처리 능력을 증가시킬 수 있으며, 수직 확장을 통해 인스턴스 유형을 업그레이드하여 더 많은 리소스를 할당할 수 있습니다.

 

내구성

오로라는 데이터를 여러 가용 영역에 자동으로 복제하여 내구성을 보장합니다. 이는 장애 복구 및 고가용성을 제공하며, 데이터의 손실 없이 신뢰성 있는 운영을 가능하게 합니다.

 

보안

오로라는 데이터베이스 암호화를 통해 데이터의 보안을 강화할 수 있습니다. 데이터베이스 암호화는 저장 및 전송 중에 데이터를 보호합니다.

 

관리 편의성

AWS의 관리형 서비스로서, 오로라는 데이터베이스 관리 작업을 자동화하여 개발자 및 운영자의 부담을 줄입니다. 백업, 복원, 모니터링 등의 작업은 AWS가 관리하므로 데이터베이스 운영에 대한 작업 부담을 줄일 수 있습니다.

 

 


 

EC2 vs RDS vs Aurora

  MySQL on EC2 RDS MySQL Aurora MySQL
MySQL 구성 자유도 높음
수동으로 서버 설치
자유도 낮음
쉽게 서버 추가 가능
자유도 낮음
쉽게 서버 추가 가능
Backup 수동으로 백업
스크립트 작성
자동으로 백업
풀백업 및 증분백업
자동으로 백업
풀백업 및 증분백업
Restore 수동으로 Restore Full Restore 및 Pin Point Restore 가능 Full Restore 및 Pin Point Restore 가능
Load Balancer 수동 구축 Master에 대해서만 가용성 보장 Writer 및 Reader Endpoint 제공
Version 자유도 높음 AWS 에서 제공하는 것만 가능 AWS 에서 제공하는 것만 가능
Upgrade 자유도 높음 AWS 에서 제공하는 것만 가능 강제 업데이트 가능
Failover 수동 Button 및 Active Master에 문제시 가동 Button 및 Active Master에 문제시 가동
스토리지 EBS EBS Shared Storage
복제 지연 기존 IDC와 동일 기존 IDC 동일 100ms

 


 

인스턴스 클래스

Serverless v2

서버리스 클래스는 일정한 작업 부하가 있는 응용 프로그램이나 트래픽 변동이 큰 환경에서 유용합니다. 작업량의 예측이 어려운 경우나 갑작스러운 트래픽 증가에 대응해야 할 때, 서버리스 인스턴스는 자동으로 필요한 확장성을 제공하여 안정적인 성능을 유지할 수 있습니다.

  • 자동 확장/축소: 서버리스 인스턴스는 작업량에 따라 자동으로 확장 및 축소됩니다. 요청이 증가하면 인스턴스가 자동으로 확장되어 처리 능력을 높이고, 요청이 감소하면 자동으로 축소되어 리소스를 절약합니다.
  • 비용 최적화: 서버리스 인스턴스는 사용한 리소스에 대해서만 비용을 지불합니다. 작업량이 적을 때는 자동으로 인스턴스가 축소되므로 불필요한 비용을 절감할 수 있습니다.
  • 유연성: 서버리스 인스턴스는 필요한 시간 동안만 활성화되어 사용됩니다. 따라서 인스턴스를 효율적으로 활용하고, 요청이 없는 시간에는 비활성 상태로 유지하여 비용을 절감할 수 있습니다.
  • 관리 편의성: 서버리스 인스턴스는 AWS가 백업, 복원, 패치, 보안 등의 관리 작업을 자동으로 처리합니다. 이를 통해 데이터베이스 관리에 대한 부담을 줄이고, 개발자는 핵심 비즈니스 로직에 집중할 수 있습니다.

 

R 클래스

R 클래스 인스턴스는 대규모 데이터 처리, 분석 작업, 메모리 집약적인 워크로드를 처리해야하는 경우에 유용합니다. 예를 들어 대규모 데이터베이스 분석, 데이터 웨어하우스 작업, 실시간 대시보드 등에 사용될 수 있습니다. 이 클래스는 뛰어난 성능과 메모리 용량을 제공하여 데이터베이스 응용 프로그램의 처리 요구 사항을 충족시킬 수 있습니다.

  • 고성능 메모리: R 클래스 인스턴스는 높은 메모리 처리 능력을 제공합니다. 이를 통해 대규모 데이터베이스 쿼리, 분석 작업, 메모리 집약적인 작업을 처리할 수 있습니다.
  • 높은 성능: R 클래스는 CPU 및 I/O 리소스에 대한 향상된 액세스를 제공하여 빠른 데이터베이스 작업을 지원합니다. 이는 처리량과 응답 시간을 개선하여 응용 프로그램의 성능을 향상시킵니다.
  • 병렬 처리: R 클래스 인스턴스는 병렬 처리 기능을 갖추고 있어 동시에 여러 작업을 처리할 수 있습니다. 이는 대규모 트랜잭션 처리 또는 대용량 데이터 로드 작업과 같은 작업에 유용합니다.
  • 분산 스토리지: R 클래스는 데이터를 분산 스토리지에 저장하여 데이터의 안정성과 내구성을 보장합니다. 분산 스토리지는 데이터를 여러 가용 영역에 자동으로 복제하여 장애 복구 및 고가용성을 제공합니다.
  • 확장성: R 클래스 인스턴스는 수평 확장이 가능합니다. 여러 개의 인스턴스를 사용하여 데이터베이스 처리 능력을 증가시킬 수 있으며, 필요에 따라 인스턴스 유형을 업그레이드하여 더 많은 리소스를 할당할 수 있습니다.

 

T 클래스

T 클래스 인스턴스는 작은 규모의 애플리케이션, 테스트 및 개발 환경, 가변적인 트래픽 패턴을 가진 응용 프로그램에 적합합니다. 비용 효율성과 범용성을 추구하며, 작업량에 따라 자동으로 리소스를 조정하여 유연한 확장성을 제공합니다.

  • 비용 효율성: T 클래스 인스턴스는 경제적인 가격으로 제공되어 비용을 절감할 수 있습니다. 사용량에 따라 비용이 유동적으로 결정되며, 작은 규모의 애플리케이션 및 워크로드에 적합합니다.
  • 범용성: T 클래스는 다양한 작업을 처리할 수 있는 범용 인스턴스입니다. CPU 및 메모리를 균형 있게 제공하여 일반적인 응용 프로그램 및 데이터베이스 워크로드를 처리할 수 있습니다.
  • 가변적인 CPU 성능: T 클래스 인스턴스는 "CPU 크레딧"이라는 개념을 사용하여 가변적인 CPU 성능을 제공합니다. CPU 크레딧은 작업량에 따라 증가하거나 감소하며, 작업량이 적을 때는 크레딧을 모았다가 높은 작업량이 발생할 때 사용할 수 있습니다.
  • 자동 확장: T 클래스 인스턴스는 필요에 따라 자동으로 확장됩니다. 작업량이 증가하면 자동으로 더 많은 리소스를 할당하여 성능을 향상시키고, 작업량이 감소하면 자동으로 축소하여 비용을 절감합니다.
  • 관리 편의성: T 클래스 인스턴스는 AWS가 백업, 복원, 모니터링 등의 관리 작업을 자동으로 처리합니다. 이를 통해 데이터베이스 운영에 대한 부담을 줄이고, 개발자는 핵심 비즈니스에 집중할 수 있습니다.

 

T 클래스를 서버리스 인스턴스보다 추천하는 이유

  • 예측 가능한 비용: 서버리스 인스턴스는 사용한 리소스에 대해서만 비용을 지불하는 장점이 있지만, 트래픽 변동이 큰 경우 예측하기 어려울 수 있습니다. 반면에 T 클래스는 정해진 가격으로 인스턴스를 사용할 수 있으므로, 예측 가능한 비용 모델을 제공합니다.
  • 유연한 CPU 성능: T 클래스는 가변적인 CPU 크레딧 시스템을 통해 CPU 성능을 제공합니다. 하지만 서버리스 인스턴스는 요청에 따라 자동으로 스케일링되는 특성 때문에 CPU 성능에 대한 예측이 어려울 수 있습니다. 개발 환경에서는 일시적으로 높은 CPU 성능이 필요한 경우가 있을 수 있으므로, T 클래스는 이러한 요구 사항을 더 잘 충족할 수 있습니다.
  • 범용성: T 클래스는 다양한 작업을 처리할 수 있는 범용 인스턴스로 개발 환경에 적합합니다. 서버리스 인스턴스는 주로 특정한 워크로드 유형에 특화되어 있으므로, 다양한 작업을 처리해야 하는 개발 환경에서는 T 클래스가 더 적합할 수 있습니다.
  • 개발자 제어: T 클래스는 인스턴스 유형, 크기, 수명주기 등을 개발자가 직접 제어할 수 있는 장점이 있습니다. 서버리스 인스턴스는 백엔드 시스템에서 자동으로 관리되므로 개발자는 제한된 제어 권한을 가집니다. 개발 환경에서는 개발자가 인스턴스 설정과 제어에 대한 유연성을 원할 수 있으므로 T 클래스가 더 적합할 수 있습니다.

 하지만 서버리스 인스턴스는 트래픽 변동이 크거나 예측하기 어려운 경우에 유용하며, 비용 효율성과 자동 확장성을 원하는 경우에는 여전히 유용한 옵션이 될 수 있습니다. 상황에 맞게 인스턴스 클래스를 선택하는 것이 중요합니다.