Quais são os prós e os contras dos servidores SnowFlakes, servidores Phoenix e servidores imutáveis?

15

Estou curioso sobre uma matriz como a comparação de segurança / facilidade de gerenciamento / capacidade forense para cada tipo de servidor. Também posso esquecer algumas das principais características de cada tipo.

Eu tenho uma idéia geral sobre os tipos, mas uma matriz de referência seria útil na escolha entre eles em alguns casos (quando a automação se torna complexa para o aplicativo, por exemplo).

Para evitar a preocupação de que ela seja muito ampla, acho que dividi-la em múltiplas perguntas dispersaria as informações e que uma pergunta sobre comparação de segurança precisaria comparar também cada tipo.

Tensibai
fonte

Respostas:

15

O termo Phoenix Server foi cunhado por um colega de Martin Fowler e os três termos descritos em pequenos artigos sobre o bliki de Martin.

Os prós e contras de cada servidor são descritos nos artigos. A principal diferença está na maneira como o servidor é gerenciado.

Servidores existem para cumprir a função de um contêiner para alguns aplicativos. Como os aplicativos mudam frequentemente, muitas vezes é necessário alterar alguns atributos do contêiner - como pacotes, configuração etc. Às vezes também é necessário alterar os atributos do contêiner por causa de razões externas, como vulnerabilidades de segurança que exigem correções para ser instalado.

Existem várias maneiras de alterar um servidor existente:

  1. Crie o servidor manualmente inicialmente e continue alterando seu conteúdo (mutando) toda vez que uma alteração for necessária.
  2. "Cozer" uma imagem para um servidor com base em uma receita, geralmente de maneira automatizada (não manualmente). Em seguida, crie servidores a partir dessa imagem. E repita esse processo a cada mudança.

O primeiro é chamado Snowflake, enquanto o último é uma prática que permite os tipos de servidor Phoenix e Immutable. Onde Immutable declara que nenhuma alteração é feita em um servidor existente depois que ele foi criado, e Phoenix significa que um servidor é destruído completamente e um novo é usado para substituí-lo durante o processo de alteração.

Evgeny
fonte
9

Como eu pensava mais em uma lista de vantagens e desvantagens de cada tipo, aqui está a minha opinião (não exaustiva, são as importantes operações em minha opinião):

  1. Servidores de flocos de neve

    • O que são : sistemas com sua configuração específica, nenhum outro servidor no datacenter possui exatamente os mesmos parâmetros. Eles geralmente são administrados manualmente.

    • Vantagens :

      • Ajustado às necessidades do que está sendo executado neles.
      • As atualizações de longa duração geralmente são curtas.
      • Adaptado a casos especiais em que os ajustes são bem documentados pelo produto hospedado.
    • Desvantagens :

      • Às vezes, as atualizações deixam arquivos não utilizados, a limpeza pode ser complexa.
      • Quando as alterações precisam ser feitas em várias máquinas, leva um tempo.
      • Nada impede mudanças não documentadas.
      • No caso de corrupção, é necessário reconstruir um sistema operacional básico e restaurar; alguns ajustes do sistema operacional não podem ser restaurados e devem ser reaplicados; é fácil deslizar sobre uma linha e esquecer um ajuste importante.
      • Geralmente demorado para provisionar devido à configuração manual.
  2. Servidores Phoenix

    • O que são : Configurados automaticamente por algum código.
    • Vantagens :

      • Definido pelo código, com capacidade de versão.
      • Replicado facilmente para um ponto no tempo.
      • Atualizações curtas e duradouras também.
      • Alterações em arquivos controlados são documentadas e não podem ser esquecidas.
    • Desvantagens :

    • Às vezes, as atualizações deixam arquivos não utilizados, a limpeza pode ser complexa.
    • Nem tudo está sob gerenciamento de código; alguns ajustes de um humano podem ser perdidos se não forem incluídos na automação.
  3. Servidores imutáveis

    • O que são :
      • Provisionamento automático automatizado a partir de uma imagem principal, geralmente sem acesso.
    • Vantagens :

      • Definido pelo código, com capacidade de versão.
      • Replicado facilmente para um ponto no tempo.
      • Superfície de ataque reduzida devido à remoção usual do acesso remoto.
      • Configuração fixa, nenhuma mudança pode quebrar algo
      • Facilmente escalável 'on demand' a partir da imagem principal.
    • Desvantagens :

      • Eles são imutáveis, você deve garantir uma atualização rápida em caso de uma falha de 0 dia afetá-lo.
      • Nem todos os aplicativos se encaixam bem nesse modelo (bancos de dados, por exemplo, nem sempre é possível uma substituição completa nos mesmos dados; é preciso lidar com a migração).
      • Traz alguns novos desafios para a análise forense do gerenciamento de falhas e logs.

Nenhum desses padrões é exclusivo, você deve escolher o melhor de acordo com sua necessidade real. Os flocos de neve trazem muitas preocupações em caso de recuperação após um desastre; portanto, a escolha geralmente é maior entre Phoenix e Imutável.

Tensibai
fonte
2

Todos os três são tipos de padrões, não é o caso de escolher qual usar em qualquer circunstância específica, mas o caso de saber quando reconhecer os padrões que podem ajudá-lo ou prejudicá-lo.

Servidor do floco de neve

Um servidor Snowflake é um antipadrão que representa o caso quando um servidor evolui de maneira descontrolada até o ponto em que não pode ser facilmente reproduzido.

Eu tive vários desentendimentos com esse tipo de servidor em produção, eles são bastante fáceis de detectar, pois geralmente há um grande número de alterações e comentários com falha, como "isso [a alteração] funcionou em Desenvolvimento / Teste / UAT / Staging "

Phoenix Servier

Um servidor Phoenix é mais um princípio do que um padrão, como Martin Fowler coloca:

Um servidor deve ser como uma fênix, saindo regularmente das cinzas. [uma]

Se você aplicasse o gerenciamento de serviços de TI (ITSM) ou a linguagem ITIL na mesma situação, provavelmente o chamaria de plano de continuidade de serviços de TI ou plano de recuperação:

Um plano separado para cada serviço deve fornecer procedimentos detalhados e diretrizes passo a passo para cada estágio de um incidente, para que as equipes de recuperação possam restaurar os serviços e, assim, atender às RTOs de processo e componente acordadas.

Servidor Imutável

Um Imutável servidor ou Infrastructure Imutável é o processo pelo qual nós tratamos todos os implantado infra-estrutura, configuração e código como totalmente imutável, ou seja imutável. Quando implantamos algo novo, criamos uma nova infraestrutura e implantamos o código para isso. Curiosamente, isso principalmente satisfaz as necessidades tradicionalmente atendidas pela Evergreening .


Notas

  • a: O colega de Martin, Kornelis Sietsma , criou o termo "Phoenix Server" em uma lista de discussão interna.
Richard Slater
fonte