• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
SecondNug Febrero 2012 - Automatización de despliegues
 

SecondNug Febrero 2012 - Automatización de despliegues

on

  • 2,468 views

Presentación de la sesión sobre Automatización de Despliegues en SecondNUG en febrero de 2012

Presentación de la sesión sobre Automatización de Despliegues en SecondNUG en febrero de 2012

http://bit.ly/z45mFU
http://bit.ly/xikaPq

Statistics

Views

Total Views
2,468
Views on SlideShare
1,210
Embed Views
1,258

Actions

Likes
0
Downloads
0
Comments
0

2 Embeds 1,258

http://geeks.ms 1257
http://translate.googleusercontent.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

CC Attribution-ShareAlike LicenseCC Attribution-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    SecondNug Febrero 2012 - Automatización de despliegues SecondNug Febrero 2012 - Automatización de despliegues Presentation Transcript

    • Automatización de Despliegues Jose Luis Soria jlsoria@plainconcepts.com @jlsoriat
    • Jose Luis Soria• ALM Team Lead at Plain Concepts• Professional Scrum Trainer jlsoria@plainconcepts.com http://geeks.ms/blogs/jlsoria @jlsoriat #secondnug
    • Contenido (I)• Por qué automatizar• Automatización de entornos – Lab Manager – Proyectos de servidor de SQL Server – Web Deploy
    • Contenido (II)• Automatización de instalación – MSBuild y TFS Build – Versionado – Proyectos de instalación – Proyectos de base de datos – MSDeploy
    • Contenido (III)• Automatización de configuración – Transformaciones de ficheros de configuración – Gestión de datos – Powershell• Planes de contingencia• Conclusiones• Preguntas
    • Despliegues: situaciones típicas
    • El proceso típico de despliegue• Montones de documentos a seguir• Muchos pasos manuales• Discusiones con otros departamentos• Correcciones sobre la marcha• Entornos en distintos estados• Resultados impredecibles• Largas noches sin dormir
    • Desventajas de los despliegues manuales• Cada vez que despliego, puedo cometer errores distintos• El proceso no es repetible• Hay que mantener documentación• Se depende de personas concretas• Es aburrido• No hay garantías de que se siga el proceso
    • ¡Automatización!• El proceso de despliegue se hace repetible y auditable• Está autodocumentado• Se minimizan errores• Se lanza con pulsar un botón• No se depende de personas concretas• La vuelta atrás se hace más sencilla
    • ¿Qué significa desplegar una aplicación?Desplegar:• Instalar la aplicación en un entorno
    • ¿Qué significa desplegar una aplicación?Desplegar:• Paso 1: Preparar el entorno en el que la aplicación va a ser ejecutada: hardware, software, infraestructura, servicios externos…• Paso 2: Instalar la aplicación en el entorno
    • ¿Qué significa desplegar una aplicación?Desplegar:• Paso 1: Preparar el entorno en el que la aplicación va a ser ejecutada: hardware, software, infraestructura, servicios externos…• Paso 2: Instalar la aplicación en el entorno• Paso 3: Configurar la aplicación, incluyendo datos necesarios y estado
    • ¿Qué significa desplegar una aplicación?Desplegar:• Paso 1: Preparar el entorno en el que la aplicación va a ser ejecutada: hardware, software, infraestructura, servicios externos…• Paso 2: Instalar la versión correcta de la aplicación en el entorno• Paso 3: Configurar la aplicación, incluyendo datos necesarios y estado
    • Paso 1: automatizando entornos
    • Automatización de entornos• ¿Cómo aprovisiono los entornos?• ¿Cómo despliego y configuro los prerrequisitos (middleware) en las máquinas?• ¿Cómo gestiono los entornos, una vez que están en marcha?
    • (I) Aprovisionamiento y configuración de servidores• Opciones: – Aprovisionamiento y configuración completamente manual (no recomendable) – Instalación y configuración remota desatendida – Virtualización – Cloud
    • Instalación remota desatendida• Windows Deployment Services http://bit.ly/wE6h8F – Despliegue remoto de sistema operativo, incluyendo drivers y configuración base – Proveedor de PXE – Las imágenes base se pueden crear y configurar usando Hyper-V
    • Virtualización• Hyper-V & System Center Virtual Machine Manager http://bit.ly/wlaEUN – Uso de plantillas y de instantáneas• Para entornos de pruebas: Lab Management http://bit.ly/wK6YO4
    • Cloud• Azure www.windowsazure.com – Ventajas similares a la virtualización – Escalabilidad, disponibilidad y seguridad proporcionadas por el proveedor – El entorno está estandarizado
    • (II) Gestión de entornos• Para entornos de pruebas: Lab Management• Para entornos en general: System Center Operations Manager http://bit.ly/o8vZYa, políticas de Active Directory
    • Demo: aprovisionamiento de entornoscon Lab Managementhttp://bit.ly/xvCl9W
    • Gestión de prerrequisitos (middleware)• Bases de datos (SQL Server): proyectos de servidor de Visual Studio http://bit.ly/wCu5ZW• Servidores web (IIS): Web Deploy http://www.iis.net/download/webdeploy• PowerShell
    • Demo: proyectos de servidor de SQL Server,Web Deployhttp://bit.ly/xvCl9W
    • Paso 2: automatizando la instalación
    • ¿Qué necesito para instalar una aplicación?• Construir la aplicación• Asegurarse de que es la versión correcta• Dotarla de un mecanismo de instalación
    • Construir la aplicación• MSBuild http://bit.ly/IhQVT – Plataforma estándar de construcción de .NET – Lenguaje + herramienta de línea de comandos – Extensible• TFS Build http://bit.ly/hvTlnR – Construcción desatendida en un entorno controlado – Escalable a nivel empresarial – Personalizable http://bit.ly/gLf3jl
    • Demo: MSBuild & TFS Buildhttp://bit.ly/xvCl9W
    • Instalar la aplicación• Crear scripts o instaladores para cada fase del despliegue• Elegir la tecnología apropiada para cada elemento• Utilizar los mismos scripts para todos los entornos• Usar la herramienta de empaquetado del sistema operativo• Hacer que el proceso de despliegue sea idempotente• Comenzar desde el principio del proyecto e ir evolucionando
    • Instalar la aplicación: versionado• Es imprescindible versionar cada construcción, para tener una visión clara de con cuál de ellas se está trabajando en cada momento• Versionado de ensamblados: AssemblyInfo http://bit.ly/zmuW9e• Versionado automático con TFS Build – TFSVersion en Community Build Extensions http://bit.ly/bS4XDK
    • Demo: Versionadohttp://bit.ly/xvCl9W
    • Instalar la aplicación: empaquetado (servicios windows, escritorio)• Generación de proyectos de instalación http://bit.ly/aSy71X – Visual Studio Setup projects (a extinguir) – WiX – InstallShield, Advanced Installer…• Despliegue: ejecución desatendida del instalador – msiexec – Team deploy http://teamdeploy.codeplex.com/
    • Demo: Proyectos de instalaciónhttp://bit.ly/xvCl9W
    • Instalar la aplicación: bases de datos• Herramientas de base de datos de Visual Studio http://bit.ly/yECCtG• Despliegue desatendido desde una construcción automatizada: MSBuild, vsdbcmd http://bit.ly/vB6G1
    • Demo: Herramientas de bases de datoshttp://bit.ly/xvCl9W
    • Instalar la aplicación: aplicaciones web• Web Deploy http://bit.ly/cUOpfw – Integrado con VS e IIS – Empaquetado y despliegue local y remoto – Incluyendo bases de datos• Despliegue desatendido desde una construcción automatizada: MSDeploy
    • Demo: MSDeployhttp://bit.ly/xvCl9W
    • Paso 3: automatizando la configuración
    • ¿Por qué automatizar la configuración?• Se evitan errores al cambiar de entorno, o incluso de máquinas dentro del mismo entorno (ej.: cluster)• Se ahorra mucho tiempo• No es necesario modificar ficheros en entornos de producción• Es muy fácil romper la aplicación por configuración
    • ¿Cómo hacer la configuración automatizable?• Identificar puntos en la aplicación susceptibles de ser configurables (evitar hardcoding, etc.)• Mantener la configuración en control de versiones• No modificarla a mano• Hacerla dependiente de la versión y entorno• No repetirse• Incluirla en el esfuerzo de pruebas
    • Configuración: transformaciones de ficheros• Incluido en el Web Deployment Toolkit http://bit.ly/pxs8NK• Se define por cada configuración del proyecto• También para proyectos no Web: http://bit.ly/otg3b1• Transformación desatendida desde TFS Build
    • Demo: Transformaciones de ficheros de configurachttp://bit.ly/xvCl9W
    • Configuración: datos• Data compare, incluido en las herramientas de bases de datos de Visual Studio http://bit.ly/xwhmoM• Integrable en TFS Build: MSDeploy, vsdbcmd
    • Demo: Data Comparehttp://bit.ly/xvCl9W
    • Configuración: artefactos en general y middleware• Powershell http://bit.ly/fL1tcz – Shell estándar de Windows – Orientada a objetos – Posibilidad de ejecución en remoto – Snap-in’s para middleware• Se puede ejecutar de forma desatendida desde TFS Build
    • Demo: Powershellhttp://bit.ly/xvCl9W
    • Planes de contingencias
    • Planes de contingencias• Es imprescindible tener un procedimiento claro de vuelta atrás, especialmente en entornos de producción• Hay que tener en cuenta los datos y otros posibles sistemas afectados• La técnica más simple y efectiva suele ser desplegar de nuevo la versión anterior; si el despliegue está automatizado (los tres pasos), esto es muy sencillo• Técnicas más avanzadas: Blue-Green deployments, Canary Releasing
    • Conclusiones
    • Conclusiones• Casi todo es automatizable• Puedes empezar a automatizar ya. Como muy tarde, la segunda vez que te veas haciendo la misma tarea manualmente• La automatización de despliegues es necesaria para la entrega continua (pero no suficiente)• Es un esfuerzo que involucra a roles más allá del desarrollo• Es responsabilidad de todos• Es mejor automatizar los cambios a producción, que hacerlos a mano
    • Recursos• Continuous Delivery http://bit.ly/wdmkLZ• Inside the Microsoft Build Engine http://amzn.to/wZr5hp• Powershell http://amzn.to/xBbqCV• Professional ALM http://amzn.to/9jggZG• www.memegenerator.net• www.bitstrips.com
    • ¿PREGUNTAS?• ALM Team Lead at Plain Concepts• Professional Scrum Trainer jlsoria@plainconcepts.com http://geeks.ms/blogs/jlsoria Jose Luis Soria @jlsoriat #secondnug ¡Gracias!Calendario cursos Professional Scrum 2012 http://bit.ly/xc3rPE