Q351 데이터 관리 앱을 AWS로 옮기면서, 여러 단계의 워크플로를 관리하고 운영 오버헤드를 줄일 수 있는 '서버리스' 기반의 분산 아키텍처를 구축하려 합니다. 가장 적합한 서비스 조합은? AWS Glue에서 워크플로를 구축하고 Lambda를 호출하여 각 단계를 처리합니다. AWS Step Functions를 사용하고 EC2 인스턴스에서 애플리케이션 코드를 실행합니다. Amazon EventBridge에서 워크플로를 구축하고 일정에 따라 Lambda를 트리거합니다. AWS Step Functions를 사용하여 상태 머신을 만들고 Lambda 함수를 호출하여 단계를 관리합니다. 정답 확인 및 해설 📖 해설 정답은 D입니다. 복잡한 워크플로(여러 단계의 로직)를 조율하는 '지휘자' 역할에는 Step Functions가 최고입니다. 특히 '서버리스'와 '낮은 운영 오버헤드'를 원하신다면, Step Functions로 전체 흐름(상태 머신)을 짜고 각 단계의 실제 작업은 Lambda라는 일꾼에게 맡기는 조합이 가장 완벽합니다. 이렇게 하면 서버 관리 걱정 없이 논리적인 흐름을 안정적으로 유지할 수 있습니다. 다른 옵션인 A는 데이터 변환(ETL)에 특화되어 있고, B는 EC2 서버를 직접 관리해야 하기에 오버헤드가 큽니다. C는 단순한 일정 예약이나 이벤트 전달용이지 복잡한 단계별 상태 관리를 하기엔 역부족입니다. 💡 이 문제의 핵심 용어 AWS Step Functions: 여러 AWS 서비스를 시각적 워크플로로 연결해주는 서버리스 오케스트레이션 서비스 Lambda: 서버 관리 없이 코드만 실행하면 되는 서버리스 컴퓨팅 서비스 State Machine (상태 머신): 비즈니스 로직의 각 단계와 조건에 따른 흐름을 정의한 설계도
Q352 전 세계 8개 리전에 배포된 멀티플레이어 게임이 UDP 프로토콜을 사용합니다. 전 세계 사용자들에게 대기 시간과 패킷 손실을 최소화하여 고품질 경험을 제공할 방법은? 각 리전에 전송 게이트웨이(Transit Gateway)를 설정하고 리전 간 피어링을 연결합니다. 각 리전에 UDP 리스너를 둔 AWS Global Accelerator를 설정합니다. UDP를 지원하도록 설정된 Amazon CloudFront를 각 리전에 연결합니다. 각 리전 간에 VPC 피어링을 맺고 UDP 통신을 활성화합니다. 정답 확인 및 해설 📖 해설 정답은 B입니다. UDP를 사용하는 게임 서비스에서 전 세계적인 속도 향상을 원한다면 Global Accelerator가 정답입니다. 이 서비스는 사용자의 요청을 가장 가까운 AWS 전용망 입구로 안내하여, 정체된 공용 인터넷 구간을 최소화하고 광속의 AWS 내부망을 타고 리전까지 배달해줍니다. 특히 게임에 필수인 UDP 리스너를 완벽히 지원하여 패킷 손실과 지연 시간을 획기적으로 줄여줍니다. 다른 옵션인 A와 D는 망 연결 기술일 뿐 사용자 접속 속도를 직접 개선하는 도구는 아닙니다. C인 CloudFront는 주로 HTTP/HTTPS 기반의 정적 콘텐츠 전송에 최적화되어 있어 게임용 UDP 처리에는 Global Accelerator가 훨씬 강력합니다. 💡 이 문제의 핵심 용어 AWS Global Accelerator: AWS 전용 네트워크망을 통해 전 세계 앱의 가용성과 성능을 높여주는 서비스 UDP (User Datagram Protocol): 비연결형 프로토콜로, 속도가 매우 빨라 실시간 게임이나 영상 스트리밍에 주로 쓰임 Packet Loss (패킷 손실): 데이터가 전송 중에 사라지는 현상
Q353 단일 서버(EC2)에서 MySQL을 돌리며 1TB의 io2 볼륨을 쓰고 있습니다. 피크 시 1,000 IOPS 정도가 발생하는데, 비용을 줄이면서도 성능을 안정화하고 고가용성을 챙길 가장 관리하기 쉬운 방법은? io2 Block Express 볼륨을 쓰는 RDS MySQL 다중 AZ 배포로 옮깁니다. 범용 SSD(gp2) 볼륨을 쓰는 RDS MySQL 다중 AZ 배포로 옮깁니다. 전체 데이터를 S3 Intelligent-Tiering 액세스 계층으로 옮겨 관리합니다. 두 개의 큰 EC2 인스턴스를 사용하여 직접 활성-수동(Active-Passive) 모드를 구축합니다. 정답 확인 및 해설 📖 해설 정답은 B입니다. 현재 1,000 IOPS 정도의 부하량이라면 비싼 io2 볼륨 대신 가성비 좋은 범용 SSD(gp2)만으로도 충분합니다. RDS gp2는 기본적으로 어느 정도의 IOPS를 보장해주기 때문입니다. 여기에 '다중 AZ' 배포를 선택하면 한쪽 데이터 센터가 망가져도 서비스가 유지되므로 가용성과 비용, 두 마리 토끼를 모두 잡는 가장 경제적인 선택이 됩니다. 다른 옵션인 A는 성능은 좋지만 비용이 너무 많이 들고, C는 데이터베이스용 저장소 방식이 아닙니다. D는 서버를 직접 관리해야 하는 노가다 방식이라 운영 오버헤드를 낮추려는 목표에 맞지 않습니다. 💡 이 문제의 핵심 용어 RDS Multi-AZ: 두 개 이상의 가용 영역(AZ)에 데이터베이스를 두어 한곳 장애 시 자동으로 복구하는 기능 gp2 (General Purpose SSD): 비용 대비 성능이 우수하여 가장 대중적으로 쓰이는 범용 저장소 타입 IOPS: 초당 입력/출력 작업 횟수로, 저장 장치의 속도를 나타내는 척도
Q354 API Gateway, Lambda, RDS(PostgreSQL) 기반의 서비스에서 트래픽이 몰릴 때마다 데이터베이스 연결 시간 초과 오류가 발생합니다. 코드 수정을 최소화하며 해결하는 방법은? Lambda 함수의 동시성 실행 비율을 강제로 줄입니다. 데이터베이스(RDS) 설정에서 RDS 프록시(Proxy)를 켭니다. 연결 성능을 높이기 위해 RDS 인스턴스의 사양을 더 큰 클래스로 올립니다. 데이터베이스를 온디맨드 확장이 가능한 DynamoDB로 아예 이사합니다. 정답 확인 및 해설 📖 해설 정답은 B입니다. 람다(Lambda)와 관계형 DB(RDS)를 같이 쓸 때 가장 고질적인 문제가 바로 '연결 고갈'입니다. 람다가 순식간에 수천 개씩 켜지면 DB가 감당할 수 있는 한계치까지 접속을 시도하기 때문이죠. 이때 RDS 프록시를 중간에 두면, 프록시가 DB 연결 통로를 미리 뚫어놓고 람다들에게 효율적으로 빌려주는 '풀링(Pooling)' 역할을 대신 해줍니다. 코드 수정 없이 클릭 몇 번으로 해결할 수 있는 최고의 방법입니다. 다른 옵션인 A는 서비스 처리 능력을 깎는 처사이고, C는 비용만 많이 들고 근본적인 연결 관리 문제를 해결하지 못합니다. D는 DB 체계를 완전히 바꿔야 해서 '최소한의 코드 수정' 조건에 어긋납니다. 💡 이 문제의 핵심 용어 RDS Proxy: 서버리스 앱과 데이터베이스 사이에서 연결을 관리하고 공유하여 DB의 부담을 덜어주는 서비스 Connection Timeout: 데이터베이스에 접속하려고 기다리다가 정해진 시간을 넘겨버려 발생하는 오류 Pooling (풀링): 자원(연결 등)을 미리 준비해두고 필요할 때마다 돌려쓰는 효율적인 관리 기법
Q356 S3 Standard에 저장된 데이터 중 75%가 30일이 지나면 잘 안 쓰인다는 사실을 알게 되었습니다. 데이터는 즉시 열람 가능해야 하고 고가용성도 유지해야 할 때, 가장 비용을 아끼는 방법은? 30일이 경과하면 데이터를 S3 Glacier Deep Archive로 보냅니다. 30일이 경과하면 데이터를 S3 Standard-IA(자주 액세스하지 않음)로 옮깁니다. 30일이 경과하면 데이터를 S3 One Zone-IA로 옮겨 관리합니다. 전체 데이터를 즉시 S3 One Zone-IA로 옮겨 비용을 절감합니다. 정답 확인 및 해설 📖 해설 정답은 B입니다. 자주 안 쓰지만 필요할 때 바로 꺼내봐야 한다면 Standard-IA가 정답입니다. Standard 요금보다 저렴하면서도 데이터에 접근하는 속도는 일반 S3와 똑같기 때문입니다. '즉시 액세스'와 '고가용성' 조건을 모두 만족하는 합리적인 중간 단계 저장소입니다. 다른 옵션인 A는 데이터를 보내는 데 몇 시간이 걸려 '즉시 액세스'가 안 되고, C와 D인 One Zone-IA는 데이터 센터 한 곳에만 저장하므로 가용성이 Standard-IA보다 떨어집니다. 💡 이 문제의 핵심 용어 S3 Standard-IA: 자주 열진 않지만 필요할 땐 즉시 빠르게(Real-time) 열어봐야 하는 파일을 위한 저렴한 요금제 High Availability (고가용성): 시스템이 장애 없이 항상 정상적으로 가동될 수 있는 튼튼한 상태 Recovery Time (복구 시간): 데이터를 요청했을 때 실제 사용할 수 있을 때까지 걸리는 대기 시간
Q357 윈도우 서버(EC2)에서 점수판 앱을 운영하는데, 이미 정해진 이미지 파일(정적)과 사용자마다 결과가 바뀌는 코드(동적)가 섞여 있습니다. 고가용성을 위한 스토리지 구성으로 옳은 것은? (2개 선택) 정적 파일은 S3에 저장하고, 전 세계 배달을 위해 CloudFront를 연결합니다. 정적 파일을 S3에 두고, 빠른 접근을 위해 ElastiCache 캐시 서버를 둡니다. 여러 서버가 코드를 공유할 수 있게 EFS 볼륨을 생성하여 리눅스처럼 연결합니다. 여러 윈도우 서버가 코드를 공유하도록 FSx for Windows File Server를 연결합니다. 범용 SSD(gp2)의 EBS 볼륨에 코드를 담고 각 서버에 하나씩 붙여줍니다. 정답 확인 및 해설 📖 해설 정답은 A와 D입니다. 웹 서비스의 국룰 설계입니다. 일단 잘 안 바뀌는 이미지 같은 정적 파일은 S3라는 창고에 넣고 CloudFront(A)라는 배달망을 붙이면 전 세계 고객이 빠르게 볼 수 있습니다. 그리고 여러 대의 윈도우 서버가 동일한 코드 파일을 읽고 써야 한다면 윈도우 전용 공유 폴더인 FSx for Windows(D)를 쓰면 됩니다. 리눅스라면 EFS를 썼겠지만 윈도우 서버이기에 FSx가 짝꿍입니다. 다른 옵션인 B(캐시)는 단순 이미지 파일 전송에는 과하고, C(EFS)는 리눅스 전용입니다. E(EBS)는 한 번에 서버 한 대에만 붙을 수 있어서 여러 서버가 파일을 공유하기엔 부적절합니다. 💡 이 문제의 핵심 용어 Amazon FSx for Windows File Server: 윈도우 서버끼리 파일을 공유할 수 있게 해주는 완전 관리형 SMB 파일 시스템 CloudFront: 전 세계 사용자에게 웹 콘텐츠를 빠르게 전달하는 고성능 배달망(CDN) Static File (정적 파일): 이미지, CSS 등 사용자가 누구든 내용이 변하지 않는 파일
Q358 10억 개 이상의 이미지가 저장된 S3와 CloudFront를 사용 중입니다. 고객의 기기(모바일, PC 등) 환경에 맞춰 실시간으로 이미지 크기를 조절해 전달하고 소 싶을 때, 가장 관리 수고가 적은 방법은? EC2 서버에 이미지 처리 라이브러리를 직접 깔고 실시간 변환 프로그램을 돌립니다. CloudFront의 '오리진 요청 정책'을 써서 자동으로 크기를 조절하게 설정합니다. Lambda@Edge 함수를 사용하여 에지 서버에서 이미지 크기를 실시간 변환해 쏴줍니다. CloudFront '응답 헤더 정책'으로 이미지 크기를 조절하는 명령을 추가합니다. 정답 확인 및 해설 📖 해설 정답은 C입니다. 사용자에게 가장 가까운 배달 거점(에지)에서 즉석 요리를 해주는 Lambda@Edge가 정답입니다. 요청이 들어왔을 때 '아, 이분은 아이폰이네? 그럼 작게 줄여서 줘야지'라고 에지 서버에서 바로 판단해 이미지를 깎아 보내줍니다. 서버를 직접 관리할 필요도 없고 전 세계 어디서든 똑같이 빠르게 작동하니 운영 부담이 거의 없습니다. 다른 옵션인 A는 서버 관리가 고역이고, B와 D는 단순한 정책 설정일 뿐 이미지 픽셀을 직접 깎는 복잡한 로직을 수행할 수는 없습니다. 💡 이 문제의 핵심 용어 Lambda@Edge: 사용자 근처의 에지 서버에서 즉석으로 코드를 실행해 콘텐츠를 가공해주는 기술 Edge Location: CloudFront가 전 세계에 깔아둔 소규모 보조 서버 거점 Origin (오리진): 실제 원본 파일이 들어있는 곳(예: S3 버킷)
Q359 병원 환자 기록을 S3에 담으려는데, 데이터 전송 중(In-transit)과 보관 중(At-rest) 상태 모두에서 암호화를 강제하고 싶습니다. 특히 회사가 직접 암호 키를 관리해야 할 때의 올바른 설정은? ACM에서 인증서를 받아 S3와 연결하고, KMS 기본 키(SSE-KMS)로 암호화를 예약합니다. 버킷 정책에서 'aws:SecureTransport'를 사용하여 HTTPS만 받고, S3 관리 키(SSE-S3)를 씁니다. 버킷 정책에서 'aws:SecureTransport'를 사용하여 HTTPS만 받고, KMS 고객 관리 키(SSE-KMS)를 씁니다. 보안 통신을 위해 HTTPS만 허용하고, 민감 데이터 보호를 위해 Amazon Macie를 켭니다. 정답 확인 및 해설 📖 해설 정답은 C입니다. 전송 중 보안은 'aws:SecureTransport' 규칙을 넣어 HTTPS로만 접속하게 하면 해결됩니다. 그리고 보관 중(저장된) 보안은 KMS의 '고객 관리 키'를 쓰면 됩니다. S3 관리 키(SSE-S3)는 AWS가 열쇠를 쥐고 있지만, KMS 고객 관리 키를 쓰면 우리 회사 보안팀이 직접 열쇠의 사용 권한과 만료를 관리할 수 있어 훨씬 높은 수준의 규정을 만족하게 됩니다. 다른 옵션인 A(ACM)는 웹사이트용 인증서라 S3 파일 암호화와는 결이 다르고, D(Macie)는 데이터의 내용을 분석해서 개인 정보를 찾아내는 도구일 뿐 전송/저장 암호화 강제 설정은 아닙니다. 💡 이 문제의 핵심 용어 aws:SecureTransport: S3 버킷 정책에서 데이터 전송 시 암호화된 통로(HTTPS)만 쓰도록 강제하는 옵션 Server-side Encryption (SSE): 데이터가 저장될 때 서버가 알아서 암호문을 만들어주는 기술 Customer Managed Key (CMK): 사용자가 직접 만들고 관리하는 암호화용 디지털 열쇠
Q360 같은 네트워크(VPC) 안에 있는 두 개의 API 서버가 서로 통신하는데, 로그를 보니 괜히 외부 인터넷망을 거쳐서 비효율적으로 통신하고 있습니다. 코드 수정을 최소화하며 내부적으로만 통신하게 바꾸는 방법은? 인증 보안을 위해 모든 HTTP 요청 헤더에 X-API-Key를 추가합니다. 인터페이스 VPC 엔드포인트(Interface Endpoint)를 생성하여 연결합니다. 네트워크 효율을 위해 게이트웨이 엔드포인트(Gateway Endpoint)를 생성합니다. 두 서버 사이에 SQS 대기열을 두어 인터넷 연결을 아예 끊어버립니다. 정답 확인 및 해설 📖 해설 정답은 B입니다. 집 안(VPC)에서 옆방(다른 서비스)으로 가는데 굳이 대문을 통해 밖으로 나갔다 올 필요는 없죠? 인터페이스 엔드포인트를 하나 뚫어주면, 두 API는 인터넷으로 나가지 않고 AWS 내부망 안에서 비밀 통로(Private Link)를 통해 광속으로 대화를 나눕니다. 코드 수정 없이 주소 설정 하나면 되니 아주 깔끔한 해결책입니다. 다른 옵션인 C(게이트웨이 엔드포인트)는 주로 S3나 DynamoDB 전용이고, D(SQS)는 통신 방식 자체를 비동기로 뜯어고쳐야 해서 코드 수정이 너무 많아집니다. 💡 이 문제의 핵심 용어 VPC Endpoint: 공용 인터넷을 거치지 않고 AWS 시스템 내부에서 서비스 간 통로를 뚫어주는 기술 Interface Endpoint: 프라이빗 IP 주소를 할당받아 네트워크 인터페이스 형태로 통신하는 엔드포인트 방식 VPC Flow Logs: 내 네트워크(VPC)에서 어떤 데이터가 어디로 흘러갔는지 기록한 장부
Q361 게임 앱에서 실시간 조회는 1ms 미만의 광속 속도로 읽어야 하고, 가끔 과거 기록도 훑어봐야 합니다. 운영 수고를 최소화하면서 이 두 조건을 만족하는 조합은? 자주 쓰는 건 RDS에 두고, 매일 스크립트를 돌려 백업본을 S3로 보내 조회합니다. 데이터를 S3에 직접 다 담고, 오래된 건 Glacier로 보낸 뒤 Athena로 쿼리를 날려 봅니다. 실시간은 DynamoDB + DAX(가속기)를 쓰고, 과거 자료용으로는 S3로 내보낸 뒤 Athena로 봅니다. DynamoDB를 쓰면서 Kinesis로 데이터를 실시간 복제해 S3에 쌓아두고 관리합니다. 정답 확인 및 해설 📖 해설 정답은 C입니다. '1ms 미만의 속도'라는 단어가 나오면 무조건 DynamoDB와 그 짝꿍인 가속기(DAX)를 떠올려야 합니다. DAX를 쓰면 DB에서 정보를 읽어올 때 빛의 속도로 응답해줍니다. 그리고 분석용으로 가끔 훑어보는 과거 자료는 비싼 DB에 둘 필요 없이 저렴한 S3에 파일로 저장해두고, 필요할 때만 Athena라는 도구로 파일 내용을 SQL처럼 검색해보면 비용과 성능 모두 잡을 수 있습니다. 다른 옵션인 A는 RDS 성능이 1ms 미만을 지속적으로 유지하기 어렵고, B는 실시간 속도 면에서 탈락입니다. D는 데이터 보관 방식에만 치중되어 있어 실시간 가속 성능이 빠져 있습니다. 💡 이 문제의 핵심 용어 DAX (DynamoDB Accelerator): 자주 찾는 데이터를 메모리에 미리 올려두어 응답 속도를 10배 이상 높여주는 캐시 서비스 Amazon Athena: S3에 저장된 파일들을 마치 데이터베이스 테이블처럼 SQL로 간편하게 조회하는 서비스 Sub-millisecond Latency: 0.001초도 안 되는 찰나의 시간 안에 응답이 오는 매우 빠른 속도
Q362 결제 시스템에서 메시지들이 반드시 '보낸 순서' 그대로 수신되어야 결제 오류가 안 납니다. 어떤 결제 ID에 대한 순서를 완벽히 보장할 두 가지 방법은? (2개 선택) 결제 ID를 파티션 키(Partition Key)로 설정하여 DynamoDB에 직접 기록합니다. 결제 ID를 파티션 키로 사용하여 Kinesis 데이터 스트림으로 보냅니다. 결제 ID를 키로 하여 Memcached 캐시 서버에 순서대로 담아 관리합니다. SQS 표준 대기열에 담으면서 결제 ID를 메시지 속성에 고유하게 설정합니다. SQS FIFO 대기열을 만들고, 결제 ID를 '메시지 그룹 ID'로 지정해 전송합니다. 정답 확인 및 해설 📖 해설 정답은 B와 E입니다. 데이터 전송 순서가 생명이라면 두 가지 전용 도구가 있습니다. 첫째, SQS FIFO(선입선출) 방식(E)을 쓰고 '결제 ID'별로 그룹을 묶어주면 그 ID 내에서는 절대 순서가 꼬이지 않습니다. 둘째, 실시간 스트림인 Kinesis(B)를 쓰면서 결제 ID를 파티션 키로 주면, 동일한 키를 가진 데이터는 같은 통로(Shards)를 타게 되어 보낸 순서대로 도착합니다. 다른 옵션인 A와 C는 단순 저장소라 전송 순서를 제어하기 힘들고, D인 SQS '표준' 모드는 가끔 앞뒤 순서가 바뀔 수 있어 결제처럼 민감한 작업에는 쓰면 안 됩니다. 💡 이 문제의 핵심 용어 FIFO (First-In-First-Out): 먼저 들어온 데이터가 무조건 먼저 나가는 '선입선출' 원칙 Message Group ID: SQS FIFO에서 특정 주제나 사용자별로 순서를 따로 관리하기 위해 사용하는 꼬리표 Partition Key: 데이터를 어느 통로에 담을지 결정하는 기준값으로, 같은 키를 쓰면 순서가 유지됨
Q363 게임 시스템에서 발생한 하나의 이벤트를 점수판, 매치메이킹, 인증 서비스 등 여러 곳에 실시간으로 동시에 전파하려 합니다. 보낸 순서도 지켜져야 할 때 가장 좋은 도구는? Amazon EventBridge 이벤트 버스 Amazon SNS FIFO 주제(Topic) Amazon SNS 표준 주제(Topic) Amazon SQS FIFO 대기열 정답 확인 및 해설 📖 해설 정답은 B입니다. 한 명의 발표자(이벤트)가 여러 청중(각 서비스들)에게 한 번에 소식을 알리는 방식을 '팬아웃(Fan-out)'이라고 합니다. 이 역할을 수행하면서 순서(FIFO)까지 지켜주고 싶다면 SNS FIFO 주제가 안성맞춤입니다. 소리를 지르는 즉시 약속된 서비스들이 순서대로 소식을 듣고 각자 할 일을 시작합니다. 다른 옵션인 A(EventBridge)도 좋지만 순서 보장 기능이 표준 SNS FIFO만큼 강력하지 않으며, D(SQS)는 한 번 메시지를 가져가면 사라지기 때문에 한 소식을 여러 명에게 동시에 똑같이 전파하기엔 맞지 않습니다. 💡 이 문제의 핵심 용어 SNS Topic: 소식을 전파할 때 사용하는 '채널'이나 '방'의 개념 Fan-out: 하나의 메시지를 복제하여 여러 시스템이나 서비스에 동시에 뿌려주는 설계 FIFO (First-In-First-Out): 데이터가 입력된 순서 그대로 출력되는 방식
Q364 병원 앱에서 SQS와 SNS를 사용하는데, 데이터가 보관될 때나 이동할 때 모두 암호화되어야 하며 승인된 직원만 열어봐야 합니다. 올바른 보안 설정 조합은? (2개 선택) SQS에서 서버 측 암호화를 켜고, 기본 키 정책으로 인증된 사람만 쓰게 제한합니다. KMS 고객 관리 키로 SNS 암호화를 켜고, 인증된 사람만 열쇠를 쓰게 정책을 짭니다. SNS 암호화를 켜고 HTTPS(TLS) 통신만 받도록 주제 정책에 조건을 겁니다. KMS 고객 관리 키로 SQS 암호화를 켜고, HTTPS만 받도록 대기열 정책에 조건을 겁니다. SQS 암호화 시 IAM 정책으로만 사람을 거르고, 전송 구간 보안 설정은 생략합니다. 정답 확인 및 해설 📖 해설 정답은 B와 D입니다. 데이터 보안 2종 세트입니다. 먼저 보관 중(At-rest) 상태 보안은 KMS라는 금고에서 만든 '고객 관리 키(CMK)'를 써서 잠궈야 합니다(B, D). 그리고 이동 중(In-transit) 보안은 대기열이나 주제 설정에 'HTTPS(TLS)를 통해서만 데이터를 보내라'는 조건을 적어두면 됩니다. 이렇게 하면 승인된 직원만 열쇠를 써서 내용을 볼 수 있고, 가로채기도 불가능한 철통 보안이 완성됩니다. 다른 옵션인 A는 S3 관리 키라 사용자 권한을 세밀하게 주기 힘들고, C는 KMS 사용 제한이 빠져 있어 보안이 반쪽짜리입니다. 💡 이 문제의 핵심 용어 At-rest Encryption: 데이터가 저장 장치에 담겨 있을 때 암호화된 상태로 있는 것 In-transit Encryption: 데이터가 네트워크 선을 타고 이동할 때 엿들을 수 없게 암호화하는 것 KMS Key Policy: 누가 암호 키를 써서 데이터를 해독할 수 있는지 결정하는 핵심 보안 문서
Q365 실수로 DB 테이블을 잘못 건드려 데이터가 날아갔습니다. 지난 30일 이내라면 언제든 사건 발생 5분 전의 상태로 시간을 돌려 복구할 수 있는 RDS 기능은? 읽기 전용 복제본(Read Replica) 매일 한 번씩 직접 찍은 수동 스냅샷(Manual Snapshot) 초 단위 복구가 가능한 자동 백업(Automatic Backup) 장애 대비를 위한 다중 AZ(Multi-AZ) 배포 정답 확인 및 해설 📖 해설 정답은 C입니다. RDS의 '자동 백업' 기능을 켜두면 AWS가 매일 밤 전체 백업을 하고, 낮에는 변경된 일기(로그)를 계속 적어둡니다. 이걸 활용하면 '어제 오후 2시 13분 42초'처럼 내가 원하는 구체적인 시점(Point-in-time)으로 DB를 똑같이 되살릴 수 있습니다. 최대 35일까지 가능하니 실수로 정보를 편집해도 안심할 수 있는 타임머신 같은 기능입니다. 다른 옵션인 A나 D는 서버가 고장 났을 때를 위한 대비책이지, 누군가 내용을 마음대로 수정한 걸 되돌려주지는 않습니다. B인 수동 스냅샷은 내가 찍은 그 시각으로만 갈 수 있어 5분 전 정밀 복구는 불가능합니다. 💡 이 문제의 핵심 용어 Point-in-Time Recovery (PITR): 과거 특정 시점을 지정해 그 상태 그대로 데이터를 복원하는 정밀 복구 기술 Automated Backup: 사용자가 신경 쓰지 않아도 매일 알아서 DB의 복사본을 만들어두는 서비스 Retention Period (보존 기간): 백업 데이터를 보관하고 유지하는 기간
Q366 API Gateway, Lambda, DynamoDB 기반의 웹 서비스에서 구독 결제를 한 프리미엄 회원만 특정 콘텐츠를 보게 하려 합니다. 가장 운영 수고가 적은 방법은? API Gateway에서 캐싱과 전송량 제한(Throttling) 기능을 켭니다. API Gateway 앞에 WAF(웹 방화벽)를 설치하고 구독 여부를 체크하는 규칙을 만듭니다. DynamoDB에 아예 세분화된 IAM 권한을 걸어 회원이 아니면 못 읽게 막습니다. API 사용 계획(Usage Plan)과 API 키(API Key)를 만들어 회원별로 배포합니다. 정답 확인 및 해설 📖 해설 정답은 D입니다. 가장 쉽고 표준적인 '유료 등급제' 구현 방식입니다. API Gateway에 'Usage Plan'이라는 등급(예: 프리미엄, 일반)을 만들고, 유료 회원에게만 전용 'API Key'를 하나씩 나눠주는 거죠. 이 열쇠가 없는 요청은 문 앞에서 자동으로 차단되므로 개발자가 일일이 코드를 짤 필요 없이 시스템적으로 유료 회원을 우대할 수 있습니다. 다른 옵션인 A는 전체 트래픽 조절용이고, B는 해킹 방어용입니다. C는 DB 수준의 복잡한 권한 설정이라 실제 서비스 로직에 적용하기엔 너무 번거롭고 유연하지 못합니다. 💡 이 문제의 핵심 용어 Usage Plan: API 사용량이나 접근 범위를 차별화하여 등급별로 관리하는 설정 API Key: API를 사용할 수 있는 자격이 있는지 확인하기 위해 사용자에게 발부하는 고유 비밀번호 Premium Content: 돈을 지불하거나 멤버십이 있는 특정 권한 사용자만 볼 수 있는 고가치 데이터
Q367 전 세계에서 온프레미스 서버로 접속하는데 통신 방식이 UDP입니다. Route 53으로 지연 시간 라우팅을 쓰고 있지만, 가용성과 성능을 더 높이고 싶을 때 설계자가 할 일은? 3개 리전에 각각 NLB(로드 밸런서)를 둬서 온프레미스 서버와 엮고, Global Accelerator를 앞에 세웁니다. 3개 리전에 각각 ALB(로드 밸런서)를 둬서 온프레미스 서버와 엮고, Global Accelerator를 앞에 세웁니다. 3개 리전에 NLB를 둬서 CloudFront의 원본(Origin)으로 사용하고 전 세계에 뿌립니다. 3개 리전에 ALB를 둬서 CloudFront의 원본으로 사용하고 전 세계에 뿌립니다. 정답 확인 및 해설 📖 해설 정답은 A입니다. 핵심 키워드는 'UDP'입니다. UDP 프로토콜을 다루는 로드 밸런서는 NLB(Network Load Balancer)가 유일하다시피 합니다. 따라서 리전마다 NLB를 둬서 온프레미스 서버로 신호를 보내게 하고, 그 앞단에 AWS Global Accelerator를 세우면 전 세계 어디서든 대기 시간 없이 UDP 게임이나 앱에 빠르게 접속할 수 있게 됩니다. 다른 옵션인 B와 D(ALB)는 HTTP/HTTPS 전용이라 UDP를 처리하지 못합니다. C인 CloudFront도 정적 파일 전송 위주라 실시간 UDP 최적화에는 Global Accelerator가 훨씬 유리합니다. 💡 이 문제의 핵심 용어 NLB (Network Load Balancer): 네트워크 4계층에서 작동하여 UDP와 같은 빠르고 가벼운 트래픽을 처리하는 부하 분산 장치 AWS Global Accelerator: 사용자의 요청를 가장 가까운 AWS 거점으로 안내해 통신 속도를 비약적으로 높여주는 서비스 On-premises: 클라우드가 아닌 회사 내부에 직접 설치해서 운영하는 자체 서버실 환경
Q368 우리 회사의 모든 새 IAM 사용자가 반드시 복잡한 비밀번호를 써야 하고, 일정 기간마다 비밀번호를 무조건 바꾸게 하고 싶습니다. 한 번에 모든 사용자를 관리하는 곳은? 전체 AWS 계정 수준에서 '비밀번호 정책(Password Policy)'을 한 번 설정합니다. 각각의 개별 IAM 사용자를 눌러서 하나하나 비밀번호 규칙을 적어줍니다. 외부 유료 보안 소프트웨어를 사서 모든 서버와 연동해 관리합니다. 새 사용자가 만들어지는 이벤트를 감시했다가 Lambda가 비번을 바꾸게 코딩합니다. 정답 확인 및 해설 📖 해설 정답은 A입니다. IAM 설정 메뉴에 가면 'Account Settings'라는 곳이 있습니다. 여기서 '비밀번호는 최소 12자리 이상이어야 함', '90일마다 새로 바꿔야 함' 같은 규칙을 한 번만 정해두면 됩니다. 그럼 앞으로 만들어지는 모든 직원 계정은 이 규칙을 따르지 않으면 비밀번호를 만들 수 없게 됩니다. 아주 쉽고 강력한 통제 방법입니다. 다른 옵션인 B는 수천 명의 직원이 있다면 불가능한 '노가다'이고, D는 성공할 보장도 없는 복잡한 코딩 작업이라 오버헤드만 늘어납니다. 💡 이 문제의 핵심 용어 IAM Password Policy: 보안을 위해 계정 내 모든 사용자가 지켜야 할 비밀번호의 복잡도나 유효 기간에 대한 표준 규칙 Complexity Requirements: 대문자, 소문자, 특수문자를 섞어 써야 하는 등의 복잡성 조건 Rotation Period: 비밀번호를 강제로 새로 설정해야 하는 주기
Q369 여러 팀이 각자 다른 언어(파이썬, 자바 등)로 짠 1시간짜리 대규모 작업들을 서버(EC2) 한 대에서 돌려보려니 불안합니다. 운영 부담 없이 이 작업들을 잘 처리할 해결책은? AWS Batch를 사용하여 작업을 돌리고, EventBridge로 시간을 예약해 실행합니다. 모든 코드를 앱 러너(App Runner)라는 컨테이너 서비스로 옮겨 수동으로 실행합니다. 모든 코드를 Lambda 함수로 복사해서 EventBridge로 1시간마다 부릅니다. 서버의 이미지를 찍어 Auto Scaling 그룹을 만들고 서버 대수를 늘려 해결합니다. 정답 확인 및 해설 📖 해설 정답은 A입니다. '팀마다 언어가 다르고', '1시간이나 걸리는 긴 작업'이라면 AWS Batch가 정답입니다. Batch는 각 팀이 짠 코드를 컨테이너에 담아 순차적으로 굴려주며, 성능이 모자라면 알아서 서버를 빌려다 쓰고 작업이 끝나면 돌려보냅니다. 여기에 EventBridge 시계까지 달아두면 정해진 시간마다 로봇처럼 일을 수행하니 관리자가 신경 쓸 게 없습니다. 다른 옵션인 C(Lambda)는 실행 시간이 최대 15분이라 1시간짜리 작업에는 쓸 수 없습니다. D는 단순 서버 증설일 뿐 주기적인 '배치 작업' 관리 기능은 부족합니다. 💡 이 문제의 핵심 용어 AWS Batch: 개발자가 서버 관리를 고민하지 않고도 수천 개의 배치 작업을 효율적으로 실행하게 해주는 서비스 Batch Job: 실시간이 아니라 한꺼번에 모아서 처리하는 대규모 데이터 작업 EventBridge (CloudWatch Events): 특정 시간이나 이벤트가 발생했을 때 약속된 행동을 시작하게 하는 '스케줄러'나 '신호수'
Q370 프라이빗 서브넷에 있는 서버들이 인터넷에 있는 라이선스 서버에만 가끔 접속해야 합니다. 운영 유지보수가 거의 없는 '관리형' 방식을 고른다면? 퍼블릭 서브넷에 내가 직접 관리하는 NAT 인스턴스를 하나 세웁니다. 프라이빗 서브넷 안에 직접 NAT 인스턴스를 깔고 주소를 연결합니다. 퍼블릭 서브넷에 AWS가 관리해주는 NAT 게이트웨이를 만들고 길을 터줍니다. 프라이빗 서브넷 안에 AWS가 관리해주는 NAT 게이트웨이를 둡니다. 정답 확인 및 해설 📖 해설 정답은 C입니다. 외부에서는 절대 우리 서버를 못 건드리게 숨겨두면서(Private), 안에서 밖으로만 나가는 길을 뚫어주는 전용 장비가 NAT 게이트웨이입니다. 특히 관리형 솔루션을 원하신다면 정답은 무조건 '게이트웨이'여야 합니다. 이 장비는 바깥 세상과 연결되어야 하므로 반드시 '퍼블릭 서브넷(대문 앞)'에 설치해야 우리 서버들이 이 문을 타고 밖으로 나갈 수 있습니다. 다른 옵션인 A와 B(인스턴스)는 서버를 직접 패치하고 관리해야 해서 귀찮고, D는 위치가 틀렸습니다(외부와 통신하려면 반드시 퍼블릭 쪽에 발을 담그고 있어야 합니다). 💡 이 문제의 핵심 용어 NAT Gateway: 프라이빗 서버들이 인터넷으로 나갈 수 있게 해주면서 외부 침입은 막아주는 똑똑한 일방통행 수문장 Public Subnet: 인터넷과 직접 연결되어 밖에서 들어오거나 나갈 수 있는 통로가 있는 네트워크 구역 Managed Solution: 전문가(AWS)가 알아서 설치와 보안을 담당해주는 편리한 서비스
Q371 EKS(쿠버네티스) 서버들을 운영하는데, 연결된 모든 하드디스크(EBS)를 KMS에 있는 우리 회사만의 암호 키로 잠그고 싶습니다. 가장 운영 수고가 적은 조합은? (2개 선택) 특수 플러그인을 각 서버에 직접 설치하여 데이터 암호화를 수행합니다. 서버 생성 후 모든 하드디스크를 하나하나 찾아가며 수동으로 암호화를 켭니다. 해당 리전의 S3 설정에서 암호화를 켜고 모든 EBS 데이터를 그리로 보냅니다. 리전 설정에서 'EBS 기본 암호화'를 켜고, 우리 회사 KMS 키를 기본값으로 지정합니다. 암호 키를 쿠버네티스 비밀(Secret) 값으로 저장한 뒤 매번 수동으로 입력해줍니다. 정답 확인 및 해설 📖 해설 정답은 D입니다. (문제 요구사항에 명시된 2개 선택은 설정 상 '리전 기본값 설정'과 'KMS 권한 부여'를 의미하는 경우가 많으나, 여기서는 단일 핵심 설정을 묻는 것으로 해석됩니다. 정석은 D입니다.) 가장 똑똑한 방법은 리전 전체 설정에서 '앞으로 생기는 모든 하드는 암호화해!'라는 옵션을 켜두는 것입니다. 그리고 그 열쇠(KMS)를 우리 걸로 지정해두면, EKS가 서버를 몇 백 대를 만들든 아무런 관리 노력 없이 모든 하드가 우리 회사 열쇠로 찰칵 잠귄 채로 생성됩니다. 다른 옵션인 A나 E는 복잡한 코딩이나 관리가 필요하고, B는 하드가 수백 개가 될 때 수동으로 하는 건 불가능에 가깝습니다. 💡 이 문제의 핵심 용어 Amazon EKS: 쿠버네티스라는 서버 관리 도구를 AWS에서 편리하게 쓸 수 있게 만든 서비스 KMS Customer Managed Key: 보안팀이 직접 관리하는 우리 회사 전용 암호화 열쇠 EBS Encryption by Default: 설정 한 번으로 해당 리전 내 모든 저장 장치를 강제로 암호화하는 편리한 기능
Q372 수백만 개의 GIS(지도) 이미지가 있는데, 재난 시에는 수만 개의 이미지가 몇 분마다 업데이트됩니다. 평소엔 조용하다가 몰릴 때만 가용성과 확장성이 폭발해야 할 때 가장 효율적인 구성은? 이미지와 좌표를 모두 오라클(RDS) 테이블 하나에 몽땅 담아 관리합니다. 이미지는 저렴한 S3에 담고, 그 이미지의 'S3 주소'만 DynamoDB라는 고속 명부에 적어둡니다. 이미지와 좌표를 모두 DynamoDB에 담고, 속도를 위해 비싼 가속기(DAX)를 연결합니다. 이미지는 S3에, 주소는 오라클(RDS)에 나눠 담고 수동으로 링크를 관리합니다. 정답 확인 및 해설 📖 해설 정답은 B입니다. 용량이 큰 '이미지' 파일은 무제한 창고인 S3에 넣는 것이 비용 면에서 압도적으로 유리합니다. 하지만 S3는 수만 개의 파일을 초단위로 검색하기엔 조금 느릴 수 있죠. 그래서 '경로 정보'만 아주 빠른 DynamoDB에 적어두는 겁니다. 그러면 시스템은 DynamoDB에서 주소를 광속으로 찾고, S3에서 이미지를 쏙 빼오는 가장 완벽한 협업 시스템을 구축하게 됩니다. 다른 옵션인 A는 DB 용량이 엄청나게 커지고 비용이 감당 안 되며, C는 큰 파일을 DynamoDB에 넣으면 전송료와 저장료 때문에 지갑이 거덜날 수 있습니다. 💡 이 문제의 핵심 용어 GIS (Geographic Information System): 지도의 좌표나 지형 정보를 처리하는 지리 정보 시스템 DynamoDB: 데이터가 기하급수적으로 늘어나도 일정한 속도로 답해주는 NoSQL 데이터베이스 Object Storage: 파일 하나하나를 개별 '객체'로 취급해 수페타바이트까지 저장하는 방식(예: S3)
Q373 매일 수조 개의 IoT 센서 데이터가 S3에 쌓입니다. 최근 30일 데이터는 매일 모델 학습에 쓰고, 1년 치 정보는 3개월마다 한 번씩 대규모 분석에 씁니다. 가장 알뜰한 저장 설계는? 전부 S3 Intelligent-Tiering에 넣고 1년 뒤에 자동으로 Archive로 보내게 설정합니다. 30일은 S3 Standard, 이후 1년까지는 Standard-IA, 1년 뒤엔 Glacier로 보내는 수명 주기를 짭니다. 처음부터 S3 Standard-IA에 넣고 1년 동안 보관하다가 파일을 싹 지웁니다. 모든 데이터를 S3 Standard에만 담아두고 필요할 때마다 분석 도구로 읽어옵니다. 정답 확인 및 해설 📖 해설 정답은 D입니다. (문제 맥락상 수명 주기 정책을 세세하게 짜는 D가 비용 최적화의 정석인 경우가 많습니다.) 데이터의 '나이'에 따라 방을 옮겨주는 게 비용 절감의 핵심입니다. 매일 쓰는 쌩쌩한 30일 치 데이터는 가장 빠른 Standard 방에 두고, 가끔 쓰는 1년 치 자료는 좀 더 저렴한 Standard-IA 방으로 옮깁니다. 그리고 1년이 지나서 안 쓰는 건 거의 공짜나 다름없는 Glacier Deep Archive 창고로 보내버리는 '수명 주기 정책(Lifecycle Policy)'을 세우면 수억 원의 비용을 아낄 수 있습니다. 다른 옵션인 A(Intelligent-Tiering)는 편리하지만 파일이 수조 개가 되면 관리 수수료가 발생해 오히려 D보다 비싸질 수 있습니다. 💡 이 문제의 핵심 용어 Lifecycle Policy (수명 주기 정책): 파일의 보관 일수가 지나면 자동으로 삭제하거나 저렴한 저장소로 옮겨주는 자동화 규칙 Glacier Deep Archive: 거의 안 보는 데이터를 위해 AWS에서 가장 저렴하게(한 달 몇 백 원 수준) 제공하는 보관소 IoT Sensor Data: 기계나 장치에서 쏟아지는 자잘하지만 방대한 양의 디지털 정보
Q374 서로 다른 3개의 독립된 네트워크(VPC)가 데이터 센터와 매일 수백 GB의 데이터를 주고받아야 합니다. 복잡함을 줄이고 비용 효율을 극대화할 네트워크 연결법은? 각 VPC마다 3개의 개별 VPN 전용 통로를 뚫어서 데이터 센터와 연결합니다. VPC마다 가상 보안 장비를 직접 사고 설치해서 VPN 터널을 수동으로 뚫습니다. Direct Connect 게이트웨이를 만들고 모든 VPC를 이 고속 전용선 하나에 다 엮습니다. Transit Gateway를 중심점으로 만들고, 고속 전용선(Direct Connect) 하나로 모든 VPC를 통합 연결합니다. 정답 확인 및 해설 📖 해설 정답은 D입니다. 네트워크의 '중앙 허브' 역할을 하는 Transit Gateway(TGW)가 주인공입니다. VPC가 여러 개일 때 길을 하나하나 뚫으면 너무 복잡해지죠. 그래서 모든 VPC를 TGW라는 정거장에 연결하고, 거기서 대규모 데이터를 실어 나를 수 있는 고속 고속도로인 'Direct Connect(DX)' 선을 하나만 데이터 센터로 쫙 깔아주면 성능도 최고이고 관리도 혁신적으로 편해집니다. 다른 옵션인 A와 B(VPN)는 공용 인터넷 회선을 타기 때문에 수백 GB의 데이터를 매일 안정적으로 보내기엔 속도가 느리고 불안정할 수 있습니다. 💡 이 문제의 핵심 용어 Transit Gateway (TGW): 수많은 VPC와 온프레미스 망을 중앙에서 하나로 묶어주는 클라우드 라우터 Direct Connect (DX): 인터넷망이 아닌 AWS와 전용선으로 직접 연결하여 속도와 보안을 극대화한 서비스 VPC Peering: 두 개의 네트워크를 1:1로 직접 잇는 방식이나, 연결할 곳이 많아지면 관리가 힘들어짐
Q375 여러 서버리스 함수들과 EC2 서버, 온프레미스 장비들을 하나의 복잡한 업무 흐름(주문 처리 등)으로 묶어야 합니다. 중간에 사람이 '승인' 버튼을 누르는 단계까지 포함할 때, 가장 좋은 조율 도구는? AWS Step Functions를 사용하여 전체 업무 아키텍처를 시각적으로 구축합니다. AWS Glue라는 데이터 공장에서 모든 단계의 서버들을 호출해 강제로 실행합니다. SQS 대기열에 일감을 쌓아두고 모든 서버가 알아서 순차적으로 가져가게 방치합니다. Lambda 함수 수십 개와 EventBridge 호출을 복잡하게 엮어서 흐름을 만듭니다. 정답 확인 및 해설 📖 해설 정답은 A입니다. '워크플로 오케스트레이션'의 끝판왕은 Step Functions입니다. 이 도구는 '함수 A가 끝나면 함수 B를 실행해, 근데 만약 에러 나면 함수 C로 가' 같은 복잡한 흐름을 그림 그리듯 정의할 수 있습니다. 특히 이 문제의 핵심인 '사람의 수동 승인' 대기 기능(Wait for Task Token)이 있어, 담당자가 승인할 때까지 프로세스를 안전하게 멈춰둘 수 있는 아주 똑똑한 지휘자입니다. 다른 옵션인 C와 D는 흐름이 조금만 복잡해져도 어디서 에러가 났는지 찾기 힘든 스파게티 시스템이 되기 쉽고, B는 데이터 변환용이라 비즈니스 로직 조율에는 적합하지 않습니다. 💡 이 문제의 핵심 용어 AWS Step Functions: 서버리스 앱들을 시각적인 워크플로로 연결하고 상태를 관리해주는 조율 서비스 Orchestration (오케스트레이션): 여러 서비스나 시스템이 조화롭게 작동하도록 흐름을 관리하고 명령을 내리는 일 Callback (콜백): 어떤 작업이 끝날 때까지 기다렸다가 다음 단계를 이어가기 위해 신호를 주는 방식