DevOps

azure-devops-logo.jpg

¿Que es DevOps?

Hoy en día, encontramos en Internet muchas definiciones, en donde todas coinciden en mayor medida que DevOps no es un perfil, sino que representa una cultura, metodología, prácticas y procesos que todos los equipos deben adoptar con el objetivo final de entregar valor al negocio.

Para mi, DevOps es un cambio de mentalidad y un viaje hacia una nueva cultura empresarial, por supuesto dicho viaje no será fácil, ni sencillo, requiere sobretodo ganas de aprender, discutir, dialogar y colaborar entre todos los equipos, entender la problemática de los demás y barreras a las que nos enfrentaremos con el objetivo final de la automatización de las tareas, ganar en agilidad y velocidad para disponer de más tiempo para mejorar procesos de entrega de software.

La mejor forma de sintetizar DevOps es una frase que siempre me gusta compartir: «No products replaces good people and good process to get effective DevOps experience».

Tendencias DevOps – Cloud 2019

Hoy en dia, no se entiende DevOps sin relacionarlo de alguna manera con el cloud y en el informe de InfoQ destacan una serie de tendencias que muestro aqui, que abarca desde la parte de Innovators hasta Late Majority.

devops-cloud-graph-2019.jpg

 

Azure DevOps – La nueva plataforma “All-In-One”

Microsoft presenta Azure DevOps y Azure DevOps Server como sucesores de VSTS y TFS en su apuesta por unificar las mejores prácticas DevOps en una sola herramienta para el desarrollo e implantación de soluciones ayudando a los equipos a entregar software de manera más rápida y generar valor continuo a los usuarios y clientes.

Azure Pipelines: Utilizar los servicios de CI/CD para crear, compilar, probar y desplegar proyectos con cualquier plataforma o nube, conectarse a GitHub, Bitbucket o cualquier otro repositorio de Git y por ejemplo desplegar un servicio en un contenedor en AWS.

Azure Boards: Seguimiento del trabajo con paneles Kanban, backlog, informes, etc.

Azure Artifacts: Paquetes NuGet, Maven y NPM de fuentes públicas y privadas.

Azure Repos: Repositorios públicos y privados Git alojados en la nube de Azure.

Azure TestPlans: Gestionar pruebas manuales, planificadas y exploratorias.

Además disponemos de integración entre herramientas Microsoft y open-source para gestionar todo el flujo de trabajo, por ejemplo, puede utilizar lenguajes .NET, Java, NodeJS, PHP, desplegar en Windows y Linux,  así como, utilizar Git, Jenkins, Docker, Kubernetes, Ansible, Puppet, Chef, Terraform y mucho más para adoptar DevOps todo ello soportado por Azure de forma integrada.

Por donde empezar:

  1. DevOps Center: https://docs.microsoft.com/en-us/azure/devops/learn
  2. DevOps Labs: https://www.azuredevopslabs.com
  3. DevOps Generator: https://azuredevopsdemogenerator.azurewebsites.net

Diagrama Representado Ciclo de Procesos

El ciclo de procesos lo vemos en estos diagramas, desde un punto de vista lineal:

DevOps-Tools.png

Tambien podemos verlo representado asi:

devops-ciclo.png

Y desde un punto de vista circular, representando las iteraciones y mejora continua:

DevOps-grafico-daily.jpg

Para ello es importante no olvidar estas «Seven key DevOps Practices»:

  1. Configuration management
  2. Continuous integration
  3. Continuous deployment
  4. Continuous quality
  5. Infrastructure as Code
  6. Test automation
  7. Monitoring (APM)

Automatizar implementaciones

Un escenario común para despliegues lo encontramos en este articulo de MS:

Articulo Link: https://msdn.microsoft.com/es-es/library/dn217874.aspx

En el caso de Base de Datos hay muchos posibles escenarios, por ejemplo Redgate:

devops-diagram-redgate.jpg

Y podemos ver los pasos de cada despliegue de forma gráfica en este diagrama:

devops-ciclo-database.jpg

Información Detallada

Lista de enlaces interesantes para conocer mejor la nueva plataforma:

Videos On-Demand

Planificacion y seguimiento del Trabajo (PT)

  • Agile planning tools siempre contra nuestro backlog
  • Collaboration epics, features, historias
  • Dashboards and charts
  • Trazabilidad de todo el trabajo total, realizado, pendiente

Repositorio de Codigo Fuente (CR)

SQL Server Data Tools y Extensions (DB)

  • Base de datos Relacional (nativo vs2017)
  • Analysis Services (extension vs2017)
  • Reporting Services (extension vs2017)
  • Integration Services (standalone)

Integración Continua (CI)

  • Ayuda a encontrar errores tempranos
  • Sistema para validar el trabajo de cada equipo
  • Generar artefactos para despliegues
  • ¿Esta el equipo desarrollo preparado para esto?

Despliegue Continuo (CD)

  • Ayuda evitar errores con despliegues manuales
  • Proceso repetible: manual, automático, triggers
  • Proceso testing-data: Build-Release-Test-Validate
  • Tokenizacion: claves y conections strings
  • Desplegar a múltiples entornos: DEV, TEST, UAT, SEG, PRO, etc
  • ¿Esta la organización y clientes preparados para esto?
  • ¿Podemos desplegar en los entornos después de cada commit?

Calidad Continuo (CQ)

  • Testing de nuestro código fuente y base de datos
  • Testing end-to-end de la funcionalidad de la aplicación
  • Diferentes niveles de testing: UnitTest, Integracion, Carga, etc
  • Buen conjunto de datos: saneados y enmascarados
  • Porque los humanos siempre cometemos errores
  • Detección temprana antes de llegar a producción

Monitorizacion Continua (CM)

Diagrama visualizando los diferentes aspectos a tener en cuenta:

azure-monitor-diagram.png

Objetivos

  • Proactive monitoring
  • Tailored performance insights
  • Early detection of database performance degradation
  • Root cause analysis of issues detected
  • Performance improvement recommendations
  • Scale out capability on hundreds of thousands of databases
  • Positive impact to DevOps resources and the total cost of ownership

Herramientas de análisis y diagnóstico:

  • Análisis: lenguaje de consulta eficaz a través de los datos de telemetría
  • Paneles: creación de gráficos para supervisar los componentes de la aplicación.
  • Alertas inteligentes y manuales de los índices de error.
  • Gráficos de las métricas agregadas con el paso del tiempo.
  • Búsqueda de diagnósticos en instancias de las solicitudes, excepciones, eventos personalizados, seguimientos de registros, vistas de página, dependencias y llamadas AJAX.

Tipos de Telemetría

  • Velocidad de solicitudes HTTP, tiempos de respuesta y niveles de éxito.
  • Llamadas (HTTP y SQL) de dependencia, tiempos de respuesta, niveles de éxito.
  • Seguimiento de excepciones de servidor y cliente.
  • Seguimiento de registro de diagnóstico.
  • Recuentos de vistas de página, recuentos de usuarios y sesiones, tiempos de carga del explorador y excepciones.
  • Tarifas de llamadas AJAX, tiempos de respuesta y niveles de éxito.
  • Contadores de rendimiento de servidor.
  • Telemetría personalizada de cliente y servidor.
  • Segmentación por ubicación de cliente, versión de explorador, versión de sistema operativo, instancia de servidor, dimensiones personalizadas, etc.
  • Pruebas de disponibilidad

Problematicas DevOps en el mundo real

  • Data Motion: SSDT no soporta automático (columns: wider, split, narrowing, etc)
  • Custom Scripts: Escribir scripts para mover datos en columnas y borrar vieja
  • Custom Scripts: Escribir scripts para cambios que afectan estructrura DB
  • Static Data: Generar SQL-data para Test con Pre&Pro Deployment en DACPAC
  • Database Prod: Mucho cuidado con scripts y Test Data en entornos Producción
  • Database Prod: Escribir scripts personalizados con IF para proteger estos casos
  • Versioning: Versionado de aplicación y Base de datos de forma correcta
  • ConnString: Azure appSettings permite rescribir conn sin Tokenizar
  • Tokenizar: app.config y web.config proteger conn y password en repo central
  • Tokenizar: app.config y web.config conn localDB sin subir al repo central
  • Mantenimiento: Mantenimiento Builds y Releases según cambios
  • Flexibilidad: Agentless, intervenciones, comprobaciones intermedias, delays, etc
  • MultiEntorno: Como tratamos con diferentes entornos, configuraciones y scope.
  • MultiTenant: Como tratamos con aplicaciones y arquitecturas complejas.

 

Seguridad DevOps

18 New Tools and Extensions for Visual Studio – Enlace: https://visualstudiomagazine.com/articles/2018/06/21/visual-studio-toolbox.aspx

Secure DevOps Kit for Azure (AzSK) – Enlace: https://github.com/azsk/DevOpsKit-docs

Black Duck : escanea dependencias de código abierto contra su propia base de datos. Mantienen esa base de datos actualizada con las últimas vulnerabilidades y le brindan información oportuna sobre correcciones, soluciones y exploits. Cubren más de 80 lenguajes de programación 

GitLab : permite escanear dependencias en código de los repositorios de GitLab. Es compatible con JavaScript, Ruby, Python, PHP y Java.

Sonatype Nexus : analiza sus dependencias en busca de vulnerabilidades conocidas, licencias y componentes antiguos o no compatibles.

Veracode : es una herramienta de escaneo de código que se integra con Azure Pipelines para encontrar vulnerabilidades en las primeras etapas del proceso de desarrollo con extension: Azure Pipelines extension 

WhiteSource Bolt : es una herramienta para escanear dependencias de código abierto en busca de vulnerabilidades y licencias. Es compatible con +200 lenguajes de programación y brinda informes de vulnerabilidades, licencias e inventario. extension Azure Pipelines extension 

 

Deja un comentario