Barra Superior

PMOinformatica.com
La Oficina de Proyectos de Informática
La web sobre Gestión de Proyectos de Informática, Software y Tecnología.
Síguenos en:     

lunes, 3 de septiembre de 2012

Ambientes de desarrollo de software : Buenas prácticas

Imagen de: Tron Legacy. Disney
Cada vez adquiere una mayor importancia la definición de procedimientos adecuados para administrar los ambientes de desarrollo de software, considerando que las empresas en la actualidad demandan la ejecución de múltiples proyectos simultáneos, con tiempos de puesta en producción exigentes, lo que conlleva a muchos desarrolladores de software, tanto internos como externos a la organización, compartiendo los mismos ambientes de desarrollo.

En este artículo, se exploran algunas buenas prácticas para la administración de ambientes de desarrollo, que van desde la definición las características adecuadas de infraestructura, base de datos, organización, planeación y procedimientos de cambios, homologación, altas y bajas.

Presentamos a continuación las buenas prácticas para ambientes de desarrollo de software.

Características del ambiente

  • Disponer de herramientas de: 
    • Desarrollo (Eclipse, Java Empresarial, Visual Studio .NET, Bases de datos), instalado.
    • Logging (bitácoras), monitoreo de desempeño y debugging. 
    • Control de versiones automatizado. 
    • Herramientas de gestión de compilaciones (Build Management). 
  • Podría residir en el computador personal del desarrollador, en otros casos, podría ser un servidor compartido en el cual varios desarrolladores trabajan sobre el mismo proyecto. 
  • Ser lo más similar posible a los ambientes de pruebas y producción, a efectos de prevenir situaciones en las cuales el software desarrollado presente comportamientos distintos y errores en esos ambientes. 
  • También en componentes de infraestructura de TI deben ser similares, por ejemplo, ¿usa clusters en producción?, si es así, ¿Cómo se asegura que los componentes instalados en un servidor puedan desplegarse hacia otros servidores que componen el cluster?. La única forma, es tener un ambiente de desarrollo o pruebas configurado en clusters en el cual los desarrolladores puedan validar sus programas. 
  • Incluir replicas de todos los componentes con los cuales el software tendrá interoperación en producción incluyendo: otras aplicaciones cliente servidor, bases de datos relacionales, componentes middleware, interfaces, demonios (daemons), procesos personalizados, utilidades FTP y otros. 
  • Utilizar nombres de dominio diferentes para los ambientes de producción, pruebas y desarrollo, a efectos de evitar confusión durante la ejecución de las pruebas. 
  • Tener instalado el mismo manejador de base de datos, versión y calidad de los ambientes de prueba y producción. Si esto no es posible, usar herramientas automatizadas de propagación de una base de datos a otros. 

Organización y planeación

  • Encargar la labor de determinar que ambientes se necesitan y asegurar que estén operativos cuando se necesiten a un arquitecto, gerente de operaciones o gerente de cambios.
  • Todos los equipos de desarrollo, tanto internos como externos a la organización, deben suministrar con antelación sus requerimientos de ambiente al ente encargado de la administración. Los tiempos de antelación deben ser prestablecidos en acuerdos de nivel de servicio. 
  • Los requerimientos de ambiente de desarrollo deben ser documentados por cada proyecto, usando los formatos y plantillas prestablecidos). 
  • Usados estrictamente sólo para desarrollo y pruebas (de los desarrolladores). 
  • Los desarrolladores deben realizar su trabajo exclusivamente en ambiente de desarrollo, nunca en otros ambientes directamente. 
  • Debe ser un ambiente distinto a los de pruebas y producción. 
  • Deben contener sólo datos de prueba que no sean críticos para el negocio, por lo que deben disponerse de procedimientos para eliminar datos sensibles (blanquear datos), cuando se traen de ambiente de pruebas o producción. 
  • Pueden disponerse de múltiples ambientes de desarrollo, pero es necesario asegurar que periódicamente sean homologados entre ellos y con los ambientes de pruebas y producción.
  • Contar con procesos claramente definidos y auditables para: 
    • Asignación de ambientes. 
    • Uso compartido. 
    • Accesos múltiples. 
    • Acuerdos de nivel de servicio. 
    • Actualizaciones. 
    • Upgrades. 
    • Instalaciones. 
    • Desincorporación. 
    • Preparación. 
    • Conectividad. 
    • Asistencia a los múltiples equipos usuarios del ambiente. 
  • Emitir reportes de uso y carga que asistan a la planeación. 

Paradas de mantenimiento o instalaciones

  • Las paradas de mantenimiento o instalaciones de versiones, homologaciones, o correcciones deben en la medida de lo posible: 
    • Ser planificadas en el mediano plazo. 
    • Comunicadas a los equipos de desarrollo para considerarlas en su planificación.
    • Ejecutarse fuera de horario laboral, para no interrumpir las operaciones diarias. 
    • Comunicadas al momento de inicio y finalización 
  • Reindexar las de bases de datos cuando se realiza mantenimiento en las noches, para evitar que al día siguiente las pruebas tengan fallos por timeout.

Procedimientos de Cambio y Homologación

  • Asignar un administrador encargado de organizar los cambios al ambiente por múltiples equipo, el momento en que serán instalados y los procedimientos de revisión y aprobación de cambios.
  • Implementar procedimientos de control de código fuente, versiones y compilación. Utilizando herramientas automatizadas. 
  • Realizar revisiones de código antes de comprometer los cambios en una versión e instalación en un ambiente, evaluar los componentes afectados y evitar instalación de cambios que afecten de forma adversa los componentes de otro equipo de desarrollo. 
  • Notificar a todos los usuarios los cambios a instalar en un ambiente, para que tengan la oportunidad de revisar la afectación sobre sus componentes. 
  • Realizar periódicamente comparaciones de configuración de ambientes, existen herramientas automatizadas capaces de comparar configuraciones, aplicaciones, bases de datos y la infraestructura subyacente. 
  • Implementar controles que aseguren la reconfiguración de archivos de parámetros de configuración (por ejemplo Properties en J2EE) al movilizarlos de un ambiente a otro. 
  • La virtualización puede ayudar a evitar riesgos por cambios en configuración de un entorno a otro. 

Administración de accesos al ambiente

  • Puede tener controles menos estrictos de privilegios acceso al sistema, para permitir a los programadores hacer cambios de registro, base de datos, red o cualquier otro componente con mayor facilidad. En todo caso, estos accesos especiales deben ser autorizados (según procedimiento de autorización de accesos).
  • A pesar de poder tener controles menos estrictos de privilegios de acceso, las altas del sistema deben ser controladas, por medio de procedimientos de solicitud y autorización. 
  • Las bajas de la organización o equipo de desarrollo deben registrarse lo antes posible en el ambiente de desarrollo. Adicionalmente, es necesario realizar una revisión periódica del listado de usuarios, e identificar usuarios que egresaron de la compañía y debían estar de baja. 
  • La actividad de cada usuario debe registrarse en el log (bitácora), en caso de necesitar realizar alguna investigación. 

Otros artículos relacionados:

>> ITIL y el desarrollo de Software

Referencias externas:

>> Space Bug Open Source Initiative: Effective Development Environments – Development, Test, Staging/Pre-prod and Production Environments
>> Razorleaf Corp: Production, Test & Development Environments
>> The Free Library by Farlex: Best practices for managing clustered test environments. (Enterprise Networking)
>> Toolbox.com: Environment management
>> Evolven. Non-Production Environment Management
>> Oracle. Managing a Team Development Environment 
>> 10-99. Java development environment best practices

1 comentario :

Pmoinformatica.com," La Oficina de Proyectos de Informática ", es un participante en el Programa de Servicios de Amazon Associates LLC, un programa de publicidad de afiliación diseñado para proporcionar un medio para que sitios web puedan ganar honorarios por la publicidad y enlaces a amazon.com y amazon.es.