BLOG
컴퓨팅 및 스토리지와 마찬가지로 메시징은 엔터프라이즈 응용 프로그램의 기본 빌딩 블록입니다. 메시지 브로커 ( “메시지 기반 미들웨어”라고도 함)는 서로 다른 언어로 작성되고 플랫폼이 다르며 다른 위치에서 실행되고 정보를 교환하는 등 서로 다른 소프트웨어 시스템의 작용을 가능하게합니다. CRM 및 ERP와 같은 업무 중심적인 응용 프로그램은 메시지 브로커에 의존합니다.
프로덕션 환경에서 메시지 브로커를 배포하는 고객에 대한 일반적인 성능 고려 사항은 초당 메시지로 측정되는 시스템의 처리량입니다. 응용 프로그램 환경 (호스트, 스레드, 메모리 등)을 올바르게 구성 할 수 있도록 알고 있는 것이 좋습니다.
이 게시물에서는 JMS Benchmark를 사용하여 ActiveMQ에 대한 새로 관리되는 메시지 브로커 서비스인 Amazon MQ의 처리량을 측정하는 방법을 보여줍니다. 환경을 설정하는 데 15-20 분, 벤치 마크를 실행하는 데 1 시간이 소요됩니다. 또한 최적의 처리량을 위해 Amazon MQ를 구성하는 방법에 대한 몇 가지 팁을 제공합니다.
Amazon MQ의 벤치마킹 처리량
ActiveMQ는 많은 유스 케이스에 사용될 수 있습니다. 이러한 유스 케이스는 간단한 화재 및 업무 망각 (즉, 비동기 처리), 대기 시간이 짧은 요청 – 응답 패턴부터 데이터베이스에 저장되기 전의 버퍼링 요청에 이르기까지 다양합니다.
Amazon MQ의 처리량은 유스 케이스에 크게 좌우됩니다. 예를 들어 업무상 중요하지 않은 포털에 대한 클릭 이벤트를 수집하는 것과 같이 중요하지 않은 작업 부하가있는 경우 ActiveMQ를 비영구 모드로 사용하고 Amazon MQ로 처리량을 극대화 할 수 있습니다.
반면, 내구성이 매우 중요한 (즉, 메시지를 잃어 버릴 수 없음) 중요한 작업 부하가있는 경우 기본 지속성 저장소의 I / O 용량에 제한을 받습니다. 최상의 결과를 얻으려면 mq.m4.large를 사용하는 것이 좋습니다. mq.t2.micro 인스턴스 유형은 제품 평가를 위한 것입니다. 메모리 및 버스트 CPU 성능이 저하되어 성능이 제한됩니다.
팁 : Amazon MQ를 사용하여 처리량을 향상시키려면 생성자가 메시지를 처리하는 속도만큼 빠르게 메시지를 처리하는 소비자가 있는지 확인하십시오.
브로커 (ActiveMQ)가 각 유스 케이스별로 어떻게 작동하는지 이야기 할 수 없기 때문에 우리는 선호하는 오픈 소스 벤치마킹 도구인 JMS Benchmark를 사용하여 Amazon MQ에 대한 자체 벤치 마크를 설정하는 방법을 살펴 봅니다. JMS Benchmark는 설치 및 배포가 쉽고 결과에 대한 시각화 기능이 내장되어 있으므로 우리는 JMS Benchmark 제품군을 선호합니다.
비 지속성 시나리오 – 생산자 처리량을 확장할 때 대기열 대기 시간
시작하기
발행 당시에는 시간당 $ 0.30 (미국 가격)으로 테스트 할 mq.m4.large 단일 인스턴스 브로커를 만들 수 있습니다.
이 연습에서는 다음 작업을 다룹니다.
- 브로커를 만들고 구성합니다.
- EC2 인스턴스를 만들어 벤치마크를 실행하십시오.
- 보안 그룹을 구성하십시오.
- 벤치 마크를 실행하십시오.
1 단계 – 브로커 만들기 및 구성
자습서 : Amazon MQ Broker 생성 및 구성을 사용하여 브로커를 만들고 구성합니다.
2 단계 – 벤치 마크를 실행할 EC2 인스턴스 만들기
Step 1: Launch an Instance을 사용하여 EC2 인스턴스를 시작합니다. m5.large 인스턴스 유형을 선택하는 것이 좋습니다.
3 단계 – 보안 그룹 구성
모든 보안 그룹이 EC2 인스턴스와 브로커 사이의 트래픽 흐름을 허용하도록 올바르게 구성되었는지 확인하십시오.
- Amazon MQ 콘솔에 로그인하십시오.
- 브로커 목록에서 브로커의 이름 (예 : MyBroker)을 선택합니다.
- 세부 정보섹션의 보안 및 네트워크에서 보안그룹 이름 혹은 확장 아이콘 ()을 선택합니다.
- 보안 그룹 목록에서 보안 그룹을 선택하십시오.
- 페이지 하단에서 인바운드, 편집을 선택하십시오.
- 인바운드 규칙 편집 대화 상자에서 인스턴스와 브로커 간 트래픽을 허용하는 역할을 추가합니다.
- 규칙 추가 (Add rule)를 선택합니다.
- Type (유형)에서 Custom TCP (사용자 정의 TCP)를 선택합니다.
- 포트 범위에 ActiveMQ SSL 포트 (61617)를 입력합니다.
- 원본에서 사용자 지정(Custom)을 선택한 상태로 두고 EC2 인스턴스의 보안 그룹을 입력합니다.
- 저장(Save)을 선택합니다.
이제 브로커가 EC2 인스턴스의 연결을 수락할 수 있습니다.
4 단계 – 벤치 마크 실행
SSH를 사용하여 EC2 인스턴스에 연결하고 다음 명령을 실행하십시오
[bash]
$ cd ~
$ curl -L https://github.com/alanprot/jms-benchmark/archive/master.zip -o master.zip
$ unzip master.zip
$ cd jms-benchmark-master
$ chmod a+x bin/*
$ env \
SERVER_SETUP=false \
SERVER_ADDRESS={activemq-endpoint} \
ACTIVEMQ_TRANSPORT=ssl\
ACTIVEMQ_PORT=61617 \
ACTIVEMQ_USERNAME={activemq-user} \
ACTIVEMQ_PASSWORD={activemq-password} \
./bin/benchmark-activemq
벤치 마크가 끝나면 ~ / reports 디렉토리에서 결과를 찾을 수 있습니다. 알다시피 ActiveMQ의 성능은 소비자, 생산자, 목적지 및 메시지 크기에 따라 다릅니다.
Amazon MQ 아키텍처
벤치 마크의 결과를 더 잘 이해할 수 있도록 마지막으로 중요한 부분은 Amazon MQ가 어떻게 구성되어 있는지 아는 것입니다.
Amazon MQ는 고가용성 (HA) 및 내구성을 갖도록 설계되었습니다. HA의 경우 다중-AZ 옵션을 사용하는 것이 좋습니다. 메시지가 지속 모드에서 Amazon MQ로 보내지면 메시지는 여러 가용 영역의 여러 노드에 걸쳐 데이터를 복제하는 높은 내구성 메시지 저장소에 기록됩니다. 이 복제로 인해 일부 유스 케이스의 경우 Amazon MQ로 마이그레이션 할 때 처리량이 감소할 수 있습니다. 고객은 가용 영역이 손실되더라도 내구성을 보호하는 데 도움이 되므로 메시지 복제의 이점에 대해 감사하다고 말했습니다.
결론
이를 통해 Amazon MQ의 성능을 알 수 있기를 바랍니다. 자체 유스 케이스를 시뮬레이트하기 위한 테스트를 실행하는 것이 좋습니다.
자세한 내용은 Amazon MQ 웹 사이트를 참조하십시오. 단일 인스턴스 mq.t2.micro 브로커를 최대 750 시간까지, 1 년 동안 매월 최대 1GB의 스토리지를 포함하는 AWS 무료 티어로 Amazon MQ를 무료로 사용해 볼 수 있습니다.
원문 URL: https://aws.amazon.com/ko/blogs/compute/measuring-the-throughput-for-amazon-mq-using-the-jms-benchmark/
** 메가존 TechBlog는 AWS BLOG 영문 게재글중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.