Amazon SQS(Simple Queue Service) – 1편

안녕하세요. hyekihong입니다.
지난 시간에는 Amazon S3에 대해 알아보았는데요.
이번 시간에는 Application 간의 통신 시 순간적인 traffic의 증가와 같은 어떠한 이유에 의해 우리의 클라우드 환경에 문제가 될 수 있는 상황이 발생할 수 있습니다.
오늘은 이런 현상을 방지해줄 수 있는 Amazon Web Service의 메시지 대기열 기반 서비스인 Amazon SQS(Simple Queue Service)에 대해 알아보도록 하겠습니다.

Amazon SQS Amazon SQS 개요 Amazon SQS 메시지 대기열 Amazon SQS 확장성과 가용성 Amazon SQS 메시지 처리 Amazon SQS 통합과 모니터링 Amazon SQS 사용사례

Amazon SQS의 개요

SQS는 클라우드 기반의 메시지 대기열 서비스로, 분산 시스템에서 애플리케이션 간에 안정적이고 확장 가능한 메시지 통신을 제공합니다.
SQS는 메시지를 안전하게 보관하고 전송하며, 메시지의 손실을 방지하고 애플리케이션 간의 느슨한 결합(loose Coupling)을 가능하게 합니다.





Amazon SQS 메시지 대기열

SQS는 메시지 대기열에 메시지를 저장하고 읽을 수 있는 기능을 제공합니다.
메시지 대기열은 보내는 애플리케이션과 받는 애플리케이션 간에 비동기적인 통신을 가능하게 합니다.
대기열은 FIFO(First-In-First-Out) 방식 또는 표준 방식(Standard)으로 구성할 수 있으며, 메시지가 도착한 순서대로 처리됩니다.





Amazon SQS 확장성과 가용성

SQS는 가용성(Availability)과 확장성(Scalability)이 우수한 서비스입니다.
SQS는 여러 가용 영역에 대기열을 자동으로 복제하여 내결함성(durability)을 제공하고, 메시지 손실을 최소화합니다.
또한, 요구에 따라 대기열의 처리량을 조절하여 수천 개의 동시 요청을 처리할 수 있습니다.





Amazon SQS 메시지 처리

SQS는 메시지를 비동기적으로 처리하기 위한 기능을 제공합니다.
메시지는 읽기 작업을 통해 애플리케이션에 전달되고, 애플리케이션에서 처리가 완료되면 삭제됩니다.
처리가 실패한 경우에는 메시지가 가시성 타임아웃(Visibility Timeout)을 통해 다시 대기열에 들어가고, 다른 애플리케이션에서 처리를 재시도할 수 있습니다.





Amazon SQS 통합과 모니터링

SQS는 다른 AWS 서비스와의 통합(Integration)을 지원합니다.
예를 들어, Amazon SNS(Simple Notification Service)와 SQS를 함께 사용하여 애플리케이션에 이벤트를 게시하고, 이를 구독하는 다른 애플리케이션으로 메시지를 전달할 수 있습니다.
또한, Amazon CloudWatch를 사용하여 Amazon SQS 대기열의 모니터링(Monitoring), 지표 수집, 알림 설정 등을 할 수 있습니다.





Amazon SQS 사용사례

  1. 비동기 작업 처리
    SQS는 작업 처리를 비동기적으로 수행하기 위해 사용될 수 있습니다.
    예를 들어, 웹 애플리케이션에서 요청이 발생하면 해당 요청을 SQS 대기열에 전달하여 후속 처리를 수행할 수 있습니다.
    이를 통해 웹 서버의 처리 속도를 향상시키고 느슨한 결합을 유지할 수 있습니다.
  1. 시스템 간 통신
    SQS는 분산 시스템에서 서로 다른 애플리케이션 간의 메시지 통신에 사용될 수 있습니다.
    예를 들어, 마이크로서비스 아키텍처에서 각 서비스 간의 통신에 SQS를 활용하여 데이터 전달과 비동기적인 이벤트 처리를 구현할 수 있습니다.
  1. 배치 처리
    SQS는 대규모 배치 작업을 처리하는 데에도 유용합니다.
    많은 양의 작업을 동시에 처리해야 하는 경우, 작업을 SQS 대기열에 넣고 여러 애플리케이션이 작업을 가져와 처리할 수 있습니다.
    이를 통해 작업 부하를 분산시키고 병렬 처리를 통해 처리 시간을 단축시킬 수 있습니다.
  1. 이벤트 드리븐 아키텍처(Publish & Subscribe)
    SQS는 이벤트 기반 아키텍처에서 중요한 역할을 합니다.
    예를 들어, 시스템에서 발생하는 이벤트를 SQS에 게시하고, 해당 이벤트를 구독하는 다른 서비스로 메시지를 전달할 수 있습니다.
    이를 통해 서비스 간의 느슨한 결합을 유지하고 이벤트 기반 통신을 효과적으로 구현할 수 있습니다.
  1. 작업 큐 및 완료 추적
    SQS는 작업 큐로 사용될 수 있으며, 작업의 진행 상태 및 완료 여부를 추적하는 데에도 유용합니다.
    작업을 SQS 대기열에 추가하고, 작업이 완료되면 완료 상태를 알리는 메시지를 게시할 수 있습니다.
    이를 통해 작업의 흐름을 추적하고 오류 처리 및 모니터링을 간편하게 할 수 있습니다.




이렇게 오늘은 Application 간 통신과 작업 효율 향상에 도움을 줄 수 있는 SQS에 대해 알아보았습니다.
SQS에 대해 더 자세히 알고 싶다면 Amazon Web Service SQS 바로가기를 눌러주세요.
SQS의 세부내용 중 FIFO, Visibility Timeout 등 매력적인 부분들이 많습니다.
다음 시간에는 SQS의 세부내용들에 대해 알아보는 시간을 가져보겠습니다.

Leave a Comment