AWS 주니어 실무 코딩 면접

AWS 주니어 (1~3년) 코딩 · 알고리즘 5문항 조회수 63 · 2026-07-07 (화) 11:10:50
1 Lambda 함수 최적화
Medium

Q. AWS Lambda 함수에서 외부 API를 호출하고 결과를 DynamoDB에 저장하는 코드를 작성할 때, 타임아웃과 재시도 로직을 어떻게 구현해야 하나요? 코드 구조와 에러 처리 방식을 설명해주세요.

A. 모범답안

Lambda 함수에서는 먼저 타임아웃을 Lambda 설정에서 적절히 설정하고(예: 30초), 코드 내에서는 API 호출 시 axios나 fetch의 timeout 옵션을 설정해야 합니다. try-catch 블록으로 에러를 캐치하고, 특정 에러(네트워크 오류, 5xx 에러)의 경우 exponential backoff 방식으로 재시도 로직을 구현합니다. DynamoDB 저장 실패 시에는 Dead Letter Queue(DLQ)로 메시지를 보내 나중에 재처리할 수 있도록 설정합니다. 또한 CloudWatch Logs에 상세한 에러 로그를 남겨 디버깅을 용이하게 합니다.

핵심 포인트
  • • Lambda 설정 타임아웃과 코드 내 API 타임아웃 분리
  • • exponential backoff를 사용한 재시도 로직
  • • DLQ를 활용한 실패 메시지 처리
  • • CloudWatch Logs를 통한 에러 추적
Follow-up 질문

exponential backoff 방식의 재시도 간격을 어떻게 설정하시겠습니까? 예를 들어 첫 번째, 두 번째, 세 번째 재시도의 대기 시간을 구체적으로 말씀해주세요.

2 S3 데이터 처리
Medium

Q. S3 버킷에 대용량 CSV 파일이 업로드될 때마다 자동으로 데이터를 파싱하고 검증하는 시스템을 구현하려고 합니다. 어떤 AWS 서비스를 조합하고, 각 단계별로 어떤 처리 로직을 작성해야 하나요?

A. 모범답안

S3 버킷에 Event Notification을 설정하여 파일 업로드 시 Lambda 함수를 트리거하도록 구성합니다. Lambda 함수에서는 S3 getObject API로 파일을 스트림 방식으로 읽어오고, csv-parser 같은 라이브러리로 한 줄씩 파싱합니다. 각 행의 데이터를 검증(필수 필드 체크, 데이터 타입 확인, 값 범위 검증)하고, 유효한 데이터는 DynamoDB나 RDS에 저장하며, 유효하지 않은 데이터는 별도의 S3 버킷에 에러 로그와 함께 저장합니다. 대용량 파일의 경우 Lambda 메모리 제한을 고려하여 파일을 청크 단위로 처리하거나, SQS와 여러 Lambda 함수를 조합하여 병렬 처리합니다.

핵심 포인트
  • • S3 Event Notification과 Lambda 트리거 연동
  • • 스트림 방식의 파일 읽기로 메모리 효율화
  • • 데이터 검증 로직 구현
  • • 에러 데이터 분리 저장
  • • 대용량 처리를 위한 청크 또는 병렬 처리
Follow-up 질문

만약 CSV 파일 크기가 수 GB에 달한다면, Lambda의 15분 실행 시간 제한과 메모리 제한을 고려할 때 어떤 대안 아키텍처를 제안하시겠습니까?

3 API Gateway 인증
Medium

Q. API Gateway에 JWT 토큰 기반 인증을 구현하려고 합니다. Lambda Authorizer를 사용하여 토큰 검증 로직을 작성할 때 고려해야 할 사항과 반환해야 하는 IAM 정책 구조를 설명해주세요.

A. 모범답안

Lambda Authorizer에서는 먼저 Authorization 헤더에서 JWT 토큰을 추출하고, jsonwebtoken 라이브러리를 사용하여 토큰의 서명을 검증합니다. 토큰의 만료 시간(exp)과 발행자(iss)를 확인하고, 필요시 데이터베이스에서 사용자 권한을 조회합니다. 검증이 성공하면 IAM 정책 문서를 반환하는데, principalId(사용자 식별자), policyDocument(Allow 또는 Deny와 리소스 ARN), context(추가 사용자 정보)를 포함해야 합니다. 성능 최적화를 위해 API Gateway의 authorizer 결과 캐싱 기능을 활성화하고, TTL을 적절히 설정합니다. 토큰 검증 실패 시에는 Deny 정책을 반환하거나 Unauthorized 에러를 발생시킵니다.

핵심 포인트
  • • JWT 토큰 추출 및 서명 검증
  • • 토큰 만료 및 클레임 확인
  • • IAM 정책 문서 반환 구조
  • • authorizer 결과 캐싱 활용
  • • 에러 처리 방식
Follow-up 질문

Lambda Authorizer의 결과를 캐싱할 때, 캐시 키로 무엇을 사용해야 하며, 사용자 권한이 변경되었을 때 어떻게 대응해야 하나요?

4 DynamoDB 배치 처리
Medium

Q. DynamoDB에 1000개의 아이템을 한 번에 저장해야 하는 상황입니다. BatchWriteItem API를 사용할 때의 제약사항과 이를 고려한 효율적인 배치 처리 코드 로직을 설명해주세요.

A. 모범답안

DynamoDB의 BatchWriteItem은 한 번에 최대 25개의 아이템만 처리할 수 있고, 총 요청 크기는 16MB를 초과할 수 없습니다. 따라서 1000개의 아이템을 25개씩 청크로 나누어 순차적으로 또는 병렬로 처리해야 합니다. 각 배치 요청 후 UnprocessedItems를 확인하고, 처리되지 않은 아이템이 있으면 exponential backoff를 적용하여 재시도합니다. 프로비저닝된 쓰기 용량을 초과하지 않도록 요청 속도를 제어하고, 필요시 Promise.all을 사용하여 여러 배치를 동시에 처리하되 DynamoDB의 throttling을 피하기 위해 동시 실행 수를 제한합니다. 에러 발생 시 실패한 아이템을 로깅하고 별도로 재처리할 수 있도록 합니다.

핵심 포인트
  • • 배치당 25개 제한 및 16MB 크기 제한
  • • 아이템을 청크로 분할 처리
  • • UnprocessedItems 확인 및 재시도
  • • throttling 방지를 위한 속도 제어
  • • 에러 처리 및 실패 아이템 로깅
Follow-up 질문

배치 처리 중 일부 아이템만 실패했을 때, 트랜잭션 무결성을 보장하려면 어떻게 설계해야 하나요? DynamoDB의 TransactWriteItems와 BatchWriteItem의 차이점도 함께 설명해주세요.

5 CloudWatch 메트릭
Easy

Q. 애플리케이션에서 특정 비즈니스 이벤트(예: 주문 완료, 결제 성공)를 CloudWatch Custom Metric으로 기록하려고 합니다. AWS SDK를 사용하여 커스텀 메트릭을 전송하는 코드 구조와 메트릭 데이터에 포함해야 할 필수 정보를 설명해주세요.

A. 모범답안

AWS SDK의 CloudWatch 클라이언트를 사용하여 putMetricData API를 호출합니다. 메트릭 데이터에는 Namespace(애플리케이션 구분용), MetricName(측정 항목 이름), Value(측정값), Unit(단위, 예: Count, Milliseconds), Timestamp(측정 시간)를 필수로 포함해야 합니다. Dimensions를 추가하여 메트릭을 세분화할 수 있는데, 예를 들어 환경(production, staging)이나 지역(region) 같은 속성을 지정합니다. 여러 메트릭을 한 번에 전송할 수 있으며, 최대 20개까지 배치로 보낼 수 있습니다. 메트릭 전송 실패에 대비하여 재시도 로직을 구현하고, 비동기 처리로 애플리케이션 성능에 영향을 주지 않도록 합니다.

핵심 포인트
  • • putMetricData API 사용
  • • Namespace, MetricName, Value, Unit, Timestamp 필수 정보
  • • Dimensions를 통한 메트릭 세분화
  • • 배치 전송으로 효율화
  • • 비동기 처리 및 에러 핸들링
Follow-up 질문

CloudWatch Custom Metric의 비용은 어떻게 책정되나요? 메트릭 전송 빈도를 최적화하여 비용을 절감하는 방법을 제안해주세요.

댓글 0

로그인 후 댓글을 작성할 수 있습니다.

아직 댓글이 없습니다. 첫 번째 댓글을 남겨보세요!