Support는 정적을 위한 동적 스케일링을 지원합니다. NET프레임워크 앱 - AWS 규범적 지침

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

Support는 정적을 위한 동적 스케일링을 지원합니다. NET프레임워크 앱

개요

애플리케이션에 클라우드를 사용할 때의 주요 이점 중 하나는 탄력성, 즉 수요에 따라 컴퓨팅을 확장 또는 축소할 수 있다는 것입니다. 이를 통해 최대 사용량에 맞춰 프로비저닝하는 대신 필요한 컴퓨팅 파워에 대해서만 비용을 지불할 수 있습니다. 온라인 소매업체가 평소보다 몇 배 더 많은 트래픽 (예: 몇 분 안에 수천 퍼센트) 을 빠르게 확보할 수 있는 사이버 먼데이는 탄력성의 좋은 예입니다.

레거시를 가져오는 것이라면 말이죠. NET클라우드로 웹 애플리케이션 (예:ASP. NET프레임워크 애플리케이션이 실행 중인 IIS 경우 애플리케이션의 상태 저장 특성으로 인해 부하가 분산된 서버 팜을 빠르게 확장하는 것이 어렵거나 불가능할 수 있습니다. 사용자 세션 데이터는 일반적으로 다음과 같이 응용 프로그램 메모리에 저장됩니다. ASP NET지속되어야 하는 상호 요청 데이터를 보유하는 세션 상태 또는 정적 변수 사용자 세션 어피니티는 일반적으로 로드 밸런서 고정 세션을 통해 유지됩니다.

이는 운영상 어려운 것으로 판명되었습니다. 용량을 늘려야 하는 경우 의도적으로 서버를 프로비저닝하고 추가해야 합니다. 이 경우 프로세스가 느릴 수 있습니다. 패치가 적용되거나 예상치 못한 장애가 발생한 경우 노드를 서비스 중단시키는 것은 최종 사용자 환경에 문제가 될 수 있으며, 영향을 받는 노드와 관련된 모든 사용자의 상태가 손실될 수 있습니다. 기껏해야 이렇게 하려면 사용자가 다시 로그인해야 합니다.

에 대한 ASP 세션 상태를 중앙 집중화하여 NET애플리케이션 및 레거시에 자동 크기 조정 규칙 적용 ASP NET애플리케이션을 사용하면 클라우드의 탄력성을 활용하고 애플리케이션을 실행할 때 잠재적으로 비용 절감 효과를 누릴 수 있습니다. 예를 들어 컴퓨팅 확장성을 통해 비용을 절감할 수 있지만 예약 인스턴스 사용량을 줄이고 Amazon 스팟 인스턴스 요금을 사용하는 등 사용 가능한 다양한 요금 모델 중에서 선택할 수도 있습니다.

일반적인 두 가지 기법으로는 Amazon DynamoDB를 세션 상태 공급자로 사용하는 방법과 ElastiCache Amazon (OSSRedis) 을 세션 상태 공급자로 사용하는 방법이 있습니다. ASP NET세션 스토어.

다음 다이어그램은 DynamoDB를 세션 상태 공급자로 사용하는 아키텍처를 보여줍니다.

세션 상태 공급자로서의 DynamoDB

다음 다이어그램은 ElastiCache (Redis를OSS) 세션 상태 공급자로 사용하는 아키텍처를 보여줍니다.

ElastiCache 세션 상태 공급자로서의 (RedisOSS)

비용에 미치는 영향

프로덕션 애플리케이션을 위한 확장의 이점을 파악하려면 실제 수요를 모델링하는 것이 좋습니다. 이 섹션에서는 샘플 애플리케이션을 모델링하기 위해 다음과 같은 가정을 합니다.

  • 로테이션에서 추가된 인스턴스와 제거된 인스턴스는 동일하며 인스턴스 크기 변동이 발생하지 않습니다.

  • 애플리케이션의 고가용성을 유지하기 위해 서버 사용률이 활성 서버 두 대 이하로 떨어지지 않습니다.

  • 서버 수는 트래픽에 따라 선형적으로 확장됩니다. 즉, 트래픽이 두 배로 증가하면 두 배의 컴퓨팅 용량이 필요합니다.

  • 트래픽은 한 달 동안 6시간 단위로 모델링되며, 하루 동안 트래픽이 10배 증가하면 하루 동안 트래픽이 비정상적으로 최고조에 달하고 (예: 프로모션 세일) 트래픽이 최고조에 달합니다. 주말 트래픽은 기본 사용률을 기준으로 모델링됩니다.

  • 야간 트래픽은 기본 사용률을 기준으로 모델링되고 주중 트래픽은 4배 사용률을 기준으로 모델링됩니다.

  • 예약 인스턴스 요금은 1년 선결제 없는 요금을 사용합니다. 일반 주간 요금은 온디맨드 요금을 사용하는 반면, 버스트 디맨드는 스팟 인스턴스 요금을 사용합니다.

다음 다이어그램은 이 모델이 어떻게 탄력성을 활용하는지 보여줍니다. NET최대 사용량을 위해 프로비저닝하는 대신 애플리케이션을 사용하십시오. 그 결과 약 68% 의 비용을 절감할 수 있습니다.

Auto Scaling 비용 그래프

DynamoDB를 세션 상태 저장 메커니즘으로 사용하는 경우 다음 파라미터를 사용하십시오.

Storage: 20GB Session Reads: 40 million Session Writes: 20 million Pricing Model: On demand

이 서비스의 예상 월별 요금은 매월 약 35.00 USD입니다.

ElastiCache (RedisOSS) 를 세션 상태 저장 메커니즘으로 사용하는 경우 다음 파라미터를 사용하십시오.

Number of Nodes: 3 Node size: cache.t4g.medium Pricing Model: 1y reserved

이 서비스의 예상 월별 비용은 매월 약 91.00 USD입니다.

비용 최적화 권장 사항

첫 번째 단계는 레거시에 세션 상태를 구현하는 것입니다. NET애플리케이션. 를 상태 저장 ElastiCache 메커니즘으로 사용하는 경우 AWS SDK for .NET 설명서의 Whatis the AWS SDK for .NET 지침을 따르세요. DynamoDB를 사용하는 경우 as an의 지침을 ElastiCache 따르십시오. ASP NET AWS 개발자 도구 블로그의 세션 스토어.

응용 프로그램이 InProc세션을 처음부터 사용하는 경우 세션에 저장하려는 모든 개체를 직렬화할 수 있는지 확인하십시오. 이렇게 하려면 SerializableAttribute 속성을 사용하여 해당 인스턴스가 세션에 저장될 클래스를 장식하십시오. 예:

[Serializable()] public class TestSimpleObject { public string SessionProperty {get;set;} }

또한,. NETMachineKey사용 중인 모든 서버 간에 동일해야 합니다. 이는 일반적으로 일반적인 Amazon 머신 이미지 (AMI) 에서 인스턴스를 생성하는 경우입니다. 예:

<machineKey validationKey="some long hashed value" decryptionKey="another long hashed value" validation="SHA1"/>

하지만 기본 이미지가 변경되더라도 동일한 이미지로 구성되도록 하는 것이 중요합니다. NET컴퓨터 이미지 (IIS또는 서버 수준에서 구성 가능). 자세한 내용은 을 참조하십시오SystemWebSectionGroup. MachineKey Microsoft 설명서에 있는 속성.

마지막으로, 조정 이벤트에 대한 응답으로 Auto Scaling 그룹에 서버를 추가하는 메커니즘을 결정해야 합니다. 여러 가지 방법으로 이 작업을 수행할 수 있습니다. 원활하게 배포하려면 다음 방법을 사용하는 것이 좋습니다. NETAuto Scaling 그룹의 EC2 인스턴스에 대한 프레임워크 애플리케이션:

추가 리소스