2017-10-30 1 views
0

아마도 이것은 기본적인 질문이지만 단일 페이지 응용 프로그램이 일부 호스트 이름으로 전제로 호스팅되도록 시스템을 설계하는 방법 mydogs.com하지만 클라우드 (데이터베이스는 물론)에서 애플리케이션 서비스 코드를 호스팅하려고합니다. 예를 들어, docker를 사용하여 Amazon EC2 컨테이너 서비스를 시작하고 NodeJS 서버를 실행한다고합시다. 호스트 이름은 모두 ec2_some_id.amazon.com입니다. 내 angularjs 앱이 연결되는 Amazon EC2 인스턴스에서 어떤 시스템이 사용됩니까? 어떤 아키텍처가 이러한 유형의 앱을 용이하게합니까? 특히 AWS 기반 서비스.AWS 클라우드 서버에 연결하는 방법 AngularJS 기반 단일 페이지 응용 프로그램을 사용하여 AWS 클라우드 서버에 연결하는 방법

답변

1

Amazon EC2 instance types

는 크로스 원산지 요청 (CORS) 피 단일 도메인을 사용하여 서버에 있습니다. 이를 위해 AWS CloudFront를 프록시로 사용할 수 있습니다. 여기서 URL 경로를 기반으로 라우팅이 이루어집니다.

예를 들어,/api/*가 EC2에서 실행되는 백 엔드 엔드 포인트에 요청하는 동안 루트 도메인을 index.html로 지정할 수 있습니다. 아키텍처의 샘플 다이어그램은 아래와 같습니다.

enter image description here

또한

하여 각 응용 프로그램에 대한 중요한 전체 URL 경로를 가지고있다. 이것들을 가지고있는 과제들 중 하나는/home/about과 같은 경로의 경우 특정 경로에 대한 백엔드에서 페이지를 다시로드한다는 것입니다. 단일 페이지 응용 프로그램이므로/home 및/또는 & 등의 서버 페이지를 가지지 않습니다. CloudFront에서 오류 페이지를 설정할 수 있으므로 찾을 수없는 모든 경로를 index.html로 전달할 수 있습니다 (AngularJS 앱을 제공함).

+0

감사합니다. 이것은 아마도 더 큰 주제이지만 배포는 EC2로 어떻게 처리되는 것이 일반적입니다. EC2에 모든 코드를 한 번에 배포하여 모든 인스턴스의 버전이 동일 해지도록하십시오. –

+0

각 배포 후에 자동 확장 및로드 균형 조정을 설정하면 모든 서버가 최신 버전을 얻지 만 한 번에 가져올 수는 없습니다. 다운 타임없이 배포 할 수있는 몇 가지 방법이 있습니다. 이러한 접근법 중 하나는 롤링 업데이트를 사용하는 것입니다. 또 다른 하나는 파란 - 녹색 배포를하는 것입니다. – Ashan

0

좋은 접근 방식은 두 개의 분리 된 인스턴스를 갖는 것입니다. 그것은 API (Application Program Interface)를 제공하는 인스턴스이고 SPA (Single Page Application)를 제공하는 인스턴스입니다.

API 서버의 경우 모든 클라이언트 인스턴스에서 가장 많은 요청을 받게 될 것이므로 더 강력한 서비스를 원할 수 있습니다. 따라서 성능, 대역폭 등이 더 많이 필요합니다. 필요한 경우 API 서버를 확장 가능하게 만들 수 있습니다 (로드에 따라 다름). 어쩌면 아닙니다. 그러나 애플리케이션이 빠르게 성장할 것으로 생각되면 명심해야 할 사항입니다. 그래서 당신은 이것에 조금 더 투자 할 것입니다.

반면에 SPA 서버는 서버 측 렌더링을 사용하지 않는 경우 정적 리소스 만 제공하므로 SPA 서버는 무료가 아닌 경우 비용이 저렴합니다. 또한 응용 프로그램 리소스를 한 번만 제공하면 응용 프로그램이 실제로 클라이언트에서 실행되고 대부분의 파일이 브라우저에 의해 캐시됩니다. 그래서 당신은 이것에 많은 것을 투자 할 필요가 없습니다.

아무리해도이 유형의 응용 프로그램에 더 적합한 서비스에 대한 질문은 사용자가 원하는 요구 사항에 맞는 서비스를 찾을 수 있다는 것을별로 정의하지 않았기 때문에 대답 할 수 없습니다. 응용 프로그램은 사용자가 필요로하는 요청, 다운로드 또는 저장소의 수와 같이 클라이언트가 소비합니다. 웹 애플리케이션 및 백엔드를 설정하는 중요한 측면의

관련 문제