• SQS 란?
    • Security : 직접 send 및 recv 권한을 관리할수있고, ServierSideEncryption 으로 보안성을 갖춤.
    • Durability : MSG를 서버 여러대에 분산 저장을 하여, 내구성을 갖춤.
    • Availability : 다중화된 인프라 구조를 기반으로~ MSG 조회의 동시성을 높이고, produce 및 consume 의 고가용성을 갖춤.
    • Scalability : 각각에 요청을 버퍼처리 하기 때문에, 스케일링을 효율적으로 할 수 있는 확장성을 갖움.
    • Reliability : 동기화 장치를 기반으로 MSG를 처리하기 때문에, produce 및 consume 멀티 프로세싱 의 안정성을 갖춤.
    • Customization : 다양한 잡다한 기능이 제공 됨. (지연시키기, 큰메세지 쪼개기, ...)
    • ;
    • distributed messaging system
      • 복수의 producers 및 consumers 가 메세지를 send 및 recv 한다.
      • A~E 의 메세지가 queue에 중복적으로 분산저장 된다. 
    • 옵션
      • 기본 제한 시간초과(default visibility timeout) : 메세지 전송후, 타consumer 에게 전송하지않는 제한시간!
        • (0초~12시간, 30초)
        • 즉, 해당 consumer 는 이시간 이내에 작업을 마치고~ 해당 message가 삭제되도록 해줘야 함.
        • 다시말하면, 특정 msg가 특정 consumer에게 나간후~ 중복전송 되지 않도록! 잡아두는 시간...
      • 메시지 보존 기간(message retention period) : 데이터 보관 (1분~14일, 4일)
      • 최대 메시지 크기(max msg size) : 데이터 바이트 (1KB~256KB, 256KB)
      • 전송 지연 시간(delivery delay) : 필요에 의해, 전송에 지연을 줄 수 있는 추가시간! (0초~15분, 0초)
      • 메시지 수신 대기시간(receive message wait-time) : 수신요청 응답 뒤, 유효한 MSG가 있을때까지~ 쉴수있는 최대시간?
        • (0초~20초, 0초는 short-polling 그외는 long-polling)
      • Enable content-based deduplication : ...
      • Enable high throughput FIFO : ...
      • Redrive allow policy : dead-letter queue 으로써 사용이 되도록, 해당 source queue 를 정의.
    • ;
    • Message lifecycle in a queue (from creation ~ to deletion)
      • 1) producer -> (메세지A) -> queue
        • (중복적으로 분산된 서버에 저장)
      • 2) consumer -> (recv-request) -> queue
      • 2) queue -> (메세지A) -> consumer
        • (visibility-timer start!
        • (메세지A가 consumer에서 처리되는 동안은~ queue에는 계속 저장)
        • (visibility-timeout 되기전까지는 타consumer 에게 메세지A를 전송하지 않음)
      • 3) consumer -> (delete-request) -> queue
        • (visibility-timeout 되어 중복전송 되지 않도록, 제거함)
    • ...
  • Standard 큐
    • 거의무한 TPS제공
    • At Least Once (최소 한번은 보장 but 가끔 중복전송)
    • 순서보장 안됨(최선을 다해 노력만~)
  • FIFO 큐
    • 300 TPS제공 (10개를 한번에 일괄처리하면... 3000 TPS도 가능)
    • Exactly Once (정말?)
    • 순서보장 됨.
      • FIFO 전달 로직 : ...
      • Standard -> FIFO 이동 : ...
      • 높은 처리량 : ...
      • 주요용어
        • 콘텐츠 기반 중복제거(content-based DeDup) : 활성시, 이를기반으로 별도적으로 Exactly Once를 수행 할 듯.
        • Message Group ID : 항상 필수사항.
        • Message Deduplication ID : 콘기중 활성시, 선택사항.
        • Receive request attempt ID : ...
        • Sequence number : ...
    • ...
  • Queue and message identifiers : ...
  • Message metadata : ...
  • Resources required to process Amazon SQS messages
    • approximate number of delayed, visible, and not visible
    • SQS 운영에 필요한 대략적인(!) 수치를 제공 함.
    • (Standard 큐가 좀... 분산시스템 환경스럽게~ 대략적인 값이고, FIFO 큐는 정확한 값임!)  
      • ApproximateNumberOfMessages : ...
      • ApproximateNumberOfMessagesDelayed : ...
      • ApproximateNumberOfMessagesNotVisible : ...
  • List queue pagination : ...
  • cost allocation tags : 관리할 큐가 많을때... 관리하기 좋도록, tag 기능 제공
  • Short-Polling Vs Long-Polling
    • 숏폴링(default) : recv-request -> SQS 분산 서버의 (가중 무작위 기반으로) 샘플링 쿼리 -> 유효한 msg들 -> (msg 없어도...) 즉각 무조건 되는대로 일단 응답
      • false empty responses : 하필 available message 가 없는 서버만 샘플링 되었을 경우 ?!?!
      • (가짜 빈응답? 펄스나인? 가짜9번? 필포든?) 
      • 숏퐁링 하는 두가지 방법
        • recv-request 에 wait-time 을 0 으로 셋팅한다.
        • 큐의 attribute 의 receive message wait-time 을 0으로 셋팅한다.
    • 롱폴링 : recv-request -> SQS 모든 서버에 쿼리 -> 최소 하나 이상의 유효한 msg들 -> 응답 (msg 없으면 wait-time 까지 대기)
      • "메시지 수신 대기시간(receive message wait-time)" 을 0 보다 크게하여, Long-Polling으로 운영하는게 (비용상) 합리적.
      • [ Long polling helps reduce the cost of using Amazon SQS by eliminating the number of empty responses (when there are no messages available for a ReceiveMessage request) and false empty responses (when messages are available but aren't included in a response) ]
    • https://stackoverflow.com/questions/53372107/aws-sqs-long-polling-doesnt-reduce-empty-receives
      • How to reduce number of empty receives?
      • How to setting Lambda Pararllel?
  • Dead-letter queues
    • ...
  • Visibility Timeout
    • ...
  • Delivery Delay
    • ...
  • Temporary queues
    • ...
  • Message timers
    • ...

-끝-

 

'AWS' 카테고리의 다른 글

AWS Serverless Application Repository  (0) 2020.06.29
AWS Serverless Application Model  (0) 2020.06.28
Amazon CloudWatch  (0) 2020.04.25
Amazon EC2  (1) 2020.03.14
AWS CodePipeline  (0) 2020.03.11

+ Recent posts