Configurar aplicativos e máquinas virtuais

Concluído

É comum criar aplicativos e outros códigos personalizados para sua solução do Azure. Aplicativos personalizados podem incluir sites, APIs e aplicativos em segundo plano que são executados sem nenhuma interação humana. Nesta unidade, você aprenderá a criar um fluxo de trabalho para criar e implantar um aplicativo junto com sua infraestrutura.

Criar aplicativos

Muitos tipos de aplicativos precisam ser compilados ou criados para serem usados. O processo de criação usa o código-fonte para o aplicativo, executa uma sequência de atividades nele e cria um conjunto de arquivos implantáveis.

O processo de build compila o código-fonte em arquivos binários ou executáveis. Um processo de build normalmente inclui outras atividades, como a compactação dos arquivos de imagem que serão oferecidos aos usuários do site, o lint do código para verificar se ele segue boas práticas de codificação e a execução de testes de unidade que verificam o comportamento de partes individuais do aplicativo. Você também pode executar etapas como assinar digitalmente os arquivos para ajudar a garantir que eles não possam ser modificados.

Seja qual for a série de etapas, a saída do processo de build é um artefato implantável. Normalmente, o artefato é salvo no sistema de arquivos do executor do fluxo de trabalho. As fases partes posteriores de seu fluxo de trabalho precisam trabalhar com o artefato para implantá-lo em seus ambientes e testá-lo à medida que ele progride por meio de portões de qualidade que você define em seu fluxo de trabalho.

Observação

Talvez você já tenha ouvido falar dos termos integração contínua e implantação contínua ou CI/CD. Um processo de compilação está dentro da parte de integração contínua do fluxo de trabalho.

Artefatos do fluxo de trabalho

Os artefatos gerados em seu fluxo de trabalho não são armazenados no repositório Git. Eles são derivados do código-fonte, mas não são o próprio código, portanto, não pertencem a um repositório de controle do código-fonte. Eles são criados no sistema de arquivos do executor do fluxo de trabalho. Um novo executor é criado para cada trabalho do fluxo de trabalho. Portanto, você precisa de uma maneira de compartilhar os arquivos entre trabalhos e executores.

Os artefatos do fluxo de trabalho possibilitam armazenar arquivos no GitHub Actions e estão associados à determinada execução do fluxo de trabalho. Você usa a ação do fluxo de trabalho actions/upload-artifact para instruir o GitHub Actions a carregar um arquivo ou uma pasta do sistema de arquivos do executar como um artefato do fluxo de trabalho:

- name: Upload folder as a workflow artifact
  uses: actions/upload-artifact@v3
  with:
    name: my-artifact-name
    path: ./my-folder

A propriedade path é o local que contém seu código compilado ou arquivos de saída no sistema de arquivos do executor do trabalho. O conteúdo nesse local será carregado no artefato. Você pode especificar um único arquivo, vários arquivos ou uma pasta.

Cada artefato tem um nome, que você especifica usando a propriedade name. Use o nome do artefato para fazer referência a ele posteriormente no fluxo de trabalho. Os trabalhos do fluxo de trabalho subsequentes podem baixar o artefato para que possam trabalhar com ele, por exemplo, implantar o site no servidor que o hospeda:

Diagrama mostrando o carregamento de um fluxo de trabalho e fazendo referência a um artefato chamado “Website”.

Use a ação actions/download-artifact para baixar todos os artefatos o fluxo de trabalho:

- uses: actions/download-artifact@v3

Ou especifique o nome do artefato para baixar apenas um artefato específico:

- uses: actions/download-artifact@v3
  with:
    name: my-artifact-name

Implantar aplicativos

O processo de compilação de um aplicativo gera e carrega um artefato implantável. Os trabalhos posteriores no fluxo de trabalho implantam o artefato. A maneira como você implanta um aplicativo depende do serviço usado para hospedá-lo.

Implantar no Serviço de Aplicativo do Azure

Sua empresa de brinquedo usa o Serviço de Aplicativo do Azure para hospedar seu site. Você pode criar e configurar um aplicativo do Serviço de Aplicativo usando Bicep, mas quando chegar a hora de implantar o aplicativo em si, você terá várias opções para obter o aplicativo compilado na infraestrutura de hospedagem. Essas opções são gerenciadas como parte do plano de dados do Serviço de Aplicativo.

A abordagem mais comum é usar a ação azure/webapps-deploy:

- uses: azure/webapps-deploy@v2
  with:
    app-name: my-app-service
    package: my-artifact-name/website.zip

Você precisa fornecer várias informações para implantar seu aplicativo no Serviço de Aplicativo. Essas informações incluem o nome do recurso do aplicativo do Serviço de Aplicativo, que você especifica usando a propriedade app-name. Como você aprendeu na unidade anterior, deverá adicionar uma saída ao arquivo Bicep e usar uma variável do fluxo de trabalho para propagar o nome do aplicativo pelo seu fluxo de trabalho. Você também precisa especificar um arquivo .zip com o aplicativo a ser implantado usando a propriedade package. Normalmente, esse é o caminho para um artefato do fluxo de trabalho.

O Serviço de Aplicativo tem um sistema de autenticação de plano de dados próprio que usa para implantações. A ação azure/webapps-deploy trata o processo de autenticação automaticamente para você:

Diagrama ilustrando o processo de troca de credenciais.

A ação azure/webapps-deploy usa a identidade associada à sessão ativa do Azure do seu trabalho, na qual você se conectou usando uma identidade da carga de trabalho . A ação cria e baixa as credenciais necessárias para a implantação . Em seguida, ela usa as credenciais de implantação quando se comunica com a API do plano de dados do Serviço de Aplicativo .

O Serviço de Aplicativo também fornece alguns outros recursos relacionados à implantação, incluindo slots de implantação. Os slots ajudam você a implantar novas versões de seus aplicativos com segurança sem tempo de inatividade. Eles também ajudarão você a preparar e a abrir a nova versão do aplicativo antes de enviar o tráfego de produção para ele. Não usamos slots neste módulo, mas fornecemos um link para obter mais informações sobre eles na página Resumo no final do módulo.

Implantar aplicativos em outros serviços do Azure

O Azure oferece muitas outras opções para hospedar seus aplicativos, cada uma delas com a própria abordagem de implantação.

O Azure Functions é criado no Serviço de Aplicativo e usa um processo de implantação semelhante ao descrito anteriormente.

Se você implantar em uma máquina virtual, normalmente precisará se conectar à instância de máquina virtual para instalar seu aplicativo. Geralmente, você precisa usar ferramentas especializadas, como Chef, Puppet ou Ansible, para orquestrar uma implantação em máquinas virtuais.

Se você usar o Kubernetes ou o Serviço de Kubernetes do Azure (AKS), normalmente usará uma abordagem um pouco diferente para criar e implantar sua solução. Depois que o aplicativo é elaborado, seu fluxo de trabalho cria uma imagem de contêiner e a publica em um registro de contêiner, do qual o cluster do Kubernetes a lê. Como o registro de contêiner mantém o aplicativo compilado, você geralmente não usa um artefato do fluxo de trabalho.

Neste módulo, vamos nos concentrar no Serviço de Aplicativo do Azure para ilustrar os conceitos de fluxo de trabalho envolvidos. Na página Resumo no final do módulo, fornecemos links para mais informações sobre como implantar em outros serviços de hospedagem.

Testar aplicativos em seu fluxo de trabalho

Em um módulo anterior, você aprendeu sobre o valor e a importância de executar testes automatizados de seu fluxo de trabalho. Quando você implanta um aplicativo, é uma boa prática para o fluxo de trabalho executar alguns testes que invoquem o código do aplicativo. Esses testes reduzem o risco de que um erro de aplicativo ou de implantação possa causar tempo de inatividade. Em cenários mais avançados, você pode até mesmo executar um conjunto de casos de teste em seu aplicativo, como invocar APIs ou enviar e monitorar uma transação sintética.

Muitos aplicativos implementam pontos de extremidade de verificação de integridade. Quando um ponto de extremidade de verificação de integridade recebe uma solicitação, ele executa uma série de verificações no site, como garantir que os bancos de dados e serviços de rede estejam acessíveis pelo ambiente de aplicativo. A resposta que o site retorna indica se o aplicativo está íntegro. Os desenvolvedores podem escrever e personalizar verificações de integridade próprias para atender aos requisitos do aplicativo. Quando o aplicativo tem um ponto de extremidade de verificação de integridade, geralmente faz sentido monitorar o seu fluxo de trabalho após a conclusão da fase de implantação.

Seu fluxo de trabalho de implantação

No próximo exercício, você atualizará seu fluxo de trabalho de implantação para adicionar novos trabalhos para compilar o aplicativo do site e implantá-lo em cada ambiente:

Diagrama mostrando o fluxo de trabalho revisado, incluindo um novo trabalho de compilação e um trabalho de implantação de aplicativo.