Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

O redis no Heroku é possível sem um complemento?


Executar redis em um dinamômetro é uma ideia interessante. Você provavelmente precisará criar um pacote de compilação do redis para que seus dynos possam baixar e executar o redis. Como "o redis não tem dependências além de um compilador GCC e libc em funcionamento", isso deve ser tecnicamente possível.

No entanto, aqui estão alguns problemas que você pode encontrar:

  1. Os dynos Heroku não têm um endereço IP estático

    "dynos não têm endereços IP estáticos .. você nunca pode acessar um dinamômetro diretamente por IP"

    Mesmo se você configurar e executar o Redis em um dyno, não conheço uma maneira de localizar essa instância do dyno e enviar solicitações de redis. Isso significa que seu servidor Redis provavelmente terá que ser executado no mesmo dyno que seu servidor web/aplicativo principal.

    Isso também significa que, se você tentar dimensionar seu aplicativo criando mais dynos da Web, também criará mais instâncias de redis locais. Os dados não serão compartilhados entre eles. Isso não me parece um design particularmente escalável, mas se seu aplicativo for pequeno o suficiente para exigir apenas um dinamômetro da Web, ele pode funcionar.

  2. Os dynos Heroku têm um sistema de arquivos efêmero

    "nenhum arquivo gravado é visível para processos em qualquer outro dinamômetro e qualquer arquivo gravado será descartado no momento em que o dinamômetro for interrompido ou reiniciado"

    Por padrão, o Redis grava seu arquivo RDB e log AOF no disco. Você precisará fazer backup regularmente deles em algum lugar para poder buscar e restaurar após a reinicialização do dinamômetro. Consulte a documentação sobre persistência do Redis.

  3. Os dynos Heroku são reiniciados com frequência

    "Dynos são ciclados pelo menos uma vez por dia, ou sempre que o dyno manifold detecta uma falha no hardware subjacente"

    Você precisará iniciar seu servidor redis toda vez que o dinamômetro for iniciado e restaurar os dados.

  4. Os dinos Heroku têm 512 MB de RAM

    "Cada dinamômetro é alocado 512 MB de memória para operar dentro"

    Se o seu servidor Redis estiver sendo executado no mesmo dinamômetro que seu servidor web, subtraia a RAM necessária para seu aplicativo principal. De quanta memória Redis você precisa?

    Aqui estão algumas perguntas que tentam estimar e rastrear o uso de memória do Redis:
    • Redis:proporção do tamanho do banco de dados para a memória?
    • Criação de perfil do uso de memória do Redis

--

Geral: Sugiro ler os 12 Factor Apps para entender um pouco mais sobre o modelo de aplicação pretendido do heroku.

A versão curta é que os dynos se destinam a ser trabalhadores independentes que podem ser facilmente criados e descartados para atender à demanda e que os dynos acessam vários recursos para ler ou gravar dados e servir seu aplicativo. Uma instância redis é um exemplo de recurso. Como você pode ver nos itens acima, ao usar um complemento redis, você obtém algo que é garantido como estático, estável e acessível.

Material de leitura:
  1. http://www.12factor.net/ - especificamente Processos e Serviços
  2. O modelo de processo Heroku
  3. Blog Heroku - O modelo de processo