Skip to content
Published on

AWS 데이터베이스 전문가 (DBS-C01) 실전 모의고사 65문제

Authors

DBS-C01 시험 개요

항목내용
시험 시간180분
문제 수65문제
합격 점수750점 / 1000점
문제 유형단일 정답, 복수 정답
시험 비용USD 300

도메인별 출제 비율

도메인비율
Domain 1: Workload-Specific Database Design26%
Domain 2: Deployment and Migration20%
Domain 3: Management and Operations18%
Domain 4: Monitoring and Troubleshooting18%
Domain 5: Database Security18%

AWS 데이터베이스 서비스 선택 가이드

[워크로드 유형에 따른 DB 선택]

관계형 OLTP
  ├── 소규모/마이그레이션 용이: RDS (MySQL, PostgreSQL, MariaDB)
  ├── 고성능/클라우드 네이티브: Aurora (MySQL/PostgreSQL 호환)
  └── 엔터프라이즈/라이선스 유지: RDS Oracle, RDS SQL Server

NoSQL
  ├── 키-/문서/서버리스: DynamoDB (단일 테이블 설계)
  ├── 문서(MongoDB 호환): DocumentDB
  └── 캐싱: ElastiCache (Redis / Memcached)

특수 목적
  ├── 그래프: Neptune (Gremlin, SPARQL)
  ├── 원장/감사: QLDB
  ├── 시계열: Timestream
  └── Cassandra 호환: Keyspaces

[의사결정 트리]
트랜잭션 필요? YES → 관계형 필요? YESAurora or RDS
                              NODynamoDB
             NO → 검색?OpenSearch
                  캐시?ElastiCache
                  그래프?Neptune
                  시계열?Timestream

실전 연습 문제 65문제

Domain 1: Workload-Specific Database Design

Q1. 온라인 쇼핑몰의 제품 카탈로그와 주문 관리 시스템을 구축합니다. 초당 수천 건의 읽기/쓰기, 99.99% 가용성, 자동 스토리지 확장이 필요합니다. 가장 적합한 데이터베이스는?

A) RDS MySQL Multi-AZ B) Aurora MySQL (Multi-AZ 클러스터) C) DynamoDB D) RDS PostgreSQL

정답: B

설명: Aurora MySQL은 RDS MySQL 대비 최대 5배 빠른 성능을 제공하고, 클러스터 볼륨이 자동으로 10GB에서 128TB까지 확장됩니다. Multi-AZ 클러스터는 세 AZ에 걸쳐 복제본을 유지하여 고가용성을 보장합니다. 고성능 OLTP 워크로드에 이상적입니다.

Q2. Aurora Serverless v2를 선택하는 가장 적합한 시나리오는?

A) 24시간 일정한 대용량 트랜잭션 처리 B) 트래픽이 불규칙하고 예측 불가능하며 비용을 사용량에 따라 지불하고 싶은 경우 C) 온프레미스 Oracle 데이터베이스를 마이그레이션 D) 분석용 데이터 웨어하우스

정답: B

해설: Aurora Serverless v2는 0.5 ACU(Aurora Capacity Unit)에서 최대 128 ACU까지 초 단위로 자동 스케일링합니다. 개발/테스트 환경, 간헐적인 트래픽, 새벽에 트래픽이 거의 없는 SaaS 애플리케이션에 이상적입니다. 사용한 용량에 대해서만 비용이 발생합니다.

Q3. DynamoDB에서 사용자 프로필(UserID), 사용자의 주문(OrderID), 주문의 상품(ItemID)을 단일 테이블 설계로 저장하려 합니다. 올바른 접근법은?

A) 각 엔티티를 별도 테이블로 분리 B) 파티션 키에 엔티티 타입 접두사를 추가하고 정렬 키로 계층 구조 표현 C) 모든 속성을 하나의 JSON 컬럼에 저장 D) GSI를 각 엔티티마다 생성

정답: B

설명: DynamoDB 단일 테이블 설계에서는 파티션 키(PK)에 USER#UserIDORDER#OrderID 형태로 엔티티 타입 접두사를 추가합니다. 정렬 키(SK)는 PROFILE, ORDER#OrderID, ITEM#ItemID 등으로 계층 구조를 표현합니다. 이를 통해 하나의 테이블로 다양한 접근 패턴을 효율적으로 처리합니다.

Q4. ElastiCache Redis Cluster Mode Enabled와 Cluster Mode Disabled의 차이로 가장 올바른 것은?

A) Cluster Mode Enabled는 단일 노드만 지원 B) Cluster Mode Enabled는 데이터를 여러 샤드에 분산하여 더 큰 메모리 용량과 처리량 지원 C) Cluster Mode Disabled가 읽기 성능이 더 우수 D) Cluster Mode Enabled는 Multi-AZ를 지원하지 않음

정답: B

설명: ElastiCache Redis Cluster Mode Enabled는 데이터를 여러 샤드(각 샤드는 주 노드 + 복제본)에 분산합니다. 단일 클러스터가 처리할 수 있는 총 메모리와 쓰기 처리량을 선형으로 확장할 수 있습니다. Cluster Mode Disabled는 단일 샤드(하나의 주 노드 + 읽기 복제본들)로 읽기만 확장 가능합니다.

Q5. Amazon Neptune을 선택하는 적합한 시나리오는?

A) 초당 수만 건의 금융 트랜잭션 처리 B) 소셜 네트워크의 친구 추천 또는 사기 탐지를 위한 관계 분석 C) 대용량 시계열 센서 데이터 저장 D) 전자상거래 제품 카탈로그 저장

정답: B

설명: Neptune은 그래프 데이터베이스로 엔티티 간의 관계를 효율적으로 표현하고 쿼리합니다. 소셜 그래프의 친구-친구-친구 연결 분석, 금융 거래의 사기 패턴 탐지, 지식 그래프, 추천 엔진에 적합합니다. Gremlin(Property Graph)과 SPARQL(RDF) 쿼리 언어를 지원합니다.

Q6. RDS for PostgreSQL과 Aurora PostgreSQL 중 선택할 때, 어떤 경우 RDS PostgreSQL을 선호합니까?

A) 최고의 성능이 필요한 경우 B) PostgreSQL 특정 확장 기능이나 플러그인이 Aurora에서 지원되지 않는 경우 C) 자동 스케일링이 필요한 경우 D) 글로벌 분산이 필요한 경우

정답: B

설명: RDS PostgreSQL은 Aurora가 지원하지 않는 특정 PostgreSQL 확장(예: 일부 PostGIS 고급 기능, 특정 fdw 확장)이 필요하거나, 특정 메이저 버전의 즉각적인 지원이 필요한 경우 선호합니다. Aurora는 내부 아키텍처가 다르므로 모든 PostgreSQL 기능을 지원하지는 않습니다.

Q7. DynamoDB GSI(Global Secondary Index) 오버로딩 기법의 주요 목적은?

A) 여러 GSI를 하나로 합쳐 비용 절감 B) 하나의 GSI를 다양한 엔티티 타입의 여러 쿼리 패턴에 재사용 C) GSI의 프로젝션 속성을 동적으로 변경 D) GSI 쓰기 용량을 자동으로 최적화

정답: B

해설: GSI 오버로딩은 GSI의 PK와 SK에 엔티티 타입별로 다른 의미의 값을 저장합니다. 예를 들어 gsi1pk에 사용자는 STATUS#active, 주문은 DATE#2026-03, 상품은 CATEGORY#electronics를 저장하면, 하나의 GSI로 상태별 사용자 조회, 날짜별 주문 조회, 카테고리별 상품 조회가 모두 가능합니다.

Q8. Amazon QLDB(Quantum Ledger Database)의 주요 특징은?

A) 초고속 인메모리 캐싱 B) 변경 불가능한 암호화 검증 가능한 트랜잭션 로그 유지 C) 그래프 관계 데이터 저장 D) Cassandra API 호환

정답: B

설명: QLDB는 데이터 변경 이력을 변경 불가능하고(immutable) 암호화로 검증 가능한 저널(journal)에 보관합니다. 규제 산업(금융, 공급망, HR)에서 감사 추적이 필요한 경우에 적합합니다. 모든 변경 사항을 완전한 이력으로 추적하고 SHA-256 해시로 데이터 무결성을 검증합니다.

Q9. ElastiCache Memcached를 Redis 대신 선택하는 시나리오는?

A) 세션 저장, 고가용성, 지속성이 필요한 경우 B) 단순 객체 캐싱이 필요하고 멀티 스레드로 CPU 코어를 최대 활용하려는 경우 C) Pub/Sub 메시징이 필요한 경우 D) 지리적 분산 캐시가 필요한 경우

정답: B

설명: Memcached는 단순한 키-값 캐싱에 최적화된 멀티 스레드 아키텍처를 사용합니다. CPU 코어 수에 비례하여 선형 확장이 가능합니다. 세션, 지속성, Pub/Sub, 복제, 스냅샷이 필요 없고 단순 캐싱 성능만 필요하면 Memcached가 적합합니다. Redis는 더 풍부한 데이터 구조와 고가용성을 제공합니다.

Q10. Aurora Global Database의 주요 사용 사례는?

A) 단일 리전 내 읽기 확장 B) 재해 복구(RPO 수초, RTO 1분 미만) 및 글로벌 읽기 지연 감소 C) Aurora Serverless v2 워크로드 최적화 D) 대용량 배치 작업 처리

정답: B

설명: Aurora Global Database는 하나의 기본 리전과 최대 5개의 보조 리전으로 구성됩니다. 리전 간 복제 지연이 1초 미만이고, 재해 발생 시 보조 리전을 승격하면 RTO 1분 미만, RPO 수초의 재해 복구가 가능합니다. 또한 각 리전의 사용자가 로컬 읽기로 낮은 지연 시간을 경험합니다.

Q11. Amazon Timestream을 선택하는 적합한 워크로드는?

A) 소셜 미디어 관계 데이터 B) IoT 센서, 애플리케이션 지표, 운영 이벤트 등의 시계열 데이터 C) 금융 트랜잭션 원장 관리 D) 전자상거래 제품 목록

정답: B

설명: Timestream은 시계열 데이터에 특화된 서버리스 데이터베이스입니다. 시간 기반 쿼리(집계, 보간, 평활화)를 내장 함수로 지원하고, 최신 데이터는 메모리에, 과거 데이터는 S3 기반 마그네틱 스토리지에 자동 저장합니다. 시계열 특화 쿼리가 RDS 대비 훨씬 빠릅니다.

Q12. RDS Multi-AZ 배포의 스탠바이 인스턴스에 대한 올바른 설명은?

A) 스탠바이 인스턴스는 읽기 쿼리를 처리할 수 있음 B) 스탠바이 인스턴스는 자동 페일오버를 위해 동기 복제를 유지하지만 직접 접근 불가 C) 스탠바이는 다른 AWS 리전에 위치 D) 스탠바이는 수동으로 페일오버를 트리거해야 함

정답: B

설명: RDS Multi-AZ의 스탠바이 인스턴스는 기본 인스턴스와 동기 복제(synchronous replication)를 유지합니다. 스탠바이는 직접 읽기/쓰기 트래픽을 처리할 수 없습니다(읽기는 Read Replica를 사용). 기본 인스턴스 장애 시 자동으로 스탠바이로 DNS 엔드포인트가 전환됩니다(약 60~120초 소요).

Domain 2: Deployment and Migration

Q13. 온프레미스 Oracle 데이터베이스를 AWS로 마이그레이션할 때 비용 최적화를 위해 라이선스를 포함하지 않으려 합니다. 가장 적합한 마이그레이션 경로는?

A) Oracle용 RDS (BYOL 방식으로 라이선스 포함) B) SCT + DMS로 Aurora PostgreSQL 또는 RDS PostgreSQL로 변환 C) Oracle용 RDS (라이선스 포함, License Included) D) EC2에 Oracle 자체 설치

정답: B

설명: Oracle에서 Aurora PostgreSQL이나 RDS PostgreSQL로 마이그레이션하면 Oracle 라이선스 비용을 완전히 제거할 수 있습니다. AWS SCT(Schema Conversion Tool)로 Oracle 스키마를 PostgreSQL로 변환하고, DMS로 데이터를 마이그레이션합니다. Oracle 특화 기능(Oracle-specific functions, PL/SQL)은 SCT 평가를 통해 전환 복잡도를 파악합니다.

Q14. RDS Blue/Green Deployments를 사용하면 어떤 이점이 있습니까?

A) 다른 리전으로 데이터베이스를 복제 B) 사전 검증된 스테이징 환경(Green)에서 프로덕션(Blue)으로 다운타임 최소화 전환 C) 자동으로 마이너 버전 업그레이드 D) 스냅샷에서 새 데이터베이스 생성

정답: B

설명: RDS Blue/Green Deployments는 현재 프로덕션(Blue)의 완전한 복사본(Green)을 생성하고 동기화를 유지합니다. Green 환경에서 새 버전, 파라미터, 스키마 변경 등을 사전 검증하고, 검증 완료 후 트래픽을 Blue에서 Green으로 수 초 내 전환합니다. 롤백도 쉽습니다.

Q15. DMS를 사용하여 MySQL 데이터베이스를 Aurora MySQL로 이관할 때 SCT(Schema Conversion Tool)가 필요합니까?

A) 예, MySQL과 Aurora MySQL은 다른 엔진이므로 SCT가 필요 B) 아니오, 동종 마이그레이션(MySQL → Aurora MySQL)은 SCT 없이 DMS만으로 가능 C) 항상 SCT를 먼저 실행해야 함 D) Aurora MySQL은 DMS 대상으로 지원되지 않음

정답: B

설명: SCT는 이기종 마이그레이션(Oracle → PostgreSQL, SQL Server → MySQL 등)에서 스키마를 변환하는 데 필요합니다. 동종 마이그레이션(MySQL → Aurora MySQL, PostgreSQL → Aurora PostgreSQL)은 스키마가 호환되므로 SCT 없이 DMS만으로 마이그레이션이 가능합니다.

Q16. Aurora 메이저 버전 업그레이드(예: Aurora MySQL 2.x에서 3.x)를 위한 권장 접근법은?

A) In-place 업그레이드를 즉시 실행 B) 스냅샷에서 새 클러스터 생성하여 업그레이드 → 검증 → 트래픽 전환 C) 읽기 복제본을 메이저 버전으로 먼저 업그레이드 D) DMS로 데이터를 새 클러스터로 마이그레이션

정답: B

설명: Aurora 메이저 버전 업그레이드는 위험이 있으므로 권장 절차는: 1) 현재 클러스터 스냅샷 생성 → 2) 스냅샷에서 새 클러스터 생성 후 메이저 버전으로 업그레이드 → 3) 애플리케이션 호환성 검증 → 4) DNS(CNAME) 전환 또는 Blue/Green Deployments 사용입니다.

Q17. DynamoDB 테이블을 다른 AWS 계정이나 다른 리전으로 마이그레이션하는 방법은?

A) DMS로 DynamoDB 간 마이그레이션 B) DynamoDB 테이블을 S3로 내보내기(Export) 후 대상에서 S3에서 가져오기(Import) C) Kinesis Data Streams + Lambda로 실시간 복제 D) CloudFormation 스택 복사

정답: B

설명: DynamoDB 내보내기(Export to S3) 기능으로 테이블 데이터를 S3에 DynamoDB JSON 또는 ION 형식으로 내보낸 후, 대상 계정/리전의 S3에서 DynamoDB 가져오기(Import from S3)로 신규 테이블에 로드합니다. DynamoDB Global Tables를 사용하면 지속적인 다중 리전 복제도 가능합니다.

Q18. 온프레미스 SQL Server에서 Amazon RDS for SQL Server로 마이그레이션 시 고려사항으로 가장 중요한 것은?

A) SQL Server 라이선스를 AWS로 이전 가능 B) SQL Server Agent, SQL Server Integration Services(SSIS) 등의 기능 지원 여부 확인 C) RDS SQL Server는 Multi-AZ를 지원하지 않음 D) RDS SQL Server는 최대 1TB 스토리지만 지원

정답: B

설명: RDS for SQL Server는 SQL Server Agent를 지원하지만 SSIS, SSRS, SSAS는 지원하지 않습니다. 이러한 기능을 사용 중이라면 EC2에 설치하거나 대안 서비스를 검토해야 합니다. 또한 특정 버전의 SQL Server만 지원되므로 버전 호환성도 확인해야 합니다.

Q19. DMS CDC(Change Data Capture) 작업에서 소스 MySQL 데이터베이스에 필요한 설정은?

A) 복제 슬롯(Replication Slot) 생성 B) binary_format_row 설정 및 binlog_format=ROW로 이진 로그 활성화 C) 읽기 복제본 생성 D) 데이터베이스 파라미터 그룹 변경 없이 자동으로 처리

정답: B

설명: MySQL에서 DMS CDC를 사용하려면 이진 로그(binlog)를 ROW 형식으로 활성화해야 합니다. binlog_format=ROW, binlog_row_image=FULL, expire_logs_days 설정이 필요합니다. RDS MySQL에서는 파라미터 그룹으로 이 설정을 활성화합니다. PostgreSQL은 복제 슬롯을 사용합니다.

Q20. 마이그레이션 복잡도를 평가할 때 "리프트 앤 시프트(Lift-and-Shift)"와 "리아키텍트(Re-architect)"의 차이는?

A) 두 방법 모두 동일한 마이그레이션 복잡도 B) 리프트 앤 시프트는 최소 변경으로 AWS로 이전, 리아키텍트는 클라우드 네이티브 서비스로 재설계 C) 리아키텍트가 항상 더 저렴 D) 리프트 앤 시프트는 온프레미스와 동일한 성능 보장

정답: B

설명: 리프트 앤 시프트는 기존 데이터베이스를 최소 변경으로 EC2에 그대로 이전하거나 RDS로 이전합니다. 빠르고 낮은 위험도이지만 클라우드 이점을 완전히 활용하지 못합니다. 리아키텍트는 DynamoDB나 Aurora 같은 클라우드 네이티브 서비스로 재설계하여 더 많은 클라우드 이점을 활용하지만 복잡도와 비용이 높습니다.

Domain 3: Management and Operations

Q21. RDS Parameter Group과 Option Group의 차이는?

A) Parameter Group은 네트워크 설정, Option Group은 보안 설정 B) Parameter Group은 데이터베이스 엔진 설정, Option Group은 추가 기능 활성화(예: Oracle TDE, MSSQL SQL Server Audit) C) 두 그룹 모두 동일한 목적으로 사용 D) Option Group은 PostgreSQL에만 사용

정답: B

설명: RDS Parameter Group은 max_connections, innodb_buffer_pool_size와 같은 데이터베이스 엔진 파라미터를 설정합니다. Option Group은 Oracle의 TDE(Transparent Data Encryption), MSSQL의 SQL Server Audit, MySQL의 memcached 플러그인 같은 추가 기능을 활성화합니다.

Q22. RDS Performance Insights에서 Wait Events를 분석합니다. db/lock/row wait event가 많이 보입니다. 이것은 무엇을 의미합니까?

A) CPU 부족으로 인한 병목 B) 행 레벨 잠금 경쟁으로 인한 대기 — 쿼리가 다른 트랜잭션의 행 잠금 해제를 기다림 C) 네트워크 지연 D) 스토리지 I/O 병목

정답: B

설명: db/lock/row wait event는 행 레벨 잠금(row-level lock) 경쟁을 나타냅니다. 트랜잭션 A가 특정 행을 잠근 상태에서 트랜잭션 B가 같은 행을 업데이트/삭제하려 대기하는 상황입니다. 해결책으로 트랜잭션 크기 축소, 인덱스 최적화(잠금 범위 축소), 데드락 분석이 있습니다.

Q23. Aurora Auto Scaling이 작동하는 방식으로 올바른 것은?

A) 기본 인스턴스의 컴퓨팅 크기를 자동으로 늘림 B) CloudWatch 지표(CPU 사용률, 연결 수)에 따라 읽기 복제본을 자동으로 추가/제거 C) 스토리지를 자동으로 확장 D) 여러 리전에 걸쳐 Aurora 클러스터를 자동으로 생성

정답: B

설명: Aurora Auto Scaling은 CloudWatch 지표(평균 CPU 사용률 또는 평균 연결 수)에 따라 Aurora 읽기 복제본을 동적으로 추가하거나 제거합니다. 트래픽 급증 시 읽기 복제본을 자동으로 추가하고, 트래픽 감소 시 불필요한 복제본을 제거하여 비용을 최적화합니다.

Q24. DynamoDB의 On-Demand 용량 모드와 Provisioned 용량 모드를 비교할 때 올바른 설명은?

A) On-Demand는 읽기/쓰기 용량을 수동으로 지정해야 함 B) Provisioned 모드는 예측 가능한 트래픽 패턴에서 비용 효율적이고, On-Demand는 예측 불가능한 트래픽에 적합 C) On-Demand는 프리 티어를 포함하지 않음 D) Provisioned 모드는 스케일링이 불가능

정답: B

설명: Provisioned 모드는 예측 가능한 워크로드에서 RCU/WCU를 지정하고 Auto Scaling을 활성화하여 비용 효율적으로 운영합니다. On-Demand 모드는 트래픽에 따라 자동으로 확장되지만 요청당 비용이 더 높습니다. 새 테이블, 예측 불가능한 트래픽, 개발/테스트에 On-Demand가 적합합니다.

Q25. RDS 자동 백업과 수동 스냅샷의 주요 차이점은?

A) 자동 백업은 암호화되지 않음 B) 자동 백업은 보존 기간(1~35일) 이후 자동 삭제되지만, 수동 스냅샷은 명시적으로 삭제할 때까지 보존 C) 수동 스냅샷은 PITR(Point-in-Time Recovery)를 지원 D) 자동 백업은 다른 리전으로 복사 불가

정답: B

설명: RDS 자동 백업은 설정된 보존 기간(최대 35일) 이후 자동으로 삭제됩니다. 수동 스냅샷은 명시적으로 삭제하지 않는 한 영구 보존됩니다. 자동 백업은 PITR(Point-in-Time Recovery)를 위한 트랜잭션 로그도 함께 보존합니다.

Q26. Aurora 데이터베이스에서 backtrack 기능을 사용하는 주요 이점은?

A) 다른 리전으로 데이터 복제 B) 스냅샷 복원 없이 데이터베이스를 과거 특정 시점으로 되감기(5분~72시간 내) C) 자동 메이저 버전 업그레이드 D) 읽기 트래픽 자동 분산

정답: B

설명: Aurora Backtrack은 데이터베이스를 과거 특정 시점으로 신속하게 되감는 기능입니다. 스냅샷에서 복원하는 것보다 훨씬 빠르고(수 분 내 완료), 잘못된 DELETE/UPDATE 후 빠른 복구에 이상적입니다. 최대 72시간까지 되감기 가능하며 Aurora MySQL에서 지원됩니다.

Q27. DynamoDB 글로벌 테이블(Global Tables)을 활성화하면 어떻게 됩니까?

A) 동일 리전 내 Multi-AZ 복제 B) 여러 AWS 리전에 완전히 관리되는 멀티 마스터 복제 — 각 리전에서 쓰기 가능 C) 읽기 복제본을 다른 리전에 생성 D) 다른 리전의 DynamoDB 테이블을 읽기 전용으로 접근

정답: B

설명: DynamoDB 글로벌 테이블은 여러 AWS 리전에 완전히 관리되는 멀티 마스터 복제를 제공합니다. 각 리전에서 읽기와 쓰기가 모두 가능하고, 리전 간 복제는 보통 1초 미만입니다. 하나의 리전이 중단되어도 다른 리전에서 계속 작동합니다.

Domain 4: Monitoring and Troubleshooting

Q28. DynamoDB에서 ProvisionedThroughputExceededException이 자주 발생합니다. CloudWatch 지표를 확인했을 때 어떤 지표를 먼저 확인해야 합니까?

A) ConsumedReadCapacityUnits와 ConsumedWriteCapacityUnits B) SystemErrors와 UserErrors C) SuccessfulRequestLatency D) ReturnedItemCount

정답: A

설명: ProvisionedThroughputExceededException은 읽기 또는 쓰기 용량이 프로비저닝된 양을 초과할 때 발생합니다. ConsumedReadCapacityUnits와 ConsumedWriteCapacityUnits를 확인하여 어떤 용량(읽기 또는 쓰기)이 초과되는지 파악합니다. ThrottledRequests 지표도 함께 확인합니다.

Q29. RDS MySQL에서 슬로우 쿼리 로그를 활성화하고 분석하는 올바른 방법은?

A) CloudTrail로 슬로우 쿼리 추적 B) RDS 파라미터 그룹에서 slow_query_log=1, long_query_time 설정 후 CloudWatch Logs나 RDS 콘솔에서 분석 C) VPC Flow Logs로 쿼리 패턴 분석 D) Enhanced Monitoring으로 슬로우 쿼리 감지

정답: B

설명: RDS MySQL 슬로우 쿼리 로그는 파라미터 그룹에서 slow_query_log=1 활성화하고 long_query_time(임계값 초)을 설정합니다. 로그는 RDS 콘솔에서 직접 보거나 CloudWatch Logs에 게시하여 CloudWatch Insights로 분석할 수 있습니다. log_queries_not_using_indexes=1로 인덱스 미사용 쿼리도 추적합니다.

Q30. Aurora PostgreSQL에서 AuroraReplicaLag 지표가 높게 나타납니다. 이것은 무엇을 의미하고 어떻게 해결합니까?

A) 기본 인스턴스의 CPU가 높음 → 인스턴스 크기 업그레이드 B) 읽기 복제본이 기본 인스턴스의 변경사항을 따라잡지 못함 → 복제본 인스턴스 크기 업그레이드 또는 쓰기 작업 최적화 C) 스토리지 볼륨이 가득 참 → 스토리지 확장 D) 네트워크 지연 → VPC 설정 검토

정답: B

설명: AuroraReplicaLag는 읽기 복제본이 기본 인스턴스의 변경사항을 적용하는 데 걸리는 지연 시간입니다. 지연이 높으면 읽기 복제본에서 오래된 데이터를 읽을 수 있습니다. 해결책: 읽기 복제본 인스턴스 크기 업그레이드, 쓰기 집약적 작업 최적화, 또는 쓰기 쿼리를 기본 인스턴스로만 라우팅합니다.

Q31. RDS Enhanced Monitoring이 CloudWatch 기본 모니터링과 다른 점은?

A) Enhanced Monitoring은 비용이 무료 B) Enhanced Monitoring은 OS 레벨 지표(프로세스, 메모리 사용량)를 1~60초 간격으로 제공 C) CloudWatch 기본 모니터링이 더 세밀한 지표 제공 D) Enhanced Monitoring은 데이터베이스 연결만 모니터링

정답: B

설명: CloudWatch 기본 모니터링은 하이퍼바이저에서 수집한 인스턴스 수준 지표를 1분 또는 5분 간격으로 제공합니다. Enhanced Monitoring은 RDS 인스턴스에 설치된 에이전트가 OS 레벨의 프로세스 목록, 메모리 사용량, CPU 스케줄 등을 1초에서 60초 간격으로 수집합니다.

Q32. Database Activity Streams를 활성화하는 주요 목적은?

A) 데이터베이스 쿼리 캐싱 B) 규정 준수 및 보안 감사를 위해 모든 데이터베이스 활동을 Kinesis Data Streams로 실시간 스트리밍 C) 데이터베이스 메트릭을 CloudWatch에 전송 D) 데이터베이스 백업 자동화

정답: B

설명: Database Activity Streams는 모든 데이터베이스 활동(SQL 문, 연결, 인증)을 KMS로 암호화된 Kinesis Data Streams로 실시간 스트리밍합니다. 이를 통해 SIEM(Security Information and Event Management) 도구와 통합하여 실시간 보안 모니터링과 감사 추적을 구현합니다. DBA도 스트림 내용에 접근할 수 없어 데이터 변조를 방지합니다.

Q33. Aurora CommitLatency 지표가 갑자기 증가했습니다. 가능한 원인은?

A) 읽기 복제본의 수가 너무 많음 B) 스토리지 I/O 병목, 과도한 쓰기 워크로드, 또는 네트워크 지연 C) 연결 풀링 설정 오류 D) 파라미터 그룹 변경 필요

정답: B

설명: CommitLatency는 트랜잭션 커밋 완료에 걸리는 시간입니다. 갑자기 증가하면 Aurora 스토리지 레이어의 I/O 병목, 과도한 쓰기 트랜잭션, 로그 플러시 지연을 의심합니다. WriteLatency, DiskQueueDepth, FreeableMemory 지표와 함께 분석하여 근본 원인을 파악합니다.

Q34. DynamoDB에서 특정 파티션에 과도한 트래픽이 집중되는 핫 파티션(Hot Partition) 문제가 발생합니다. 해결 방법은?

A) 테이블의 RCU/WCU를 전체적으로 늘림 B) 파티션 키 설계 변경(카디널리티 높은 키 사용 또는 랜덤 접미사 추가) C) GSI를 추가하여 파티션 분산 D) On-Demand 모드로 전환

정답: B

설명: 핫 파티션은 파티션 키의 카디널리티가 낮거나 특정 키에 트래픽이 집중될 때 발생합니다. 해결책: 1) 카디널리티가 높은 파티션 키 선택(UserID, UUID 등), 2) 파티션 키에 랜덤 접미사 추가(Write Sharding), 3) 시간 기반 키에 적절한 분산 적용입니다. On-Demand 전환은 병목을 숨길 뿐 근본 해결이 아닙니다.

Q35. RDS MySQL 인스턴스에서 FreeStorageSpace 지표가 빠르게 감소합니다. 즉각적인 해결 방법은?

A) 데이터베이스를 재시작 B) RDS 스토리지 자동 확장(Storage Autoscaling) 활성화 또는 수동으로 스토리지 크기 조정 C) 읽기 복제본 추가 D) Multi-AZ로 전환

정답: B

설명: RDS Storage Autoscaling을 활성화하면 FreeStorageSpace가 지정된 임계값 이하로 떨어질 때 자동으로 스토리지가 증가합니다. 이미 스토리지가 부족한 경우 수동으로 스토리지 할당 크기를 늘릴 수 있습니다(단, 줄이는 것은 불가능). 또한 이진 로그 보존 기간 단축, 오래된 데이터 아카이빙도 고려합니다.

Domain 5: Database Security

Q36. RDS 데이터베이스에서 IAM 인증을 활성화하면 어떤 이점이 있습니까?

A) 더 빠른 인증 처리 B) 데이터베이스 패스워드 없이 IAM 자격 증명으로 단기 인증 토큰으로 접속 가능 C) Multi-AZ 페일오버 시 자동 재인증 D) 데이터 암호화 자동 활성화

정답: B

설명: RDS IAM 인증을 활성화하면 데이터베이스 비밀번호 대신 AWS IAM 자격 증명으로 15분 유효한 인증 토큰을 생성하여 접속합니다. 패스워드를 애플리케이션에 저장할 필요 없이 IAM 정책으로 데이터베이스 접근을 제어합니다. EC2 인스턴스 역할이나 Lambda 실행 역할과 잘 통합됩니다.

Q37. AWS Secrets Manager를 사용한 데이터베이스 자격 증명 자동 교체에서 "교대 사용자(Alternating Users)" 전략의 이점은?

A) 교체 중에도 기존 자격 증명이 유효하여 다운타임 없는 교체 가능 B) 보안이 더 강화됨 C) 자격 증명 저장 비용 절감 D) 자동 교체 빈도를 높일 수 있음

정답: A

설명: 교대 사용자 전략은 두 개의 사용자를 번갈아 사용합니다. 교체 시 비활성 사용자의 비밀번호만 변경하고 활성 사용자는 유지합니다. 이를 통해 교체 중에도 애플리케이션이 현재 비밀번호로 계속 접속할 수 있어 다운타임이 없습니다. 단일 사용자 교체는 순간적으로 연결이 끊길 수 있습니다.

Q38. RDS 데이터베이스를 VPC의 프라이빗 서브넷에 배포하고 온프레미스 애플리케이션이 접근해야 합니다. 가장 안전한 연결 방법은?

A) RDS에 퍼블릭 IP를 할당하고 인터넷으로 접근 B) Direct Connect 또는 Site-to-Site VPN을 통한 프라이빗 네트워크 연결 C) 인터넷 게이트웨이를 통해 접근 D) RDS 스냅샷을 온프레미스로 내보내기

정답: B

설명: 온프레미스에서 VPC 프라이빗 서브넷의 RDS에 안전하게 접근하려면 AWS Direct Connect(전용선)나 AWS Site-to-Site VPN을 사용합니다. 이는 인터넷을 우회하여 프라이빗 네트워크를 통해 통신하므로 보안이 강화됩니다. 보안 그룹에서 온프레미스 IP 범위의 접근을 명시적으로 허용합니다.

Q39. RDS for MySQL 인스턴스에 저장 시 암호화(Encryption at Rest)를 활성화하려 합니다. 중요한 제약사항은?

A) 암호화는 나중에 언제든지 활성화/비활성화 가능 B) 기존 암호화되지 않은 RDS 인스턴스를 직접 암호화로 변환 불가 — 스냅샷 생성 → 암호화된 스냅샷으로 복사 → 복원이 필요 C) 암호화는 Multi-AZ에서만 지원 D) 암호화 활성화 시 성능이 50% 저하

정답: B

설명: 이미 생성된 RDS 인스턴스의 암호화는 직접 활성화할 수 없습니다. 반드시 암호화되지 않은 인스턴스의 스냅샷을 생성하고, 해당 스냅샷을 암호화된 스냅샷으로 복사한 뒤, 암호화된 스냅샷에서 새 인스턴스를 복원해야 합니다. 따라서 새 데이터베이스 생성 시 처음부터 암호화를 활성화하는 것이 중요합니다.

Q40. DynamoDB 테이블에 대한 세밀한 접근 제어를 구현할 때, 특정 사용자가 자신의 데이터(UserID와 일치하는 항목)만 접근할 수 있도록 하는 방법은?

A) DynamoDB에 열 수준 보안 적용 B) IAM 정책에 dynamodb:LeadingKeys 조건으로 파티션 키 값을 사용자 ID로 제한 C) Lake Formation으로 DynamoDB 행 수준 보안 적용 D) VPC 엔드포인트로 네트워크 수준 접근 제어

정답: B

설명: IAM 정책의 dynamodb:LeadingKeys 조건 키를 사용하면 사용자가 접근할 수 있는 파티션 키 값을 제한합니다. 예를 들어 현재 IAM 사용자 ID를 가리키는 aws:userid 정책 변수를 기준으로 파티션 키를 제한하면, 각 사용자는 자신의 UserID와 일치하는 항목만 읽기/쓰기가 가능합니다.

심화 문제 (복합 시나리오)

Q41. 핀테크 스타트업이 고성능 결제 시스템을 구축합니다. 요구사항: 1) 초당 수만 건 트랜잭션, 2) 99.999% 가용성, 3) 지역 장애 시 30초 내 복구, 4) 완전한 감사 추적. 아키텍처는?

A) DynamoDB (단일 테이블) + Lambda B) Aurora Global Database (다중 리전) + Database Activity Streams + Secrets Manager C) RDS MySQL Multi-AZ + Read Replicas D) ElastiCache Redis + DynamoDB

정답: B

설명: Aurora Global Database는 지역 장애 시 1분 미만의 RTO와 수초의 RPO를 제공합니다. Database Activity Streams는 모든 트랜잭션 활동을 실시간 감사 추적하여 금융 규정 준수를 지원합니다. Secrets Manager로 자격 증명을 자동 교체하여 보안을 강화합니다.

Q42. 레거시 Oracle 데이터베이스에서 Aurora PostgreSQL로 마이그레이션 시 발생할 수 있는 복잡도 요소를 2개 선택하세요.

A) Oracle 시퀀스(SEQUENCE)의 PostgreSQL 변환 B) PL/SQL 스토어드 프로시저의 PL/pgSQL로 변환 C) 테이블 이름 변경 D) 데이터 타입 변환(DATE, NUMBER) E) 인덱스 삭제

정답: B, D

설명: Oracle과 PostgreSQL 간 마이그레이션의 주요 복잡도 요소: 1) PL/SQL → PL/pgSQL 변환: Oracle 특화 함수, 패키지, 커서 등의 변환이 필요합니다. 2) 데이터 타입: Oracle의 NUMBER, DATE, VARCHAR2가 PostgreSQL에서 NUMERIC, TIMESTAMP, VARCHAR로 변환되며 일부 동작 차이가 있습니다. SCT(Schema Conversion Tool)로 자동 변환 가능 여부를 평가합니다.

Q43. ElastiCache Redis를 세션 캐시로 사용하는 애플리케이션이 있습니다. Redis 클러스터 노드 장애 시 세션 데이터 손실을 최소화하는 구성은?

A) Redis Cluster Mode Disabled + 복제 없음 B) Redis Cluster Mode Enabled + 복제본 수 2 + Multi-AZ 활성화 C) Memcached 클러스터로 교체 D) Redis 스냅샷 주기적 생성

정답: B

설명: Redis Cluster Mode Enabled에서 각 샤드에 복제본을 2개 설정하고 Multi-AZ를 활성화하면, 하나의 노드 장애 시 자동으로 복제본이 기본 노드로 승격됩니다. 복제본 2개는 최대 2개 노드의 동시 장애를 허용합니다. 세션 데이터는 메모리에 복제되어 장애 시에도 유지됩니다.

Q44. 다중 테넌트 SaaS 애플리케이션에서 각 테넌트의 데이터를 격리하는 DynamoDB 설계 패턴은?

A) 테넌트마다 별도 DynamoDB 테이블 생성 B) 파티션 키에 테넌트 ID를 포함하여 단일 테이블로 데이터 격리 C) 테넌트마다 별도 AWS 계정 생성 D) DynamoDB 스트림으로 테넌트별 데이터 복제

정답: B

설명: 대부분의 경우 단일 테이블에서 파티션 키에 TENANT#tenantId#ENTITY#entityId 형태로 테넌트 ID를 포함합니다. IAM 정책의 dynamodb:LeadingKeys 조건으로 각 테넌트가 자신의 파티션 키에만 접근하도록 제한합니다. 테넌트 수가 매우 많거나 격리 요구사항이 엄격한 경우 테이블 분리를 고려합니다.

Q45. Aurora MySQL 클러스터에서 읽기 워크로드를 처리하는 읽기 복제본이 5개 있습니다. 특정 복제본에만 분석 쿼리를 보내고 싶습니다. 어떻게 합니까?

A) RDS Proxy로 쿼리 라우팅 설정 B) 복제본의 개별 엔드포인트 또는 커스텀 엔드포인트(Custom Endpoint) 사용 C) CloudFront로 쿼리 라우팅 D) Route 53 가중치 기반 라우팅으로 특정 복제본에 트래픽 집중

정답: B

설명: Aurora 커스텀 엔드포인트를 사용하면 특정 복제본 집합으로 연결을 라우팅할 수 있습니다. 분석 쿼리용으로 대형 인스턴스 복제본을 묶어 커스텀 엔드포인트를 생성하고, 일반 읽기용으로는 클러스터 읽기 엔드포인트를 사용합니다. 각 복제본의 개별 인스턴스 엔드포인트도 사용할 수 있습니다.

Q46. RDS MySQL에서 최대 연결 수(max_connections)를 초과하는 문제가 발생합니다. 애플리케이션 코드 변경 없이 해결하는 방법은?

A) RDS 인스턴스 크기 업그레이드 (메모리 증가로 max_connections 자동 증가) B) Amazon RDS Proxy 배포로 연결 풀링 구현 C) 읽기 복제본을 추가하여 연결 분산 D) max_connections 파라미터 값을 직접 늘림

정답: B

설명: Amazon RDS Proxy는 애플리케이션과 RDS 사이에서 연결 풀링을 수행합니다. 수천 개의 애플리케이션 연결을 소수의 실제 데이터베이스 연결로 다중화합니다. 애플리케이션 코드 변경 없이 엔드포인트만 Proxy 엔드포인트로 변경하면 됩니다. Lambda 함수의 데이터베이스 연결 폭발 문제 해결에 특히 유용합니다.

Q47. Aurora PostgreSQL에서 pg_stat_statements 확장을 활성화하면 어떤 이점이 있습니까?

A) 자동으로 느린 쿼리를 최적화 B) 실행된 모든 SQL 문의 실행 통계(실행 횟수, 평균 시간, 총 시간) 추적 C) 데이터베이스 연결 수 자동 관리 D) 자동으로 인덱스 생성 추천

정답: B

설명: pg_stat_statements는 PostgreSQL 확장으로 실행된 모든 SQL 문의 통계(호출 횟수, 총/평균/최대/최소 실행 시간, 행 처리 수 등)를 추적합니다. Performance Insights와 함께 가장 자주 실행되거나 가장 느린 쿼리를 파악하는 데 활용합니다. RDS PostgreSQL의 파라미터 그룹에서 활성화합니다.

Q48. 대규모 마이크로서비스 아키텍처에서 서비스마다 별도의 데이터베이스를 사용합니다. 각 마이크로서비스 컨테이너가 RDS에 연결할 때 발생하는 연결 폭발(Connection Surge) 문제를 해결하는 방법은?

A) 각 마이크로서비스마다 별도 RDS 인스턴스 생성 B) RDS Proxy를 각 RDS 데이터베이스 앞에 배포하여 연결 풀링 C) 더 큰 RDS 인스턴스로 업그레이드 D) DynamoDB로 모든 RDS를 교체

정답: B

설명: 컨테이너 기반 마이크로서비스는 오토 스케일링 시 수백~수천 개의 데이터베이스 연결을 순간적으로 생성하여 max_connections를 초과합니다. RDS Proxy는 이 연결들을 풀링하여 실제 데이터베이스에는 관리 가능한 수의 연결만 유지합니다. IAM 인증도 지원하여 보안도 강화됩니다.

Q49. Amazon DocumentDB에서 MongoDB 호환성 레벨을 4.0에서 5.0으로 업그레이드해야 합니다. 고려해야 할 사항은?

A) DocumentDB는 모든 MongoDB 버전과 완전히 호환됨 B) DocumentDB는 MongoDB 와이어 프로토콜과 호환되지만 모든 MongoDB 기능을 지원하지 않으므로 기능 지원 여부 확인 필요 C) DocumentDB를 MongoDB Atlas로 마이그레이션 필요 D) 업그레이드 시 데이터 손실 발생

정답: B

설명: Amazon DocumentDB는 MongoDB 와이어 프로토콜과 호환되지만 모든 MongoDB 기능을 완전히 구현하지는 않습니다. 업그레이드 전에 사용 중인 MongoDB 드라이버 버전, 사용하는 명령어와 집계 파이프라인의 DocumentDB 지원 여부, 그리고 특정 MongoDB 특화 기능(Change Streams, Transactions 등)의 지원 상태를 반드시 확인해야 합니다.

Q50. Secrets Manager의 자동 교체(Automatic Rotation)가 실패합니다. CloudWatch Logs에서 Lambda 함수 오류를 확인했을 때 가장 일반적인 원인은?

A) Secrets Manager가 RDS에 직접 접근 불가 B) Lambda 함수가 RDS 인스턴스가 있는 VPC에 속하지 않아 네트워크 접근 불가 C) KMS 키 권한 오류 D) IAM 역할 권한 부족

정답: B

설명: Secrets Manager 자동 교체 Lambda 함수는 실제 데이터베이스에 연결하여 비밀번호를 변경해야 합니다. Lambda가 RDS와 다른 VPC에 있거나 같은 VPC의 보안 그룹에서 Lambda의 접근을 허용하지 않으면 연결이 실패합니다. Lambda를 RDS와 같은 VPC에 배포하고 보안 그룹을 올바르게 구성해야 합니다.

Q51. Aurora MySQL에서 쿼리 결과를 ElastiCache Redis에 캐싱하는 패턴을 구현합니다. 데이터베이스 업데이트 시 캐시 무효화를 처리하는 방법은?

A) ElastiCache TTL(Time-To-Live)만 사용 B) 애플리케이션에서 데이터 변경 시 해당 캐시 키를 명시적으로 삭제(Cache-Aside 패턴) C) DynamoDB Streams로 캐시 자동 업데이트 D) Aurora 트리거로 Lambda를 호출하여 캐시 무효화

정답: B

설명: Cache-Aside(Lazy Loading) 패턴은 가장 일반적인 캐싱 전략입니다. 읽기 시 캐시에서 먼저 조회하고, 캐시 미스 시 데이터베이스에서 읽어 캐시에 저장합니다. 쓰기 시에는 데이터베이스를 업데이트하고 해당 캐시 키를 삭제합니다. TTL은 부가적인 안전망으로 사용합니다.

Q52. RDS 데이터베이스가 다른 AWS 계정의 Lambda 함수에서 접근해야 합니다. 가장 안전한 방법은?

A) RDS에 퍼블릭 접근 활성화 후 IAM 정책으로 제한 B) VPC Peering 또는 Transit Gateway로 계정 간 네트워크 연결 후 IAM 인증 C) RDS 스냅샷을 대상 계정으로 공유 D) Cross-account IAM 역할로 RDS에 직접 접근

정답: B

설명: 가장 안전한 방법은 VPC Peering이나 AWS Transit Gateway로 두 계정의 VPC를 프라이빗 네트워크로 연결한 후, Lambda 실행 역할에 RDS IAM 인증 권한을 부여하고 RDS IAM 인증으로 접속합니다. RDS를 퍼블릭으로 노출하지 않아 네트워크 수준에서 보안을 유지합니다.

Q53. Aurora Serverless v2를 사용하는 데이터베이스에서 MaxCapacity 제한에 도달했습니다. 어떻게 대응합니까?

A) Aurora Serverless v2 대신 Provisioned로 전환 B) MaxCapacity 값을 높이고 필요시 Provisioned 읽기 복제본 추가 C) 클러스터를 삭제하고 새로 생성 D) 애플리케이션 연결을 강제 종료

정답: B

설명: MaxCapacity 제한에 도달하면 새 요청이 처리되지 않습니다. 즉각적인 조치로 MaxCapacity 값을 높입니다(최대 128 ACU). 장기적으로 읽기 부하는 Provisioned 읽기 복제본을 추가하여 분산하고, 쓰기 용량이 제한이라면 쿼리 최적화나 샤딩을 고려합니다.

Q54. 금융 서비스 회사가 모든 데이터베이스 변경사항에 대한 감사 추적을 구현해야 합니다. 추가 비용과 복잡도를 최소화하면서 구현하는 방법은?

A) 애플리케이션 레이어에서 모든 변경사항 로깅 B) RDS/Aurora Database Activity Streams + Kinesis Data Firehose → S3 아카이브 C) 모든 데이터베이스 테이블에 감사 트리거 추가 D) CloudTrail로 RDS API 호출 기록

정답: B

설명: Database Activity Streams는 모든 데이터베이스 활동을 KMS 암호화된 Kinesis 스트림으로 전송합니다. Kinesis Firehose를 통해 S3에 장기 아카이브하고 Athena로 분석합니다. 애플리케이션 코드 변경이 필요 없고, DBA도 접근할 수 없는 변조 방지 감사 추적을 제공합니다.

Q55. DynamoDB Time To Live(TTL)을 활성화하면 어떻게 됩니까?

A) 지정된 시간 이후 항목이 즉시 삭제됨 B) TTL 속성에 지정된 Unix 타임스탬프 이후 항목이 자동으로 삭제됨 (48시간 내, 비용 없음) C) TTL이 만료된 항목은 숨겨지지만 스토리지에는 남음 D) TTL 삭제에는 쓰기 용량 단위가 소모됨

정답: B

설명: DynamoDB TTL은 각 항목에 TTL 속성으로 Unix 타임스탬프를 설정하면, 해당 시간 이후 48시간 이내에 자동으로 항목을 삭제합니다(정확한 시간은 보장되지 않음). TTL 삭제는 추가 비용이 없고 쓰기 용량을 소모하지 않습니다. 세션 데이터, 임시 데이터, 만료 토큰 관리에 유용합니다.

Q56. Neptune 그래프 데이터베이스에서 Gremlin과 SPARQL 중 어떤 쿼리 언어를 선택해야 합니까?

A) 항상 Gremlin을 사용해야 함 B) Property Graph(소셜 네트워크, 추천)는 Gremlin, RDF/Ontology(지식 그래프, 의미론적 웹)는 SPARQL C) SPARQL이 항상 더 빠름 D) 두 언어 중 하나만 선택 후 변경 불가

정답: B

설명: Neptune은 두 가지 그래프 모델을 지원합니다. Property Graph(Gremlin)은 노드와 엣지에 속성을 붙이는 모델로 소셜 그래프, 사기 탐지, 추천 엔진에 적합합니다. RDF(SPARQL)은 Resource Description Framework로 지식 그래프, 시맨틱 웹, 온톨로지 모델링에 적합합니다.

Q57. RDS for SQL Server에서 데이터베이스 전송(native backup/restore)이 필요합니다. 어떤 방법을 사용해야 합니까?

A) DMS로 SQL Server 간 마이그레이션 B) S3와 통합된 RDS SQL Server 네이티브 백업/복원 기능 사용 (Option Group에서 SQLSERVER_BACKUP_RESTORE 옵션 활성화) C) 스냅샷을 다운로드하여 온프레미스에 복원 D) Bcp 유틸리티로 데이터 내보내기

정답: B

설명: RDS for SQL Server의 네이티브 백업/복원은 Option Group에서 SQLSERVER_BACKUP_RESTORE 옵션을 활성화하고 S3 버킷을 지정합니다. rdsadmin.dbo.rds_backup_database 저장 프로시저로 S3에 .bak 파일을 백업하고, rdsadmin.dbo.rds_restore_database로 복원합니다.

Q58. Aurora PostgreSQL 클러스터에서 쿼리 플랜이 자주 변경되어 성능이 불안정합니다. 이를 해결하는 방법은?

A) max_connections를 늘림 B) Query Plan Management(QPM) 또는 pg_hint_plan 확장으로 쿼리 플랜 고정 C) 읽기 복제본을 추가함 D) 인스턴스 크기를 업그레이드함

정답: B

설명: 쿼리 플랜 불안정성은 통계 변경이나 실행 계획 변경에 의해 발생합니다. Aurora PostgreSQL은 apg_plan_mgmt(Query Plan Management) 확장으로 특정 SQL의 실행 계획을 고정할 수 있습니다. pg_hint_plan으로 SQL 힌트를 제공하거나, enable_seqscan, enable_indexscan 파라미터로 플랜너를 유도할 수도 있습니다.

Q59. DynamoDB 트랜잭션(TransactWriteItems, TransactGetItems)을 사용하는 적합한 시나리오는?

A) 단일 항목 읽기/쓰기 B) 여러 테이블에 걸친 여러 항목의 원자적(Atomic) 읽기/쓰기가 필요한 경우 (예: 계좌 이체, 재고 차감) C) 대용량 데이터 일괄 처리 D) TTL 설정이 필요한 경우

정답: B

설명: DynamoDB 트랜잭션은 최대 100개 항목(또는 4MB)을 원자적으로 읽거나 쓸 수 있습니다. 여러 테이블에 걸친 일관된 업데이트(계좌 A에서 B로 이체, 재고 차감 + 주문 생성)에 적합합니다. 그러나 트랜잭션은 일반 API보다 2배의 WCU를 소모하므로 필요한 경우에만 사용합니다.

Q60. 모놀리식 애플리케이션의 데이터베이스를 여러 마이크로서비스로 분해할 때 데이터 일관성을 유지하는 패턴은?

A) 모든 마이크로서비스가 단일 공유 데이터베이스를 계속 사용 B) Saga 패턴으로 분산 트랜잭션을 이벤트/메시지 기반으로 관리 C) 두 단계 커밋(2PC)으로 분산 트랜잭션 구현 D) 실시간 데이터 동기화 없이 각 서비스를 독립적으로 운영

정답: B

설명: Saga 패턴은 분산 트랜잭션을 각 서비스가 로컬 트랜잭션을 실행하고 이벤트를 발행하는 단계들의 시퀀스로 관리합니다. 실패 시 보상 트랜잭션(Compensating Transaction)을 실행하여 이전 상태로 되돌립니다. Choreography(이벤트 기반)나 Orchestration(중앙 오케스트레이터) 방식으로 구현합니다.

Q61. DynamoDB 글로벌 테이블에서 충돌 해결(Conflict Resolution)은 어떻게 이루어집니까?

A) 수동으로 충돌을 해결해야 함 B) "최후 쓰기 우선(Last Writer Wins)" 방식으로 타임스탬프가 가장 최근인 쓰기가 승리 C) 먼저 도착한 쓰기가 우선 D) 리전 우선순위에 따라 결정

정답: B

설명: DynamoDB 글로벌 테이블은 최후 쓰기 우선(Last Writer Wins) 충돌 해결 방식을 사용합니다. 동일 항목에 대해 여러 리전에서 동시에 쓰기가 발생하면, 가장 최근 타임스탬프의 쓰기가 최종 값으로 채택됩니다. 충돌을 방지하려면 각 리전에서 다른 파티션 키 범위를 쓰도록 애플리케이션을 설계하는 것이 좋습니다.

Q62. RDS MySQL에서 실시간으로 데이터 변경사항을 다른 시스템에 스트리밍하려 합니다. Aurora로 업그레이드하지 않고 구현하는 방법은?

A) RDS 이벤트 알림 사용 B) DMS CDC 작업 + Kinesis Data Streams 대상으로 설정하여 변경사항 스트리밍 C) CloudWatch Logs로 변경사항 기록 D) RDS 스냅샷을 주기적으로 분석

정답: B

설명: AWS DMS의 CDC 기능을 사용하면 RDS MySQL의 binlog 기반 변경사항을 Kinesis Data Streams로 실시간 스트리밍할 수 있습니다. Kinesis 대상에 DMS 작업을 설정하면 각 INSERT/UPDATE/DELETE 이벤트가 Kinesis 스트림으로 전송됩니다. 이를 Lambda나 Kinesis Analytics가 처리할 수 있습니다.

Q63. Amazon Keyspaces (Apache Cassandra용)를 선택하는 적합한 시나리오는?

A) 복잡한 다중 테이블 조인이 필요한 OLTP 시스템 B) 기존 Cassandra 호환 워크로드를 관리 오버헤드 없이 AWS에서 실행 C) 그래프 데이터베이스 쿼리 D) SQL 기반 분석

정답: B

설명: Amazon Keyspaces는 완전 관리형 Apache Cassandra 호환 서비스입니다. 기존 Cassandra CQL(Cassandra Query Language) 코드와 드라이버를 그대로 사용할 수 있습니다. Cassandra 클러스터 운영(노드 관리, 패치, 스케일링)의 오버헤드 없이 서버리스로 운영하고 싶을 때 선택합니다.

Q64. RDS PostgreSQL에서 연결 수를 줄이고 연결 지연을 최소화하는 애플리케이션 레벨 솔루션은?

A) 모든 쿼리를 동기적으로 실행 B) PgBouncer 같은 외부 연결 풀러 또는 RDS Proxy 사용 C) 각 요청마다 새 연결 생성 D) 연결 타임아웃을 최대로 설정

정답: B

설명: PgBouncer는 PostgreSQL 전용 연결 풀러로, 애플리케이션의 많은 연결 요청을 실제 데이터베이스의 적은 수의 연결로 다중화합니다. Transaction 풀링 모드에서는 트랜잭션 단위로 연결을 할당하여 최고의 효율을 제공합니다. RDS Proxy도 같은 기능을 AWS 관리형으로 제공합니다.

Q65. 의료 데이터베이스에서 PHI(Protected Health Information) 데이터를 보호하기 위한 다층 보안 전략으로 올바른 것을 2개 선택하세요.

A) VPC 프라이빗 서브넷에 RDS 배포 + 보안 그룹으로 최소 권한 네트워크 접근 B) KMS 고객 관리 키(CMK)로 저장 시 암호화 + 전송 중 SSL/TLS 강제 C) RDS를 퍼블릭으로 노출하고 IP 제한 D) 기본 암호화 키 사용 E) 모든 사용자에게 동일한 데이터베이스 접근 권한 부여

정답: A, B

설명: HIPAA 준수 및 PHI 보호를 위한 다층 보안: 1) VPC 프라이빗 서브넷 + 보안 그룹으로 네트워크 수준에서 접근을 최소화합니다. 2) KMS CMK로 저장 시 암호화, SSL/TLS로 전송 중 암호화를 구현합니다. 추가로 IAM 인증, Secrets Manager 자격 증명 관리, Database Activity Streams 감사, 최소 권한 원칙도 적용합니다.


학습 리소스

이 모의고사는 학습 목적으로 제작되었습니다. 실제 시험 문제와 다를 수 있습니다.