2013-05-02 2 views
0

최근에 숙련 된 아키텍트로 알려진 아키텍트와 논의를 시작했습니다. 토론은 웹 팜에서 실행되는 멀티 테넌트 웹 기반 응용 프로그램을위한 이상적인 아키텍처 및 디자인에 관한 것입니다. 응용 프로그램의 유일한 작업은 사용자가 매우 복잡한 보고서를 생성하기 위해 시스템에서 처리중인 'n 개의 숫자'의 Excel 파일을 업로드 할 수 있도록 허용하는 것입니다. 이러한 파일을 처리하는 데 오랜 시간이 걸립니다 (각각 시간이 걸리므로이를 제한 조건으로 사용하십시오). 따라서 업로드 후 사용자는 시스템에서 생성 된 보고서를 다운로드하라는 알림을 기다립니다.스케일 러블 애플리케이션 구축 VS 클라우드 지원 애플리케이션

처음에는 요구 사항이 매우 단순 해 보였지만 응용 프로그램이 100 % 확장 가능해야한다는 기대가있었습니다. 아키텍처와 함께 다양한 솔루션에 대해 논의했지만 만족스럽지 못했습니다. 이 커뮤니티의 회원이 기술과 함께 디자인 솔루션을 제안해야합니다. 이것은 제 전문직이 아니라 확장 가능한 응용 프로그램 구축에 대한 Architect의 견해를 보여주는 설문 조사입니다. 응용 프로그램 확장성에 중점을두기보다는 인프라를 쉽게 확장 할 수있는 Cloud Ready 응용 프로그램입니다.

+0

은 모두 서로 독립적 인 Excel 처리입니까? 의존성이 없다면 클라우드에서 하드웨어를 계속 확장하는 것만 큼 쉬운 문제처럼 보입니다. – computinglife

+0

예 모든 처리가 독립적이지만 문제는 더 많은 h/w로 펌핑하는 것보다는 응용 프로그램을 확장 가능하게 만드는 것이 었습니다. 애플리케이션을 더 이상 확장 할 수없는 임계 값에 도달 할 때까지 마지막 옵션으로 스케일 아웃을 고려해야합니다. – iarchitect

+0

그럼 당신의 질문은 당신이 이미 가지고 있기 때문에 확장 성보다는 효율성에 관한 것으로 바뀌어야합니다. 질문을 변경하여 문서 변환을 효율적으로 수행하는 방법에 대해 구체적으로 설명하면 더 나은 답변을 얻을 수 있습니다. – computinglife

답변

0

사용자는 사이트를 통해 Excel 파일을 업로드 할 수 있습니다. 그들의 신임장도 통과됩니다. 백엔드는이 요청을 데이터베이스에 등록하고 요청 ID (Guid 또는 기타)를 반환합니다. 프로세스가 종료됩니다.

Windows 서비스가 실행 중이고 데이터베이스를 폴링하여 처리 할 새 요청을 찾습니다. Quartz.NET을 사용하여 요청을 처리 할 여러 병렬 작업을 예약 할 수있다. 이 요청 처리 (파일을 엑셀 처리하고 보고서를 생성하는 처리)는 균형 잡힌 WCF 서비스를 위임하므로 더 많은 WCF 서비스가 있으면 더 많은 Quartz 작업을 병렬로 예약 할 수 있습니다. 쿼츠 작업의 다른 유형은 요청이 처리 된 경우 메일을 보내도록 예약 될 수 있습니다.

사이트는 일정한 간격으로 폴링하여 요청 (또는 특정 요청)의 상태 및 진행 상황을 확인합니다. 그들을 관리하십시오. 완료된 요청의 경우 보고서를 다운로드 할 수 있습니다.

저는 이것이 느슨하게 결합 된 매우 확장 가능한 솔루션이라고 생각합니다.

+0

친애하는 L-Three 귀하의 제안에 감사드립니다. 실현 가능한 솔루션과 하강 솔루션이 어떻게 DB 운영의 확장 성을 보장합니까? select, inserts, updates와 같이 대규모로? 이 모든 서비스가 동시에 DB에 액세스합니까? 데이터베이스에 너무 많은 세금을 부과하지 않습니까? 클라이언트로부터 들어오는 많은 요청이 효율적으로 처리된다는 것을 어떻게 보장할까요? 데이터베이스 구문 분석? – iarchitect

+0

저는 데이터베이스가 병목 현상이 거의 없다고 생각하지만, 물론 당신이 무엇을하려고하는지에 달려 있습니다. 예를 들어 동시 읽기/쓰기를 처리하려면 올바른 잠금 메커니즘 (예 : http://ludwigstuyck.wordpress.com/2013/02/28/concurrent-reading-and-writing-in-an-oracle-database/)을 사용하십시오. 대량 삽입의 경우 적절한 기술 (예 : http://ludwigstuyck.wordpress.com/2013/02/27/bulk-insert-into-an-oracle-database/)을 사용하십시오. 따라서 구체적인 비 - 먼저 기능 요구 사항을 충족시킨 다음 기술 설계를 수행하십시오. –

+0

감사합니다. 추가 의견을 남기려합니다. – iarchitect