Container Computing e AWS

container_computing_awsGrandes mudanças no mundo da tecnologia parecem vir de duas maneiras. Às vezes, há um grande anúncio espalhafatoso e um salto público visível para o futuro. Na maior parte do tempo, no entanto, a mudança é um pouco mais sutil. Os pioneiros encontram uma nova tecnologia que os tornam mais produtivos e a compartilham entre si. Ao longo do tempo, a notícia se espalha para as outras pessoas. Em algum momento, a “nova tecnologia” de outrora de repente (para aqueles que não haviam prestado atenção nela) parece ter se tornado muito popular, aparentemente da noite para o dia! Este modelo de adoção de tecnologia pode ser visto no recente crescimento da popularidade da container computing (“computação em container”, na tradução livre) exemplificada pela crescente adoção do Docker. Containers são leves, portáteis e auto-suficientes. Melhor ainda: eles podem ser executados em uma ampla variedade de ambientes. Você pode, se quiser, construir e testar um container localmente e depois implementá-lo no Amazon Elastic Compute Cloud (EC2) para a produção.

Benefícios

Vamos analisar alguns dos benefícios obtidos quando da criação de um aplicativo baseado em nuvem como uma coleção de containers, cada um dos quais especificados de forma declarativa e mapeados para um único aspecto altamente específico da arquitetura:

Consistência & Fidelidade – Não há nada pior do que criar algo que funcione muito bem em um ambiente de teste mas que ainda falhe ou execute de forma inconsistente quando em ambiente de produção. Quando criamos e lançamos código de forma ágil, desperdiçar tempo com problemas de depuração que decorrem de diferenças entre os ambientes é uma grande barreira para a produtividade. O modelo de empacotamento declarativo com tudo incluso usado pelo Docker oferece o poder de enumerar as dependências do aplicativo. O aplicativo terá acesso às mesmas bibliotecas e utilitários, independentemente de onde for executado.

Plataforma de Aplicação Distribuída – Se você construir sua aplicação como um conjunto de serviços distribuídos, cada um em um container Docker executando CoreOS, eles podem facilmente encontrar e se conectar uns com os outros, talvez com a ajuda de um scheduler como o Mesosphere. Isso permitirá implementar e escalar facilmente os containers através de um “grid” de instâncias EC2.

Eficiência de Desenvolvimento – Construir a aplicação como uma coleção de containers permite construí-los em paralelo com interfaces rigorosas e bem definidas. Com melhores interfaces entre peças em movimento, o desenvolvedor tem a liberdade de melhorar e revisar implementações por completo sem medo de quebrar o código em execução. Como as dependências do aplicativo são definidas de forma explícita e declarativa, menos tempo será perdido no diagnóstico, identificação e correção de problemas que surgem da falta de pacotes ou de pacotes obsoletos.

Eficiência Operacional – Usar containers permite construir componentes que executam em ambientes isolados (que limitam a capacidade de um container de quebrar acidentalmente a operação de outro), enquanto continuam sendo capazes de compartilhar cooperativamente bibliotecas e outros recursos comuns. Este compartilhamento oportunista reduz a pressão de memória e leva a uma maior eficiência de tempo de execução. Se estiver executando no EC2 (o Docker é suportado diretamente no Amazon Linux AMI e no AWS Elastic Beanstalk e pode ser facilmente utilizado com o OpsWorks da AWS), você pode conseguir o isolamento sem executar cada componente em uma instância separada. Os containers não são substitutos das instâncias; eles estão destinados a executar sobre elas!

Post Original: AWS HUB

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *