AWS 주니어 CS 기초 기술면접
새 면접Q. HTTP와 HTTPS의 차이점을 설명하고, AWS에서 HTTPS를 적용하기 위해 사용하는 서비스는 무엇인가요?
HTTP는 평문으로 데이터를 전송하는 프로토콜이고, HTTPS는 SSL/TLS를 통해 암호화된 통신을 제공합니다. HTTPS는 데이터 기밀성, 무결성, 인증을 보장하여 중간자 공격을 방지합니다. AWS에서는 ACM(AWS Certificate Manager)을 통해 무료 SSL/TLS 인증서를 발급받고, ELB나 CloudFront에 적용하여 HTTPS를 구현할 수 있습니다. 443 포트를 사용하며, 최근에는 SEO와 보안을 위해 HTTPS가 필수적입니다.
- • HTTP는 평문, HTTPS는 SSL/TLS 암호화 통신
- • 데이터 기밀성, 무결성, 인증 보장
- • AWS Certificate Manager로 인증서 발급
- • ELB, CloudFront에 적용 가능
SSL/TLS 핸드셰이크 과정에서 어떤 일이 일어나는지 간단히 설명해주세요.
Q. 관계형 데이터베이스(RDS)와 NoSQL 데이터베이스(DynamoDB)의 주요 차이점을 설명하고, 각각 어떤 상황에 적합한지 예를 들어주세요.
관계형 데이터베이스는 정규화된 테이블 구조와 SQL을 사용하며 ACID 트랜잭션을 보장합니다. 복잡한 조인과 다양한 쿼리가 필요한 경우 적합합니다. NoSQL은 유연한 스키마와 수평 확장이 용이하며 높은 처리량을 제공합니다. RDS는 은행 거래, 재고 관리 등 일관성이 중요한 시스템에 적합하고, DynamoDB는 실시간 게임 리더보드, IoT 센서 데이터, 세션 관리 등 대량의 읽기/쓰기가 필요한 경우에 적합합니다.
- • RDS는 정규화된 구조, ACID 트랜잭션 보장
- • NoSQL은 유연한 스키마, 수평 확장 용이
- • RDS는 복잡한 관계와 일관성 중요 시
- • DynamoDB는 높은 처리량과 확장성 필요 시
CAP 이론 관점에서 RDS와 DynamoDB는 각각 어떤 특성을 우선시하나요?
Q. 프로세스와 스레드의 차이점을 설명하고, AWS Lambda의 동시성 처리는 어떤 방식으로 이루어지나요?
프로세스는 독립적인 메모리 공간을 가진 실행 단위이고, 스레드는 프로세스 내에서 메모리를 공유하는 경량 실행 단위입니다. 프로세스 간 통신은 IPC가 필요하지만 스레드는 메모리를 공유하여 빠른 통신이 가능합니다. AWS Lambda는 각 요청마다 별도의 실행 환경(컨테이너)을 생성하여 프로세스 수준의 격리를 제공합니다. 동시 실행 제한을 설정할 수 있으며, 각 Lambda 인스턴스는 독립적으로 실행되어 상태를 공유하지 않습니다.
- • 프로세스는 독립 메모리, 스레드는 메모리 공유
- • 스레드가 더 경량이고 컨텍스트 스위칭 비용 낮음
- • Lambda는 요청당 별도 컨테이너 생성
- • 프로세스 수준 격리로 보안성 확보
멀티프로세스와 멀티스레드 방식 중 어떤 상황에서 어느 것을 선택하는 것이 좋을까요?
Q. 해시 테이블의 동작 원리와 충돌(Collision) 해결 방법을 설명하고, DynamoDB에서 파티션 키가 해시 함수를 사용하는 이유는 무엇인가요?
해시 테이블은 키를 해시 함수로 변환하여 배열 인덱스로 사용하며 평균 O(1) 시간복잡도로 데이터를 저장/조회합니다. 충돌 해결 방법으로는 체이닝(연결 리스트 사용)과 개방 주소법(다른 빈 슬롯 찾기)이 있습니다. DynamoDB는 파티션 키를 해시 함수로 변환하여 데이터를 여러 물리적 파티션에 균등하게 분산 저장합니다. 이를 통해 수평 확장이 가능하고 높은 처리량을 달성하며, 특정 파티션에 부하가 집중되는 핫 파티션 문제를 방지할 수 있습니다.
- • 해시 함수로 키를 인덱스로 변환, O(1) 성능
- • 충돌 해결: 체이닝, 개방 주소법
- • DynamoDB는 해시로 데이터 균등 분산
- • 수평 확장과 높은 처리량 달성
DynamoDB에서 핫 파티션 문제가 발생했을 때 어떻게 해결할 수 있나요?
Q. TCP와 UDP의 차이점을 설명하고, 각 프로토콜이 적합한 AWS 서비스 사용 사례를 제시해주세요.
TCP는 연결 지향 프로토콜로 3-way handshake를 통해 연결을 수립하고, 순서 보장, 흐름 제어, 오류 검출 및 재전송을 제공하여 신뢰성 있는 통신을 보장합니다. UDP는 비연결형 프로토콜로 오버헤드가 적고 빠르지만 신뢰성을 보장하지 않습니다. TCP는 RDS 데이터베이스 연결, API Gateway를 통한 HTTP/HTTPS 통신, ELB의 ALB에 적합합니다. UDP는 실시간 스트리밍(Kinesis Video Streams), 온라인 게임 서버, DNS 조회(Route 53), VoIP 등 낮은 지연이 중요한 경우에 사용됩니다.
- • TCP는 연결 지향, 신뢰성 보장, 순서 보장
- • UDP는 비연결형, 빠르지만 신뢰성 없음
- • TCP는 웹, DB, API 통신에 적합
- • UDP는 실시간 스트리밍, 게임, DNS에 적합
TCP의 3-way handshake 과정을 단계별로 설명해주세요.
아직 댓글이 없습니다. 첫 번째 댓글을 남겨보세요!