AWS

[AWS] SQS, 대기열, SNS, LB종류, CLB

박경태 2024. 4. 27. 21:48

AWS SQS (Amazon Simple Queue Service)

AWS의 메시지 대기열 서비스

이 서비스를 사용하면 분산 시스템 간에 메세지를 전송하고 저장할 수 있음

여러 시스템이나 컴포넌트 간에 비동기적으로 통신할 때 유용함

여러 응용 프로그램 간의 결합을 느슨하게 만들어줌

작업을 조정하고 분배할 수 있는 중앙 집중식 메시지 대기열을 제공함

분산 시스템 아키텍처에서의 중요한 구성 요소로 사용됨.

마이크로서비스, 서버리스 컴퓨팅, 이벤트 기반 아키텍처 등 다양한 환경에서 활용됨.

예를 들어, 웹 애플리케이션에서 백그라운드 작업을 처리하거나, 여러 컴포넌트 간에 이벤트를 전달하거나, 다른 AWS 서비스와 통합하여 작업을 조정하는 데 사용될 수 있음.

 

AWS SQS 주요 특징

1. 간단성

SQS는 관리형 서비스이기 때문에 별도의 서버나 인프라 관리 없이 바로 사용할 수 있음.

 

2. 신뢰성

메시지는 여러 복제본으로 저장되므로 메시지 손실이나 데이터 손상없이 안전하게 전달됨.

 

3. 확장성

SQS는 수백만 개의 메시지를 처리할 수 있는 능력을 갖추고 있음.

따라서 대규모 응용 프로그램에서도 사용할 수 있음.

 

4. 지속성

메시지는 전송될 때까지 또는 삭제될 때까지 SQS에 저장됨.

이를 통해 시스템 간의 통신을 안정적으로 관리할 수 있음.

 

5. 다양한 프로토콜 지원

SQS는 여러 다양한 프로그래밍 언어와 플랫폼에서 사용할 수 있는 API를 제공함.

 

6. 지연 시간 및 지연 처리 지원

메시지 전달의 지연 시간을 조정하고, 일부 메시지를 다시 전송하거나 보류시킬 수 있는 기능을 제공함.

 

7. 다양한 대기열 유형

SQS는 표준 대기열과 FIFO(First-In-First-Out) 대기열 두 가지 유형을 제공함.

FIFO 대기열은 메시지 순서를 보장하며, 특히 순서가 중요한 응용 프로그램에 유용함.


AWS SQS의 대기열 유형

AWS SQS는 두 가지 유형의 대기열을 제공함.

표준 대기열(Standard Queue)와 FIFO(First-In-First-Out) 대기열임.

이 두 대기열은 특징과 사용 사례가 다름.

 

AWS SQS의 두가지 대기열 유형

1. 표준 대기열

표준 대기열은 AWS SQS의 기본 제공 유형임.

메시지 전달 순서는 보장하지 않음. 즉, 메시지가 전송될 때의 순서로 처리되지 않을 수 있음.

높은 처리량을 지원함. 일반적으로 빠른 메시지 전달을 제공함.

메시지가 최소 한 번 전달되지만, 때로는 중복 전송될 수 있음. 따라서 메시지 처리를 원자적으로 설계해야함.

순서가 중요하지 않고 높은 처리량이 필요한 경우에 적합함.

대기열 유형을 선택할 때는 응용 프로그램의 요구 사항을 고려해야 함.

만약 메시지 순서가 중요하지 않고 높은 처리량이 필요하다면 표준 대기열을 선택할 수 있음.

그러나 메시지 처리 순서가 중요하거나 메시지의 중복을 허용할 수 없는 경우에는 FIFO 대기열을 사용하는 것이 적합함.

 

2. FIFO 대기열

FIFO 대기열은 메시지가 정확한 순서로 처리되도록 보장하는 대기열임.

메시지 전달 순서가 먼저 도착한 메시지가 먼저 처리되는 순서를 따름.

메시지는 중복 전송되지 않음. 즉, 같은 메시지를 두 번 이상 수신하지 않음.

단일 프로듀서와 단일 컨슈머 사이의 통신에서 순서가 중요할 때 사용함.

표준 대기열에 비해 처리량이 약간 낮을 수 있으며, 추가 비용이 발생할 수 있음.

FIFO 대기열은 메시지 그룹ID(Message Group ID)라는 개념을 사용하여 메시지를 그룹화하고, 각 그룹 내에서는 순서가 보장됨.

 

AWS SNS (Amazon Simple Notification Service)

AWS의 관리형 메시지 브로커 서비스임.

다양한 종류의 애플리케이션, 서비스 및 시스템 간에 신속하고 안정적으로 메시지를 전송할 수 있도록 지원함.

SNS를 사용하면 푸시 알림, 이메일, SMS 등 다양한 종류의 메시지를 통합하여 전송할 수 있음.

SNS는 다양한 환경에서 사용되며, 주로 모바일 및 웹 애플리케이션에서의 푸시 알림, 시스템 간의 이벤트 기반 통신, 모니터링 및 경고 등의 용도로 활용됨.

 

AWS SNS의 주요 특징

1. 다양한 메시지 전송 형식

SNS를 사용하여 푸시 알림, 이메일, SMS, HTTP/HTTPS 엔드포인트로 메시지를 전송할 수 있음.

이는 다양한 종류의 애플리케이션 및 시스템에 메시지를 유연하게 전달할 수 있도록 해줌.

 

2. 다양한 메시지 프로토콜

SNS는 JSON, XML 및 텍스트와 같은 다양한 형식의 메시지를 지원함.

 

3. 스케일링 및 신뢰성

SNS는 신속한 메시지 전송을 위해 설계되었으며, AWS의 글로벌 인프라를 기반으로 스케일링 및 신뢰성이 보장됨.

 

4. 유연한 구독 모델

SNS는 다양한 종류의 엔드포인트(이메일, SMS, HTTP/HTTPS)로 메시지를 전송하는 데 사용될 수 있는 유연한 구독 모델을 제공함.

또한 여러 엔드포인트에 대한 구독을 허용하여 메시지를 다양한 수신자에게 동시에 전달할 수 있음.

 

5. 이벤트 기반 아키텍처에 적합

SNS는 이벤트 기반 아키텍처를 구축하는 데 적합함.

예를 들어, AWS Lambda 함수, Amazon SQS 대기열 등과 연동하여 이벤트에 따라 자동으로 작업을 트리거할 수 있음.

 

6. 모바일 푸시 알림

SNS를 사용하여 모바일 애플리케이션에 푸시 알림을 보낼 수 있음.

iOS, Android, Fire OS 플랫폼을 지원하며, 모바일 디바이스에 대한 푸시 알림을 쉽게 관리할 수 있음.

 

7. AWS 서비스와 통합

SNS는 다른 AWS 서비스와 통합되어 있음.

예를 들어, Amazon CloudWatch, AWS Lambda, Amazon S3 등과 연동하여 이벤트를 트리거하고 알림을 전송할 수 있음.

 

AWS 로드밸런서 종류

로드 밸런서들은 각각의 고유한 특징과 사용 사례를 가지고 있음.

CLB는 단순한 로드 밸런서 기능을 제공함.

ALB는 HTTP 및 HTTPS 트래픽에 특화되어 있음.

NLB는 TCP, UDP 및 TCP/UDP 트래픽을 로드 밸런싱하고 고성능 네트워킹을 제공함.

따라서, 애플리케이션의 요구 사항에 따라 적절한 로드 밸런서 유형을 선택할 필요가 있음.

 

1. CLB : Classic Load Balancer

AWS의 초기 로드 밸런서 서비스로, OSI 4계층(Layer 4)에서 동작함.

TCP 및 SSL 트래픽을 로드밸런싱할 수 있음.

기본적인 로드 밸런서 기능을 제공하며, 요청의 도착 지점에 따라 EC2 인스턴스에 트래픽을 분산함.

 

2. ALB : Application Load Balancer

OSI 7계층(Layer 7)에서 동작하는 로드 밸런서로, HTTP 및 HTTPS 트래픽을 지능적으로 라우팅함.

경로 기반 라우팅, 호스트 기반 라우팅, HTTP 헤더 기반 라우팅 등의 고급 라우팅 정책을 지원함.

웹 소켓 프로토콜을 지원하고, TLS 종료와 SSL/TLS 암호화를 처리할 수 있음

 

3. NLB : Network Load Balancer

OSI 4계층(Layer 4)에서 동작하는 로드 밸런서로, TCP, UDP 및 TCP/UDP 트래픽을 로드 밸런싱할 수 있음.

고성능 및 초저지연을 제공하며, 수백만 개의 동시 연결을 지원함.

고급 네트워킹 기능을 제공하여 정적 IP 주소 할당, 미러링, TCP 헤더 조작 등을 수행할 수 있음.

 

AWS CLB (Classic Load Balancer)

AWS의 초기 로드 밸런서 서비스임.

OSI 4계층(Layer 4)에서 동작함.

CLB는 기본적인 로드 밸런서 기능을 제공함.

TCP 및 SSL 트래픽을 로드 밸런싱할 수 있음.

AWS CLB는 트래픽을 분산하여 애플리케이션의 가용성과 확장성을 향상시키는데 사용됨.

그러나 OSI 7계층에서의 라우팅이나 고급 기능이 필요한 경우에는 ALB (Application Load Balancer)를 사용하는 것이 더 적합할 수 있음.

 

AWS CLB의 주요 특징과 기능

1. 로드 밸런싱

CLB는 여러 대상 그룹(Target Group)에 대한 트래픽을 로드 밸런싱하여 인스턴스 또는 컨테이너 그룹에 효율적으로 분산함.

 

2. TCP 및 SSL 트래픽 지원

CLB는 TCP 및 SSL 트래픽을 로드 밸런싱할 수 있어 웹 서버, 애플리케이션 서버 등 다양한 유형의 서비스에 적용할 수 있음.

 

3. 세션 유지 관리

CLB는 클라이언트의 세션을 유지하기 위해 스티키 세션(Sticky Session)을 지원함.

이를 통해 동일한 클라이언트 요청이 항상 동일한 백엔드 서버로 전송될 수 있음.

 

4. 고가용성

CLB는 여러 가용 영역에 걸쳐 배포할 수 있음.

가용 영역 내의 인스턴스에 장애가 발생한 경우 자동으로 트래픽을 다른 인스턴스로 전환하여 애플리케이션의 가용성을 유지함.

 

5. 보안

CLB는 SSL/TLS 암호화를 지원하여 클라이언트와의 안전한 통신을 보장함.

 

6. Health Checks

CLB는 대상 그룹의 인스턴스 상태를 주기적으로 확인하여 정상적으로 서비스되는 인스턴스로만 트래픽을 전달함.

 

7. 로그 및 모니터링

CLB는 로그를 Amazon S3에 저장하고 Amazon CloudWatch Logs로 전송하여 트래픽 분석 및 모니터링을 지원함.