문제는 세 가지 단계를 거치며 풀어가겠습니다.
1. 문제의 요구사항 분석하기
2. 관련 AWS 서비스 생각하기
3. 선택지 분석하기
문제1
회사는 Amazon S3 버킷에 텍스트 파일로 저장된 레시피 레코드에서 재료 이름을 추출해야 합니다. 웹 애플리케이션은 성분 이름을 사용하여 Amazon DynamoDB 테이블을 쿼리하고 영양 점수를 결정합니다. 애플리케이션은 식품 이외의 기록과 오류를 처리할 수 있습니다. 회사에는 이 솔루션을 개발할 수 있는 머신러닝 지식을 갖춘 직원이 없습니다.
이러한 요구 사항을 가장 비용 효율적으로 충족하는 솔루션은 무엇입니까?
선택지
A. PutObject 요청이 발생할 때 S3 이벤트 알림을 사용하여 AWS Lambda 함수를 호출하십시오. Amazon Comprehend를 사용하여 객체를 분석하고 성분 이름을 추출하도록 Lambda 함수를 프로그래밍합니다. Amazon Comprehend 출력을 DynamoDB 테이블에 저장합니다.
B. PutObject 요청이 발생할 때 Amazon EventBridge 규칙을 사용하여 AWS Lambda 함수를 호출합니다. Amazon Forecast를 사용하여 성분 이름을 추출함으로써 객체를 분석 하도록 Lambda 함수를 프로그래밍합니다. DynamoDB 테이블에 예측 결과를 저장합니다.
C. PutObject 요청이 발생할 때 S3 이벤트 알림을 사용하여 AWS Lambda 함수를 호출합니다. Amazon Polly를 사용하여 레시피 레코드의 오디오 녹음을 생성합니다. S3 버킷에 오디 오 파일을 저장합니다. Amazon Simple 알림 서비스(Amazon SNS)를 사용하여 URL을 직원에게 메시지로 보냅니다. 직원들에게 오디오 파일을 듣고 영양 점수를 계산하도록 지시 합니다. DynamoDB 테이블에 성분 이름을 저장합니다.
D. PutObject 요청이 발생할 때 Amazon EventBridge 규칙을 사용하여 AWS Lambda 함수를 호출합니다. Amazon SageMaker를 사용하여 객체를 분석하고 성분 이름을 추출하 도록 Lambda 함수를 프로그래밍합니다. SageMaker 엔드포인트의 추론 출력을 DynamoDB 테이블에 저장합니다.
풀이
이 문제는 S3에 저장된 텍스트 파일(레시피)에서 특정 정보(재료 이름)를 자동으로 추출하는 서버리스 아키텍처를 설계하는 문제입니다. 머신러닝 전문가가 없으므로 직접 모델을 만들기보다 AWS의 완전 관리형 AI 서비스를 활용해야 하며, 이벤트가 발생할 때만 작동하여 비용 효율성을 극대화하는 것이 핵심입니다.
정답: A
자세한 문제 풀이
1. 문제의 요구사항 분석하기
- 레시피 성분 식별 및 분류를 위한 자연어 처리 기능 구현.
- 인프라 관리 없이 즉시 도입 가능한 API 기반 머신러닝 솔루션.
- 데이터 영구 보관 및 고속 검색을 위한 NoSQL 저장소 활용.
2. 관련 AWS 서비스 생각하기
- AWS Lambda : 서버 관리 없이 코드를 실행할 수 있는 서버리스 컴퓨팅 서비스입니다. S3에 데이터가 업로드되면 자동으로 실행되어 AI 서비스와 데이터베이스를 유기적으로 연결하는 '접착제' 역할을 수행합니다. 이를 통해 복잡한 인프라 관리 없이 데이터 처리 파이프라인을 손쉽게 구축할 수 있습니다.
- Amazon Comprehend : 머신 러닝 전문 지식 없이도 텍스트의 의미를 분석할 수 있는 관리형 자연어 처리 서비스입니다. 레시피 텍스트에서 재료, 수량 등 핵심 요소를 자동으로 식별하고 분류하여 구조화된 데이터로 변환해 줍니다. 따라서 별도의 모델 학습 과정 없이 즉시 고도화된 분석 기능을 도입할 수 있습니다.
- Amazon DynamoDB : 규모에 상관없이 빠른 응답 속도를 제공하는 고성능 NoSQL 데이터베이스입니다. 유연한 스키마 구조 덕분에 다양한 형태의 레시피 데이터를 효율적으로 저장하고 관리할 수 있습니다. 특히 대용량 트래픽 처리에도 최적화되어 있어, 추출된 재료 정보를 바탕으로 영양 데이터를 즉각적으로 검색하는 데 탁월한 성능을 발휘합니다.
3. 선택지 분석하기
A. PutObject 요청이 발생할 때 S3 이벤트 알림을 사용하여 AWS Lambda 함수를 호출하십시오. Amazon Comprehend를 사용하여 객체를 분석하고 성분 이름을 추출하도록 Lambda 함수를 프로그래밍합니다. Amazon Comprehend 출력을 DynamoDB 테이블에 저장합니다.
→ 텍스트 분석에 특화된 서비스와 서버리스 기술을 결합하여 전문가 없이도 저렴하고 자동화된 시스템을 구축할 수 있습니다.
B. PutObject 요청이 발생할 때 Amazon EventBridge 규칙을 사용하여 AWS Lambda 함수를 호출합니다. Amazon Forecast를 사용하여 성분 이름을 추출함으로써 객체를 분석 하도록 Lambda 함수를 프로그래밍합니다. DynamoDB 테이블에 예측 결과를 저장합니다.
→ Amazon Forecast는 미래 수치 예측를 위한 서비스이지, 텍스트에서 단어를 추출하는 용도가 아닙니다.
C. PutObject 요청이 발생할 때 S3 이벤트 알림을 사용하여 AWS Lambda 함수를 호출합니다. Amazon Polly를 사용하여 레시피 레코드의 오디오 녹음을 생성합니다. S3 버킷에 오디 오 파일을 저장합니다. Amazon Simple 알림 서비스(Amazon SNS)를 사용하여 URL을 직원에게 메시지로 보냅니다. 직원들에게 오디오 파일을 듣고 영양 점수를 계산하도록 지시 합니다. DynamoDB 테이블에 성분 이름을 저장합니다.
→ 텍스트를 오디오로 바꿔서 사람이 직접 듣게 하는 방식은 자동화가 아니며, 운영 비용과 시간이 너무 많이 듭니다.
D. PutObject 요청이 발생할 때 Amazon EventBridge 규칙을 사용하여 AWS Lambda 함수를 호출합니다. Amazon SageMaker를 사용하여 객체를 분석하고 성분 이름을 추출하 도록 Lambda 함수를 프로그래밍합니다. SageMaker 엔드포인트의 추론 출력을 DynamoDB 테이블에 저장합니다.
→ Amazon SageMaker는 머신러닝 모델을 직접 설계하고 학습시켜야 하므로, 전문 인력이 없는 회사 상황에 맞지 않습니다.
[문제1] 추가할 내용: 아키텍처 흐름도 및 핵심 비교
이 문제의 핵심은 "머신러닝 지식 없이" 구현해야 한다는 점입니다. 글로만 보면 복잡해 보이지만, 데이터 흐름을 단계별로 보면 아주 단순합니다.
- 데이터 업로드 (S3): 사용자가 레시피 텍스트 파일을 올립니다.
- 자동 실행 (Lambda): 파일이 올라오는 순간 Lambda가 깨어납니다.
- 분석 요청 (Amazon Comprehend): Lambda가 "이 텍스트 좀 분석해줘"라고 Comprehend에게 부탁합니다.
- 결과 저장 (DynamoDB): 분석된 재료 이름을 데이터베이스에 저장합니다.
[왜 SageMaker는 정답이 아닐까요?]
- Amazon Comprehend: AWS가 이미 똑똑하게 학습시켜 둔 모델을 빌려 쓰는 방식입니다. (운전기사가 있는 택시를 타는 것과 같습니다.)
- Amazon SageMaker: 직접 데이터를 준비하고 모델을 학습시켜야 합니다. (직접 운전을 배우고 차를 모는 것과 같습니다.) 결론적으로 전문 인력이 없다면 Comprehend가 가장 효율적인 정답입니다.
문제2
회사의 애플리케이션은 여러 가용 영역에 있는 Amazon EC2 인스턴스에서 실행됩니다. 애플리케이션은 타사 애플리케이션에서 실시간 데이터를 수집해야 합니다. 회사에는 수집된 원시 데이터를 Amazon S3 버킷에 배치하는 데이터 수집 솔루션이 필요합니다. 어떤 솔루션이 이러한 요구 사항을 충족합니까?
선택지
A. 데이터 수집을 위해 Amazon Kinesis 데이터 스트림을 생성합니다. Kinesis 데이터 스트림을 사용하기 위해 Amazon Kinesis Data Firehose 전송 스트림을 생성합니다. S3 버킷 을 전송 스트림의 대상으로 지정합니다.
B. AWS Database Migration Service(AWS DMS)에서 데이터베이스 마이그레이션 작업을 생성합니다. EC2 인스턴스의 복제 인스턴스를 소스 엔드포인트로 지정합니다. S3 버킷 을 대상 엔드포인트로 지정합니다. 기존 데이터를 마이그레이션하고 지속적인 변경 사항을 복제하도록 마이그레이션 유형을 설정합니다.
C. EC2 인스턴스에서 AWS DataSync 에이전트를 생성하고 구성합니다. EC2 인스턴스에서 S3 버킷으로 데이터를 전송하도록 DataSync 작업을 구성합니다.
D. 데이터 수집을 위해 애플리케이션에 대한 AWS Direct Connect 연결을 생성합니다. Amazon Kinesis Data Firehose 전송 스트림을 생성하여 애플리케이션에서 직접 PUT 작업 을 사용합니다. S3 버킷을 전송 스트림의 대상으로 지정합니다.
풀이
실시간 데이터를 수집하고 S3에 적재하는 대표적인 패턴 중 하나는 Kinesis Data Streams와 Kinesis Data Firehose를 조합하는 것입니다. KDS가 실시간 데이터를 수집하면, Firehose가 이를 받아 S3로 자동 적재(delivery)할 수 있습니다.
정답 : A
자세한 문제 풀이
1. 문제의 요구사항 분석하기
- 타사 애플리케이션으로부터 실시간 데이터를 수집해야 함.
- 수집된 원시 데이터(Raw Data)를 Amazon S3에 저장해야 함.
- EC2 인스턴스 상의 애플리케이션과 연동되는 데이터 수집 솔루션 필요.
2. 관련 AWS 서비스 생각하기
- Amazon Kinesis Data Streams (KDS) : 대규모 데이터 레코드 스트림을 실시간으로 수집하고 처리하는 서비스입니다. 데이터 생산자(Producer)와 소비자(Consumer) 구조를 가집니다.
- Amazon Kinesis Data Firehose : 스트리밍 데이터를 S3, Redshift, OpenSearch Service 등으로 가장 쉽게 로드(전송)할 수 있는 완전 관리형 서비스입니다.
- AWS DataSync : 온프레미스 스토리지와 AWS 스토리지 간, 또는 AWS 스토리지 간의 대량 데이터(파일) 이동을 자동화하는 서비스입니다.
3. 선택지 분석하기
A. 데이터 수집을 위해 Amazon Kinesis 데이터 스트림을 생성합니다. Kinesis 데이터 스트림을 사용하기 위해 Amazon Kinesis Data Firehose 전송 스트림을 생성합니다. S3 버킷 을 전송 스트림의 대상으로 지정합니다.
→ 실시간 스트리밍 데이터 수집(KDS)과 S3 적재(Firehose)를 위한 구성으로, 요구사항을 충족합니다.
B. AWS Database Migration Service(AWS DMS)에서 데이터베이스 마이그레이션 작업을 생성합니다. EC2 인스턴스의 복제 인스턴스를 소스 엔드포인트로 지정합니다. S3 버킷 을 대상 엔드포인트로 지정합니다. 기존 데이터를 마이그레이션하고 지속적인 변경 사항을 복제하도록 마이그레이션 유형을 설정합니다.
→ DMS는 DB 마이그레이션/CDC 용도이며, ‘타사 애플리케이션 실시간 데이터 스트리밍 수집’ 요구사항과는 목적이 다릅니다.
C. EC2 인스턴스에서 AWS DataSync 에이전트를 생성하고 구성합니다. EC2 인스턴스에서 S3 버킷으로 데이터를 전송하도록 DataSync 작업을 구성합니다.
→ DataSync는 파일 시스템이나 스토리지 간의 대용량 데이터 이동을 위한 도구로, 실시간 이벤트 스트림 처리에는 사용되지 않습니다.
D. 데이터 수집을 위해 애플리케이션에 대한 AWS Direct Connect 연결을 생성합니다. Amazon Kinesis Data Firehose 전송 스트림을 생성하여 애플리케이션에서 직접 PUT 작업 을 사용합니다. S3 버킷을 전송 스트림의 대상으로 지정합니다.
→ Direct Connect는 온프레미스 데이터센터와 AWS 간의 전용 네트워크 연결 서비스입니다. 이미 AWS 내부(EC2)에 있는 애플리케이션에는 불필요한 구성입니다.
[문제 2] 추가할 내용: 헷갈리는 Kinesis 서비스 완벽 정리
실시간 데이터를 처리할 때 Kinesis 서비스들의 역할을 정확히 구분하는 것이 중요합니다. 시험에 자주 나오니 꼭 기억!
- Kinesis Data Streams (데이터 수집)
- 역할: 수도관(파이프)
- 특징: 실시간으로 데이터를 받아들이는 역할입니다. 데이터를 잠시 보관하고 있다가 소비자가 가져갈 수 있게 해줍니다.
- Kinesis Data Firehose (데이터 적재)
- 역할: 배달부 (양동이로 옮기기)
- 특징: 데이터를 S3나 Redshift 같은 최종 목적지로 배달해주는 역할입니다. 가장 쉽고 빠르게 데이터를 '적재(Load)'할 수 있습니다.
- Kinesis Data Analytics (데이터 분석)
- 역할: 정수기 필터
- 특징: 데이터가 흐르는 도중에 SQL을 사용해 실시간으로 분석하고 가공합니다.
이 문제의 핵심 포인트: 문제에서 "S3 버킷에 배치(Load)"해야 한다고 했으므로, 배달부 역할을 하는 Firehose가 반드시 포함되어야 합니다.
문제3
솔루션 아키텍트는 회사의 AWS 계정에 대한 AWS Identity and Access Management(IAM) 인증 모델을 설계하고 있습니다. 회사는 AWS 계정의 AWS 서비스 및 리소스에 대한 전 체 액세스 권한을 갖도록 5명의 특정 직원을 지정했습니다. 솔루션 설계자는 지정된 5명의 직원 각각에 대해 IAM 사용자를 생성하고 IAM 사용자 그룹을 생성했습니다. 어떤 솔루션이 이러한 요구 사항을 충족합니까?
선택지
A. IAM 사용자 그룹에 AdministratorAccess 리소스 기반 정책을 연결합니다. 지정된 직원 IAM 사용자 5명을 각각 IAM 사용자 그룹에 배치합니다.
B. SystemAdministrator 자격 증명 기반 정책을 IAM 사용자 그룹에 연결합니다. 지정된 직원 IAM 사용자 5명을 각각 IAM 사용자 그룹에 배치합니다.
C. IAM 사용자 그룹에 AdministratorAccess 자격 증명 기반 정책을 연결합니다. 지정된 직원 IAM 사용자 5명을 각각 IAM 사용자 그룹에 배치합니다.
D. SystemAdministrator 리소스 기반 정책을 IAM 사용자 그룹에 연결합니다. 지정된 직원 IAM 사용자 5명을 각각 IAM 사용자 그룹에 배치합니다.
풀이
IAM 사용자나 그룹에 권한을 부여하는 것은 자격 증명 기반(Identity-based) 정책입니다. AWS에서 제공하는 AdministratorAccess 관리형 정책은 모든 서비스와 리소스에 대한 전체 액세스 권한을 부여합니다. 따라서 이 자격 증명 기반 정책을 IAM 그룹에 연결하면 소속된 5명의 직원에게 효율적으로 전체 권한을 할당할 수 있습니다.
정답 : C
자세한 문제 풀이
1. 문제의 요구사항 분석하기
- 특정 직원 5명에게 AWS의 모든 서비스 및 리소스에 대한 전체 액세스 권한 부여 필요.
- 개별 IAM 사용자와 이들을 묶는 IAM 그룹이 이미 생성되어 있음.
- 올바른 정책 유형(자격 증명 기반 vs 리소스 기반)과 정책 이름(AdministratorAccess) 선택 필요.
2. 관련 AWS 서비스 생각하기
- 자격 증명 기반 정책 (Identity-based policies): IAM 사용자, 그룹, 역할과 같은 '자격 증명(Identity)'에 연결되어 그들이 무엇을 할 수 있는지 정의하는 정책입니다. (예: 이 사용자는 S3에 접근할 수 있다.)
- 리소스 기반 정책 (Resource-based policies): S3 버킷, SQS 대기열 등 '리소스' 자체에 직접 연결되는 정책입니다. (예: 이 버킷은 특정 사용자의 접근을 허용한다.) 참고: IAM 그룹에는 리소스 기반 정책을 연결할 수 없습니다.
- AdministratorAccess: AWS 계정 내의 모든 리소스와 서비스에 대한 전체 관리 권한을 제공하는 AWS 관리형 정책입니다.
3. 선택지 분석하기
A. IAM 사용자 그룹에 AdministratorAccess 리소스 기반 정책을 연결합니다. 지정된 직원 IAM 사용자 5명을 각각 IAM 사용자 그룹에 배치합니다.
→ IAM 그룹에는 리소스 기반 정책을 연결할 수 없으며, 사용자에게 권한을 주는 것은 자격 증명 기반 정책이어야 합니다.
B. SystemAdministrator 자격 증명 기반 정책을 IAM 사용자 그룹에 연결합니다. 지정된 직원 IAM 사용자 5명을 각각 IAM 사용자 그룹에 배치합니다.
→ SystemAdministrator는 특정 직무 기능을 위한 정책으로, AdministratorAccess만큼 포괄적인 '전체 액세스(Full Access)' 권한을 의미하는 표준 정책은 아닙니다.
C. IAM 사용자 그룹에 AdministratorAccess 자격 증명 기반 정책을 연결합니다. 지정된 직원 IAM 사용자 5명을 각각 IAM 사용자 그룹에 배치합니다.
→ '전체 액세스'를 제공하는 AdministratorAccess 정책을 올바른 유형인 '자격 증명 기반 정책'으로 그룹에 연결했으므로 정답입니다.
D. SystemAdministrator 리소스 기반 정책을 IAM 사용자 그룹에 연결합니다. 지정된 직원 IAM 사용자 5명을 각각 IAM 사용자 그룹에 배치합니다.
→ A와 마찬가지로 IAM 그룹에 리소스 기반 정책을 연결할 수 없으므로 기술적으로 불가능한 구성입니다.
[문제 3] 추가할 내용: AdministratorAccess 정책의 이해
정답인 C번에서 언급된 'AdministratorAccess'는 관리자 권한을 주는 자격 증명 기반 정책입니다.
이 정책은 기술적으로 다음과 같은 의미를 가집니다.
- Action: 모든 작업 허용 (*)
- Resource: 모든 리소스 대상 (*)
[자격 증명 기반 vs 리소스 기반]
- 자격 증명 기반(Identity-based): "이 사용자(User)나 그룹(Group)은 무엇을 할 수 있는가?"를 정의합니다. (IAM 그룹에는 이것만 연결할 수 있습니다.)
- 리소스 기반(Resource-based): "이 자원(S3 버킷 등)에는 누가 접근할 수 있는가?"를 정의합니다.
따라서 IAM 그룹에 권한을 줄 때는 반드시 자격 증명 기반 정책을 사용해야 합니다.
참고 블로그: https://pacloud.tistory.com/220