jueves, 20 de octubre de 2011

Are Out !!! SQL Azure DataSync CTP y Windows Azure Autoscaling Block Beta

Muy buenas,

Hace unos días escribía un post sobre la Preview de SQL Azure DataSync, pues bien, ya tenemos la CTP y, como parece ser que no ha cambiado desde entonces, me ahorro el hacer el tour con la herramienta, jeje..

Como no hay una buena noticia sin dos, también tenemos a nuestra disposición una beta de Patterns & Practices, “Windows Azure Autoscaling Block” que puedes descargar directamente desde desde NuGet:

Si estás interesado como yo en el auto-escalado, entonces empieza por aquí con sus novedades:

  1. El estabilizador aumenta la histéresis (“tendencia de un material a conservar una de sus propiedades, en ausencia del estímulo que la ha generado.”) en el escalo de operaciones mediante la prevención de reglas reactivas de acciones repetidas y erróneas.
  2. El Throttiling (regulador), permite limitar o desactivar ciertas operaciones relativamente caras en la aplicación cuando la carga está por encima de determinados umbrales.
  3. Notificaciones de emails, permite enviar notificaciones a destinatarios configurados para tomar decisiones manuales o realizar alguna otra acción correctiva.
  4. Conjunto valores de contadores para cada role definido en el almacén de información de servicios  (utilizado principalmente por el estabilizador, pero los usuarios también podrán usarlo en operandos de condiciones de la reglas).
  5. Capacidad para definir acciones personalizadas para reglas reactivas.
  6. Capacidad de especificar operandos personalizados para su uso en condiciones de reglas reactivas.
  7. Nueva funciones "Max" y "Growth" en la definición de operaciones.
  8. Mejora en los mensajes para la evaluación de reglas y escalado para determinar mejor lo que está sucediendo en el sistema.
  9. Nuevo ID de evaluación para correlacionar todos los mensajes de registro de un pase de evaluación específica.
  10. Cargas JSON para registrar los mensajes para ayudar a las herramientas que monitoricen e interpreten los mensajes.
  11. Clases de utilidad y definiciones de constantes para leer y analizar los mensajes de registro.
  12. Mejoras en la herramienta de configuración, mejores nombres y descripciones de objetos de configuración, validación, y un editor de cadenas de conexión de Windows Azure.
  13. Actualización de la lógica en el RulesEvaluator.
  14. Renombrado de la propiedad "nombre" por "alias" a fin de eliminar ciertas ambigüedades.
  15. Renombrado "SourceLogger" por "SystemDiagnosticsLogger".
  16. Refactorizado del elemento XML “scale” en el esquema de reglas para hacerlas más amigables (mediante la la eliminación de las propiedades "targetType" y "unit") e inferirlas a partir de su uso.
  17. Proporcionan una mejor definición de puntos cuando hay datos suficientes para que el block/componente pueda evaluar una regla.
  18. Nuevo elemento booleano NOT para especificar condiciones de la regla.
  19. Soporte para expresiones aritméticas básicas (multiplicación y división) en los parámetros en la especificación de condiciones de la regla.
  20. "Rank" (prioridad) a las reglas reactivas.

Para más detalle, no te olvides de CodePlex.

Hasta aquí por el momentosobre el auto-escalado !

Saludos @Working hard...
Juanlu

Etiquetas: , ,


martes, 18 de octubre de 2011

TFS Integration Tool: Integrando/migrando de CMMI 4.2 a CMMI 5 y mapeos para Task y Requirements

Muy buenas,

No tenía pensado comentar nada al respecto, pero después de aprender a usar la herramienta, detectar algunos bugs y un poco de trabajo de “chinos”, creo que es una pequeña ayuda para que podáis entender la migración entre distintos “Team Projects” con distintas plantillas de procesos:

Antes de nada, para el que no conozca “TFS Integration Tool (o, TFS Integration Platform)” es un herramienta de CodePlex, que facilita la migración/integración entre diferentes versiones de Work Items, Bug Tracking, etc.

Aunque está en beta, siempre que no se haya “customizado” complicadamente algún work item, cosa que no es de extrañar en algún caso, Risa), la herramienta funciona bastante bien, salvo algunas limitaciones en cuanto a items que no son migrados a día de hoy:

Hasta donde he podido llegar, los “Labels” si los migra, Risa.

Aunque podemos encontrarnos casos más complejos, entre otros, que el TeamProject destino exista y ya tenga bastante código, Work Items, changesets, etc, por el momento, os dejo un resumen de mi caso en concreto (desde “MSF for CMMI Process Improvement v4.2” a “MSF for CMMI Process Improvement CMMI5”) donde el TeamProject destino está recién creado:

image

image

  • Utiliza los siguientes valores para realizar tu configuración de Mapeo/Migración:

image

image

   1: <SettingXml>



   2:   <WITSessionCustomSetting>



   3:     <Settings />



   4:     <WorkItemTypes>



   5:       <WorkItemType LeftWorkItemTypeName="Task" RightWorkItemTypeName="Task" fieldMap="Migrate2Tasks" />



   6:       <WorkItemType LeftWorkItemTypeName="Requirement" RightWorkItemTypeName="Requirement" fieldMap="Migrate2Requirements" />



   7:       <WorkItemType LeftWorkItemTypeName="Bug" RightWorkItemTypeName="Bug" fieldMap="*" />



   8:       <WorkItemType LeftWorkItemTypeName="Issue" RightWorkItemTypeName="Issue" fieldMap="*" />



   9:       <WorkItemType LeftWorkItemTypeName="Change Request" RightWorkItemTypeName="Issue" fieldMap="*" />



  10:     </WorkItemTypes>



  11:     <FieldMaps>



  12:  



  13:       <FieldMap name="Migrate2Tasks">



  14:         <MappedFields>



  15:  



  16:           <!-- Mapeo de todos los campos -->



  17:           <MappedField LeftName="*" RightName="*" MapFromSide="Left" />



  18:  



  19:           <!--- Excepciones a los mapeos  -->



  20:           <!-- Mapeos sin destino -->



  21:           <MappedField LeftName="Severity" RightName="" MapFromSide="Left" valueMap="" />



  22:           <MappedField LeftName="Issue" RightName="" MapFromSide="Left" valueMap="" />



  23:           <MappedField LeftName="Start Change Date" RightName="" MapFromSide="Left" valueMap="" />



  24:           <MappedField LeftName="Exit Criteria" RightName="" MapFromSide="Left" valueMap="" />



  25:           <MappedField LeftName="Test Id" RightName="" MapFromSide="Left" valueMap="" />



  26:           <MappedField LeftName="Test Name" RightName="" MapFromSide="Left" valueMap="" />



  27:           <MappedField LeftName="Test Path" RightName="" MapFromSide="Left" valueMap="" />



  28:           <MappedField LeftName="Estimate" RightName="Microsoft.VSTS.Scheduling.OriginalEstimate" MapFromSide="Left" valueMap="" />



  29:           <!-- Mapeos con cambio en el destino -->



  30:           <MappedField LeftName="Triage" RightName="Microsoft.VSTS.Common.Triage" MapFromSide="Left" valueMap="TriageMap" />



  31:           <MappedField LeftName="Priority" RightName="Microsoft.VSTS.Common.Priority" MapFromSide="Left" valueMap="PriorityMap" />



  32:           <MappedField LeftName="Discipline" RightName="Microsoft.VSTS.Common.Discipline" MapFromSide="Left" valueMap="DisciplineMap" />



  33:           <MappedField LeftName="Task Type" RightName="Microsoft.VSTS.Common.TaskType" MapFromSide="Left" valueMap="TaskTypeMap" />          



  34:  



  35:         </MappedFields>



  36:       </FieldMap>



  37:  



  38:       <FieldMap name="Migrate2Requirements">



  39:         <MappedFields>



  40:  



  41:           <MappedField LeftName="*" RightName="*" MapFromSide="Left" />



  42:  



  43:           <MappedField LeftName="Issue" RightName="" MapFromSide="Left" valueMap="" />



  44:           



  45:           <MappedField LeftName="Rank" RightName="Microsoft.VSTS.Common.StackRank" MapFromSide="Left" valueMap="" />



  46:           <MappedField LeftName="Estimate" RightName="Microsoft.VSTS.Scheduling.OriginalEstimate" MapFromSide="Left" valueMap="" />



  47:  



  48:           <MappedField LeftName="Requirement Type" RightName="Microsoft.VSTS.CMMI.RequirementType" MapFromSide="Left" valueMap="RequirementType2Map" />



  49:           <MappedField LeftName="Priority" RightName="Microsoft.VSTS.Common.Priority" MapFromSide="Left" valueMap="PriorityMap" />          



  50:           <MappedField LeftName="Triage" RightName="Microsoft.VSTS.Common.Triage" MapFromSide="Left" valueMap="TriageMap" />



  51:  



  52:           <!-- These are not exist on target  -->



  53:           <!--<MappedField LeftName="Start Date" RightName="Microsoft.VSTS.Scheduling.StartDate" MapFromSide="Left" valueMap="" />



  54:           <MappedField LeftName="Finish Date" RightName="Microsoft.VSTS.Scheduling.FinishDate" MapFromSide="Left" valueMap="" />-->



  55:  



  56:         </MappedFields>



  57:       </FieldMap>      



  58:     </FieldMaps>



  59:  



  60:     <ValueMaps>



  61:       <!-- Tasks values  -->



  62:       <ValueMap name="TriageMap">



  63:         <Value LeftValue="Pending" RightValue="Pending"/>



  64:         <Value LeftValue="More Info" RightValue="More Info"/>



  65:         <Value LeftValue="Info Recv" RightValue="Info Received"/>



  66:         <Value LeftValue="Triaged" RightValue="Triaged"/>



  67:       </ValueMap>



  68:  



  69:       <ValueMap name="PriorityMap">



  70:         <Value LeftValue="1" RightValue="1" />



  71:         <Value LeftValue="2" RightValue="2" />



  72:         <Value LeftValue="3" RightValue="3" />



  73:         <!--<Value LeftValue="" RightValue="4" />-->



  74:       </ValueMap>



  75:  



  76:       <ValueMap name="DisciplineMap">



  77:         <Value LeftValue="Analysis" RightValue="Analysis" />



  78:         <Value LeftValue="User Experience" RightValue="User Experience" />



  79:         <Value LeftValue="User Education" RightValue="User Education" />



  80:         <Value LeftValue="Test" RightValue="Test" />



  81:       </ValueMap>



  82:  



  83:       <ValueMap name="TaskTypeMap">



  84:         <Value LeftValue="Analysis" RightValue="Corrective Action" />



  85:         <Value LeftValue="User Experience" RightValue="Mitigation Action" />



  86:         <!--<Value LeftValue="" RightValue="Planned" />-->



  87:       </ValueMap>



  88:  



  89:       <ValueMap name="RequirementType2Map">



  90:         <Value LeftValue="Scenario" RightValue="Scenario"/>



  91:         <Value LeftValue="Quality of Service" RightValue="Quality of Service"/>



  92:         <Value LeftValue="Functional" RightValue="Functional"/>



  93:         <Value LeftValue="Operational" RightValue="Operational"/>



  94:         <Value LeftValue="Interface" RightValue="Interface"/>



  95:         <Value LeftValue="Security" RightValue="Security"/>



  96:         <Value LeftValue="Safety" RightValue="Safety"/>



  97:         <!--<Value LeftValue="" RigthValue="Business Objective"/>



  98:         <Value LeftValue="" RigthValue="Feature"/>-->



  99:       </ValueMap>



 100:     </ValueMaps>



 101:   </WITSessionCustomSetting>



 102: </SettingXml>



 103: <SettingXmlSchema />







Nota: Para completar el resto de mapeos, haz uso de los fichero “XML” de las distintas plantillas, así podrás conocer el detalle de los mapeos a realizar.







image






De la misma manera que este proceso de integración entre dos TeamProject ha sido un éxito, también podrás hacerlo para distintas “Queries” de origen y por tanto, “Area Path”, etc. El peso principal recae sobre cada uno de los mapeos según he comentado antes, y podrás hacerlo, para distintas plantillas de proceso, Scrum, MSF Agile, etc., e incluso entre distintas  plantillas origen y destino.



Mucha suerte y espero que sirva de ayuda/aclaración, Guiño



Saludos @TFS

Juanlu, elGuerre

Etiquetas: , ,


This page is powered by Blogger. Isn't yours?