클라우드 기반 응용 프로그램 및 개인 데이터 센터에서 실행 중인 응용 프로그램의 가장 큰 차이점은 확장성입니다. 클라우드 수요, 확장 및 축소 부하에서 변동에 따라 응용 프로그램에 확장 하는 기능을 제공 합니다. 하지만 단순히 클라우드로 응용 프로그램을 배포 하는 구름의 장점을 발휘 하는 전통적인 응용 프로그램, 하지만 확장성 아키텍처를 재설계 하 주위 구름의 특성에 따라 최근 AppDynamics의 개발 목사 Dustin.whittle 큰 영감과 배포를 클라우드로 우리의 전통적인 응용 프로그램에 대 한 참조는 클라우드 배포에 적합 한 응용 프로그램 아키텍처에 대해 썼다.
적용 된 스키마
Dustin.whittle는 다음 그림에서와 같이 확장성, 즉 클라우드 응용 프로그램에 대 한 샘플 아키텍처를 제공:
이 다이어그램에 응용 프로그램은 다음과 같이 설명 하는 레이어 링의 아이디어에 따라 분할 됩니다.
클라이언트 계층: 클라이언트 계층 대상 플랫폼에 대 한 사용자 인터페이스를 포함 하 고 웹 기반, 모바일, 또는 심지어 지방 클라이언트 사용자 인터페이스에 포함 될 수 있습니다. 일반적으로이 사용자 관리, 세션 관리, 페이지 건물, 같은 기능을 포함 하는 웹 응용 프로그램 수도 있지만 다른 클라이언트에 의해 시작 상호 작용 restful 서비스의 형태로 서버를 호출 해야 합니다.
서비스: 서버는 캐싱 서비스 및 포함 집계 (aggregate) 서비스 캐시 서비스 기록 시스템 (기록 시스템)에서 최신 알려진된 상태를 보유 하 고, 집계 서비스 기록 체계와 직접 상호 작용 하 고 (녹화 시스템에서 상태 변경) 몇 가지 파괴적인 작업을 수행 하는 동안 ) 。
시스템 기록: 기록 시스템은 비즈니스 기능, 고객 관리 시스템, 조달 시스템, 예약 시스템, 포함 될 수 있습니다 도메인 전용 서버와, 레거시 시스템 응용 프로그램 상호 작용 해야 될 것입니다. 집계 서비스는 이러한 독특한 시스템에서 응용 프로그램을 추상화 하 고 응용 프로그램에 대 한 일관 된 프런트 엔드 인터페이스를 제공 합니다.
ESB: 시스템 데이터 변경 내용을 기록할 때 필요한 트리거 이벤트는 이벤트 기반 아키텍처 (이벤트 기반 아키텍처, eda) 지정된 주제 (주제)를 어디 응용 프로그램에 영향을 미칠 수: 녹음 시스템은 다른 시스템에 관심이 있을 수 있습니다 변경, 이벤트 트리거 및 기록 시스템에 관심을 지불 하는 다른 시스템 이벤트를 모니터링 하 고 그에 따라 응답 하는 경우. 이것은 또한 큐 (큐) 대신 테마 (주제)를 사용 하는 이유: 큐 지원 지점간 (point-to-point) 메시지, 주제 지원 메시지 또는 게시-구독 이벤트 (게시-구독). 레거시 시스템을 통합할 때 우리가 이러한 레거시 시스템 부하 로부터 보호를 기대 합니다. 따라서, 우리는 기록 시스템에 모든 알려진된 가장 최신 상태를 유지 하는 캐싱 시스템 구현. 캐싱 시스템 시스템, 기록 시스템에 데이터를 일치 하는지 확인에 저장 된 데이터의 그것의 자신의 버전을 업데이트에 대 한 변경 들을 다 규칙을 사용 합니다. 그러나 이것은 매우 강력한 전략 이다,, 일관성 모델은 궁극적으로 일치 하는 경우 소셜 미디어에 대 한 상태를 게시, 친구 초 또는 분, 그것을 볼 수 있을 수 있습니다 및 데이터 결국 같은 것입니다, 하지만 때로는 당신이 무엇을 보고 동일 하지 않습니다 보는 무엇을 당신의 친구. 이 일관성을 허용 하는 경우 대부분 확장성 향상을 얻을 수 있습니다.
NoSQL: 데이터 저장소에 많은 대안이 있다 하지만 NoSQL 저장 규모 쉽습니다 많은 양의 데이터를 저장 하려는 경우. 다양 한 nosql 매장에서 선택할 수 있습니다 하지만이 일치 하는 저장된 된 데이터의 특성, MongoDB 검색 가능한 데이터를 저장 하기 위해 적당 한, 같은 neo4j 매우 저장 하는 데 적합 한 데이터, 상관 그리고 카산드라를 저장 하기 위한 키/값 쌍. SOLR 등 검색 인덱스는 데이터를 자주 액세스 하는 쿼리의 속도 대 한 유용 합니다.
최고의 모델은 서비스 지향 아키텍처를 사용 하는 여러 계층으로 응용 프로그램을 분할 하는 경우 (서비스 지향 아키텍처, soa). 이렇게 하려면, 당신은 비누 또는 나머지, 사용할 수 있지만 나머지는 확장성 때문에 더 적절 한. 저자는 다음 나머지의 깊은 박람회 만들고 많은 여기와 여기, 나머지에 대해 Infoq의 기사 관련 및로 필 딩의 고전적인 박사 논문의 중국어 버전도 있다. 그러나, 저자 강조 여기 RESTful 웹 서비스 상태 비저장 남아 있을 수 있습니다 (상태 비저장). 요청 된 서버 중 하나에 의해 응답 될 수 있다 그래서 아무 상태 있기 때문에 상태 비저장 확장성에 대 한 주요 요구 사항이입니다. 서비스 계층에 더 많은 용량이 필요 하면, 단순히 클라이언트 상태에 대 한 관심을 지불 하지 않고 레이어를 가상 컴퓨터를 추가 하 고 부하를 쉽게 재배포할 수 있습니다.
클라우드로 배포
클라우드 기반 응용 프로그램 아키텍처는 앞에서 설명한 하 고 저자는 클라우드로 이러한 응용 프로그램을 배포 하는 방법 설명.
RESTful 웹 서비스가 웹 컨테이너에 배포 되 고 데이터 저장소 전에 이다. 이러한 웹 서비스는 상태 비저장 고 필요한 만큼 서버를 배포할 수 있습니다 그래서 그들은 노출 하는 기본 데이터의 상태에만 반영. 클라우드 기반 배포에 충분 한 인스턴스 일상적인 요구에 응답 하 여 시작 하 고 서버 부하에 따라 수를 늘리거나 플렉스 전략을 구성 수 있습니다. 채도의 최고의 측정 서비스의 응답 시간입니다. 도 이러한 서비스를 사용 하 여 저장 하는 기본 데이터의 성능 고려를 해야 합니다. 예제에 대 한 배포 다이어그램은 다음과 같습니다.
클라우드 배포에 대 한 EDA 요구 사항 경우 ESB 배포 그리고 저자의 조언을 ESB 기능 (분할)에 따라 분할 하는, 세그먼트 과부하를 다른 세그먼트에는 영향을 미치지 않습니다. 다음 그림과에서 같이:
이 분리 시스템 2 부하에서 시스템 1 부하를 분리합니다. 시스템 1에서 생성 하는 부하는 ESB 속도가 느려집니다, 그것만 그것의 자신의 세그먼트에 영향을 미칠 것입니다 하 고 다른 하드웨어에 배포 때문에 시스템 2의 세그먼트에 영향을 주지 것입니다. ESB 제품 지원 되 면 우리 또한 확장을 구현 하는 지정 된 세그먼트에 서버를 추가할 수 있습니다.
클라우드 기반 응용 프로그램의 다른 확장성 요구 사항으로 인해 기존의 응용 프로그램에서 크게 다릅니다. 클라우드 기반 응용 프로그램 추가 하 고 서버 제거 충분히 탄력 이어야, 느슨하게 결합 되어야 합니다, 가능한 상태 비저장 될 필요가, 실패에 대 한 계획을 사전에 해야 하며 여러 서버에서 수천 대의 서버를 확장할 수 있어야 합니다.
클라우드 응용 프로그램에 대 한 하나의 올바른 아키텍처 없습니다 하지만 RESTful 서비스 및이 문서에서 설명 하는 이벤트 기반 아키텍처는 검증 된 아키텍처에 의해 유효성이 검사 됩니다. 저자는 믿는다 휴식과 EDA 클라우드 확장 가능한 응용 프로그램을 구현 하는 기본 도구.
현재, 중국에 있는 많은 전통적인 소프트웨어 공급 업체는 마이그레이션 클라우드로 점차적으로,이 기사는 독자에 대 한 몇 가지 참조를 제공할 수 있습니다 바라고.