12

저는 현재 Cloud PaaS를 찾고 있는데, 이는 1 명의 사용자와 1 천만 명 이상의 사용자를 처리 할 수있는 응용 프로그램을 확장 할 수있게 해줄 것입니다. 관계형 데이터베이스와 soap-webservices가있는 표준 응용 프로그램을 개발한다고 가정 할 때이 응용 프로그램은 Paas 솔루션에 배포 될 때 자동으로 확장되거나 여전히 응용 프로그램을 작성해야하는지에 대한 분명한 대답이있는 것 같습니다. 이상, 중복 및 마음에있는 모든 것들?클라우드 PaaS를 사용하면 자동으로 확장 성 문제가 해결됩니까?

Amazon EC2에 Spring Hibernate 응용 프로그램을 배포하고 Tomcat이 설치된 단일 인스턴스의 Ubuntu Server를 만들었다 고 가정 해 봅시다.이 응용 프로그램은 무한정 확장되거나 더 많은 Ubuntu 인스턴스가 필요합니까? 하나 이상의 우분투 인스턴스가 필요한 경우 Amazon은 두 인스턴스 모두에서 응용 프로그램을 실행하거나 개발자의 책임입니까? 데이터베이스 스토리지는 어떨까요? 데이터베이스가 커짐에 따라 확장되는 EC2에 데이터베이스를 설치할 수 있습니까? 아니면 무한정 확장하려는 경우 API 중 하나를 사용해야합니까?

CloudFoundry를 사용하면 로컬에서 빌드하고 PaaS에 바로 배포 할 수 있지만 베타 버전이므로 사용할 수있는 리소스의 양에는 제한이 있으며 올바르게 기억하면 데이터베이스는 128MB로 제한되어 있으므로이 아니오 지금 당장. 어떤 사람들은 Amazon EC2에 CloudFoundry를 설치하도록 제안했는데, 어떻게 확장하고 데이터베이스 계층을 어떻게 처리 할 수 ​​있습니까?

GAE (Google App Engine)을 사용하면 응용 프로그램을 배포 할 수 있으며 중복성을 조정하고 중복성을 구현하는 방법에 대해 걱정할 필요가 없습니까? GAE에서 실행할 수 있고 실행할 수없는 것에는 한계가있는 것으로 보이며, 가격 인상이 최근 상당수의 개발자들을 화나게했는데 다른 공급자와 비교할 때 가격이 비싼 것입니까?

기본적으로 규모가 커지고 규모를 조정하려면 어떻게해야합니까?

+2

나는 스케일러 빌리티가 결코 마법 적이 지 않으며 항상 많은 작업이 필요하다고 생각한다 (특히 수백만 명의 사용자를 고려할 때). –

+0

그런 응용 프로그램을 구축하고 동시에 확장 성을 관리하는 데 2 ​​개월이 걸렸다고 가정 해 봅시다. 제공 업체는 mac/desktop에서 응용 프로그램을 데모 할 수있게하고 다음날 10M + 사용자를 원활하게로드하는 스위치를 당깁니다 ? –

+1

@JanVladimirMostert - AFAIK 만 AppEngine은 원활하게 확장됩니다. 코드를 업로드하면 나머지는 자동으로 조정됩니다. –

답변

12

한 게시물에 많은 질문이 있습니다. 어쨌든 :

  1. Amazon EC2는 자동으로 부하에 맞춰 확장되지 않습니다. EC2는 기본적으로 가상 머신입니다. Auto ScalingElastic Load Balancing을 사용하여 EC2 인스턴스의 크기 조정을 수행 할 수 있습니다.

  2. SQL 데이터베이스의 크기가 잘못 조정되었습니다. 그래서 사람들은 처음부터 NoSQL 데이터베이스를 사용하기 시작했습니다. 클라우드 제공 업체가 관리 서비스로 제공하는 데이터베이스를 확인하는 것이 가장 좋습니다. Datastore GAE 및 DynamoDB (아마존)입니다.

  3. EC2 인스턴스에 자신의 데이터베이스를 설치하는 것은 EC2가 ephemeral storage (다시 부팅 할 때 "디스크"의 모든 데이터가 손실 됨)이므로 매우 실용적이지 않습니다.

  4. GAE Datastore는 실제로 모든 응용 프로그램에서 실행되는 하나의 큰 데이터베이스입니다. 따라서 확장 성이 뛰어납니다. 수백만 명의 사용자가 문제가되지 않아야합니다. http://highscalability.com/blog/2011/1/11/google-megastore-3-billion-writes-and-20-billion-read-transa.html

  5. 예 App Engine은 프런트 엔드 인스턴스와 데이터베이스 모두 자동으로 확장됩니다. 스케일을 만들기 위해해야 ​​할 특별한 것은 없으며 API 만 사용하십시오.

  6. 는 AppEngine에 수행 할 수있는 한계가 있습니다

    A. 아니요 로컬 스토리지 (파일 시스템) - 당신은 데이터 저장소 또는 Blob 저장소를 사용해야합니다.

    나.Comet은 독점 채널 API를 통해서만 지원됩니다.

    C. 데이터 저장소는 JOIN, 제한된 쿼리, 제한된 트랜잭션이 없습니다.

  7. GAE의 비용은 나쁘지 않습니다. 우리는 하루에 약 5 달러에 하루에 1M 건의 요청을합니다. 가장 큰 절약은 GAE에서 시스템 관리자가 필요 없다는 사실에서 유래합니다 (그러나 EC2에 대한 필요성은 있습니다). 인력 비용과 비교하면 GAE는 매우 저렴합니다.

    A. 사용하는 대신 데이터 저장소 쿼리의 수 (주의 natiral 키 공예 필요) :

일부 힌트 GAE 돈 (AN 최대 속도)를 저장합니다.

B. memcache를 사용하여 양식 데이터 저장소의 데이터를 캐시하십시오. 이것은 objectify를 사용하여 자동으로 수행 할 수 있으며 @Cached annotation입니다.

C. 데이터를 비정규 화합니다. 가능한 한 적은 작업으로 여러 위치에 데이터를 중복 적으로 작성한다는 의미입니다.

D. 기기에서 쿠키를 사용하지 않는 REST 요청이 많은 경우 세션 지원을 사용 중지하거나 이전대로 롤백하십시오. 세션은 데이터 저장소를 후드 아래에서 사용하고 요청을받을 때마다 사용합니다.

E. 약 adjusting app settings을 읽으십시오. 다른 설정을 시도해보십시오 (지연 및 트래픽 패턴/스파이크를 요청하는 앱의 내구성에 따라 다름). 프론트 엔드 인스턴스를 70 % 줄였습니다.

+0

Elastic Load Balancing을 사용한다고 가정 해 봅시다. 각 인스턴스가 데이터를 가져 오는 데이터베이스 계층을 어떻게 확장 할 수 있습니까? 아니면 RDS가 정확히 나를 위해 수행 할 것입니까? –

+1

아니요, EC2에서 자체 데이터베이스를 실행하는 것은 매우 어렵습니다. 1. 일시적인 저장소가 휘발성이었습니다. 2. 블록 저장소가 느립니다. 3. 스스로 설치 한 데이터베이스를 설치해야합니다. –

+1

짧은 : 아마존은 데이터베이스를 자동으로 확장하지 않습니다. 이 작업을 수행하려면 데이터베이스 서비스 중 하나를 사용해야합니다. –