0331 AWS SAA 자격증 대비 (4/N): 서버리스와 애플리케이션 통합
✅ 1. 서버리스 컴퓨팅 (Serverless Computing)
- 서버리스는 개발자가 서버를 직접 프로비저닝하거나 관리할 필요 없이 애플리케이션을 빌드하고 실행할 수 있도록 하는 클라우드 컴퓨팅 실행 모델입니다. 서버 관리에 대한 모든 책임을 AWS에게 위임하고, 개발자는 오직 비즈니스 로직(코드) 작성에만 집중할 수 있습니다.
➕ AWS Lambda: 서버리스의 핵심
- Lambda는 이벤트가 발생했을 때만 코드를 실행하는 FaaS(Function as a Service)입니다.
- 핵심 특징:
- 이벤트 기반 실행: S3에 파일이 업로드되거나, API Gateway로 요청이 들어오는 등 특정 이벤트에 의해 트리거(Trigger)되어 실행됩니다.
- 자동 확장 (Auto-scaling): 요청 수에 따라 AWS가 알아서 필요한 만큼의 실행 환경을 순식간에 확장하고 축소합니다.
- 비용 효율성 (Pay-per-use): 코드가 실제로 실행된 시간(밀리초 단위)과 호출 횟수에 대해서만 비용을 지불합니다. 유휴(idle) 상태의 서버 비용이 전혀 없습니다.
- Stateless: 각 Lambda 함수는 실행될 때마다 새로운 환경에서 독립적으로 동작합니다. 상태를 유지해야 할 경우 외부 DB(DynamoDB 등)를 사용해야 합니다.
- 시험 포인트:
- "특정 이벤트에 반응하여 짧은 시간 동안 실행되는 코드를 비용 효율적으로 운영하려면?" → AWS Lambda
- "서버 관리에 대한 부담 없이 코드를 실행하고 싶다" → AWS Lambda
➕ Amazon API Gateway: 서버리스의 관문
- API Gateway는 어떤 규모에서든 개발자가 API를 손쉽게 생성, 게시, 유지 관리, 모니터링 및 보호할 수 있도록 하는 완전 관리형 서비스입니다.
- 핵심 역할:
- 서버리스의 진입점: 외부의 HTTP/HTTPS 요청을 받아, 이를 AWS Lambda 함수나 다른 AWS 서비스로 연결하는 관문 역할을 합니다.
- RESTful API 및 WebSocket API 생성: 클릭 몇 번으로 API 엔드포인트를 만들 수 있습니다.
- 공통 기능 처리: 인증/인가(IAM, Cognito), API 호출 횟수 제한(Rate Limiting), 캐싱, 로깅, 모니터링 등 API에 필요한 공통 부가 기능을 제공합니다.
- Lambda와 API Gateway의 조합: 이 둘의 조합은 현대적인 서버리스 마이크로서비스 아키텍처를 구축하는 가장 표준적인 방법입니다.
✅ 2. 애플리케이션 통합 서비스: 느슨한 결합(Decoupling)의 실현
- 마이크로서비스 아키텍처에서는 각 서비스가 서로에게 미치는 영향을 최소화하는 느슨한 결합(Loose Coupling)이 매우 중요합니다. SQS와 SNS는 이를 구현하는 핵심적인 메시징 서비스입니다.
➕ SQS (Simple Queue Service): 메시지 큐
- 개념: 애플리케이션 컴포넌트 간에 메시지를 안정적으로 저장하고 전송할 수 있도록 하는 완전 관리형 메시지 큐 서비스입니다.
- 동작 방식 (Producer-Consumer):
- 생산자(Producer)는 처리해야 할 작업(메시지)을 SQS 큐에 넣습니다.
- 소비자(Consumer)는 자신의 처리 능력에 맞춰 큐에서 메시지를 가져와(Pull) 작업을 처리합니다.
- 핵심 특징:
- 비동기 처리: 생산자는 소비자의 작업 완료를 기다리지 않아, 시스템의 전체적인 응답성이 향상됩니다.
- 내구성 및 안정성: 메시지는 큐에 안전하게 저장되므로, 소비자가 처리 중 실패해도 메시지가 유실되지 않고 나중에 다시 처리될 수 있습니다.
- 느슨한 결합: 생산자와 소비자는 서로를 전혀 알지 못하며, 오직 SQS 큐를 통해서만 상호작용합니다. 한쪽의 장애가 다른 쪽에 직접적인 영향을 주지 않습니다.
- 시험 포인트:
- "애플리케이션 간의 작업을 비동기적으로 처리하고, 한 컴포넌트의 장애가 다른 컴포넌트에 영향을 주지 않도록 분리(Decouple)하려면?" → SQS
- "요청이 폭주할 때, 모든 요청을 즉시 처리하는 대신 큐에 저장해두고 안정적으로 처리하고 싶다" → SQS
➕ SNS (Simple Notification Service): 게시/구독 메시징
- 개념: 게시/구독(Publish/Subscribe, Pub/Sub) 모델을 기반으로, 다수의 구독자에게 메시지를 푸시(Push) 방식으로 전송하는 완전 관리형 메시징 서비스입니다.
- 동작 방식:
- 게시자(Publisher)는 특정 주제(Topic)에 메시지를 한 번만 게시합니다.
- SNS는 해당 주제를 구독(Subscribe)하고 있는 모든 구독자(Subscriber)에게 메시지를 동시에 전송합니다.
- 다양한 구독자: SQS 큐, Lambda 함수, 이메일, SMS, 모바일 푸시 알림 등 다양한 대상에게 메시지를 보낼 수 있습니다.
- SQS와의 차이점:
- SQS: 하나의 메시지는 오직 하나의 소비자만 처리합니다. (1:1 통신)
- SNS: 하나의 메시지를 여러 명의 구독자에게 동시에 전달합니다. (1:N 브로드캐스트)
- 시험 포인트:
- "하나의 이벤트를 여러 다른 시스템(Lambda, SQS, 이메일 등)에 동시에 알려야 한다" → SNS
- Fan-out 패턴: SNS 주제에 여러 개의 SQS 큐를 구독시켜, 하나의 메시지를 여러 큐로 분배하여 병렬 처리를 극대화하는 아키텍처.
📌 오늘의 핵심 요약 (Solutions Architect 관점)
- 서버리스(Lambda, API Gateway)는 서버 관리에 대한 부담을 없애고, 이벤트 기반의 비용 효율적인 아키텍처를 구축하는 핵심 패러다임이다.
- 느슨한 결합(Decoupling)은 안정적인 마이크로서비스 아키텍처의 필수 요소이며, AWS에서는 이를 SQS와 SNS를 통해 구현한다.
- SQS는 비동기 작업 처리와 시스템 간의 완충(Buffer) 역할을, SNS는 이벤트의 동시 전파(Fan-out) 역할을 담당한다. 이 둘의 차이와 조합 방법을 이해하는 것이 중요하다.