2

DocumentDb와 Azure 테이블 저장소를 사용하는 DAL을 별도의 웹 API로 옮겨서 Azure에서 클라우드 서비스로 호스팅하는 방법에 대해 생각하고 있습니다.대기 시간없이 MVC에서 웹 API를 호출하려면 어떻게해야합니까?

이렇게하는 주된 목적은 Azure에서 클라우드 서비스로 실행중인 현재의 MVC 5 (현재의 ASP.NET MVC 5)를 쉽고 독립적으로 확장 할 수있는 고성능 DAL을 유지하는 것입니다. 모바일 앱도 추가 할 예정입니다. DocumentDb와 Azure Table Storage를 사용하면 C# 코드에서 많은 데이터 처리 작업을 수행하고 있으므로 프론트 엔드 응용 프로그램과 별도로 보관하는 것이 좋습니다.

그러나 한 클라우드 서비스에서 다른 응용 프로그램으로 HTTP 호출로 인해 발생하는 지연 문제는 DAL을 자체 응용 프로그램/클라우드 서비스로 분리 할 목적을 상실하게 만듭니다.

레이턴시 문제없이 내 DAL을 프런트 엔드 응용 프로그램과 분리하는 가장 좋은 방법은 무엇입니까?

답변

2

스케일 아웃/파티셔닝 리소스와 네트워크 대기 시간 사이의 균형은 피할 수없는 것이라고 생각합니다. 즉, 대규모 시스템에서 작업 할 때 여러 가지 이유로 가치가있는 절충점 (예 : 응용 프로그램 작업의 병렬 실행, 신뢰성 향상 등)을 발견 할 수 있습니다. 가능하면 간 서비스 호출을 방지하기

  • 사용 캐싱 :

    다음은 네트워크 대기 시간에 대한 타격을 최소화하는 데 도움이되는 몇 가지 일반적인 도움말입니다.

  • NAT를 통해 하나의 클라우드 서비스 및로드 밸런서를 통해 다른 곳으로 이동하는 데 소요되는 비용을 최소화하기 위해 가능할 때마다 일괄 처리 서비스 호출 및 연결 재사용을 배치하십시오. 주 - 애플리케이션은 또한 끊어진 연결 (클라우드 아키텍처에서는 필연적 임)을 처리 할 수 ​​있어야합니다.
  • 성능 메트릭을 가능한 한 모니터링하여 측정을 수행하고 병목 현상을 식별하십시오.
  • 응용 프로그램 계층을 동일한 데이터 센터 내에서 동일 위치에 배치하여 서비스 간 대기 시간을 최소화하십시오.

또한 유용한 다음과 같은 문헌을 찾을 수 있습니다 : 최근 질문자에 의해 언급 같은 이유로 MVC 웹 사이트와 모바일 애플리케이션 모두에 대해 DocumentDB 데이터를 제공하는 WebAPI 내 DAL을 분할 http://azure.microsoft.com/en-us/documentation/articles/best-practices-performance/

1

.

aliuy의 진술은 일반적으로 좋은 습관으로 받아 들여지는 유효한 성능 고려 사항입니다.

더 구체적으로 - Azure 클라우드 서비스를 사용하여 대기 시간없이 MVC에서 웹 API를 호출하려면 각 리소스 (웹 사이트, 클라우드 서비스 등)에 대해 동일한 선호도 그룹을 지정해야합니다.

선호도 그룹은 순서에 푸른 데이터 센터에서 서로 근접하여 클라우드 서비스가 최적의 성능을 달성하기 위해 그룹화 할 수있는 방법입니다. 어피 니티 그룹을 생성하면 Azure 은 어피 니티 그룹에 속한 모든 서비스를 으로 물리적으로 가능한 한 가까이 유지하는 것을 알게됩니다.

https://azure.microsoft.com/en-us/documentation/articles/virtual-networks-migrate-to-regional-vnet/