Por que as pessoas usam o Heroku quando a AWS está presente? O que distingue o Heroku da AWS? [fechadas]


1102

Sou um programador iniciante de RoR que planeja implantar meu aplicativo usando o Heroku. As notícias de meus outros amigos conselheiros dizem que o Heroku é realmente fácil, bom de usar. O único problema é que ainda não faço ideia do que o Heroku faz ...

Eu olhei para o site deles e, em poucas palavras, o que o Heroku faz é ajudar no dimensionamento, mas ... por que isso importa? Como o Heroku ajuda com:

  1. Velocidade - minha pesquisa sugeriu que a implantação da AWS na costa leste dos EUA seria a mais rápida se eu visasse um público americano / asiático.

  2. Segurança - Quão seguros eles são?

  3. Escalonamento - Como ele realmente funciona?

  4. Eficiência de custos - existe algo como um dinamômetro que facilita o dimensionamento.

  5. Como eles se saem contra seus concorrentes? Por exemplo, Engine Yard e bluebox ?

Por favor, use termos leigos em inglês para explicar ... Sou um programador iniciante.


267
Na verdade, eu uso por causa do plano gratuito;).
WEDDINGCAKES

56
Você deveria ter perguntado qual a diferença entre o pé de feijão elástico Heroku e AWS. Caso contrário, você obterá as respostas usuais "PaaS vs IaaS", não o que você provavelmente está procurando.
Jus12

38
desenvolva no heroku, dimensione-o no heroku, inove no heroku ... então, quando a ideia chegar aos negócios, transfira para aws ... como quando você está contratando.
Muhammad Umer

10
Pode ser difícil para migrar uma vez que você estiver usando alguns serviços e necessidade de trasfer, configurar, testar tudo ... Ele vai definitivamente ter um custo
Paolo

37
Uma das minhas coisas favoritas sobre o Heroku é a implantação automática do Github, para que eu possa ter uma productionfilial no meu repositório. Sempre que um novo commit é enviado para esse repositório, o Heroku o agarra, cria e implanta automaticamente. Não preciso me preocupar com nada do lado do servidor!
Razi Shaban

Respostas:


245

O AWS / Heroku é gratuito para pequenos projetos de hobby (para começar).

Se você deseja iniciar um aplicativo imediatamente, sem muita personalização da arquitetura, escolha Heroku .

Se você deseja se concentrar na arquitetura e poder usar diferentes servidores da Web, escolha AWS . A AWS consome mais tempo com base em qual serviço / produto você escolhe, mas pode valer a pena. A AWS também vem com muitos serviços e produtos de plugins.


Heroku

  • Plataforma como serviço (PAAS)
  • Boa documentação
  • Possui ferramentas e arquitetura integradas.
  • Controle limitado sobre a arquitetura ao projetar o aplicativo.
  • A implantação é resolvida (automática via GitHub ou manual via comandos git ou CLI).
  • Não consome tempo.

AWS

  • Infraestrutura como serviço (IAAS)
  • Versátil - possui muitos produtos, como EC2, LAMBDA, EMR, etc.
  • Pode usar uma instância dedicada para obter mais controle sobre a arquitetura, como escolher o sistema operacional, a versão do software etc. Há mais de uma camada de back-end.
  • O Elastic Beanstalk é um recurso semelhante ao PAAS do Heroku.
  • Pode usar a implantação automatizada ou criar seu próprio.

7
O ElasticBeanstalk é muito mais econômico do que o Heroku, pois não há marcação para o serviço além dos servidores que você usa. Você também pode usar o ElasticBeanstalk com o nível gratuito da AWS aws.amazon.com/elasticbeanstalk/pricing
Zags

25
@Zags "rentável" é uma questão de opinião. Se eu puder criar e implantar um aplicativo Heroku em menos de um minuto e levar potencialmente horas para configurar o Beanstalk - isso não é rentável, considerando que várias horas de tempo do desenvolvedor destroem todas as "economias" que o Beanstalk pode ter. Depende realmente das prioridades - os recursos de remessa são mais importantes ou a configuração e manutenção da infraestrutura são mais importantes?
Brian Caro

5
A facilidade de configuração do @BrianDear depende da sua familiaridade com os vários sistemas. Mesmo que o ElasticBeanstalk demore mais para configurar, com a mesma familiaridade, a AWS normalmente representa 60% do custo do Heroku (compare um desempenho Heruku-m com um AWS m4.xlarge). Com uma fatura de servidor de apenas US $ 100 / mês, uma economia de 40% recuperará o custo de "várias horas de engineerng" dentro de um ano. Quanto maior a conta do servidor, mais forte é o argumento da AWS.
Zags

4
Demora ~ 5 minutos para implantar no Beanstalk. Escolha plataforma -> Carregar zip -> Regozijar-se. Deseja implantar pressionando para dominar? Passe mais 5 minutos configurando o CodePipeline. Ambos os fluxos de trabalho podem ser feitos usando apenas o console da GUI se a CLI for intimidadora para você.
Anthony Manning-Franklin

1
Infelizmente, a documentação não está listada na AWS. A AWS possui uma das melhores documentações de qualquer tecnologia / plataforma. Eu tinha usado antes mesmo de esta resposta foi postada, circa 2013.
lupchiazoem

2055

Primeiras coisas primeiro, AWS e Heroku são coisas diferentes. A AWS oferece infraestrutura como serviço ( IaaS ), enquanto o Heroku oferece plataforma como serviço ( PaaS) ).

Qual é a diferença? Aproximadamente, o IaaS fornece os componentes necessários para criar coisas sobre ele; O PaaS oferece um ambiente em que você apenas envia código e algumas configurações básicas e obtém um aplicativo em execução. O IaaS pode oferecer mais poder e flexibilidade, com o custo de ter que criar e manter mais você mesmo.

Para que seu código seja executado na AWS e parecido com uma implantação Heroku, você precisará de algumas instâncias do EC2 - uma camada de balanceador de carga / cache instalada (por exemplo, verniz ), e instâncias executando algo como Passageiro e nginx para veicular seu código, convém implantar e configurar uma instância de banco de dados em cluster de algo como PostgreSQL . Você quer um sistema de implantação com algo como o Capistrano e algo que agregue logs.

Isso não é uma quantidade insignificante de trabalho para configurar e manter. Com o Heroku, o esforço necessário para chegar a esse tipo de estágio talvez seja algumas linhas de código do aplicativo e umgit push .

Então você está tão longe e deseja ampliar. Ótimo. Você está usando o Puppet para sua implantação do EC2, certo? Portanto, agora você configura seus arquivos Capistrano para ativar / desativar instâncias, conforme necessário; você reajusta sua configuração do Puppet para que o Varnish esteja ciente das instâncias de trabalho na Web e se agrupe automaticamente entre elas. Ou vocêheroku scale web:+5 .

Espero que isso lhe dê uma idéia da comparação entre os dois. Agora, para abordar seus pontos específicos:

Rapidez

Atualmente, o Heroku é executado apenas nas instâncias da AWS nos us-easteeu-west . Para você, isso soa como o que você deseja. Para outros, é potencialmente mais uma consideração.

Segurança

Eu já vi muitos servidores de produção mantidos internamente que estão muito atrasados ​​em atualizações de segurança ou geralmente mal montados. Com o Heroku, você tem outra pessoa gerenciando esse tipo de coisa, que é uma bênção ou uma maldição, dependendo de como você olha para isso!

Ao implantar, você está efetivamente entregando seu código diretamente ao Heroku. Isso pode ser um problema para você. O artigo deles sobre Dyno Isolation detalha suas tecnologias de isolamento (parece que vários dynos são executados em instâncias individuais do EC2). Vários colegas expressaram problemas com essas tecnologias e a força de seu isolamento; Infelizmente, não estou em posição de conhecimento / experiência suficiente para comentar, mas minhas implantações atuais do Heroku consideram isso "bom o suficiente". Pode ser um problema para você, eu não sei.

Dimensionamento

Eu toquei em como alguém pode implementar isso na comparação IaaS vs PaaS acima. Aproximadamente, seu aplicativo possui um Procfile, que possui linhas do formulário dyno_type: command_to_run, portanto, por exemplo (extraído de http://devcenter.heroku.com/articles/process-model ):

web:    bundle exec rails server
worker: bundle exec rake jobs:work

Isto, com um:

heroku scale web:2 worker:10

resultará em você tendo 2 webdynos e 10worker dynos em execução. Bom, simples, fácil. Observe que este webé um tipo de dinamômetro especial, que tem acesso ao mundo exterior e está por trás de seu belo multiplexador de tráfego da Web (provavelmente algum tipo de combinação Varnish / nginx) que direcionará o tráfego de acordo. Seus funcionários provavelmente interagem com uma fila de mensagens para roteamento semelhante, a partir da qual obterão o local por meio de um URL no ambiente.

Eficiência de custos

Muitas pessoas têm muitas opiniões diferentes sobre isso. Atualmente, são US $ 0,05 / hora por uma hora do dinamômetro, em comparação com US $ 0,025 / hora para uma micro instância da AWS ou US $ 0,09 / hora para uma instância pequena da AWS.

A documentação do dyno do Heroku diz que você tem cerca de 512 MB de RAM, portanto, provavelmente não é irracional considerar um dyno como uma micro instância do EC2. Vale o dobro do preço? Quanto você valoriza o seu tempo? A quantidade de tempo e esforço necessários para desenvolver uma oferta de IaaS para chegar a esse padrão definitivamente não é barata. Realmente não posso responder a essa pergunta para você, mas não subestime os 'custos ocultos' de instalação e manutenção.

(Um pouco à parte, mas se eu me conectar a um dinamômetro daqui ( heroku run bash), uma aparência superficial mostra 4 núcleos /proc/cpuinfoe 36 GB de RAM - isso me leva a acreditar que estou em uma "Instância Extra Extra Grande de Alta Memória " . A documentação do Heroku dyno diz que cada dyno recebe 512 MB de RAM, então estou potencialmente compartilhando com até 71 outros dynos. (Não tenho dados suficientes sobre a homogeneidade das instâncias da AWS do Heroku, portanto, sua milhagem pode variar))

Como eles se saem contra seus concorrentes?

Receio que não possa realmente ajudá-lo. O único concorrente que realmente olhei foi o Google App Engine - no momento em que eu estava procurando implantar aplicativos Java, e a quantidade de restrições em estruturas e tecnologias utilizáveis era incrivelmente desanimadora. Isso é mais do que "apenas uma coisa de Java" - a quantidade de restrições gerais e considerações necessárias ( o FAQ sugere várias) parecia menos conveniente. Por outro lado, implantar no Heroku tem sido um sonho.

Conclusão

Espero que isso responda às suas perguntas (comente se houver lacunas / outras áreas que você gostaria de abordar). Sinto que devo oferecer minha posição pessoal. Eu amo o Heroku por "implementações rápidas". Quando estou iniciando um aplicativo, e quero uma hospedagem barata (o nível gratuito do Heroku é incrível - essencialmente, se você só precisa de um dinamômetro da web e 5 MB de PostgreSQL, é gratuito para hospedar um aplicativo), o Heroku é a minha posição preferencial . Para "Implantação de produção séria" com vários clientes pagantes, com um contrato de nível de serviço, com tempo dedicado para gastar em operações, etc., não consigo me dedicar tanto ao Heroku e depois à AWS ou nossos próprios servidores têm sido a plataforma de hospedagem de escolha.

Em última análise, é sobre o que funciona melhor para você. Você diz que é "um programador iniciante" - pode ser que o uso do Heroku permita que você se concentre em escrever Ruby, e não precise gastar tempo obtendo todas as outras infra-estruturas ao redor do seu código. Eu definitivamente daria uma chance.


Observe que a AWS realmente possui uma oferta PaaS, Elastic Beanstalk , que suporta Ruby, Node.js, PHP, Python, .NET e Java. Eu acho que geralmente a maioria das pessoas, quando vêem "AWS", pula para coisas como EC2 e S3 e EBS, que são definitivamente ofertas de IaaS


33
Observe que agora o pé de feijão elástico suporta totalmente aplicativos ruby ​​atrás do passageiro.
reescrito

4
O Heroku agora também suporta servidores na UE e não apenas na região dos EUA.
Thomas Welton

7
Dado o AWS BeanStalk, toda a discussão sobre como o Heroku é uma solução de PaaS, enquanto a AWS é "apenas" uma oferta de IaaS é invalidada?
Gmu

6
@KristianGlass Seria incrível se pudéssemos obter uma resposta atualizada que realmente analisasse as duas ofertas de PaaS (Beanstalk e Heroku)
Alex Chumbley

3
Que bom que isso tem sido útil para as pessoas :) @Gmu No momento da resposta, o EB era suficientemente limitado, considerando que "AWS" significava "EC2" parecia bastante razoável, mas, como Alex sugere, vou olhar para responder agora que o EB tem melhorou significativamente.
Kristian Vidro

68

Como disse Kristian Glass, não há comparação entre IaaS ( AWS ) e PaaS ( Heroku , EngineYard ).

O PaaS basicamente ajuda os desenvolvedores a acelerar o desenvolvimento do aplicativo, economizando dinheiro e inovando mais importante seus aplicativos e negócios, em vez de definir configurações e gerenciar itens como servidores e bancos de dados. Outros recursos que compram o PaaS são o processo de implantação de aplicativos, como agilidade, alta disponibilidade, monitoramento, escala / descalcificação, necessidade limitada de conhecimento, fácil implantação e custo reduzido e tempo de desenvolvimento.

Mas ainda existe um lado sombrio da PaaS que leva à barreira da adoção da PaaS:

  • Menos controle sobre servidor e bancos de dados
  • Os custos serão muito altos se não forem administrados adequadamente
  • Prematuro e duvidoso nos dias e idades atuais

Além do acima, você deve ter habilidades suficientes para gerenciar seu IaaS:

  • Aquisição de hardware
  • Sistema operacional
  • Software Servidor
  • Ambiente de script do lado do servidor
  • servidor web
  • Sistema de Gerenciamento de Banco de Dados (Mysql, Redis etc)
  • Configurar servidor de produção
  • Ferramenta para teste e implantação
  • Aplicativo de monitoramento
  • Alta disponibilidade
  • Roteamento de balanceamento de carga / HTTP
  • Políticas de backup de serviço
  • Colaboração em equipe
  • Reconstruir produção

Se você tem negócios em pequena escala, o PaaS será a melhor opção para você:

  • Pague conforme o uso
  • Baixo custo inicial
  • Deixe o encanamento para um especialista
  • O PaaS lida com a escala / descalcificação automática, balanceamento de carga, recuperação de desastres
  • O PaaS gerencia todos os requisitos de segurança
  • PaaS gerencia confiabilidade, alta disponibilidade
  • Paas gerencia muitos complementos de terceiros para você

Será uma escolha totalmente individual com base nos requisitos. Você pode obter detalhes sobre meus aplicativos PPT Hosting Rails .


3
Vejo EngineYard e Heroku e, claro, ElasticBeanstalk ... todos executados na AWS abaixo. De fato, existe algum PaaS importante que NÃO seja executado em aws por baixo? Alguma ideia? Cheers
Fattie

5
Joe, eu sei que é tarde, mas para responder sua pergunta, o IBM Bluemix é executado no SoftLayer.
Antonio Cangiano

O PaaS gerencia todos os requisitos de segurança Proteger o servidor, talvez, mas altamente enganador (especialmente em um mundo onde os desenvolvedores parecem assumir que seu sistema é seguro por padrão). Certamente não protegerá você de XSS, CSRF e provavelmente não definirá nenhum cabeçalho HTTP importante para você. Eu só posso vê-lo agora: Thank you for your concerns. We assure you that we take security very seriously and run or systems on secure servers. There is no need to worry about [insert security issue here] as all that is handled by.... -1, mas eu o reverteria se editado corretamente.
Nateowami 7/10

4
Cada vez mais, há uma categoria de soluções PaaS (DIY PaaS) que funcionam em sua própria infraestrutura, abordando algumas das preocupações com a flexibilidade / controle do PaaS. Alguns exemplos: openshift , cloudfoundry , Hasura . Disclaimer: Eu trabalho na Hasura.
Iamnat 16/03

35

Existem várias maneiras diferentes de encarar essa decisão a partir dos objetivos de desenvolvimento, TI e de negócios; portanto, não se sinta mal se parecer esmagador. Mas também - não pense demais na escalabilidade.

Pense nos seus requisitos .

Projetei sites que atendiam mais de 8 milhões de unidades por dia e forneciam terabytes de vídeo por semana baseados em infra-estruturas a partir de US $ 250 mil em hardware de capital por uma enorme equipe de funcionários de TI de US $ MM.

Mas eu também tinha sites menores, projetados para gerar entre US $ 10 e US $ 20 mil por ano, não tinham requisitos de tráfego, db ou processamento muito altos e administrei esses sites em uma conta de hospedagem genérica de US $ 10 / mês sem compromisso.

No futuro, a implantação será mais parecida com o Heroku do que com a AWS, apenas por causa do progresso. Há um valor zero no giro do botão de TI das infraestruturas de Internet em escala, que não é cada vez mais automatizável, e nada disso tem nada a ver com o valor do produto ou serviço que você está oferecendo.

Além disso, lembre-se de um site comercial - escalabilidade é o que costumamos chamar de 'bom problema' - embora os problemas de escalabilidade de sites como o Facebook e o Twitter fossem muito destacados, eles não tiveram efeito negativo sobre o sucesso - as notícias pode até ter contribuído para mais inscrições (toda imprensa é boa imprensa).

Se você tem um serviço que gera mais de 100 mil por dia e está com problemas de dimensionamento, ficarei feliz em tirá-lo de suas mãos, independentemente do idioma, banco de dados, plataforma ou infraestrutura em que você estiver executando!

A escalabilidade é um problema de implementação corrigível - não ter clientes é um problema existencial.


35

Na verdade, você pode usar os dois - você pode desenvolver um aplicativo com os servidores amazon ec2. Em seguida, empurre-o (com git) para o heroku gratuitamente por um tempo (use o nível gratuito do heroku para servi-lo ao público) e teste-o assim. É muito econômico em comparação com o aluguel de um servidor, mas você terá que conversar com uma heroku api mais restritiva, que é algo em que você deve pensar. Fonte: este método foi adotado para uma das minhas aulas on-line "Engenharia de inicialização da Coursera / Stanford por Balaji S. Srinivasan e Vijay S. Pande

Adicionado um esquema para que minha explicação seja mais fácil de entender


15
Qual é o benefício de usar a micro instância como uma máquina de desenvolvimento, em vez de usar o computador local? Não vejo o benefício adicional de adicionar a AWS nesse caso específico. Obrigado!
Mateo

5
provavelmente porque em um ambiente acadêmico que fará com que as instruções para configurar o ambiente dev mais consistente e eles não têm que se preocupar com fazê-lo funcionar no Windows
Jeff Dickey

2
Essa arquitetura ajuda a evitar muitas incompatibilidades do sistema operacional Windows / Linux. E também aprenda o sistema operacional Linux sem precisar instalá-lo em sua máquina local. Se você possui um Mac, isso é menos problemático, mas muitas pessoas usam o Windows.
sivi

13
É chamado de máquina virtual, ainda não vejo muito sentido em fazer isso.
Abe Petrillo

2
Ter uma plataforma separada para preparação e produção é uma ideia super terrível; as principais versões de software diferem de maneiras incompatíveis. Você deve poder executar seu código localmente para desenvolvimento, mesmo que o sistema operacional nativo seja diferente do sistema operacional de produção (na pior das hipóteses, com algo como VMware ou vagrant ou com um emulador se estiver construindo para uma plataforma incorporada; mas, geralmente, é geralmente mais fácil trabalhar com). Só a possibilidade de implantar código remotamente na nuvem é um obstáculo horrível ao rápido desenvolvimento de aplicativos que torna o teste e a depuração desnecessariamente demorados.
Iain Collins

28

Bem, as pessoas costumam fazer esta pergunta: Heroku ou AWS ao começar a implantar algo.

Minha experiência com o uso do Heroku e da AWS, aqui está minha rápida revisão e comparação:

Heroku

  • Um comando para implantar qualquer tipo de projeto: Ruby on Rails, Nodejs
  • Tantos cliques para integrar plugins e terceiros: é super fácil começar com algo.
  • Não possui escala automática; isso significa que você precisa aumentar / diminuir manualmente
  • O custo é caro, especialmente quando o sistema precisa de mais recursos
  • Instância gratuita disponível
  • A instância livre entra em suspensão se estiver inativa.
  • Data center: somente EUA e UE
  • PODE mergulhar / acessar o nível da máquina usando Heroku run bash(Obrigado, MJafar Mash pelo conselho), mas é meio limitado! Você não tem acesso total!
  • Não precisa saber muito sobre DevOps

AWS - EC2

  • Isso é como uma máquina com sistema operacional pré-configurado (ou não), então você precisa instalar software, biblioteca para tornar seu site / serviço online.
  • O plug-in e a biblioteca precisam ser integrados manualmente ou o script de automação (script público e escrito por você)
  • Escalonamento automático e balanceador de carga são os serviços suportados; basta aprender como configurar e integrar ao seu sistema
  • O custo é bastante barato, depende de quais serviços e o número de horas que você o usa
  • Existem várias horas livres para instâncias do T2.micro, mas geralmente você paga alguns dólares por mês (se ainda estiver usando o T2.micro)
  • Sua instância gratuita não dorme, disponível 24 horas por dia, 7 dias por semana (porque você pode pagar por isso :))
  • Data center: em todo o mundo. Escolha a região que melhor se adequa a você.
  • Mergulhe no nível da máquina. Então você pode se divertir
  • Algum conhecimento sobre o DevOps, mas tudo bem, o Stackoverflow é útil lá!

O AWS Elastic Beanstalk é uma alternativa do Heroku, mas mais barato

  • O Elastic Beanstalk foi anunciado como beta público a partir de 2010; ajuda a facilitar o trabalho com a implantação. Para mais detalhes, clique aqui

  • O Beanstalk é gratuito, o custo que você pagará será pelos serviços que você usa e número de horas de uso.

  • Uso o Elastic Beanstalk por um longo tempo e acho que pode ser a substituição do Heroku e mais barato!

Sumário

  • Heroku: Fácil no começo, instância GRATUITA , mas caro depois
  • AWS: Não é fácil, horas livres disponíveis, mais baratas , o Beanstalk deve se preocupar em usar

Então, no meu sistema atual, eu uso o Heroku para teste e o Beanstalk para produção!


3
Eu gosto do jeito que você responde a pergunta. Eu tentei o Heroku e a AWS. Concordo com você para recomendar:Use Heroku for staging, and Beanstalk for production!
Chetabahana 01/07

1
heroku run bashe você tem acesso shell ao seu dyno
Mohammad Jafar Mashhadi

Você pode dar uma estimativa de preços? terei que publicar o Java Web App no ​​Tomcat (framework Spring, angularJS etc.), vamos pensar em cerca de 1000 usuários por mês, cada um usando o aplicativo por 5 minutos. Qual o preço estimado? (como muito baixo uso, mas a disponibilidade para o mês inteiro)
navalha

1
@razor Se você usar a micro instance t2 (boa para pré-produção ou projeto pequeno), o preço é tão baixo que custa entre US $ 5 e US $ 10 por mês, como minha memória no projeto anterior. Os detalhes aqui são aws.amazon.com/ec2/pricing
Pham

e Heroku vai ser muito mais caro? (2 vezes?) Com uso similar? eu sei que as páginas de preços, mas é difícil de calcular / imaginar o quanto de energia da CPU de um aplicativo tão simples terá ou qual será o uso DB depois de meses (DB será muito pequeno de cource)
navalha

27

As respostas existentes são amplamente precisas:

  • O Heroku é muito fácil de usar e implantar, pode ser facilmente configurado para implantar automaticamente um repositório (por exemplo, GitHub), possui muitos complementos de terceiros e cobra mais por instância.

  • A AWS possui uma gama mais ampla de serviços primários com preços competitivos, incluindo DNS, balanceamento de carga, armazenamento barato de arquivos e possui recursos corporativos, como poder definir políticas de segurança.

Para o tl; dr pule para o final deste post.

O AWS ElasticBeanstalk é uma tentativa de fornecer uma plataforma de escalonamento automático e fácil de usar como Heroku. Como ele usa instâncias EC2 (que são criadas automaticamente), os servidores EB podem fazer tudo o que qualquer outra instância EC2 pode fazer e é barato de executar.

A implantação com EB é muito lenta; implantar uma atualização pode levar de 10 a 15 minutos por servidor e implantar em um cluster maior pode levar a melhor parte de uma hora - em comparação com apenas alguns segundos para implantar uma atualização no Heroku. As implantações no EB também não são tratadas de maneira perfeitamente integrada, o que pode impor restrições ao design do aplicativo.

Você pode usar todos os serviços que o ElasticBeanstalk usa nos bastidores para criar seu próprio sistema sob medida (com CodeDeploy, Elastic Load Balancer, Auto Scaling Groups - e CodeCommit, CodeBuild e CodePipeline se você quiser dar tudo de si), mas definitivamente pode gastar um bom tempo. algumas semanas configurando-o pela primeira vez, pois é bastante complicado e um pouco mais complicado do que apenas configurar as coisas no EC2.

O AWS Lightsail oferece uma opção de hospedagem com preço competitivo, mas não ajuda na implantação ou no dimensionamento - é realmente apenas um invólucro para a oferta do EC2 (mas custa muito mais). Ele permite que você execute automaticamente um script bash na configuração inicial, o que é um toque interessante, mas é caro comparado ao custo de apenas configurar uma instância do EC2 (o que você também pode executar programaticamente).

Algumas reflexões sobre a comparação (para tentar responder às perguntas, embora de maneira indireta):

  1. Não subestime a quantidade de administração do sistema de trabalho, incluindo manter tudo o que você instalou atualizado com patches de segurança (e atualizações ocasionais do sistema operacional).

  2. Não subestime o benefício de uma implantação automática, dimensionamento automático e provisionamento e configuração de SSL.

    A implantação automática ao atualizar seu repositório Git é fácil com o Heroku. É quase instantâneo e gracioso, portanto não há interrupções para os usuários finais e pode ser configurado para atualizar somente se os testes / Integração Contínua forem aprovados, para que você não quebre o site se implantar código quebrado.

    Você também pode usar o ElasticBeanstalk para implantação automática, mas esteja preparado para passar uma semana configurando isso pela primeira vez - talvez seja necessário alterar a maneira como implanta e constrói ativos (como CSS e JS) para trabalhar com a maneira como o ElasticBeanstalk lida com implantações ou com a lógica da construção no seu aplicativo para lidar com implantações.

    Lembre-se de estimar os custos de que, para uma implantação sem interrupções no EB, você precisa executar várias instâncias - o EB lança atualizações para cada servidor individualmente para que seu serviço não seja degradado - onde o Heroku cria um novo dinamômetro para você e apenas desaprova o serviço antigo até que todas as solicitações sejam feitas (sendo excluídas).

    Curiosamente, o custo de hospedagem da execução de vários servidores com EB pode ser mais barato que uma única instância do Heroku, especialmente depois de incluir o custo dos complementos.

Algumas outras questões não especificamente perguntadas, mas levantadas por outras respostas:

  1. Usar um fornecedor diferente para produção e desenvolvimento é uma má ideia.

    Estou chorando que as pessoas estejam sugerindo isso. Embora, idealmente, o código deva funcionar perfeitamente em qualquer plataforma razoável, para que seja o mais portátil possível, as versões do software em cada host variam muito e apenas porque o código é executado no preparo não significa que ele será executado na produção (por exemplo, os principais Node.js / As versões Ruby / Python / PHP / Perl podem diferir de maneiras que tornam o código incompatível, geralmente de maneiras silenciosas que podem não ser detectadas, mesmo se você tiver uma cobertura de teste decente).

    Uma boa idéia é aproveitar algo como o Heroku para prototipagem, projetos menores e microsites - para que você possa criar e implantar coisas rapidamente, sem investir muito tempo em configuração e manutenção.

    Considere o custo de execução das instâncias de produção e pré-produção ao tomar essa decisão, sem esquecer o custo de replicar todo o ambiente (incluindo serviços de terceiros, como repositórios / complementos de dados, instalação e configuração de SSL, etc.) .

  2. Se estiver usando a AWS, tenha cuidado com instâncias pré-configuradas da AWS de fornecedores como Bitnami - elas são um pesadelo de segurança. Eles podem expor muitos aplicativos notoriamente vulneráveis ​​por padrão, sem mencioná-lo na descrição.

    Em vez disso, considere usar uma distribuição mainstream bem suportada, como Ubuntu ou Debian (ou CentOS, se você precisar de suporte ao RPM).

    Nota: A oferta da Amazon tem sua própria distribuição chamada Amazon Linux, que usa RPM, mas é específica para EC2 e é menos bem suportada por software de terceiros / código aberto.

  3. Você também pode configurar uma instância do EC2 na AWS (ou Lightsail) e configurar com algo como flynn ou dokku - na qual você pode implantar vários sites facilmente, o que pode valer a pena se você mantiver muitos serviços ou desejar capaz de criar coisas novas facilmente. No entanto, configurá-lo não é tão automático como usar o Heroku e você pode gastar muito tempo configurando e mantendo (até o ponto em que achei a implantação usando o cluster da Amazon e o Docker Swarm para ser mais fácil do que configurá-los; YMMV).

Usei instâncias do AWS EC (sozinho e em clusters), Elastic Beanstalk e Lightsail e Heroku ao mesmo tempo, dependendo das necessidades do projeto em que estou trabalhando.

Eu odeio gastar tempo configurando serviços, mas minha conta Heroku seria milhares por ano se eu a usasse para tudo e a AWS calculasse uma fração do custo.

tl; dr

Se o dinheiro nunca fosse um problema, eu usaria o Heroku para quase tudo, pois economiza muito tempo - mas ainda assim gostaria de usar a AWS para projetos mais complicados, onde preciso da flexibilidade e dos serviços mais avançados que o Heroku não oferece.

O cenário ideal para mim seria se o ElasticBeanstalk funcionasse mais como o Heroku - ou seja, com configuração mais fácil e mais rápida e com um melhor mecanismo de implantação.

Um exemplo de um serviço que é quase isso é now.sh , que realmente usa a AWS nos bastidores, mas torna as implantações e os clusters tão fáceis quanto no Heroku (com SSL, DNS automático, implantações simples, configuração de cluster super fácil e gestão).

Eu o usei bastante nas implantações de aplicativos Node.js. e Docker, a principal ressalva é que as instâncias são compartilhadas (algo refletido em seu menor custo) e atualmente não há opção para comprar instâncias dedicadas. No entanto, a ferramenta de implantação de código aberto 'now' também pode ser usada para implantar em instâncias dedicadas na AWS, bem como no Google Cloud e Azure.


8

Tem sido uma porcentagem significativa de nossos negócios migrando pessoas do Heroku para a AWS. Há vantagens para ambos, mas fica confuso com o Heroku depois de um tempo ... depois que você precisar de um certo nível de complexidade, não será mais fácil manter as limitações do Heroku.

Dito isso, existem cada vez mais opções para ter a facilidade do Heroku e a flexibilidade da AWS ao estar na AWS com ótimas estruturas / ferramentas.


Você pode dar uma estimativa de preços? terei que publicar o Java Web App no ​​Tomcat (framework Spring, angularJS etc.), vamos pensar em cerca de 1000 usuários por mês, cada um usando o aplicativo por 5 minutos. Qual o preço estimado? (como muito baixo uso, mas a disponibilidade para o mês inteiro)
navalha

3

O engraçado é que o Heroku realmente usa a AWS no back-end. Isso elimina toda a sobrecarga e faz o gerenciamento da arquitetura no EC2 para você. (Obteve esse conhecimento de um engenheiro sênior de uma grande empresa durante uma entrevista)


1

Bem! Eu observo que Heroku é famoso em desenvolvedores iniciantes e recém-nascidos, enquanto a AWS tem uma personalidade de desenvolvedor avançada. A DigitalOcean também é um participante importante nesse campo. O Cloudways facilitou muito a criação da pilha da lâmpada com um clique no DigitalOcean e na AWS. Ter todas as atualizações de serviços e pacotes em um clique é muito melhor do que fazer tudo manualmente.

Você pode conferir completamente aqui: https://www.cloudways.com/blog/host-php-on-aws-cloud/


1

Bem, o Heroku usa a AWS em segundo plano, tudo depende do tipo de solução que você precisa. Se você é um especialista em linux e devops, não está preocupado em criar vm a partir do zero, como selecionar uma variedade de opções de escolha, etc., você pode usar a AWS. Se você quiser fazer as coisas no nível da superfície sem ter essas etnologias, pode usar o heroku.


0

O Amazon Web Services (AWS) oferece muitos serviços de IaaS a PaaS com garantia e disponibilidade garantidas de 99,999999999% de dados e infraestrutura. A AWS oferece automação de infraestrutura, juntamente com várias ferramentas para os desenvolvedores direcionarem seu processo de implantação de aplicativos.

Por outro lado, o Heroku é apenas PaaS, que oferece serviços para gerenciar sua plataforma na nuvem deles. Em nenhum lugar está a AWS, seja infraestrutura ou segurança.


6
Citação necessária para: "Em nenhum lugar da AWS se destaca a infraestrutura ou a segurança".
pdoherty926

0

Às vezes, me pergunto por que as pessoas comparam a AWS ao Heroku. A AWS é uma IAAS (infraestrutura como serviço), que fala claramente o quão robusto e calculador o sistema é. Heroku, por outro lado, é apenas um SAAS, é basicamente apenas uma fração dos serviços da AWS. Então, por que lutar com a configuração da AWS quando você pode enviar seu primeiro produto para o alto usando o Heroku?

O Heroku é gratuito, simples e fácil de implantar quase todos os tipos de pilhas na web. O Heroku foi desenvolvido especificamente para contornar todos os problemas de envio do seu aplicativo para um servidor ativo em menos de pouco tempo.

No entanto, convém implantar seu aplicativo usando qualquer um dos tutoriais de ambas as partes e comparar

AWS DOCS e Heroku Docs


0

Embora a AWS e o Heroku sejam plataformas em nuvem, eles são diferentes, pois a AWS é IaaS e o Heroku é PaaS


2
Isso não está correto. A AWS tem ofertas IAAS e PAAS.
Glenn Bech

0

Heroku é como um subconjunto da AWS. É apenas plataforma como um serviço, enquanto a AWS pode ser implementada como qualquer coisa e em qualquer nível.

A implementação depende de qual requisito comercial. Se ele se encaixar em qualquer um, use de acordo.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.