Implementación web de empresa: información general del escenario

por Jason Lee

Este conjunto de tutoriales usa una solución de ejemplo con un nivel de complejidad realista, junto con un escenario de implementación empresarial ficticia, para proporcionar una implementación de referencia y proporcionar a las tareas y tutoriales un contexto común. En este tema se describe el escenario del tutorial y se presenta la solución de ejemplo.

Descripción del escenario

Fabrikam, Inc., una empresa ficticia, está creando una solución que permite a los equipos de ventas remotas almacenar y recuperar información de contacto de una interfaz web.

Los procesos de Administración del ciclo de vida de las aplicaciones (ALM) en Fabrikam, Inc. requieren que la solución se implemente en tres entornos de servidor en varias fases del proceso de desarrollo de software:

  • Un entorno de prueba de desarrollador o "espacio aislado".
  • Un entorno de ensayo basado en intranet.
  • Un entorno de producción accesible desde Internet.

Cada uno de estos entornos tiene diferentes requisitos de configuración y seguridad, y cada uno plantea desafíos de implementación únicos.

The Fabrikam, Inc. Infraestructura del servidor

Esta es la infraestructura de desarrollo e implementación de alto nivel en Fabrikam, Inc.

The high-level development and deployment infrastructure at Fabrikam, Inc.

Las estaciones de trabajo para desarrolladores, la infraestructura de control de código fuente, el entorno de prueba para desarrolladores y el entorno de ensayo residen en la red de intranet dentro del dominio de Fabrikam.net. El entorno de producción reside en una red perimetral (también conocida como DMZ, zona desmilitarizada y subred filtrada), que un firewall aísla de la red de intranet. Se trata de un escenario de implementación común: normalmente se aíslan los servidores web accesibles desde Internet de la infraestructura de servidor interna mediante el uso de firewalls o servidores de puerta de enlace.

En este ejemplo:

  • Un servidor Team Foundation Server (TFS) 2010 con un servidor de compilación independiente proporciona funcionalidad de integración continua (CI) y control de código fuente.
  • El entorno de prueba para desarrolladores incluye un servidor web de Internet Information Services (IIS) 7.5 y un servidor de base de datos de SQL Server 2008 R2.
  • El entorno de producción incluye varios servidores web IIS 7.5 sincronizados por un servidor de controlador de Marco de granja de servidores web (WFF), junto con un servidor de base de datos de SQL Server 2008 R2. En la práctica, el servidor de bases de datos puede usar la agrupación en clústeres o la creación de reflejos para mejorar la escalabilidad y la disponibilidad.
  • El entorno de ensayo está diseñado para replicar la configuración del entorno de producción lo más cerca posible.
  • Las directivas de aislamiento de red y firewall no permiten la implementación directa y automatizada desde la intranet a la red perimetral.

La configuración de cada uno de estos entornos se describe con más detalle en el segundo tutorial, Configuración de entornos de servidor para la implementación web.

Roles de equipo para ALM

Estos usuarios están implicados en la creación, administración, compilación y publicación de la solución Contact Manager:

  • Matt Hink es un desarrollador de aplicaciones web en Fabrikam, Inc. Forma parte del equipo que desarrolló la solución Contact Manager mediante Visual Studio 2010. Matt tiene derechos de administrador completos en los servidores del entorno de prueba para desarrolladores, lo que le permite configurar el entorno para satisfacer sus necesidades. También tiene acceso de usuario a la instancia de TFS de Visual Studio 2010 donde almacena el código fuente de la solución Contact Manager.

  • Rob Walters es administrador del servidor del equipo de desarrollo de Fabrikam, Inc. Rob tiene acceso administrativo en el servidor TFS para que pueda configurar todos los aspectos de TFS y Team Build. Rob también tiene acceso administrativo a los servidores web de prueba y almacenamiento provisional y actúa como administrador de bases de datos (DBA) para los servidores de bases de datos en los entornos de prueba y ensayo. Rob ha configurado Team Build en el servidor TFS para llevar a cabo estas tareas:

    • Compile y ejecute pruebas unitarias en la aplicación siempre que un usuario compruebe un archivo en TFS. Esto se denomina CI.
    • Implemente la aplicación Contact Manager en el entorno de prueba automáticamente una vez que la aplicación supere las pruebas unitarias. Esto incluye la publicación de la base de datos en los servidores de prueba en la implementación inicial y las actualizaciones de la base de datos después de la implementación inicial.
    • Implemente la aplicación Contact Manager en el entorno de ensayo en un proceso de un solo paso.
    • Cree un paquete web que un administrador de servidor web y un DBA pueda usar para publicar la aplicación en el entorno de producción.
  • Lisa Andrews es un administrador del servidor responsable de implementar aplicaciones en los servidores de producción de Fabrikam, Inc. Tiene acceso de lectura al recurso compartido donde TFS Team Build almacena el paquete de implementación web una vez compila la aplicación Contact Manager. También tiene acceso administrativo a los servidores web de producción para que pueda implementar la aplicación en producción. Además, actúa como DBA que implementa bases de datos y actualizaciones de bases de datos en el servidor de bases de datos en el entorno de producción.

La solución Contact Manager

La solución Contact Manager está diseñada para permitir que los usuarios registrados y conectados agreguen y editen la información de contacto a través de una interfaz web. La solución Contact Manager consta de cuatro proyectos individuales:

The Contact Manager solution is designed to let registered, logged-in users add and edit contact information through a web interface.

  • ContactManager.Mvc. Se trata de un proyecto de aplicación web ASP.NET MVC3 que representa el punto de entrada de la solución. Ofrece algunas funcionalidades básicas de aplicaciones web, como proporcionar a los usuarios la capacidad de crear y ver los detalles de contacto. La aplicación se basa en un servicio de Windows Communication Foundation (WCF) para administrar contactos y una base de datos de servicios de aplicaciones ASP.NET para administrar la autenticación y la autorización.
  • ContactManager.Database. Se trata de un proyecto de base de datos de Visual Studio 2010. El proyecto define el esquema de una base de datos que almacena los detalles de contacto.
  • ContactManager.Service. Se trata de un proyecto de servicio web WCF. WCF expone un punto de conexión que permite a los autores de llamadas realizar operaciones de creación, recuperación, actualización y eliminación (CRUD) en la base de datos ContactManager. El servicio se basa en la base de datos Contact Manager y en el ensamblado ContactManager.Common.dll.
  • ContactManager.Common. Se trata de un proyecto de biblioteca de clases. El servicio WCF se basa en los tipos definidos en este ensamblado.

En el primer tutorial de esta serie, Implementación web en Enterprise, se ofrece una revisión completa de la solución y sus requisitos de implementación.

Tareas de implementación

Hay varias tareas distintas implicadas en la implementación de aplicaciones en diferentes entornos de una organización grande. Estas son las tareas clave que cubren los tutoriales:

There are several distinct tasks involved in deploying applications to different environments in a large organization.

Esta es una lista de cada paso del proceso de implementación desde la perspectiva de los usuarios descritos anteriormente en este documento:

  1. Todos los miembros del equipo revisan la solución Contact Manager en Visual Studio 2010 para determinar los principales requisitos y problemas de implementación.
  2. Matt Hink puede implementar la solución Contact Manager directamente desde la estación de trabajo del desarrollador en el entorno de prueba del desarrollador, para realizar una prueba inicial de la lógica de implementación.
  3. Matt Hink agrega la aplicación al control de código fuente en TFS.
  4. Rob Walters crea varias definiciones de compilación para la solución Contact Manager en Team Build. Una definición de compilación usa CI para implementar la solución en el entorno de prueba para desarrolladores cada vez que un usuario comprueba el código nuevo. Otra definición de compilación permite a los usuarios desencadenar implementaciones en el entorno de ensayo según sea necesario.
  5. Cada vez que un usuario comprueba el nuevo código, Team Build compila automáticamente los componentes de la solución, ejecuta pruebas unitarias e implementa la solución en el entorno de prueba para desarrolladores si la compilación se realizó correctamente y se superaron las pruebas unitarias.
  6. Cuando un usuario desencadena una implementación en el entorno de ensayo, la solución se empaqueta e implementa en un proceso de un solo paso. Este proceso también genera un paquete para la implementación manual en el entorno de producción.
  7. Lisa Andrews implementa la aplicación en el entorno de producción importando manualmente el paquete web creado en el paso 6.

Problemas clave de implementación

La solución Contact Manager y el escenario de Fabrikam, Inc. resaltan varios problemas y desafíos comunes que puede encontrar al implementar soluciones complejas a escala empresarial. Por ejemplo:

  • Debe poder implementar proyectos en varios entornos, como entornos de desarrollo o pruebas, plataformas de ensayo y servidores de producción. La solución debe implementarse con diferentes opciones de configuración para cada entorno.
  • Debe implementar varios proyectos dependientes simultáneamente como parte de un proceso de compilación e implementación automatizados o de un solo paso.
  • Debe poder impulsar la implementación desde un proceso automatizado. Por ejemplo, quiere usar un proceso de CI para implementar aplicaciones web en un entorno de ensayo cuando se proteja el código nuevo.
  • Debe poder controlar el proceso de implementación y establecer variables de implementación desde fuera de Visual Studio, ya que es poco probable que los desarrolladores tengan las opciones de configuración correctas o las credenciales necesarias para cada entorno de destino.
  • Debe implementar proyectos de base de datos basados en esquemas y conservar los datos existentes en implementaciones posteriores.
  • Debe implementar bases de datos de pertenencia ad hoc sin implementar datos de cuentas de usuario. También puede que tenga que actualizar el esquema de las bases de datos de pertenencia implementadas sin perder los datos de la cuenta de usuario existentes.
  • Debe excluir determinados archivos o carpetas al implementar contenido en varios entornos de destino.

Además, la administración de la implementación cuando las actualizaciones son frecuentes e incrementales producen algunos desafíos adicionales. Por ejemplo:

  • Las pruebas unitarias se ejecutan cada vez que un desarrollador comprueba el código nuevo. Solo quiere implementar la solución si el código supera las pruebas unitarias.
  • Al implementar una aplicación web en un entorno de ensayo o producción, quiere redirigir a los usuarios a un archivo app_offline.htm durante el proceso de implementación.
  • Quiere registrar las actividades de implementación. El proceso de implementación debe enviar notificaciones por correo electrónico de implementaciones correctas o erróneas a destinatarios designados.
  • Si se produce un error en una implementación automatizada, el proceso de implementación debe reintentar la implementación actual o implementar el paquete web anterior en su lugar.