Implantação da Web corporativa: Visão geral do cenário
por Jason Lee
Esse conjunto de tutoriais usa uma solução de exemplo com um nível realista de complexidade, juntamente com um cenário de implantação empresarial fictício, para fornecer uma implementação de referência e fornecer às tarefas e passo a passo um contexto comum. Este tópico descreve o cenário do tutorial e apresenta a solução de exemplo.
Descrição do cenário
A Fabrikam, Inc., uma empresa fictícia, está criando uma solução que permite que as equipes de vendas remotas armazenem e recuperem informações de contato de uma interface da Web.
Os processos de ALM (Gerenciamento do Ciclo de Vida do Aplicativo) na Fabrikam, Inc. exigem que a solução seja implantada em três ambientes de servidor em vários estágios do processo de desenvolvimento de software:
- Um ambiente de teste de desenvolvedor ou "área restrita".
- Um ambiente de preparo baseado em intranet.
- Um ambiente de produção voltado para a Internet.
Cada um desses ambientes tem diferentes requisitos de configuração e segurança e cada um apresenta desafios de implantação exclusivos.
A infraestrutura de servidor da Fabrikam, Inc.
Esta é a infraestrutura de desenvolvimento e implantação de alto nível na Fabrikam, Inc.
As estações de trabalho do desenvolvedor, a infraestrutura de controle do código-fonte, o ambiente de teste do desenvolvedor e o ambiente de preparo residem na rede intranet dentro do domínio Fabrikam.net. O ambiente de produção reside em uma rede de perímetro (também conhecida como DMZ, zona desmilitarizada e sub-rede exibida), que é isolada da rede intranet por um firewall. Esse é um cenário de implantação comum: normalmente, você isola seus servidores Web voltados para a Internet de sua infraestrutura de servidor interno por meio do uso de firewalls ou servidores de gateway.
Neste exemplo:
- Um servidor do Team Foundation Server (TFS) 2010 com um servidor de build separado fornece funcionalidade de CI (controle do código-fonte e integração contínua).
- O ambiente de teste do desenvolvedor inclui um servidor Web dos Serviços de Informações da Internet (IIS) 7.5 e um servidor de banco de dados SQL Server 2008 R2.
- O ambiente de produção inclui vários servidores Web do IIS 7.5 sincronizados por um servidor de controlador do WFF (Web Farm Framework), juntamente com um servidor de banco de dados SQL Server 2008 R2. Na prática, o servidor de banco de dados pode usar clustering ou espelhamento para melhorar a escalabilidade e a disponibilidade.
- O ambiente de preparo foi projetado para replicar a configuração do ambiente de produção o mais próximo possível.
- As políticas de firewall e isolamento de rede não permitem a implantação direta e automatizada da intranet para a rede de perímetro.
A configuração de cada um desses ambientes é descrita mais detalhadamente no segundo tutorial, Configurando ambientes de servidor para implantação da Web.
Funções de equipe para ALM
Esses usuários estão envolvidos na criação, gerenciamento, criação e publicação da solução do Contact Manager:
Matt Hink é desenvolvedor de aplicativos Web na Fabrikam, Inc. Ele faz parte da equipe que desenvolveu a solução do Contact Manager usando o Visual Studio 2010. Matt tem direitos de administrador completos nos servidores no ambiente de teste do desenvolvedor, o que permite que ele configure o ambiente para atender às suas necessidades. Ele também tem acesso de usuário à instância do TFS do Visual Studio 2010 em que armazena o código-fonte para a solução do Contact Manager.
Rob Walters é administrador de servidores da equipe de desenvolvimento da Fabrikam, Inc. Rob tem acesso administrativo no servidor TFS para que ele possa configurar todos os aspectos do TFS e do Team Build. Rob também tem acesso administrativo aos servidores Web de teste e preparo e atua como administrador de banco de dados (DBA) para os servidores de banco de dados nos ambientes de teste e preparo. Rob configurou o Team Build no servidor TFS para executar estas tarefas:
- Crie e execute testes de unidade no aplicativo sempre que um usuário fizer check-in em um arquivo no TFS. Isso se chama CI.
- Implante o aplicativo Contact Manager no ambiente de teste automaticamente depois que o aplicativo passar nos testes de unidade. Isso inclui a publicação do banco de dados nos servidores de teste na implantação inicial e quaisquer atualizações no banco de dados após a implantação inicial.
- Implante o aplicativo Contact Manager no ambiente de preparo em um processo de etapa única.
- Crie um pacote Web que um administrador de servidor Web e um DBA possam usar para publicar o aplicativo no ambiente de produção.
Lisa Andrews é uma administradora de servidores responsável por implantar aplicativos nos servidores de produção da Fabrikam, Inc. Ela tem acesso de leitura ao compartilhamento em que o TFS Team Build armazena o pacote de implantação da Web depois de criar o aplicativo Contact Manager. Ela também tem acesso administrativo aos servidores Web de produção para que possa implantar o aplicativo em produção. Além disso, ela atua como a DBA que implanta bancos de dados e atualizações de banco de dados no servidor de banco de dados no ambiente de produção.
A solução Gerenciador de Contatos
A solução do Contact Manager foi projetada para permitir que usuários registrados e conectados adicionem e editem informações de contato por meio de uma interface da Web. A solução Do Gerenciador de Contatos consiste em quatro projetos individuais:
- ContactManager.Mvc. Esse é um projeto de aplicativo Web ASP.NET MVC3 que representa o ponto de entrada para a solução. Ele oferece algumas funcionalidades básicas do aplicativo Web, como fornecer aos usuários a capacidade de criar e exibir detalhes de contato. O aplicativo depende de um serviço WCF (Windows Communication Foundation) para gerenciar contatos e um banco de dados ASP.NET serviços de aplicativos para gerenciar a autenticação e a autorização.
- ContactManager.Database. Este é um projeto de banco de dados do Visual Studio 2010. O projeto define o esquema de um banco de dados que armazena detalhes de contato.
- ContactManager.Service. Este é um projeto de serviço Web do WCF. O WCF expõe um ponto de extremidade que permite que os chamadores executem operações CRUD (criar, recuperar, atualizar e excluir) no banco de dados do Contact Manager. O serviço depende do banco de dados do Contact Manager e do assembly ContactManager.Common.dll.
- ContactManager.Common. Este é um projeto de biblioteca de classes. O serviço WCF depende de tipos definidos neste assembly.
Uma revisão completa da solução e seus requisitos de implantação é fornecida no primeiro tutorial desta série, Implantação da Web na Empresa.
Tarefas de implantação
Há várias tarefas distintas envolvidas na implantação de aplicativos em ambientes diferentes em uma grande organização. Estas são as principais tarefas que os tutoriais abordam:
Aqui está uma lista de cada etapa no processo de implantação da perspectiva dos usuários descritos anteriormente neste documento:
- Todos os membros da equipe revisam a solução do Contact Manager no Visual Studio 2010 para determinar os principais requisitos e problemas de implantação.
- Matt Hink pode implantar a solução Do Gerenciador de Contatos diretamente da estação de trabalho do desenvolvedor para o ambiente de teste do desenvolvedor para realizar um teste inicial da lógica de implantação.
- Matt Hink adiciona o aplicativo ao controle do código-fonte no TFS.
- Rob Walters cria várias definições de build para a solução Do Gerenciador de Contatos no Team Build. Uma definição de build usa CI para implantar a solução no ambiente de teste do desenvolvedor sempre que um usuário verifica o novo código. Outra definição de build permite que os usuários disparem implantações para o ambiente de preparo conforme necessário.
- Sempre que um usuário verifica o novo código, o Team Build cria automaticamente os componentes da solução, executa testes de unidade e implanta a solução no ambiente de teste do desenvolvedor se o build foi bem-sucedido e os testes de unidade são aprovados.
- Quando um usuário dispara uma implantação para o ambiente de preparo, a solução é empacotada e implantada em um processo de etapa única. Esse processo também gera um pacote para implantação manual no ambiente de produção.
- Lisa Andrews implanta o aplicativo no ambiente de produção importando manualmente o pacote Web criado na etapa 6.
Principais problemas de implantação
A solução Contact Manager e o cenário da Fabrikam, Inc. destacam vários problemas e desafios comuns que você pode encontrar ao implantar soluções complexas de escala empresarial. Por exemplo:
- Você precisa ser capaz de implantar projetos em vários ambientes, como ambientes de desenvolvedor ou teste, plataformas de preparo e servidores de produção. A solução precisa ser implantada com configurações diferentes para cada ambiente.
- Você precisa implantar vários projetos dependentes simultaneamente como parte de um processo de compilação e implantação automatizados ou de etapa única.
- Você precisa ser capaz de impulsionar a implantação de um processo automatizado. Por exemplo, você deseja usar um processo de CI para implantar aplicativos Web em um ambiente de preparo quando um novo código é verificado.
- Você precisa ser capaz de controlar o processo de implantação e definir variáveis de implantação de fora do Visual Studio, pois é improvável que os desenvolvedores tenham as configurações corretas ou as credenciais necessárias para cada ambiente de destino.
- Você precisa implantar projetos de banco de dados baseados em esquema e preservar os dados existentes em implantações subsequentes.
- Você precisa implantar bancos de dados de associação em uma base ad hoc sem implantar dados de conta de usuário. Talvez você também precise atualizar o esquema de bancos de dados de associação implantados sem perder dados de conta de usuário existentes.
- Você precisa excluir determinados arquivos ou pastas ao implantar conteúdo em vários ambientes de destino.
Além disso, gerenciar a implantação quando as atualizações são frequentes e incrementais gerará alguns desafios adicionais. Por exemplo:
- Você executa testes de unidade sempre que um desenvolvedor faz check-in em um novo código. Você só deseja implantar a solução se o código passar nos testes de unidade.
- Ao implantar um aplicativo Web em um ambiente de preparo ou produção, você deseja redirecionar os usuários para um arquivo app_offline.htm durante o processo de implantação.
- Você deseja registrar atividades de implantação em log. O processo de implantação deve enviar notificações por email de implantações bem-sucedidas ou com falha para os destinatários designados.
- Se uma implantação automatizada falhar, o processo de implantação deverá repetir a implantação atual ou implantar o pacote Web anterior.