Quando se deve usar o seguinte: Amazon EC2, Google App Engine, Microsoft Azure e Salesforce.com?

88

Estou perguntando isso em um sentido muito geral. Tanto da perspectiva do provedor de nuvem quanto do consumidor da nuvem. Além disso, a questão não é para nenhum tipo específico de aplicativo (na verdade, a intenção é saber quais tipos de aplicativos / domínios podem se encaixar em qual bloco de nuvem -SaaS PaaS IaaS).

Meu entendimento até agora é:

IaaS: Hardware bruto (processadores, redes, armazenamento).

PaaS: SO, Softwares de Sistema, Framework de Desenvolvimento, Máquinas Virtuais.

SaaS: Aplicativos de software.

Seria ótimo se Stackoverflower pudesse compartilhar sua compreensão e experiências do conceito de computação em nuvem.

EDIT: Ok, vou colocá-lo de forma mais específica -

Amazon EC2: você não tem controle sobre a camada de hardware. Mas você pode escolher a imagem do SO, Dev Framework (.NET, J2EE, LAMP) e o aplicativo e colocá-lo no hardware EC2. Você pode implantar aplicativos desenvolvidos com Google App Engine ou Azure no EC2?

Google App Engine: você não tem controle sobre hardware e sistema operacional e obtém um Dev Framework específico para construir seu aplicativo. Você pode pegar qualquer aplicativo Java ou Python existente e portá-lo para o GAE? Ou vice-versa, os aplicativos que foram desenvolvidos no GAE podem ser retirados do GAE e transferidos para qualquer servidor de aplicativos como o Websphere ou o Weblogic?

Azure: você não tem controle sobre o hardware e o sistema operacional e obtém um Dev Framework específico para construir seu aplicativo. Você pode pegar qualquer aplicativo .NET existente e portá-lo para o Azure? Ou vice-versa, os aplicativos que foram construídos no Azure podem ser retirados do Azure e transferidos para qualquer servidor de aplicativos como o Biztalk?

user32262
fonte
2
Você esqueceu Rackspace Cloud / Rackspace Cloud Servers
phoebus
2
É uma pergunta interessante, mas talvez mais adequada para ServerFault, pois é mais sobre como distribuir aplicativos de servidor do que apenas escrever um. Talvez você deva postar uma segunda postagem em SF que se refira a esta e adicionar um link daqui para o Q em SF. Dessa forma, você obtém uma visão melhor dos programadores e administradores de sistema!
Wim ten Brink,
@phoebus também CloudSigma, que é menos conhecido, mas muito escalonável.
AwesomeUser,

Respostas:

58

Boa pergunta! Como você ressaltou, as diferentes ofertas se encaixam em diferentes categorias:

EC2 é infraestrutura como serviço; você obtém instâncias de VM e faz com elas como desejar. Os Rackspace Cloud Servers são mais ou menos iguais.

Azure, App Engine e Salesforce são todos Platform as a Service; eles oferecem diferentes níveis de integração: o Azure praticamente permite que você execute serviços arbitrários em segundo plano, enquanto o App Engine é orientado para tarefas de manipulador de solicitações de curta duração (embora também ofereça suporte a uma fila de tarefas e tarefas agendadas). Não estou muito familiarizado com a oferta do Salesforce, mas meu entendimento é que ele é semelhante ao App Engine em alguns aspectos, embora seja mais especializado para seu nicho específico.

As ofertas de nuvem que se enquadram no Software as a Service abrangem tudo, desde peças de infraestrutura como o Simple Storage Service e SimpleDB da Amazon até aplicativos completos como o FogBugz hospedado do Fog Creek e, é claro, StackExchange.

Uma boa regra geral é que quanto mais alto for a oferta, menos trabalho você terá que fazer, mas ela será mais específica. Se você quiser um rastreador de bug, usar o FogBugz obviamente vai dar menos trabalho; construir um em cima do App Engine ou Azure é mais trabalhoso, mas oferece mais versatilidade, enquanto construir um em cima de VMs brutas como EC2 é ainda mais trabalhoso (muito mais, na verdade), mas oferece ainda mais versatilidade. Meu conselho geral é escolher a plataforma de nível mais alto que ainda atenda aos seus requisitos e construir a partir daí.

Nick Johnson
fonte
oi, atualmente usamos Godaddy e arvixe, mas estamos planejando mudar para Amazon AWS ou Azure, li a partir daqui que para AWS muitas mudanças no código são necessárias, mas como um site de varejo online, não queremos nenhuma mudança no código porque leva tempo, então nesta situação qual seria a melhor hospedagem para escolher?
shaijut
13

Esta é uma excelente pergunta. Divulgação total, pois sou parcial para o Azure, mas tenho experiência com os outros.

Onde eu acho que o Azure se destaca dos outros é a rápida transição do local para a nuvem. Por exemplo -

  • SQL Azure - altere a string de conexão, carregue o banco de dados, vá!
  • As filas funcionam muito como o MSMQ.
  • Blobs são basicamente blobs de qualquer maneira que você os sacuda, mas eles escalam como loucos.
  • O componente de armazenamento de tabela é bom porque fornece escalabilidade incrível para pares nome / valor - mas leva algum tempo para se acostumar.
  • O Service Bus é o meu favorito dos serviços porque permite uma variedade de paradigmas de comunicação. Dois endpoints SB primeiro tentam se conectar um ao outro, se não puderem, então eles são roteados pela nuvem - torna o processamento muito seguro e escalonável quando os firewalls tendem a atrapalhar.
  • Lista de controle de acesso - normalmente emparelhada com o barramento de serviço para garantir que as pessoas certas acessem as coisas certas - pense em SAML na nuvem.

Espero que ajude!

Derek
fonte
8

Minha experiência na nuvem está atualmente limitada a Salesforce.com

Para operações de negócios padrão e automação, ele fornece um número significativo de recursos que nos permitem colocar os aplicativos em funcionamento muito rapidamente. Estamos nos beneficiando particularmente com o seguinte:

  • Segurança (os administradores podem controlar o acesso a objetos e campos)
  • Fluxo de trabalho e aprovações
  • Geração automática de IU
  • Relatórios e painéis integrados
  • Todo o sistema (incluindo nossas alterações personalizadas) pode ser acessado por meio de serviços da web
  • Capacidade de disponibilizar os dados do sistema por meio de sites públicos (por exemplo, comércio eletrônico)
  • Grande biblioteca de aplicativos de terceiros para resolver problemas padrão

A plataforma NÃO resolve todos os problemas.

Eu não usaria a plataforma para modelar uma usina nuclear ou construir o próximo twitter.

Craig Harris
fonte
6

Os principais pontos da computação em nuvem são economizar custos pagando pelo uso e permitir a implantação imediata de recursos de computação.

Os custos não são puramente x quantidade de centavos por instância por hora. Os custos incluem manutenção, desenvolvimento, administração, etc. O grande benefício da nuvem, em minha opinião, é liberar os clientes de ter que gerenciar qualquer coisa que não esteja dentro do domínio de sua competência de negócios principal . Se eu for uma empresa de seguros, quero que meus desenvolvedores se concentrem em meus problemas de seguro que ajudam a resolver as necessidades de minhas reivindicações, taxas, etc. Prefiro evitar lidar com problemas de servidores de e-mail, servidores de arquivos, repositórios de documentos e administração de patches de sistema operacional , service packs, etc.

Portanto, em minha opinião, os maiores benefícios são derivados das ofertas de nuvem SaaS e PaaS. Deve-se ir para IaaS apenas quando PaaS ou SaaS têm sérias restrições a necessidades específicas (ou seja, preciso instalar um conjunto de componentes COM proprietários e o Azure não oferece suporte a eles).

SaaS é bom para aplicativos que não são a principal linha de negócios do cliente, mas sim um utilitário. Estes são os seus típicos sistemas de mensagens, portais, repositórios de documentos, sistemas de e-mail, CRMs, ERP's, contabilidade, etc. etc. etc. Por que reinventar a roda escrevendo seu próprio quando você pode personalizar um produto de terceiros com bom suporte.

PaaS é excelente para a linha principal de software de negócios que oferece suporte às principais ofertas de negócios das empresas. Evita que os clientes tenham que lidar com o gerenciamento do SO e permite que os clientes se concentrem no desenvolvimento do sistema de negócios - algo que ninguém mais pode fazer pelo cliente.

Igorek
fonte
3

Também se pode tirar proveito dos benefícios do PaaS (digamos, Google App Engine) e estendê-lo, às vezes e se necessário, retirando algumas máquinas virtuais de provedores de IaaS (por exemplo, Amazon) para fazer alguns cálculos numéricos e apenas enviar de volta a saída para o Google App Engine.

Dessa forma, você obtém o melhor dos dois mundos - você pode desenvolver aplicativos escalonáveis ​​rapidamente no GAE e, em seguida, sempre pode aumentá-lo executando qualquer programa que desejar nas máquinas virtuais da Amazon.

joemar.ct
fonte
Parece interessante @ joemar.ct! Que tipo de tarefa seria? Onde posso encontrar tutoriais sobre como fazer isso?
Andru
2

Isso está sempre mudando, agora o Windows Azure também oferece suporte a VM, portanto, também é um provedor IaaS agora.

Albert Cheng
fonte