데이터베이스 아키텍처 선택 - 성능 효율성 원칙

데이터베이스 아키텍처 선택

시스템에 대한 최적의 데이터베이스 솔루션은 가용성, 일관성, 파티션 허용 오차, 지연 시간, 내구성, 확장성, 쿼리 기능에 대한 요구 사항에 따라 다릅니다. 여러 시스템은 다양한 하위 시스템에 대해 서로 다른 데이터베이스 솔루션을 사용하고 다양한 기능을 활성화하여 성능을 개선할 수 있습니다. 시스템에 대해 잘못된 데이터베이스 솔루션 및 기능을 선택하면 성능 효율성이 저하될 수 있습니다.

데이터 특성 파악: 워크로드에 포함된 데이터의 다양한 특성을 파악합니다. 예를 들어 워크로드에 트랜잭션이 필요한지 여부, 워크로드가 데이터와 상호 작용하는 방식, 성능 요구 사항 등을 확인할 수 있습니다. 이 데이터를 사용하여 가장 우수한 성능을 제공하는 워크로드용 데이터베이스 방식(예: 관계형 데이터베이스, NoSQL 키-값, 문서, 와이드 컬럼, 그래프, 시계열 또는 인메모리 스토리지)을 선택합니다.

관계형, 키-값, 문서, 인메모리, 그래프, 시계열 및 원장 데이터베이스를 비롯하여 특별히 구축된 다양한 데이터베이스 엔진 중에서 선택할 수 있습니다. 특정 문제 또는 문제 그룹을 해결할 수 있는 최고의 데이터베이스를 선택할 수 있으므로 제한적이고 획일적인 범용 데이터베이스에서 벗어나 고객의 요구 사항을 충족하는 애플리케이션을 구축하는 데 집중할 수 있습니다.

관계형 데이터베이스는 미리 정의된 스키마와 스키마 간의 관계를 사용하여 데이터를 저장합니다. 이러한 데이터베이스는 ACID(원자성, 일관성, 격리, 내구성) 트랜잭션을 지원하고 참조 무결성과 강력한 데이터 일관성을 유지하도록 설계되었습니다. 많은 기존 애플리케이션, ERP(엔터프라이즈 리소스 계획), CRM(고객 관계 관리) 및 전자 상거래의 데이터가 관계형 데이터베이스를 사용하여 저장됩니다. 이러한 데이터베이스 엔진의 다수를 Amazon EC2에서 실행하거나 다음 AWS 관리형 데이터베이스 서비스 중에서 하나를 선택할 수 있습니다.: Amazon Aurora, Amazon RDSAmazon Redshift 참조.

키-값 데이터베이스는 대개 대량의 데이터를 저장 및 검색하는 일반적인 액세스 패턴에 최적화되어 있습니다. 이 데이터베이스는 동시 요청의 양이 매우 많은 경우에도 빠른 응답 시간을 제공합니다.

트래픽이 많은 웹 앱, 전자 상거래 시스템 및 게임 애플리케이션은 키-값 데이터베이스의 일반적인 사용 사례입니다. AWS에서는 인터넷 규모의 애플리케이션을 위한 보안, 백업 및 복원, 인메모리 캐싱이 내장된 탁월한 내구력의 완전관리형 다중 리전 다중 마스터 데이터베이스인 Amazon DynamoDB를 활용할 수 있습니다.

인메모리 데이터베이스는 데이터에 실시간으로 액세스해야 하는 애플리케이션에 사용됩니다. 이 데이터베이스는 데이터를 메모리에 직접 저장함으로써 밀리초 단위의 지연 시간도 허용되지 않는 애플리케이션에 마이크로초 단위의 지연 시간을 제공합니다. 애플리케이션 캐싱, 세션 관리, 게임 순위표 및 지리 공간 애플리케이션에 인메모리 데이터베이스를 사용할 수 있습니다. Amazon ElastiCache 는 다음과 호환되는 완전관리형 인메모리 데이터 스토어입니다. Redis 또는 Memcached 참조.

문서 데이터베이스는 반구조화된 데이터를 JSON 유사 문서로 저장하도록 설계되었습니다. 이러한 데이터베이스는 개발자가 콘텐츠 관리, 카탈로그 및 사용자 프로필과 같은 애플리케이션을 신속하게 구축하고 업데이트하는 데 도움이 됩니다. Amazon DocumentDB 는 MongoDB 워크로드를 지원하는 완전관리형 문서 데이터베이스 서비스로, 탁월한 속도, 확장성 및 고가용성을 제공합니다.

와이드 컬럼 스토어는 NoSQL 데이터베이스의 한 유형입니다. 테이블, 행 및 열을 사용하지만 관계형 데이터베이스와 달리 열의 이름과 형식은 동일한 테이블에서 행마다 다를 수 있습니다. 일반적으로 와이드 컬럼 스토어는 대규모 산업 앱에서 장비 유지 관리, 플릿 관리 및 라우팅 최적화를 위해 사용됩니다. Amazon Keyspaces (for Apache Cassandra) 는 와이드 컬럼 확장성 및 고가용성을 갖춘 관리형 Apache Cassandra 호환 데이터베이스 서비스입니다.

그래프 데이터베이스는 밀접한 관계가 있는 그래프 데이터 세트 간에 밀리초 단위의 지연 시간으로 수백만 개의 관계를 탐색하고 쿼리해야 하는 애플리케이션을 위한 솔루션입니다. 많은 기업에서 사기 탐지, 소셜 네트워킹 및 추천 엔진에 그래프 데이터베이스를 사용합니다. Amazon Neptune 은 빠르고 안정적인 완전 관리형 그래프 데이터베이스 서비스로, 상호 연결성이 높은 데이터 세트를 활용하는 애플리케이션을 쉽게 구축하고 실행할 수 있습니다.

시계열 데이터베이스는 시간이 지남에 따라 변화하는 데이터에서 효율적으로 분석 정보를 수집, 통합 및 도출합니다. IoT 애플리케이션, DevOps 및 산업용 텔레메트리에 시계열 데이터베이스를 활용할 수 있습니다. Amazon Timestream 은 IoT 및 운영 애플리케이션을 위한 고속의 확장 가능한 완전관리형 시계열 데이터베이스 서비스입니다. 이 서비스를 사용하면 하루에 수조 건의 이벤트를 손쉽게 저장하고 분석할 수 있습니다.

원장 데이터베이스는 모든 애플리케이션에 대해 확장 가능하고 변경 불가능하며 암호화 방식으로 확인 가능한 트랜잭션 레코드를 유지하는 신뢰할 수 있는 중앙 집중식 권한을 제공합니다. 레코드 시스템, 공급망, 등록 및 심지어 은행 거래 시스템에 원장 데이터베이스가 사용되는 것을 볼 수 있습니다. Amazon Quantum Ledger Database(QLDB) 는 신뢰할 수 있는 중앙 기관이 소유한 투명하고 변경 불가능하며 암호화 방식으로 확인 가능한 트랜잭션 로그를 제공하는 완전관리형 원장 데이터베이스입니다. Amazon QLDB는 모든 애플리케이션 데이터 변경 사항을 추적하고 시간 경과에 따른 완전하고 확인 가능한 변경 기록을 유지합니다.

사용 가능한 옵션 평가: 워크로드 스토리지 메커니즘 선택 프로세스의 일환으로 사용 가능한 서비스 및 스토리지 옵션을 평가합니다. 데이터 저장용으로 지정된 서비스나 시스템을 사용하는 방법과 시기를 파악합니다. 또한 프로비저닝된 IOPS, 메모리/컴퓨팅 리소스 및 캐싱 등 데이터베이스 성능이나 효율성을 최적화하는 데 사용할 수 있는 구성 옵션을 확인합니다.

데이터베이스 솔루션에는 일반적으로 워크로드 유형에 맞게 최적화할 수 있는 구성 옵션이 있습니다. 벤치마킹 또는 로드 테스트를 사용하여 워크로드에 중요한 데이터베이스 지표를 식별합니다. 스토리지 최적화, 데이터베이스 수준 설정, 메모리, 캐시 등의 선택한 데이터베이스용 구성 옵션을 고려합니다.

워크로드에 대한 데이터베이스 캐싱 옵션을 평가합니다. 가장 일반적인 3개의 데이터베이스 캐시 유형은 다음과 같습니다.

  • 데이터베이스 통합 캐시: 일부 데이터베이스(예: Amazon Aurora)는 데이터베이스 엔진 내에서 관리되고 연속 쓰기 기능을 기본적으로 포함된 통합 캐시를 제공합니다.

  • 로컬 캐시: 로컬 캐시는 자주 사용되는 데이터를 애플리케이션 내에 저장합니다. 이렇게 하면 데이터 검색 속도가 빨라지고 데이터 검색과 관련된 네트워크 트래픽이 제거되어 다른 캐싱 아키텍처보다 데이터 검색 속도가 빨라집니다.

  • 원격 캐시: 원격 캐시는 전용 서버에 저장되며 일반적으로 Redis 및 Memcached와 같은 키/값 NoSQL 스토어를 기반으로 구축됩니다. 각 캐시 노드에 대해 초당 최대 100만 개의 요청을 처리할 수 있습니다.

Amazon DynamodDB 워크로드의 경우 DynamoDB Accelerator(DAX) 를 통해 완전관리형 인메모리 캐시를 사용할 수 있습니다. DAX는 완전관리형 인메모리 캐시를 통해 대규모 테이블에 대한 빠른 읽기 성능을 제공하는 인메모리 캐시입니다. DAX를 사용하면 DynamoDB 테이블의 읽기 성능을 최대 10배까지 개선할 수 있습니다. 초당 수백만 건의 요청에서 읽기에 필요한 시간을 밀리초에서 마이크로초로 단축할 수 있습니다.

데이터베이스 성능 지표 수집 및 기록: 데이터베이스 성능과 관련된 성능 측정값을 기록하는 도구, 라이브러리 및 시스템을 사용합니다. 예를 들어 초당 트랜잭션 수, 속도가 느린 쿼리 또는 데이터베이스 액세스 시에 발생하는 시스템 지연 시간을 측정할 수 있습니다. 이 데이터를 사용하면 데이터베이스 시스템의 성능을 파악할 수 있습니다.

워크로드에서 수집 가능한 만큼의 데이터베이스 활동 지표를 계측합니다. 이러한 지표를 워크로드에서 직접 게시하거나 애플리케이션 성능 관리 서비스에서 수집해야 할 수 있습니다. 여러분은 AWS X-Ray 를 사용하여 마이크로서비스 아키텍처를 사용하여 구축된 것과 같은 프로덕션의 분산 애플리케이션을 분석하고 디버깅할 수 있습니다. X-Ray 추적에는 단일 구성 요소에 대한 모든 데이터 포인트를 캡슐화하는 세그먼트가 포함될 수 있습니다. 예를 들어 애플리케이션이 요청에 대한 응답으로 데이터베이스를 호출할 때 데이터베이스 호출과 결과를 나타내는 하위 세그먼트와 함께 해당 요청에 대한 세그먼트를 생성합니다. 하위 세그먼트에는 쿼리, 사용된 테이블, 타임스탬프 및 오류 상태와 같은 데이터가 포함될 수 있습니다. 계측이 완료된 후에는 데이터베이스 지표에 대해 임계값 위반 시점을 나타내는 경보를 활성화해야 합니다.

액세스 패턴을 기준으로 데이터 스토리지 선택: 워크로드의 액세스 패턴을 기준으로 하여 사용할 서비스와 기술을 결정합니다. 예를 들어 트랜잭션에 필요한 워크로드에는 관계형 데이터베이스를 활용하거나, 처리량은 더 높지만 최종 처리량은 일정한 키-값 저장소(해당하는 경우)를 활용합니다.

액세스 패턴 및 지표를 기준으로 데이터 스토리지 최적화: 성능을 최대한 높이려면 데이터 저장 또는 쿼리 방식을 최적화하는 성능 특성과 액세스 패턴을 사용합니다. 인덱싱, 키 분산, 데이터 웨어하우스 설계, 캐싱 전략 등의 최적화가 시스템 성능이나 전반적인 효율성에 미치는 영향을 측정합니다.