¿Cuánto ocupan mis tablas y mis índices en Sql Azure (y no Azure)?

El tamaño de la base de datos, siempre es importante, en Sql Azure más si cabe, pues afecta directamente a nuestro bolsillo.

Hace bastante tiempo publiqué un script, que se volvió bastante popular, que permite responder la pregunta ¿Cuanto ocupan mis tablas y mis vistas indexadas en Sql Server?, este script hace uso del procedimiento almacenado del sistema sp_spaceused que por desgracia no está disponible en SQL Azure, haciendo que el script anterior no funcione. Así que me he puesto manos a la obra y he hecho una versión similar que si que funciona en SQL Azure (por su puesto en un SQL Server ‘on premise’).

SELECT   

      sys.objects.name AS Name, SUM(reserved_page_count) * 8.0 / 1024 AS [Reserved in MB], SUM(used_page_count) * 8.0 / 1024 AS [Used in MB], MAX(row_count) AS [Number of rows]

FROM   

      sys.dm_db_partition_stats, sys.objects

WHERE   

      sys.dm_db_partition_stats.object_id = sys.objects.object_id

GROUP BY sys.objects.name

UNION ALL

SELECT 

    sys.indexes.name AS Name, SUM(reserved_page_count) * 8.0 /1024 AS [Reserved in MB], SUM(used_page_count) * 8.0 / 1024 AS [Used in MB], MAX(row_count) AS [Number of rows]

FROM

    sys.dm_db_partition_stats, sys.indexes

WHERE

    sys.dm_db_partition_stats.object_id = sys.indexes.object_id

    AND sys.dm_db_partition_stats.index_id = sys.indexes.index_id

    AND sys.dm_db_partition_stats.index_id > 0

GROUP BY sys.indexes.name

ORDER BY 2 DESC

Espero que os sea útil, un saludo.

Consultas para mejorar el rendimiento de tu SQL Azure (y no Azure)

Cuando trabajamos contra un SQL Server ‘on premise’ contamos con un motón de herramientas para averiguar que consultas están siendo más costosas y que índices podrían ayudarnos a mejorar el rendimiento de nuestra base de datos. Cuando trabajamos con SQL Azure, contamos un arsenal mucho más reducido de armas. Hoy quiero compartir dos consultas que me han sido de suma utilidad a la hora de mejorar el rendimiento de un importante proyecto que estamos realizando en Plain Concepts con SQL Azure.

La primera es una consulta que nos permite saber, a partir de la información que SQL Server almacena sobre los planes de ejecución qué consultas están siendo más costosas. Esta consulta extrae información de la vista dm_exec_query_stats que almacena estadísticas sobre la ejecución de consultas. En este caso la consulta muestra, por este orden, el texto de la consulta, el tiempo total consumido por todas las ejecuciones de cada consulta, el máximo tiempo que ha tardado en ejecutarse esa consultas, el tiempo mínimo que ha tardado alguna ejecución, el tiempo que ha tardado la última ejecución, el número de veces que se ha ejecutado la consulta, y la hora de la última ejecución. Todo esto ordenado por el tiempo total consumido por la consulta. Esta consulta nos permite ver de manera rápida que consultas están siendo más costosas para nuestro SQL Azure.

SELECT TOP (20)

    q.text, s.total_elapsed_time, s.max_elapsed_time, s.min_elapsed_time,

    s.last_elapsed_time, s.execution_count, last_execution_time, *

FROM sys.dm_exec_query_stats as s

      cross apply sys.dm_exec_sql_text(plan_handle) AS q

WHERE s.last_execution_time > DateAdd(mi , 1500 , GetDate()) — solo las que se han ejecutado recientemente

AND text not like ‘%sys.%’ — eliminar esta propia consulta

ORDER BY s.total_elapsed_time DESC

La vista en la que se basa esta consulta, dm_exec_query_stats , contiene un motón de campos interesantes con información que os invito a explorar.

La segunda consulta que me ha sido de gran utilidad permite saber qué índices podrían ser beneficiosos en nuestra base de datos y cual sería en impacto (entendido como la mejora esperable si se crea el índice). Se basa en una capacidad de SQL Server llamada ‘missing indexes’.

SELECT TOP (20)

    CAST(REPLACE(CAST(qp.query_plan AS NVARCHAR(MAX)),

    ‘xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan"’,») AS XML),

    qp.query_plan.value(

        ‘declare default element namespace "http://schemas.microsoft.com/sqlserver/2004/07/showplan"; (/ShowPlanXML/BatchSequence/Batch/Statements/StmtSimple/QueryPlan/MissingIndexes/MissingIndexGroup/@Impact)[1]’ , ‘decimal(18,4)’) * execution_count AS TotalImpact

FROM

    sys.dm_exec_query_stats qs

    cross apply sys.dm_exec_sql_text(sql_handle) st

    cross apply sys.dm_exec_query_plan(plan_handle) qp

WHERE

    qp.query_plan.exist(

        ‘declare default element namespace "http://schemas.microsoft.com/sqlserver/2004/07/showplan";/ShowPlanXML/BatchSequence/Batch/Statements/StmtSimple/QueryPlan/MissingIndexes/MissingIndexGroup/MissingIndex[@Database!="m"]’) = 1

ORDER BY TotalImpact DESC

Estas consultas son perfectamente validas para un SQL Server ‘on premise’, pero resultan mucho más útiles cuando estamos trabajando contra un SQL Azure, pues carecemos de otras herramientas.

¿Te vas a perder la segunda edición de la ScrumWeek?

Tras el éxito de la primera edición de la ScrumWeek de Madrid, y atendiendo las voces que desde Cataluña nos demandaban una edición por esas tierras ya estamos trabajando en la Segunda edición de la ScrumWeek.

Del 7 al 11 de noviembre va a tener lugar en Barcelona la segunda edición de la ScrumWeek, un evento en el que, con la colaboración de Proyectalis, Plain Concepts y la comunidad, os ofrecemos un montón de cursos, sesiones y actividades que pueden ser de gran valor para profundizar en aspectos concretos del mundo ágil.

Tenemos varios platos fuertes:

  • Curso Profesional Scrum Foundations de Scrum.org
  • Curos Professional Scrum Developer de Scrum.org
  • Curso de Management 3.0 de Jurgen Appelo
  • Curso de Coaching de equipos Ágiles de Angel Medinilla
  • Actividades de comunidad

Para los que estéis buscando empezar con Scrum con el mejor pie, o reforzar conocimientos, estamos organizando el primer curso oficial Professional Scrum Foundations de scrum.org en España, que además de tener un enfoque y un contenido magníficos, permite obtener la certificación oficial de scrum.org. El curso en sí mismo merece mucho la pena, como lo pueden atestiguar los cientos de personas que ya lo han recibido a nivel mundial. Si aprovechas el curso, que seguro que lo haces, habrás amortizado de sobra la inversión, aunque luego decidas no presentarte al examen para obtener la certificación (aunque ya que está incluido por probar que no quede ¿no?).

También tendremos una nueva edición del curso Professional Scrum Developer .NET en el cual exprimiremos Scrum en la práctica desde el punto de vista del rol de miembro del equipo, y poniendo énfasis en todas las buenas prácticas que pueden ayudar a trabajar mejor en un equipo ágil: integración continua, TDD, arquitectura, testing, etc. Todo facilitado por una buena ración de nuestras herramientas favoritas, Visual Studio ALM y Team Foundation Server. Y además, también con la opción de obtener una certificación, en este caso reconocida tanto por scrum.org como por Microsoft.

Los dos cursos serán impartidos por mi mismo y mi compañero José Luis Soria.

Tendremos además la gran oportunidad de asistir al curso Management 3.0 de Jurgen Appelo, y al de Coaching de Equipos Ágiles de Ángel Medinilla. Sin duda otras dos grandísimas razones para no perderse el evento.

Y por si fuera poco, habrá además una serie de sesiones y actividades gratuitas hechas por y para la comunidad, incluyendo un Coding Dojo, algo tan novedoso en España como un Testing Dojo, y un Open Space para que todo el mundo pueda proponer y hablar de lo que más le interese.

Tenéis toda la información en la página de ScrumWeek Barcelona 2011.

¡Esperamos veros por allí!

Estaré en: Team Foundation Server: la navaja suiza de los proyectos en Pamplona

El próximo día 4 de Octubre de 10:00 a 13:00 de la mañana en el Salón de Actos del Centro de Excelencia Software

Edificio de Formación CEIN, S.A.
Polígono Industrial Elorz-Mocholí
Pza. CEIN nº 1. 31110 Noain

Microsoft, Plain Concepts y Tracasa hablaremos de nuestras experiencias en la implantación de Team Foundation Server, evento en el que podéis inscribiros de manera gratuita si la agenda (ver más abajo) resulta de vuestro interés.

MicrosoftMicrosoft DPE

logo_plain

Tracasa

 

En esta jornada te presentaremos de la mano de la División de Desarrolladores y Plataforma (DPE – Developer & Platform Evangelism) de Microsoft, PlainConcepts y Tracasa todo lo que debes conocer de la herramienta perfecta de Application Lifecycle Management (ALM) Microsoft Team Foundation Server:

  • En qué consiste y qué módulos la componen y qué utilidad tiene cada uno de ellos
  • Cómo puede ayudar en el trabajo diario en un proyecto, dentro de múltiples áreas
  • Ejemplos de uso y soluciones de los diversos componentes de este avanzado sistema
  • Un caso de éxito 100% real y cercano, presentado por la empresa Tracasa que nos contará cómo y para qué lo usan ellos, y cuál es su experiencia.

Si quieres conocer con todo detalle esta auténtica “navaja suiza” del desarrollo, calidad, arquitectura, test y seguridad de las soluciones software, anímate a acompañarnos en esta charla.

AGENDA

Microsoft/DPE – Javier Gómez Lozano

  • ¿Por qué necesitamos ALM?
    • Visual Studio 2010
    • ALM con Visual Studio 2010
    • Componentes y Características
  • Soporte para Desarrollo Heterogéneo
  • La Suite de productos Visual Studio 2010
    • Novedades
    • Gestión de proyectos
    • Arquitectura y Modelado
    • Control de Versiones
    • Desarrollo
    • Construcción automatizada
    • Instalación y administración
  • Microsoft Test Manager 2010
  • Microsoft Lab Management 2010

Plain Concepts – Rodrigo Corral

En esta sesión veremos, en base a escenarios reales, como TFS facilita la adopción de una metodología ágil de desarrollo de software y lleva a los equipos de desarrollo buenas prácticas de ingeniería del software que proporcionan un claro retorno de la inversión y una ventaja competitiva basada en el control explícito de los proyectos y la detección temprana de las fugas de rendimiento por problemas de calidad, evitando la burocracia y facilitando las tareas que el desarrollador realiza.

Tracasa – Carlos Aranda

En esta última parte de la jornada conoceremos un caso de éxito real y próximo a través de la experiencia de Tracasa: por qué y para qué usan Team Foundation y cómo les ha permitido mejorar su calidad y productividad.

  • Tracasa
  • Historia
  • Visión de la compañía
  • Proyectos
  • Recorrido y adaptación
  • Situación inicial
  • Iniciativa y plan de mejora
  • Compromiso con la calidad. Frentes abiertos. (Casos de éxito)
  • Gestión de procesos y metodología. Plantillas de procesos
  • Dinamizar el trabajo, respuesta rápida. Construcciones automatizadas
  • Asegurar una calidad mínima. Testeo funcional

Un saludo.

Detectar cambios en los datos en SQL Server

Saber si los datos almacenados en una base de datos han cambiado es un problema al que nos enfrentamos frecuentemente. Son varios los escenarios en los que tenemos esta necesidad:

  • Enviar solo a un cliente desconectado los datos que han cambiado mientras no tenía conexión.
  • Actualizar datos cacheados solo si los datos subyacentes a la caché han cambiado.
  • Refrescar la representación de los datos en una interfaz de usuario compleja solo si estos han cambiado.

Los niveles a los que nos puede interesar detectar cambios en los datos son varios: detectar que los datos de una fila concreta han cambiado, detectar si los datos en una columna determinada de una columna han cambiado o detectar si alguno de los campos de un conjunto de filas (o una tabla completa) han cambiado. Existe una manera muy simple de conseguir esto en SQL Server que no es muy conocida: apoyarse en las funciones de checksum.

El mecanismo es bien simple: si un solo bit de un conjunto de datos cambia, su checksum cambia. Evidentemente es mucho más simple almacenar y comprobar cambios en el checksum de un conjunto de datos que comprobar si alguno de los campos del conjunto de datos ha cambiado.

¿Cómo detectar cambios en una fila?

SELECT BINARY_CHECKSUM(*) FROM [AdventureWorks].[HumanResources].[Department]
WHERE DepartmentID = @DeparmentID

Si nos interesa podemos calcular el checksum de algunos campos.

SELECT BINARY_CHECKSUM(Name, GroupName) FROM [AdventureWorks].[HumanResources].[Department]
WHERE DepartmentID = @DeparmentID

¿Cómo detectar cambios en un conjunto de filas o una tabla completa?

Aquí el truco es saber que en SQL Server contamos con una función de agregación que nos permite calcular el checksum. Así que primero calculamos el checksum de la fila y luego el checksum agregado del checksum de cada

SELECT CHECKSUM_AGG(BINARY_CHECKSUM(*)) FROM [AdventureWorks].[HumanResources].[Department]

Evidentemente podemos filtrar los datos que nos interesa con una clausula WHERE para limitar el conjunto de filas.

¿Cómo detectar cambios en una columna concreta?

La técnica es similar a la anterior.

SELECT CHECKSUM_AGG(BINARY_CHECKSUM(Name)) FROM [AdventureWorks].[HumanResources].[Department]

¿Y el rendimiento?

Pues en el caso más desfavorable tendremos un ‘full scan’, pero este caso solo se da si calculamos el checksum de una tabla completa que no cuente con un índice clustered. En caso de contar con un indicé clustered, tendremos un ‘index scan’. Es importante desde el punto de vista del rendimiento, en el caso de detectar cambios en una columna concreta, es importante que está cuente con un índice.

Podéis ver los planes de ejecución en la siguiente imagen:

Planes de ejecución

La conclusión es que con índices adecuados el rendimiento de esta solución es al menos tan buena como con cualquier otra. Al final si quieres saber si los datos han cambiado nadie te va a librar de leerlos.

¡Espero que os sea útil!

Primer postgrado mundial en métodos ágiles

En noviembre de 2011 se iniciará el Barcelona el primer postgrado mundial en métodos ágiles y en español. Será una oportunidad única para aprender de la experiencia de profesionales de primer nivel con varios años aplicando principios y métodos ágiles en diferentes contextos e investigando sobre nuevas técnicas.

postgrado-metodos-agiles

A continuación figura el profesorado del postgrado y el temario que impartirán:

  • Xavier Albaladejo – Agile Coach y experto en Gobierno TI, actualmente desplegando el uso de métodos ágiles en everis, consultora tecnológica internacional de 8000 personas, mediante la creación de su Agile Excellence Center. Es fundador de proyectosagiles.org.
    • Qué es la agilidad, su origen, el Agile Manifesto, fundamentos; facilitadores e impedimentos; introducción a Scrum, Lean, Kanban y XP; simulación de estimación de Product Backlog; simulación de Scrum (8 horas).
    • Agile Product Portfolio Management, empresas ágiles, contratos ágiles (8 horas).
  • Agustín Yagüe – Profesor de la Universidad Politécnica de Madrid, especialista en la investigación de técnicas para la gestión ágil de producto, proyecto y pruebas.
    • Product Ownership y gestión de producto; historias de usuario; documentación ágil y usabilidad / experiencia de usuario; elaboración de Product Backlog (24 horas).
  • Xavier Quesada – Certified Scrum coach y Certified Scrum Trainer, ha trabajado en el despliegue de métodos ágiles en Belgacom (la mayor empresa de telecomunicaciones belga con más de 2000 desarrolladores distribuidos entre Bélgica e India), De Post (Correos Belga) y Fédération Royale du Notariat Belge. Ha sido orador en conferencias internacionales y es autor de Visual Management blog.
    • Estimación y planificación ágiles; métricas; herramientas ágiles físicas; radiadores de información (16 horas).
    • Lean thinking y lean tools (8 horas).
  • José Ramón Díaz – Impulsor del uso de métodos ágiles en Biko2 hasta transformarla en una consultora tecnológica ágil, es responsable del área de desarrollo Java. Programador vocacional y apasionado, es un estudioso de todas las disciplinas que rodean a la construcción de software. Constructor de equipos altamente productivos, invierte el tiempo y esfuerzos necesarios en ayudar a que cada miembro de un equipo alcance la mejor versión de si mismo. Siempre coloca a las personas en el centro de atención. Es autor del blog Najabaraja.
    • Gestión de personas, trabajo en equipos altamente productivos e innovadores, facilitación de reuniones (8 horas).
  • Jorge Uriarte – Director de Gailen Tecnologías, donde ha conjugado la visión de emprendedor con el coaching de equipos a nivel de gestión y técnico para crear una empresa y unos clientes ágiles. Es autor del blog Omelas.
    • Herramientas ágiles electrónicas; revisiones de producto y retrospectivas ágiles (8 horas)
    • Agile Coaching, gestión de conflictos, motivación e incentivos, contratación (16 horas).
    • Agile Knowledge Sharing and Management (8 horas).
  • Rodrigo Corral – Mentor, trainer y consultor en ALM y arquitectura, especializado en resolver problemas de estabilidad y rendimiento de sistemas, varias veces MVP y copropietario de Plain Concepts, consultora de referencia por Microsoft en España. Ha sido orador en diferentes eventos ágiles, es administrador de geeks.ms y autor del blog La masa, el ladrillo, la bota, el bocadillo.
    • ALM ágil, eXtreme Programing, testing ágil, arquitectura ágil (12 horas).
  • Alberto Pizarro – Gerente de arquitectura en everis, experto en el desarrollo de arquitectura empresarial bajo planteamientos ágiles en sectores como banca, seguros y administración pública y creador de la suite ALM corporativa de everis, con soporte a métodos ágiles como Scrum y eXtreme Programming.
    • Arquitectura empresarial ágil (4 horas).
  • Carlos Ble – Desarrollador vocacional y arquitecto, eXtreme Programming Coach, es co-propietario de iExpertos y autor de «Diseño Agil con TDD», el primer libro en castellano sobre Test Driven Development. Ha sido orador en diferentes eventos ágiles y es autor de El blog de Carlos Ble.
    • TDD y BDD (24 horas).
  • Jordi Salvat – Como programador y analista en el sector espacio tuvo ocasión de conocer (o sufrir) las metodologías tradicionales de gestión de proyectos. Como director de tecnología de dos exitosas start-ups y CTO de Salir.com, ha tenido ocasión de vivir en primera persona la aparición y evolución de las metodologías ágiles y el impacto que han tenido en la productividad de los equipos de desarrollo. Es especialista en luchar contra la acumulación de “deuda técnica” heredada y en medir la mejora conseguida. Es autor del blog Jordi on Software Development.
    • Trabajo con código «legacy» (8 horas).
  • Beatriz Martín – 14 años en Publicidad y TIC. Experiencia en gestión de proyectos, gestión y dirección de personas, y liderando equipos profesionales. En su trabajo conjuga la necesidad de resultados y procesos de trabajo con la atención a las personas; y Joao Gama, propietario y product owner de agileScorecard.com, herramienta de valoración de equipos ágiles y de desarrollo continuo de talento empresarial.
    • Gestión del cambio organizativo y desarrollo de la cultura a través del Management. (8 horas).
  • Juan Gutierrez – Manager y Agile Coach en F-Secure, empresa internacional de seguridad informática, donde ha estado involucrado en el despliegue global y multi-sede de métodos ágiles y donde actualmente está realizando el depliegue de su sede francesa. Trabajó en Nokia donde vivió la transición de la compañía a los métodos ágiles. Es autor del blog Agilizar.
    • Despliegue de Agile en organizaciones, escalado, equipos distribuidos (8 horas).

El postgrado tendrá una duración de 6 meses y se realizará viernes tarde y sábado por la mañana. Estará dividido en 3 módulos: conceptos ágiles, ingeniería y empresa, siendo obligatorio cursar el primero y uno de los dos siguientes para obtener el postgrado. Para más detalles, consultar la página oficial del postgrado

¡Un saludo!

Estuve en: Agile Open Spain 2011

Este fin de semana pasado se ha celebrado la tercera edición del Agile Open Spain que reunió unos 150 asistentes interesados en las metodologías ágiles. El desembarco de la armada de Plain Concepts fué notable, Vicenç Garcia, Ibon Landa, Gerard Lopez, Alfredo Fernandez y Jose Luis Soria (podéis ver la presentación de su sesión sobre estimación), hay es nada. Propusimos un total de cinco sesiones de los temas más variopintos… y sobre todo creo que disfrutamos un montón. Empezamos cepillandonos un chuletón para comer el viernes y acabamos con una cervecitas en el Puerto Viejo de Algorta ¿alguna manera mejor de hacer equipo?.

Si alguien duda de la calidad del evento y la diversidad de temas tratados no tiene más que echarle un vistazo al panel de sesiones. No tenéis que ver más que los twits sobre le evento.

El panel de la CAS 2011

Os dejo mis impresiones sobre las sesiones a la que acudí aunque lo más interesante en un open space pasa en los pasillos.

Test doubles: stubs, spies y mock de Rubén Bernárdez

¿Por qué usamos dobles? Para evitar dependencias externas, para que los test no sean lentos…

Interesante conversación y debate sobre los diferentes tipos de dobles de test que podemos usar, los diferentes estilos a la hora de usar test, las señales que nuestros test lanzan cuando se rompen…

Especialmente interesante para mi fue la conversación Alberto Peña en la que constaté que tenemos aproximaciones muy diferentes al testeo unitario pero que aun así los dos disfrutamos de la ventaja que tiene escribir test, los escribas antes, durante o después, los uses como herramienta de diseño o como herramienta de calidad.

Os recomiendo una artículo muy interesante que va en la línea de lo hablado en esta sesión: Exploring The Continuum Of Test Doubles.

 

Seducir a las empresas, Raquel Laina y Amalia Hernandez

¿Nos disfrazamos para seducir a las empresas? ¿Se disfrazan las empresas? ¿Es posible no disfrazarse?… Yo defendía que todos estamos sometidos queramos o no, de manera incosciente a la tiranía de la apariencia, de la pose cuando estamos en un proceso de selección, seamos empresa o candidato. Es como ligar, propuse, nadie es la persona que se ver cuando está ligando.

¿Como presentamos el modelo alternativo que supone el agilísimo a las empresas? ¿Comó lograr que este modelo llegue a los procesos de selección? En Plain Concepts algo hacemos, por lo menos no son entrevistas convencionales, hablamos por skype, los traemos a nuestra oficina, comemos con ellos, todo el equipo está en todo el proceso…

¿Está obsoleto el modelo del currículo? Todos tenemos un currículo, es necesario diferenciarse: escribe un blog,… el papel a muerto.

Surgio una idea interesante: Desacreditar la entrevista de trabajo convencional,

Excelente resumen de Xavier Verges sobre esta sesión, en general las notas de su cuaderno sobre la AOS son una caña.

Talento de Israel Alcazar y Raquel Laina

La pizarra lo dice todo…

La pizarra de la sesión sobre el talento

La sesión que yo propuse: Déjame hacer las cosas bien, sobre la deuda técnica

Os dejo la presentación que utilicé, os servirá para situaros sobre los temas que debatimos.

Las notas sobre mi sesión de Frank son el complemento perfecto (también tiene notas muy interesantes sobre otras sesiones).

También en el podcast de Carlos Ble, hablo de la sesión.

El podcast de Carlos Ble

Si bien Carlos Ble, uno de los habituales en estos eventos, no acudió en esta ocasión, ni aun así ha dejado de aportar. El domingo tras el evento se tomo la molestia de preparar un podcast con entrevistas a algunos de los asistentes, entre los que me encuentro. No te lo pierdas, tanto si estuviste como si no, es muy interesante. En las grabaciones podeis escuchar a Vicenç García (@vgaltes), Rubén Bernárdez (@rubenbpv), Jorge Uriarte (@jorgeuriarte), Israel Alcázar (@ialcazar), José Ramón Díaz (@joserra_biko), José Manuel Beas (@jmbeas) y yo mismo.

Un saludo.

Proxy cache con IIS Application Request Routing

Introducción

IIS Application Request Routing (ARR) es una extensión que permite aumentar la escalabilidad y la fiabilidad de las aplicaciones Web desplegadas sobre IIS mediante el enrutamiento de peticiones basado en reglas, permitiéndonos añadir balanceo de carga  o cache de contenidos de manera muy simple.

En concreto nos vamos a centrar en implementar un proxy que actuará como cache aliviando en número de peticiones que recibirá nuestro servidor Web. El proxy cache se sitúa entre el servidor Web y los clientes y cachea a a disco contenidos que de otra manera tendrían que ser descargados desde el servidor Web.

Un uso típico de un proxy cache es actuar con ‘edge server’. Un ‘edge server’ es un servidor más cercano a los clientes que consume el contenido. Supongamos una empresa que tiene una aplicación Web desplegada en La Coruña y que tiene delegaciones en Madrid, Bilbao y Seattle. Supongamos que esa aplicación Web por ejemplo utiliza Smooth Streaming para servir videos. Se hace evidente que contar con un proxy cache en las delegaciones que se encargue de cachear los videos servidos (o cualquier otro contenido pesado) de manera trasparente tendrá un efecto muy beneficioso en varios aspectos: mejorar la experiencia de usuario que tendrá que esperar menos para tener los contenidos disponibles, aliviar la carga soportada por el servidor web y minimizar el consumo de ancho de banda ya que si un contenido está en la cache no tendrá que pedirlo hasta el servidor Web lejano.

Veamos a continuación los pasos necesarios para montar un proxy cache con IIS Application Request Routing.

Instalar IIS Application Request Routing en nuestro IIS

Sin duda la manera más cómoda de instalar ARR es utilizar el Microsoft Web Platform Installer, basta con descargarlo, ejecutarlo y seleccionar Application Request Routing y pulsar el botón Install.

image

Una vez terminada la instalación en Internet Information Server (IIS) Manager, si seleccionamos el nodo raíz de nuestro servidor, veremos un nuevo icono en la sección IIS llamado Application Request Routing Cache.

image

Configurar la caché de disco

Para configurar el lugar donde nuestro proxy almacenara los archivos cacheados pinchamos en el icono de Application Request Routing Cache y veremos la siguiente pantalla.

image

Tras pinchar en Add Drive… podremos configurar la ruta en la que se almacenarán los archivos cacheados.
Precaución: esta carpeta debe existir de antemano, sino no recibiremos ningún error pero la carpeta no se creara y nada se cacheará.

image

Activar el proxy y configurar sus propiedades

Para configurar las propiedades del proxy pinchamos en Server Proxy Settings…

image

En la pantalla Application Request Routing que aparece, para activar el proxy marcamos la casilla Enable proxy

image

El siguiente paso es habilitar la cache en disco y para optimizar la cache para eventos de video online marcar el check Enable request consolidation (más información sobre esta característica).

image

Para lograr que se cacheen peticiones con respuestas de tamaño considerable como por ejemplo porciones de video es necesario incrementar el valor de Response buffer threshold a 2048 KB.

image

Por último en Proxy Type debemos asegurarnos de que están marcados Use URL Rewrite to inspect incoming request y Enable SSL offloading (este último check hará que la comunicación entre el servidor Web y el proxy no se haga por SSL aunque la petición sea SSL si confiamos en la red por la que se realizarán las comunicaciones ahorraremos la carga adicional que supone SSL).

El paso final es introducir en Reverse Proxy la dirección del servidor Web para el que estamos configurando el proxy (p.e.: www.koalink.tv).

image

Ahora solo queda un último paso: que todos los clientes que queramos que usen este proxy resuelvan la dirección del servidor Web a la dirección del proxy, mediante la configuración adecuada del DNS de los clientes o de su archivo HOSTS (c:windowssystem32driversetchosts

Comprobar el funcionamiento del proxy

La primera comprobación que debemos hacer es que el proxy está respondiendo. Para ello simplemente apuntaremos el navegador a http://localhost y debemos recibir exactamente la misma respuesta que si navegásemos directamente al servidor Web directamente.

La segunda es ver que tras un numero significativo de peticiones existen ficheros en el directorio de disco que hemos configurado para la cache (c:cache en este caso).

La tercera es ver que los contadores de estado de la cache, en la pantalla principal de Application Request Routing Caching, empiezan a mostrar actividad:

image

Referencias adicionales

Application Request Routing

Configure Request Consolidation Feature in Application Request Routing

Configure and Enable Disk Cache in Application Request Routing

Estuve en: ALM Sessions 2011: Caminado hacia la agilidad con Visual Studio 2010

El pasado 9 de Marzo en el marco del Cloud Day de Microsoft tuve el placer de participar en las ALM Sessions. No es que no me guste la nube, pero como el público me tiene más encasillado que a Micheal Landon, me toco hablar una vez más de las excelentes capacidades de Visual Studio para implementar metodologías ágiles. Mis compañeros Unai Zorrilla y Ibon Landa participaron también en tan magno evento. Ibon, con dos ponencias Nubes híbridas con Azure Connect y Gestión efectiva con Project Server y Team Foundation Server (le toco sustituir a Jose Luis Soria, que estaba de ponente en el TechEd de Oriente Medio) y Unai con una ponencia sobre Seguridad basada en Claims.

En mi sesión titulada Caminando hacia la agilidad con Visual Studio 2010 vimos, en base a escenarios reales, como TFS facilita la adopción de una metodología ágil de desarrollo de software y lleva a los equipos de desarrollo buenas prácticas de ingeniería del software que proporcionan un claro retorno de la inversión y una ventaja competitiva basada en el control explícito de los proyectos y la detección temprana de las fugas de rendimiento por problemas de calidad, evitando la burocracia y facilitando las tareas que el desarrollador realiza.

Para aquellos que os perdisteis el evento o que no pudisteis asistir a mi sesión os dejo la presentación que utilicé y el video de la misma:

Video: Caminando hacia la agilidad con Visual Studio 2010

Si queréis ahondar en los conceptos que se presentan en esta sesión, tenéis una excelente oportunidad en la Scrum Week.

Espero que os resulte interesante.