데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      AWS SQS 생성하기 Hands On (연재 #2)

      KIDO 21.08.24
      7,045 4 0

      AWS SQS Hands On (연재 #2)

      SQS 대기열 생성하기

      유형민 치름 지정

      • 이전 아티클에서 살펴본것과 같이 Standard (표준) 큐를 선택하자.
      • 아래 그림과 같이 이름은 MyTodo 로 작성했다.

      myqueue

      myqueue

      • 표준 대기열 (Standard Queue)
        • 무제한 초당 트랜잭션 (TPS) 를 지원한다.
        • 메세지는 최소 한번 전송되지만 간혹 2개 이상의 메시지 사본이 전송되기도 함
        • 최적의 (Best effort) 순서 제공
        • 경우에 따라 메시지 전송 순서와 다르게 전송될 수 있다.
        • 높은처리량 사용예:
          • 실시간 사용자 요청을 백그라운드 작업과 분리 - 미디어 크기 조정, 인코딩 등 (백단 작업 진행시)
          • 어러 워커 노드에 작업 할당시 - 대량 신용카드 확인 등
      • FIFO 대기열 (FIFO Queue)
        • 초당 3000개 메시지 지원
        • 각 메시지는 정확히 1번 전송
        • 메시지 순서 보장
        • 반드시 1번 전송, 중복 허용하지 않는 케이스에 활용
        • 큐 이름은 반드시 .fifo 로 끝나야함
        • 사용예:
          • 사용자가 입력한 명령이 올바른 순서로 실행 보장
          • 가격 수정을 올바로 수행해야하는 경우

       

      메시지 Config 설정

      • 구성은 메시지의 크기, 타 컨슈머에 메시지 표시여부, 보존기단 등
      • 기본값을 그대로 사용한다.

      queue_config

      • 표시 제한 시간:
        • 한 컨슈머가 대기열에서 수신한 메시지가 다른 메시지 컨슈머에게 보이지 않게되는 시간
        • 컨슈머가 메시지를 가져가고, 처리 및 삭제하지 못하면 다른 컨슈머에게 메시지가 보이게 된다. (즉, 1번만 메시지 보여야 하는 경우라면 시간내 삭제 필요)
        • 기본값은 30초 (컨슈머가 처리하는 시간에 따라 조정 필요)
        • 한번 설정하면 큐 내부의 모든 메시지에 대해서 적용이 된다.
        • 최적의 성능을 위해서 표시 제한 시간 초과는 AWS SDK 읽기 제한 시간보다 길게 설정해야한다.
      • 메시지 보존 기간:
        • Amazon SQS 가 삭제 되지 않은 메시지를 보관하는 시간
        • 보존기간 범위 60초(1분) ~ 1,209,600초(14일) 까지 가능
        • 대기열, 배달하지 못한 메시지 대기열 통합 시간임 (그러므로 배달 못한 메시지 대기열의 보존 기간을 원래 대기열의 보존 기간보다 길제 잡아야한다.)
      • 전송 지연:
        • 이 대기열에 추가된 각 메시지의 첫 번째 전송에 대한 지연 시간
        • 지정된 시간동안 메시지는 컨슈머에게 소비 되지 않고 지연된다.
        • 0초 ~ 15분까지 설정 가능
        • Standard 는 한번 설정된 시간은 계속 흘러 지연되었다가 진행
        • FIFO 는 설정 변경하면 이후 메시지부터 적용됨
      • 최대 메시지 크기:
        • 이 대기열에 최대 메시지 크기
        • 1바이트 ~ 256KB까지 크기 가능
        • 256KB보다 큰 메시지 전송시에는 Amazon SQS Extended Client Library 를 이용하여 전송 가능
        • Amazon S3에 메시지 로드에 대한 참조가 포함된 메시지 전송
        • 최대 크기는 2GB까지 가능
      • 메시지 수신 대기 시간:
        • 폴링이 메시지를 사용할 수 있을 때까지 기다리는 최대 시간
        • 0초 ~ 20초까지 가능
        • 긴 폴링은 빈 응답수 (ReceiveMessage 요청에 사용할 수 메시지가 없는경우)와 잘못된 빈 응답(메시지를 사용할 수 있지만 응답에 포함되지 않은경우)를 제거 하여 Amazon SQS 사용 비용 줄이기 가능
        • 수신 요청이 최대 메시지 수를 수집하면 즉시 반환
        • 0으로 설정하면 짧은 폴링이 됨
      • 콘텐츠 기반 중복 제거:
        • Amazon SQS 는 메시지 본문에 기반하여 중복 제거 ID를 자동 생성 가능

       

      액세스 정책설정

      • 액세스 정책은 이 대기열에 액세스 할 수 있는 계정 및 사용자와 허용되는 작업을 정의한다.
      • 기본 설정에서 메시지를 보낼 수 있는 사람과, 메시지르 수신할 수 있는 사람을 구성할 수 있다.
      • JSON(읽기 전용) 에 정책이 설정된다.
      • 기본적으로 메시지 대기열 주인만 쓰고/읽을 수 있다.
      • 고급 설정은 직접 JSON 을 변경하여 권한을 설정할 수 있다.

       

      access_policy

      • 위 그림과 같이 설정이 가능하다.
        • 전송권한
          • 대기열 소유자만
          • 지정된 AWS 계정, IAM 사용자 및 역할만
        • 수신권한
          • 대기열 소유자만
          • 지정된 AWS 계정, IAM 사용자 및 역할만

       

      sse

      암호화 여부

      • SSE(Server Side Encryption) 을 활성화 하면 모든 메시지를 암호화 한다.
      • 권한이 있는 소비자에게 전송되는 경우에만 메시지 해독
      • SSE는 메시지 본문 암호화, 필드단위 암호화는 지원 안함

      배달 못한 편지 대기열

      • 메시지를 소비할 수 없는 경우 배달 되지 못한 편지 대기열 (DLQ)로 전송할 수 있다.
      • 문제가 있는 메시지 격리하고 원인 분석 가능
      • 자동으로 생성되지 않으며, 생성 지정을 해야한다.

      태그

      • SQS를 위한 태그를 지정한다.

       

      생성 결과

      result

      Test 수행하기

      메시지 생성하기

      • 생성된 MyTodo SQS 상세 정보로 들어가서 "메시지 전송 및 수신" 을 클릭한다.

      test01

      • 메시지 내용을 위와 같이 작성하자.

      • 메시지 내용은 어떻게 작성하든 상관이 없지만, 형식을 지정해서 사용하는 것이 유용하다.

      • 메시지 속성은, 메시지 필터링을 위한 정보를 설정할 수 있다. 이 부분은 지금은 필요 없다.

       

      메시지 수신하기

      • 생성된 메시지는 Queue에 들어가 있고, 수신을 기다리는 상태가 되었다.

       

      test02

      • 다음과 같이 메시지 수신 > 메시지 폴링 을 클릭하여 메시지를 가져오자.
      • 메시지가 수신되었음을 확인할 수 있다.

       

      test03

      • 메시지 상세 내용을 보면, 조금전 전송한 메시지임을 확인할 수 있다.

       

      test04

      test05

      • 수신된 메시지를 확인했으므로 이제 삭제를 해주자.
      • 메시지 수신 > 메시지 항목에 체크를 하고, "삭제" 버튼으로 메시지를 큐에서 제거하자.

       

      Wrap UP

      • 간단하게 SQS를 생성해보고, 동작 방식에 대한 이해를 해 보았다.
      • 단순하게 SQS 원하는 시스템에 따라서 필요한 타입을 선택하고, 사용할 수 있다.
      • 다음 연재 #3에서는 Terraform으로 자동화하는 부분을 살펴보고자 한다. 

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      KIDO 님의 최신 블로그

      더보기
      동영상 기고하기