Nos últimos anos vários desenvolvedores Netflix têm utilizado ferramentas self-service para criar e implementar centenas de aplicativos e serviços para a nuvem da Amazon. Uma dessas ferramentas é o Asgard, uma interface web para implementações de aplicativos e gerenciamento de nuvem.O nome Asgard vem do Deus nórdico do trovão e do relâmpago, um trocadilho de onde os desenvolvedores Netflix precisam chegar para controlar as nuvens. O Asgard acaba de ser lançado em código aberto no Github e está disponível para download e uso por qualquer pessoa. Tudo o que o interessado precisa para usuá-lo é de uma conta na Amazon Web Services. Assim como outros projetos de código aberto da Netflix, o Asgard é liberado sob a Licença Apache, versão 2.0. Note que Asgard foi originalmente chamado de Application Console Netflix, ou NAC.
Linguagem visual para a nuvem
Para ajudar as pessoas a identificar diversos tipos de entidades na nuvem, o Asgard usa o conjunto de ícones de código aberto Tango, com algumas adições. Estes ícones ajudam a estabelecer uma linguagem visual para auxiliar as pessoas a entender o que estão olhando enquanto navegam. Ícones Tango parecem familiar porque eles também são usados ​​por Jenkins, Ubuntu, Mediawiki, Filezilla e Gimp. Abaixo uma amostra de ícones Asgard na nuvem:
O modelo de nuvem da Netflix inclui conceitos que a Amazon Web Services (AWS) não suporta diretamente: Aplicativos e Clusters.AplicativosObserve abaixo um diagrama de alguns dos objetos da Amazon necessários para executar um aplicativo front-end único, como o serviço de preenchimento automático da Netflix:Segue um rápido resumo das relações entre esses objetos no ambiente de nuvem:- Um Grupo de Dimensionamento Automático (ASG) pode anexar zero ou mais Balanceadores de Carga Elástica (ELBs) para novas instâncias;- Um ELB pode enviar tráfego de usuários para instâncias;- Um ASG pode iniciar e encerrar instâncias;- Para cada lançamento de instância, um ASG usa uma configuração de lançamento;- A configuração de lançamento especifica quais Amazon Machine Image (AMI) e quais grupos de segurança serão usados ao iniciar uma instância;- O AMI contém todos os bits que entrarão em cada instância, incluindo o sistema operacional, infraestrutura comum, como o Apache e o Tomcat, e uma versão específica de um aplicativo específico;- Grupos de segurança podem restringir as fontes de tráfego e as portas para as instâncias.Trata-se de diversos recursos para manter o controle de para um aplicativo. Quando há um grande número desses objetos de nuvem em uma arquitetura orientada a serviços (como a Netflix tem), é importante para um usuário ser capaz de encontrar todos os objetos relevantes para seu aplicativo em particular. O Asgard usa um registro de aplicativo em SimpleDB e convenções de nomenclatura para associar múltiplos objetos de nuvem com um único aplicativo. Cada aplicativo tem um dono e um endereço de e-mail para estabelecer quem é o responsável pela existência e estado de objetos do aplicativo associados em ambiente de nuvem.O Asgard limita o conjunto de caracteres permitidos no nome do aplicativo para que os nomes dos outros objetos da nuvem possam ser analisados ​​para determinar sua associação com um aplicativo.Abaixo uma imagem do Asgard mostrando um subconjunto filtrado dos aplicativos em execução em uma conta de produção na nuvem da Amazon na região US-East-1:Captura de tela com detalhes para um único aplicativo, com links para os objetos nuvem relacionados:ClusterNo topo do Auto Scaling Group (ASG) construído e suportado pela Amazon, o Asgard infere um objeto chamado de cluster que contém um ou mais ASGs. Os ASGs são associados pela convenção de nomenclatura. Quando um ASG é criado dentro de um cluster, um número de versão incrementada é anexado ao "nome de base" do cluster para formar o nome do novo ASG. O cluster oferece aos usuários Asgard a capacidade de executar uma implementação que pode ser revertida rapidamente. Exemplo: durante a implementação, o cluster obiwan contém o ASGs obiwan-v063 e o obiwan-v064. Abaixo uma imagem de um cluster em meio à implementação:O ASG antigo é "disabled", o que significa que não está tendo tráfego, mas continua disponível em caso de algum problema com o ASG novo. O tráfego vem de ELBs e/ou do Discovery, um serviço interno da Netflix que ainda não é open source.
Rollback rápidoUma das principais características do Asgard é a capacidade de usar a tela de cluster mostrada acima para implementar uma nova versão de um aplicativo de forma que possa ser revertido ao primeiro sinal de problemas. Este método requer mais instâncias para estar em uso durante a implementação, mas pode reduzir a duração das interrupções de serviço causadas por implementações ruins. O diagrama animado abaixo mostra um processo simplificado de usar a interface de cluster para tentar uma implementação e revertê-lo rapidamente quando há um problema:A animação ilustra o seguinte caso de uso para implementação:1. Cria o novo ASG obiwan-v0642. Habilita o tráfego para obiwan-v0643. Desativa o tráfego em obiwan-v0634. Monitora os resultados e percebe que as coisas estão indo mal5. Reativa o tráfego em obiwan-v0636. Desativa o tráfego em obiwan-v0647. Analisa os logs em servidores ruins para diagnosticar problemas8. Deleta o obiwan-v064Impulso evolutivoO Asgard também fornece um sistema de distribuição alternativo chamado de impulso evolutivo. Isso é semelhante a uma implementação convencional de centro de dados de um cluster em servidores de aplicativos. Apenas um ASG é necessário. Ocorrências antigas são graciosamente eliminadas e substituídas por novas instâncias de uma a duas de cada vez até que todas as instâncias da ASG sejam substituídas. Os impulsos evolutivos são úteis:1. Se as instâncias de um ASG são fragmentadas, de modo que cada instância tem um propósito distinto, que não deve ser repetido por outra instância;2. Se os mecanismos de agrupamento do aplicativo (como Cassandra) não podem suportar aumentos repentinos na contagem de instâncias para o cluster.Desvantagens dos impulsos evolutivos:1. Substituir as instâncias em pequenos lotes pode levar muito tempo;2. Inverter uma implementação ruim pode levar um longo tempo.Automação de tarefasVárias tarefas comuns são construídas no Asgard para automatizar o processo de implementação. Abaixo uma animação que mostra uma visão em tempo comprimido de um impulso evolutivo automático de 14 minutos em ação:Escala automáticaA Netflix volta-se para o ASG como a unidade primária de implementação, assim como o Asgard também fornece uma variedade de controles gráficos para modificar um ASG e criar métricas direcionadas para escala automática quando desejado.
E por que não o AWS Management Console?
O AWS Management Console tem seus usos para alguém com a senha da conta da Amazon em mãos e que precisa configurar algo que o Asgard não fornece. No entanto, para as operações de grande escala de todos os dias, o AWS Management Console ainda não atende às necessidades do modelo de uso na nuvem da Netflix, razão pela qual foi construído o Asgard. Aqui estão algumas das razões para isso:Ocultar chaves da AmazonA Netflix concede a seus funcionários uma série de liberdades e responsabilidades, incluindo direitos e deveres de reforço e reparação de sistemas de produção. A maioria desses sistemas são executados na nuvem da Amazon. Embora a equipe da Netflix queira permitir que centenas de engenheiros gerenciem seus próprios aplicativos em nuvem, foi decidido não fornecer todas as chaves secretas para acessar as contas da empresa diretamente na Amazon. Fornecer um console interno, contudo, permite conceder aos usuários do Asgard o acesso ao às contas na Amazon sem contar a muitos funcionários as senhas das nuvens compartilhadas. Essa estratégia também salva à equipe da Netflix a necessidade de atribuir e revogar centenas de identidades e acessos de gerenciamento de contas (IAM) de nuvem para os funcionários.Auto Scaling Groups (ASG)A AWS Management Console não tem suporte para Auto Scaling Groups (ASG). A Netflix depende dos ASGs como unidade básica de implementação e gerenciamento para instâncias de aplicativos. Um dos objetivos de tornar aberto o código do Asgard é ajudar outros clientes da Amazon a fazerem o melhor uso dos sofisticados recursos de auto scaling da Amazon. Os ASGs compõem grande parte da fórmula da Netflix para ofertar confiabilidade, redundância, redução de custos, clustering, descoberta, facilidade de implementação, e a capacidade de reverter uma má implementação rapidamente.Aplicar convençõesComo qualquer coleção de coisas que os usuários têm permissão para criar e fazer crescer, a nuvem pode facilmente tornar-se um lugar confuso e bagunçado. Parte da arquitetura de nuvem da Netflix é a usada para serviços registrados associados a objetos da nuvem por convenção de nomenclatura. O Asgard aplica essas convenções de nomenclatura, a fim de manter a nuvem organizada e tornar possível auditar e limpar regularmente, na medida em que as coisas vão se tornando obsoletas, confusas ou esquecidas.Registro de logAté o presente momento, o console da AWS não expõe um registro de log das ações recentes do usuário em uma conta. Isso torna difícil determinar quem chamar quando um problema começa, bem como determinar que mudanças recentes podem estar relacionadas ao problema. A falta de registro também evita o início de quaisquer subsistemas sensíveis que requeiram auditabilidade legal.Integrar sistemasTer um console próprio concede o poder para que a Netflix decida quando querer adicionar pontos de integração com seus sistemas de engenharia, tais como o Jenkins e o serviço interno Discovery.Automatizar fluxo de trabalhoVárias etapas entram em um processo de implementação segura e inteligente. Ao conhecer casos de uso previamente, o Asgard pode executar todas as medidas necessárias para uma implementação com base em uma submissão de formulário.Simplifique a REST APIPara operações mais comuns que outros sistemas precisem realizar, a Netflix pode expor e publicar sua REST API própria e fazer exatamente o que deseja, porém de forma a esconder algumas das etapas complexas para o usuário.
O Asgard tem sido uma das principais ferramentas para a implementação de aplicativos e gerenciamento de nuvem da Netflix durante anos. Ao lança-lo para a comunidade open source, é esperado que mais pessoas descubram as facilidades de se trabalhar com a nuvem da Amazon e com o Auto Scaling, mesmo em larga escala como a Netflix. Mais recursos do Asgard serão lançados regularmente, e usuários no GitHub são encorajados a participar também do projeto propondo sugestões e melhorias.