설계 고려 사항 - AWS 기반 가상 대기실

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

설계 고려 사항

배포 옵션

처음 설치하는 경우나 무엇을 설치해야 할지 잘 모르겠으면 코어, 권한 부여자 및 샘플 대기실 CloudFormation 템플릿을 설치하는 virtual-waiting-room-on-aws-getting-started.template 중첩 템플릿을 배포하십시오. 이렇게 하면 간단한 흐름으로 최소한의 대기실을 확보할 수 있습니다.

지원되는 프로토콜

가상 대기실 온 AWS 솔루션은 다음과 통합될 수 있습니다.

  • JSON 웹 토큰 검증 라이브러리 및 도구

  • 기존 API Gateway 배포

  • REST API 클라이언트

  • OpenID 클라이언트 및 제공업체

대기실 유입 전략

유입 전략은 고객을 대기실에서 웹 사이트로 이동시키는 데 필요한 로직과 데이터를 캡슐화합니다. 유입구 전략은 Lambda 함수, 컨테이너, Amazon EC2 인스턴스 또는 기타 컴퓨팅 리소스로 구현될 수 있습니다. 대기실 퍼블릭 및 프라이빗 API를 호출할 수 있는 한 클라우드 리소스일 필요는 없습니다. 유입구 전략은 대기실, 웹 사이트 또는 기타 외부 지표에 대한 이벤트를 수신하여 더 많은 클라이언트가 토큰을 발행하고 사이트에 진입할 시기를 결정하는 데 도움이 됩니다. 인렛 전략에는 여러 가지 접근 방식이 있습니다. 어떤 방법을 채택할지는 사용 가능한 리소스와 보호 대상 웹 사이트 디자인의 제약에 따라 달라집니다.

인렛 전략에서 취하는 주요 조치는 사이트에 들어갈 수 있는 클라이언트 수를 나타내는 상대 값을 사용하여 increment_serving_num Amazon API Gateway 프라이빗 API를 호출하는 것입니다. 이 섹션에서는 두 가지 샘플 인렛 전략을 설명합니다. 그대로 사용하거나 사용자 정의할 수도 있고 완전히 다른 접근 방식을 사용할 수도 있습니다.

MaxSize

이 MaxSize 전략을 사용하면 MaxSizeInlet Lambda 함수는 웹 사이트를 동시에 사용할 수 있는 최대 클라이언트 수로 구성됩니다. 이는 고정된 값입니다. 클라이언트는 MaxSizeInlet Lambda 함수를 호출하여 메시지 페이로드를 기반으로 서비스 카운터를 늘리는 Amazon SNS 알림을 발행합니다. SNS 메시지의 소스는 웹 사이트의 코드나 사이트 사용률 수준을 관찰하는 모니터링 도구를 포함하여 어디에서든 올 수 있습니다.

MaxSizeInletLambda 함수는 다음을 포함할 수 있는 메시지를 수신할 것으로 예상합니다.

  • exited :완료된 트랜잭션 수

  • 완료로 표시할 요청 ID 목록

  • 중단된 것으로 표시할 요청 ID 목록

이 데이터는 서빙 카운터를 얼마나 늘릴지 결정하는 데 사용됩니다. 현재 클라이언트 수를 기준으로 카운터를 늘릴 수 있는 추가 용량이 없는 경우가 있을 수 있습니다.

주기적

주기적 전략을 사용하는 경우 CloudWatch 규칙은 1분마다 PeriodicInlet Lambda 함수를 호출하여 서빙 카운터를 고정된 수량만큼 늘립니다. 주기적 입력은 이벤트 시작 시간, 종료 시간 및 증가량을 사용하여 파라미터화됩니다. 선택적으로 이 전략은 경보를 검사하여 CloudWatch 경보가 OK 상태에 있으면 증분을 수행하고 그렇지 않으면 경보를 건너뛰게 됩니다. 사이트 통합자는 사용률 지표를 경보에 연결하고 해당 경보를 사용하여 주기적 입력을 일시 중지할 수 있습니다. 이 전략은 현재 시간이 시작 시간과 종료 시간 사이이고 선택적으로 지정된 알람이 해당 상태에 있는 동안에만 서비스 제공 위치만 변경합니다. OK

솔루션 사용자 지정 및 확장

조직의 사이트 관리자는 대기실에서 사용할 통합 방법을 결정해야 합니다. 두 가지 옵션이 있습니다.

  1. API 및 API Gateway 권한 부여자를 사용하여 직접 기본 통합

  2. ID 공급자를 통한 OpenID 통합

위의 통합 외에도 도메인 이름 리디렉션을 구성해야 할 수 있습니다. 또한 사용자 지정된 대기실 사이트 페이지를 배포해야 합니다.

Virtual Waiting Room on AWS 솔루션은 두 가지 메커니즘, 즉 단방향 이벤트 알림을 EventBridge 위한 것과 양방향 통신을 위한 REST API를 통해 확장할 수 있도록 설계되었습니다.

할당량

가상 대기실의 기본 규모 AWS 제한은 설치된 지역의 Lambda 스로틀 한도입니다. AWS 기본 Lambda 동시 실행 할당량이 있는 AWS 계정에 설치하면 솔루션의 가상 대기실에서 AWS 대기열 위치를 요청하는 클라이언트를 초당 최대 500개까지 처리할 수 있습니다. 초당 500 클라이언트 속도는 모든 Lambda 함수 동시 할당량 한도가 독점적으로 제공되는 솔루션을 기반으로 합니다. 계정의 지역을 Lambda 함수를 호출하는 다른 솔루션과 공유하는 경우 솔루션의 가상 대기실에는 최소 AWS 1,000건의 동시 호출을 사용할 수 있어야 합니다. CloudWatch 지표를 사용하여 시간 경과에 따른 계정의 Lambda 동시 호출을 차트로 나타내어 결정을 내릴 수 있습니다. Service Quotas 콘솔을 사용하여 증가를 요청할 수 있습니다. Lambda 스로틀 한도를 늘리면 추가 호출이 실제로 발생하는 경우에만 월별 계정 요금이 인상됩니다.

초당 500개의 클라이언트가 추가될 때마다 스로틀 한도를 1,000씩 늘리십시오.

초당 유입 사용자 수 예상 권장 동시 실행 할당량
0-500 1,000 (기본값)
501-1,000 2,000
1,001-1,500 3,000

Lambda의 동시 호출 버스트 한도는 3,000건으로 고정되어 있습니다. 자세한 내용은 Lambda 함수 스케일링을 참조하십시오. 일시적인 스로틀 상황을 나타내는 오류 코드가 반환되는 경우 클라이언트 코드는 일부 API 호출을 예상하고 재시도해야 합니다. 샘플 대기실 클라이언트에는 대용량 및 고용량 버스트 이벤트에 사용되는 클라이언트를 설계하는 방법의 예로 이 코드가 포함되어 있습니다.

이 솔루션은 사용자 지정 구성 단계가 있는 Lambda 예약 프로비저닝된 동시성과도 호환됩니다. 자세한 내용은 Lambda 예약 동시성 관리를 참조하십시오.

대기실에 입장하여 토큰을 받고 거래를 계속할 수 있는 사용자의 상한은 Redis 카운터의 상한으로 제한됩니다. ElastiCache 카운터는 대기실 서비스 위치 및 솔루션의 요약 상태 추적에 사용됩니다. Redis에 사용되는 카운터의 상한은 ElastiCache 9,223,372,036,854,775,807입니다. DynamoDB 테이블은 대기실 사용자에게 발급된 각 토큰의 사본을 저장하는 데 사용됩니다. DynamoDB는 테이블 크기에 실질적인 제한이 없습니다.

지역별 배포

이 솔루션에서 사용하는 서비스는 모든 AWS 지역에서 지원됩니다. 지역별 최신 AWS 서비스 가용성은 AWS 지역 서비스 목록을 참조하십시오.