MSDN Blogs
  • WarNov Developer Evangelist

    Problemas de Modificación de Tooltip en Silverlight?

    • 2 Comments

    Estaba escribiendo una aplicación en Silverlight que tenía que cambiar el Tooltip de acuerdo al idioma escogido. Obviamente esto se hace programáticamente, pero observé que en ocasiones los cambios no se ejecutaban de acuerdo a lo que decía el código. Después del tradicional “cacharreo” observé que el Tooltip no  se actualiza, si al control en tiempo de diseño se le fue asignado un Tooltip en particular. Así que si desea que el tooltip siempre se actualice, asegúrese  de que el control en tiempo de diseño tiene el tooltip en Nulo. Ojo: Nulo. No se vale que luego de haberlo inicializado en tiempo de diseño, use por ejemplo Blend para modificar el tooltip borrando el que ya había, pues esto nos deja un tooltip con cadena vacía, que tampoco dejará actualizarlo con código.



  • WarNov Developer Evangelist

    Programando desde varias máquinas sin TFS

    • 3 Comments

    Esta técnica solo es recomendable si es un proyecto que lleva usted solo (es decir no un equipo). Es muy sencillo. Solo es necesario usar Live Mesh para mantener sincronizadas las carpetas. Yo la uso porque tengo varias máquinas (en la casa, la oficina, etc.) Pero existen ciertas situaciones que hay que tener en cuenta:

    Hoy por ejemplo no podía ejecutar mi aplicación por este error:

    The located assembly's manifest definition does not match the assembly reference

    Sucede que mi app estaba buscando una versión de DLLs errada.

    Luego de mucho “cacharrear” encontré que esto sucede porque se copian las dlls de otras máquinas en la que esta ejecutándose el Live Mesh. Para solucionarlo, basta con eliminar todas las dlls producto de la compilación de nuestra solución y volverlas a generar.

    Estaré actualizando este post con más incidencias de esta modalidad.



  • WarNov Developer Evangelist

    Sesión Ejecutiva para Empresas de desarrollo a la medida en Azure

    • 5 Comments

     

    image

    Este mismo evento lo tendremos en Medellín:

    image



  • WarNov Developer Evangelist

    Resultados del ICFES: Ahora sobre Windows Azure

    • 11 Comments
     

    Es hasta el momento la aplicación más grande en el país, montada sobre Windows Azure y es para mí muy agradable declararla como mi primer pequeño hijo Azure, luego de linear la arquitectura de su funcionamiento y de haber pasado derecho 24 horas programándola. Esto, dado que empezar de ceros y terminar en tiempo record, pues existían ciertos problemas con la anterior plataforma entre ellos la incapacidad de re direccionar correctamente al sitio original del ICFES para mostrar información distinta a la de los resultados y también el precio que en total es más de 8 veces más alto que el logrado con Windows Azure (de cerca de US$25.000 pasamos a US$3000: exagerando)

    Todo comenzó con la noticia de que uno de nuestros principales socios de negocio certificados: ASESOFTWARE (CMMI 5) estaba interesado en desarrollar la plataforma que serviría para presentar los resultados del Examen de Estado ICFES a la nación colombiana (600.000 resultados). Al oír esto, de inmediato me desplacé a sus instalaciones para apoyarlos en este proceso.

    Fue una misión compleja. Estábamos sobre el tiempo y necesitábamos salir al aire lo más rápido posible. Sin embargo es esto mismo lo que demuestra las bondades de Azure, que nos permiten aprovechar todos los conocimientos que ya tenemos sobre .NET y sumados a algo de teoría de Cloud Computing nos permiten salir muy rápido a producción. Gracias al empeño y gran experiencia en desarrollo de ASESOFTWARE pudimos aprovechar y capitalizar todas estas ventajas.

    Básicamente necesitábamos subir esa gran cantidad de data a la nube, y crear una aplicación web bajo los lineamientos del ICFES para mostrarlos al público.

    image

    Análisis de la solución:

    Necesitábamos una capa de alimentación de datos, otra capa de negocio para implementar la lógica y finalmente una capa de presentación Web para los usuarios finales. Nótese que en este caso no necesitamos una capa de servicios, dado lo puntual de la solución. Si se hubiese necesitado igual no habría habido ningún problema porque Windows Azure está totalmente preparado para estos casos.

    Capa de Alimentación de Datos

    La decisión más simplista, hubiese sido usar SQL Azure y subir todos los datos a la Base de Datos en la nube. Esto se hubiese podido hacer con Integration Services y se hubiese podido obtener un resultado más que aceptable.

    Pero en Windows Azure existe el storage nativo en tablas no relacionales. Un tipo de almacenamiento que se ajusta perfectamente a requerimientos como este en el que solo es necesario tener datos estructurados que no se relacionan con tablas adicionales. Un claro ejemplo de una base de datos NOSQL. SQL Azure está más enfocado a servir como Base de Datos a aplicaciones altamente relacionales y transaccionales cuyo modelo de operación es difícilmente concebible con tablas sin integridad referencial (ERPs, CRMs, etc.) Entonces para qué incurrir en los altos costos de SQL Azure sin necesidad? SQL Azure es 66 veces más costoso que el almacenamiento en tablas de Windows Azure (US$0.15 por Gb por mes). Y esto es apenas lógico, dado que por debajo existe todo un motor relacional que administra la integridad referencial, la ejecución optimizada de consultas y un sinfín de aspectos adicionales.

    Esto, sin mencionar que las tablas tienen un rendimiento mayor a SQL Azure, dado que su acceso se hace directamente sin pasar por un motor de validaciones adicional. Y por otro lado, son altamente escalables, desde que una vez definida una columna de partición en nuestras tablas, Windows Azure encarga de distribuir automáticamente los datos en distintos nodos físicos, de manera que el acceso siempre es lo más optimizado posible. En este caso por ejemplo, hicimos particiones por colegios. Así que los resultados de cada colegio se almacenaron en una partición distinta sin mayor esfuerzo. Por si fuera poco, cada registro grabado en una tabla de Windows Azure, queda respaldado con otras dos copias de seguridad, para brindar redundancia. Esto se ejecuta sin costo alguno (tiempo, dinero, o programación) además sucede lo mismo con los blobs, las colas y el mismo SQL Azure.

    Así pues, procedí a crear un aplicativo Windows que tomaba la información de resultados del ICFES y la llevaba hasta la nube.

    Capa de Negocio y Presentación WEB

    El equipo de desarrollo de Asesoftware tomó una interfaz de acceso a datos Web que ya existía y le hizo la adaptación para consultar los datos de las tablas. Estos datos eran presentados en formato HTML y también sirvieron para construir un PDF que se distribuye a los usuarios de la aplicación que contiene el boletín con los resultados del examen. Estos PDFs luego de ser construidos, se almacenan en el espacio de BLOBs de Windows Azure, que también nos brinda unos costos súper bajos de almacenamiento (US$0.15 por Gb).

    En estas capas hubo que tener en cuenta ciertas consideraciones, como por ejemplo el manejo de las interfaces con los esquemas de almacenamiento de Windows Azure, los modelos de redirección de la aplicación al dominio original, etc. En general estrategias puramente técnicas que ya he publicado en mis artículos de Windows Azure dentro de este blog, o que estaré publicando próximamente.

    Solución Desplegada

    Siendo sinceros, esta solución fue desplegada en Azure con una estrategia de sobre-estimación dado que es la primera vez que se sale al aire con un proyecto de esta magnitud en el país y se quería prevenir cualquier eventualidad que pudiera dar una mala imagen de la plataforma. Fue así como la solución se desplegó en cuatro WebRoles de tamaño grande (CPU: 1.6Ghzx4, RAM: 1.7Gbx4) lo que al final nos da una capacidad de 25.6GHz de procesamiento en conjunto y 27.2GB de RAM. En realidad estimo que para la situación actual, sería suficiente con el 70% de esta capacidad. Pero gracias a los precios de Azure, se pudo establecer este esquema holgado, sin un mayor impacto a la inversión. Además, en las noches cuando hay menos carga, se bajan máquinas para disminuir los costos. Por eso, cuando hablé de un total de US$3000 para tener la aplicación desplegada durante una semana, dije que estaba exagerando. En realidad el costo es menor. Recuerden que el costo antes de Azure también por una semana estaba alrededor de los US$25.000!

    Conclusión

    Windows Azure permitió a ASESOFTWARE sacar en muy corto tiempo (contra reloj) una aplicación de consumo masivo para un gran cliente como lo es el ICFES que ha respondido y superado perfectamente sus expectativas, con unos costos muchísimo menores (8x) y también con la ventaja de que la solución final es totalmente dinámica en su despliegue permitiendo pagar solo lo que se consume, sin necesidad de contratos o tarifas planas que pueden generar desperdicios en la inversión de capital para el cliente.



  • WarNov Developer Evangelist

    PDC 2010 en Colombia!

    • 0 Comments

    El PDC es el evento más importante para Desarrolladores Profesionales en el mundo. Este año por primera vez se estará emitiendo masivamente a través de transmisiones online y además con réplicas en los principales países de la industria de Software, entre ellos Colombia.

    En esta imagen encuentran la información del evento y dando clic sobre el mismo serán transferidos a la página de registro gratuito.

    PDC 2010 Colombia



  • WarNov Developer Evangelist

    Beneficios de Windows Azure para MSDN y Bizspark

    • 12 Comments

    Los suscriptores Premium, Ultimate y Bizspark de MSDN tienen 16 meses de suscripción gratuita a los servicios de Windows Azure. A partir de noviembre los suscriptores MSDN Professional también la tendrán.

    Qué se debe hacer? para activar este beneficio?

    Si usted es suscriptor a MSDN y aún no ha comenzado a disfrutar de este beneficio visite este sitio para conocer todos los detalles.

    image

    A continuación una guía detallada de cómo acceder a estos servicios:

    Podemos llegar hasta aquí desde MSDN a través de la suscripción a la que tengamos Acceso:

    image

    Luego de esto pasamos a esta pantalla. Dele un nombre a su futura cuenta de Windows Azure, lea y acepte los términos de servicios si lo desea y de clic en siguiente:

    image

    Después, introducimos nuestra identificación y datos de tarjeta de crédito (con fines de identificación personal, pues esta tarjeta no es cargada si los consumos se ajustan a lo establecido dentro de la oferta. Si los consumos exceden a los límite0s de la oferta, en ese caso sí serán cargados)

     image

    Finalmente, tras la validación de la tarjeta de crédito y nuestra identificación personal, pasamos a la confirmación de la adquisición de los servicios. Leemos el contrato de licencia y su deseamos hacemos la compra:

    image

    Esto nos lleva a la sección de Check Out donde se hace efectiva definitivamente la transacción. Chequeamos la marca en la que confirmamos que sabemos que si excedemos los límites de la oferta, estos serán cargados a la tarjeta de crédito:

    Nos aparece entonces una confirmación como esta. Aquí confirmamos la orden.

    9. En la siguiente pantalla, activamos el servicio:

    Aquí se nos confirman los datos de nuestra suscripción y damos Finalizar:

    Luego recibiremos un mensaje de confirmación similar a este:

    Luego abrimos el portal del desarrollador de Windows Azure (http://windows.azure.com) usando el Live ID empleado para la suscripción y veremos nuestro nuevo proyecto de Azure listo para ser trabajado!

    Otra forma de llegar hasta la suscripción:

    1. Visite el portal de  servicios online de Microsoft (Microsoft Online Services Customer Portal (MOCP)). Cambie el país a Colombia, el idioma a español y haga clic en la opción continuar, para pasar a la página Primeros Pasos:

    .image

    En esta página haga Sign in con su Windows Live ID, y luego haga clic en el tab de Servicios  y allí haga click en Comprar ahora en la sección de ofertas especiales

     image

    image

  • WarNov Developer Evangelist

    Web Camp Colombia 2010

    • 12 Comments

    Las inscripciones para este evento ya están abiertas aquí

    Siento un gran agrado al poder estar organizando el primer evento en Colombia en el que estaremos tratando durante un día completo temas relacionados con desarrollo Web usando estándares y empleando tecnologías y herramientas de Microsoft que lo mejor de todo: SON GRATUITAS

    Los Web Camp son eventos patrocinados por Microsoft que se realizan por todo el mundo y en esta ocasión el turno le ha tocado a Colombia.

    Flair002Flair005

    Es así como el 30 de Noviembre en las instalaciones de Microsoft Bogotá, estaremos llevando a cabo este evento todo el día en en 6 salas distintas simultáneamente, desarrollando un track diferente en cada una de ellas:

    1. WebPI: WebMatrix y CMS Kentico
    2. Windows Azure
    3. IE9 & HTML5
    4. MVC2
    5. REST+JQuery+OData
    6. ASP.NET4

    La parte teórica de los tracks será transmitida gratuitamente vía LiveMeeting a través de 6 hilos de transmisión distintos.

    La jornada que comienza a las 8.30am con el registro y se prolonga hasta las 4pm, se divide en dos grandes etapas: La primera comprende presentaciones teóricas y demos y la segunda comprende laboratorios guiados en los que los asistentes podrán practicar todo lo aprendido con la guía del speaker especialista. Por este motivo, es recomendable que los asistentes permanezcan en un solo track durante todo el día.

    Tendremos la siguiente agenda tentativa para cada uno de los tracks:

     

    Flair001

    8.30 – 9.00 Registro
    9.00 – 10.40 Primera Charla
    10.40 – 11.00 Break (Incluido)
    11.00 – 12.00 Segunda Charla
    12.00 – 13.00 Almuerzo (Incluido)
    13.00 – 15.45 Laboratorios
    15.45 – 16.00 Evaluación Evento y Cierre

     

     

    Como ven, habrá break y almuerzo incluido y es necesario traer laptop para los laboratorios. Posteriormente cuando abramos las inscripciones para el evento, especificaremos los requerimientos necesarios para cada track. Por si fuera poco, para los emprendedores vamos a tener la posibilidad de entrar en los programas de emprendimiento de Microsoft llamados WebSiteSpark y BizSpark a través de los cual tendremos acceso a licencias de herramientas Microsoft para el desarrollo de aplicaciones web, soporte y visibilidad.

    WebSiteSpark:

    BizSpark:

     

    Nuestro Request for Speakers ya ha cerrado y estos son los confirmados:

    JQuery, REST, JSON

    Frank Silva

    Windows Azure

    Gerardo Ramos

    IE9, HTML5, CSS3

    Juan Carlos Ruiz Pacheco

    MVC 2 (3)

    Hugo Zapata

    ASP.NET 4

    Roberto Alvarado

    WebPi: WebMatrix y Kentico

    Marylin Alarcón

     
    Las inscripciones para este evento ya están abiertas aquí
     


  • WarNov Developer Evangelist

    Silverlight Tour–Bogotá, Colombia (20Oct–22Oct 2010)

    • 1 Comments

    SLT_Trans

    El Curso de Silverlight que Ha dado la Vuelta al Mundo: el Silverlight Tour regresa a la capital Colombiana del 20 al 22 de Octubre 2010!

    El Silverlight Tour es un curso de tres días acerca de Silverlight 4: a detalle, con mucho código y una gran cantidad de conceptos técnicos y de arquitectura que todo desarrollador profesional de Silverlight (y claro, de Windows Phone 7) debe conocer a profundidad.

    Tip: esta fecha para Bogotá cuenta con una magnífica promoción que no querrán dejar pasar Smile así que les recomiendo aseguren su lugar registrándose en el sitio del curso.

    image

    Sí: Colombia es Pasión y Silverlight también! Winking smile

    Los esperamos!



  • WarNov Developer Evangelist

    Windows Azure Interoperable

    • 2 Comments

    Windows Azure, la plataforma de Cloud Computing de Microsoft, esta diseñada para permitir interactuar con plataformas y lenguajes que no tienen que ser siempre Microsoft. Veamos de que se trata en este corto video.

    Script del Video:

    Microsoft provee la tecnología más actualizada que ayuda a las empresas del mundo a mejorar sus negocios. Así como Windows ofrece una plataforma que permite desplegar tecnologías Microsoft y No Microsoft, la plataforma de Windows Azure provee un ambiente flexible para desarrollar aplicaciones y servicios en la nube.

    Como sabemos, Windows Azure es un sistema operativo que facilita el desarrollo, y de aplicaciones basadas en Cloud Computing. De esta manera, nos permite desarrollar, hostear y administrar servicios y aplicaciones en la nube.

    Esta plataforma de cloud está diseñada para maximizar la interoperabilidad

    Usando herramientas de Windows Azure y ambientes de desarrollo como Visual Studio, Framework .net, Eclipse, PHP y Java, se pueden crear aplicaciones portables que corren en Windows Azure.

    Windows Azure soporta protocolos de internet muy usados tales como HTTP, REST, SOAP y XML. Así aseguramos portabilidad de datos desde ambientes de desarrollo externos.

    Microsoft ofrece recursos de Windows Azure que son OSS útiles por ejemplo para hacer integración de ambientes de desarrollo como Eclipse de manera tal que se ofrecen una serie de wizards y utilidades para escribir, depurar. configurar y desplegar aplicaciones PHP a Windows Azure.

    En cuanto a lenguajes de programación el Windows Azure SDK para  PHP ayuda a los desarrolladores PHP a crear aplicaciones web basadas en PHP que pueden correr en Windows Azure y los desarrolladores JAVA pueden usar el SDK para JAVA, y usar los servicios de almacenamiento de Windows Azure para almacenar datos de sus aplicaciones.

    Adicionalmente, Windows Azure también ofrece el Windows Azure Tomcat Accelerator para desplegar soluciones Java basadas en Tomcat en Windows Azure. Esto comprende básicamente subir los ejecutables del servidor de Tomcat a la nube para poder desde Windows Azure ejecutar aplicaciones Java.



  • WarNov Developer Evangelist

    Llenar celdas vacías en Excel con 0

    • 5 Comments

    Nosotros developers en determinado momento tenemos que lidiar con hojas de calculo. Aquí un pequeño tip que nos puede ayudar mucho.
    Como llenar un conjunto disperso de celdas vacías con un valor o formula dado? Por ejemplo con ceros?
    En este video se muestra de una manera muy rápida.
    Enjoy!

     



  • WarNov Developer Evangelist

    Aprender Azure podría significarte una XBOX de última generación más un Kinect!

    • 4 Comments

    Microsoft Virtual AcademyDescarga el trialMicrosoft Activa

    Aquí mismo en mi blog encuentran más recursos para aprender!



  • WarNov Developer Evangelist

    WebMatrix: Fast & Free Web Development

    • 9 Comments

     

    Update: Hoy 6 de Octubre salió al aire el Beta 2 de WebMatrix.  Se espera la versión final para fin de año. En conmemoración les comparto un libro que se está editando y nos enseña la sintaxis Razor, y además la presentación que uso cuando muestro este producto.

    Visual Studio .NET es la herramienta mas poderosa para desarrollar virtualmente cualquier tipo de aplicaciones para computadores.
    Pero cuando somos novatos en la programación, entrar a un Visual Studio a desarrollar se siente como meterse a la cabina de un Airbus A380 a pilotearlo…

    Para aprender a pilotear, sería mejor en un Cessna que tiene solo los controles básicos y nos permite ir aprendiendo sin abrumarnos con tantos controles.

    Hoy en día Microsoft tiene para nosotros un conjunto de herramientas GRATUITAS que nos permiten entrar al mundo de desarrollo Web de una manera bastante sencilla y rápida.

    WebMatrix

    Contiene todo lo necesario para desarrollar aplicaciones web:

    •Free

    •Liviano

    •IIS Developer Express como Servidor Web

    •ASP.NET como framework tecnológico ahora presentando a RAZOR: una sintaxis para programar de una manera más sencila

    •SQL Server® Compact como motor de base de datos

    •IDE para edición de páginas web.

    A continuación para mostrar la agilidad de la herramienta, les muestro un video en el cual construyo una aplicación que accede a Twitter y nos muestra el feed de una persona en particular. Más adelante vendrán más posts mostrando más características de WebMatrix.

    Update: Hoy 6 de Octubre salió al aire el Beta 2 de WebMatrix.  Se espera la versión final para fin de año. En conmemoración les comparto un libro que se está editando y nos enseña la sintaxis Razor, y además la presentación que uso cuando muestro este producto:

     

    Para aprender más de WebMatrix no se pierda nuestro Web Camp Colombia 2010.

  • WarNov Developer Evangelist

    Windows Azure: Compilado de Recursos

    • 3 Comments

    A continuación les presento un conjunto de recursos acerca de Windows Azure que aplica sobretodo a la audiencia hispana.

    La primera, es una presentación de PowerPoint que da un recorrido global sobre la plataforma. El segundo recurso precisamente es un video donde hago la presentación de estos slides, de tal manera que les permitirá tener un mayor sentido de la presentación.

    El tercer punto presenta todos los artículos de este blog, relacionados con Windows Azure, desde el último hasta el primero. En general es buena idea que si están comenzando con esta plataforma, comiencen a leer desde el primero, ya que progresivamente va subiendo el nivel técnico de estos artículos.image

     

     

    Herramientas

    1. Cliente WPF para Administración de Blob Storage
    2. Windows Azure Service Management CmdLets
    3. Explorador de Tablas Azure Online
    4. Sitio de cmdlets de Azure para PowerShell

    Para finalizar, si tienen preguntas acerca de Windows Azure, tras algún evento, este es el post en el que en los comentarios las pueden anotar, y con mucho gusto trataré de resolverlas!

    Gracias por Asistir!

  • WarNov Developer Evangelist

    High Performance Computing (HPC) y Windows Azure

    • 0 Comments

    Como bien lo dice el título de este artículo, hablo básicamente de dos cosas: HPC y su relación con Windows Azure. Si ud quiere saber de Windows Azure antes de leer este artículo, le recomiendo mis posts introductorios. Si ud quiere saber de HPC y la alternativa que ofrece Windows en este sentido le recomiendo que lea la primera parte de este artículo. Y si quiere saber la relación entre HPC y Windows Azure, le recomiendo la segunda parte del post.

    image

    Primera Parte: HPC

    En la vida real existen aplicaciones de software que definitivamente no pueden ejecutarse en un ambiente de cómputo tradicional y tampoco en un ambiente de cómputo avanzado tradicional (esto es un servidor de grandes características)

    Cálculos científicos como por ejemplo análisis para la creación de una nueva medicina, el estudio del genoma humano, aplicaciones financieras para ejecutar estudios de riesgo sobre cantidades de datos descomunales, predicción del comportamiento de acciones en las bolsas de valores… todo esto requiere de capacidades de cómputo que sobrepasan cualquier procesador que se pueda comprar en Unilago (léase centro comercial temático de computadores) o encargar a Dell por ejemplo a través del sitio web.

    Los cálculos que hacen las CPUs se miden en FLOPS (FLoating point Operations Per Second). Una calculadora decente trabaja con 10FLOPS.

    En general los procesadores de nuestros computadores hoy en día generan de 0.5 a 120 GFLOPS de poder de cómputo. 1 GFLOPS = 10e9 FLOPS

    Pero procesos como la simulación de la dinámica molecular no se pueden terminar en corto tiempo ni siquiera con el poder de 6 PFLOPS = 6 millones de GFLOPS o lo que es equivalente a 6 millones de PCs trabajando juntos para lograr el mismo objetivo.

    Para el caso de la resolución de estos procesos complejos, se han abordado dos soluciones. La primera son los supercomputadores y la segunda son los clústeres de cómputo. Ambas soluciones hacen parte de lo que conocemos hoy como High Performance Computing o HPC.

    La primera tiene grandes limitaciones físicas, pues no podemos construir un solo procesador con una capacidad tan grande como la requerida. Resultaría súper costoso y poco eficiente. Así que los supercomputadores son escasos y limitados.

    La segunda opción, es tratar de emular a un solo procesador gigantesco, mediante la unión de recursos de cómputo que se encuentran distribuidos en unidades independientes de cómputo, que se comunican a través de redes. Esta opción es más viable que la primera y básicamente viene en dos sabores.

    El primer sabor es el restringido a una red homogénea. En general es una LAN o VLAN con máquinas del mismo tipo bajo un mismo sistema operativo. Los desarrollos y administración de este tipo de ambientes son sencillos, pero tienen la limitante que no se podrían conectar con el resto de capacidades de cómputo que tiene el mundo. En general estos sistemas se conocen como Clúster Computing.

    El segundo sabor comprende aquel en el que los nodos que componen la súper máquina se encuentran en distintas redes o dominios administrativos con diferentes características de hardware, sistemas operativos y demás, conectados generalmente a través de internet. La administración es más complicada, pero tenemos la ventaja de poder obtener cómputo de todo el mundo para lograr el resultado buscado. Este tipo de solución se conoce como Grid Computing.

    Hoy en día la mayor capacidad de cómputo alcanzada por un sistema de Grid Computing es de 6PFLOPS precisamente alcanzada por el proyecto Folding@Home que hace simulaciones moleculares. Las máquinas empleadas en este tipo de cómputo son PCs de usuarios como ud o como yo que descargan un cliente que aprovecha los recursos no usados de la CPU para procesar unidades de trabajo en background que luego de ser procesadas se reenvían al servidor central.

    Este tipo de aplicaciones siempre han estado en el ámbito científico súper especializado y acaso en aplicaciones financieras de altísimo nivel.

    Ahora sin embargo no es necesario estar haciendo un doctorado en mecánica cuántica para entrar en este mundo. El mero hecho de crear una aplicación de análisis de redes sociales, podría requerir HPC.

     

    Pero cómo desplegar una solución HPC?

    Gracias a Windows Server 2008R2, es muy sencillo. Si ud tiene una licencia de este OS, ya puede activar los servicios de HPC que vienen con la licencia, para poder conectarse con otras máquinas y distribuir su súper aplicación en el clúster de su compañía. Y si requiere de más cómputo en ambientes heterogéneos y en otras ubicaciones geográficas, entonces gracias a las características High Performance Computing Basic Profile (HPCBP), un estándar del Open Grid Forum para poder conectar clústeres heterogéneos en ambientes HPC podrá expandir sus límites mundialmente.

    Siendo relativamente nuevo en el mercado de HPC, Windows HPC Server 2008 se posicionó en el ranking mundial Anude sistemas de cómputo HPC en la casilla 19 con una capacidad de 180.6 TFLOPS que es aproximadamente igual a 18000 PCs de escritorio de las más potentes hoy en día.

    image

    Segunda Parte: HPC y Windows Azure

    Windows Azure se distingue sobre todo por sus capacidades de escalamiento instantáneo cuando las aplicaciones así lo requieran. Sin embargo desde su concepción, estuvo dirigido a aplicaciones de negocio y no a HPC. No obstante, cuando uno quiere desarrollar una aplicación HPC por ejemplo para el departamento financiero de un Banco y ve la arquitectura de Windows Azure no puede evitar pensar que sería el mejor modelo para hacer HPC “por demanda” sin necesidad de invertir miles de dólares en unidades de cómputo que solo serán necesarias por un tiempo determinado.

    El modelo de Azure nos permitiría por ejemplo tener nuestro Servidor de HPC local en nuestras instalaciones por ejemplo, pero las unidades de cómputo estarían en la nube y aprovisionaríamos tantas como necesitemos solo por el tiempo necesario!

    Qué se necesita entonces para correr HPC en Windows Azure?

    Las instancias de cómputo en Windows Azure corren sobre versiones virtualizadas de Windows Server 2008R2x64. Así que lo único necesario es activar el servicio de HPC en esas instancias y ya estarán listas para unirse al objetivo común, al servicio del servidor principal que estaría on-premises.

    La buena noticia, es que los servicios HPC ya están activos en las instancias de Azure, listos para que las instancias identificar cuando se les están enviando peticiones para trabajos de HPC. De esta manera, aplicaciones financieras, de industria farmacéutica, científicas y demás, podrán generar un sistema HPC con un servidor local y levantar cuántas máquinas sea necesario en la nube y solo serán cargados los costos consumidos. Nada de comprar máquinas ni pagar tarifas planas. Todo será cobrado dinámicamente de acuerdo al consumo de cómputo con los estándares de cobro de Windows Azure. (Hoy en día una hora de proceso en Windows Azure con una CP de 1.7GHz de velocidad nos cuesta 12 centavos de dólar).

    Así que si usted tiene este súper sistema en mente con necesidades de HPC para poderlo desplegar y no lo ha podido sacar a la luz porque la inversión inicial es extremadamente alta, piense que Windows Azure ya admite HPC y que además le convierte toda la inversión de capital inicial (CAPEX) en costos dinámicos operativos (OPEX), brindándole todo lo necesario para que pueda sacar su negocio a producción!



  • WarNov Developer Evangelist

    WordPress & Windows Live: 2 Grandes se Unen

    • 5 Comments

    Siendo realistas a WordPress yo solo le veía un problemita y era que no permitía hacer zoom con el scroll del mouse. Algo mínimo que ya arreglaron. Por supuesto, esto no fue lo que propició la asociación con Microsoft y Windows Live específicamente.

    “#Microsoft NO piensa que el OSS es incompetente. De hecho lo usa, lo apoya y genera OSS y free tools para crearlo.” Ese fue uno de mis twitts respondiendo cierta apreciación que obedece sobretodo a una imagen ya antigua de la forma de operar de la corporación.

    Hoy en día la comunidad es muy importante como generadora de progreso en el mundo. Es por eso que iniciativas no Microsoft y además OpenSource como PHP y ahora WordPress reciben un espaldarazo de la corporación para apoyar su desarrollo y difusión en el mundo. Esto ha sucedido con apoyos financieros, soporte en nuestras plataformas de desarrollo y aún incluyendo productos OSS de terceros en nuestros instaladores.

    En esta ocasión estudiando las necesidades de los consumidores de Windows Live en materia de blogs, Microsoft encontró en WordPress.com una brillante alternativa. Como ya es bien sabido por todos, no se trata de reinventar la rueda.

    image

    WordPress.com tiene todo un conjunto de capacidades impresionantes. Desde una plataforma completamente escalable y una efectiva protección anti-spam hasta una gran experiencia en la personalización de los blogs. WordPress está detrás del 8.5% de la web! Es usado en 25 millones de sitios y es visto por más de mil millones de personas cada mes. Además, Automattic (los padres de WordPress.com) es una compañía en la que sus empleados están enfocados en el arte del blog y cómo mejorarlo continuamente. En definitiva, ellos saben de qué se trata el negocio.

    Así que en vez de que Windows Live invirtiera en crear un servicio de Blog nuevo, se decidió que lo mejor para los consumidores era proporcionarles el poder de WordPress.com integrado con los mejores servicios de Windows Live a los que ya están acostumbrados.

    Tres aspectos importantes de esta unión:

    · Se ofrecerá un mecanismo simplificado para la migración de los blogs actuales de los usuarios hacia WordPress.com

    · WordPress.com se podrá conectar con Messenger a voluntad, para que nuestros amigos se enteren cada vez que escribimos nuestros posts.

    · A los clientes de Windows Live se les permitirá crear fácilmente blogs en WordPress.com.

    Obviamente las urls de los blogs actuales se mantendrán y se mapearán a la nueva version de la plataforma. Así que no perderán ningún visitante durante el cambio.

    Esta es la pantalla que encontrarán en la migración:

    image

    Otras opciones aparte de la migración están disponibles como descargar todo el contenido del blog, migrar después o sencillamente eliminar el espacio actual. Además hay más información de guía aquí.



  • WarNov Developer Evangelist

    Notificaciones de Consumo para usuarios de Windows Azure

    • 0 Comments

    Para que sea más fácil para los clientes de Windows Azure realizar un seguimiento de su uso de horas de cómputo, ahora estamos enviando a los clientes correos electrónicos con notificaciones, cuando el uso de horas de cómputo excede 75%, 100% y 125% del número de horas incluido en el plan de cómputo.  Los clientes de nuestra oferta de consumo estándar recibirán durante las primeras 13 semanas de su suscripción, alertas por correo electrónico cada semana con el consumo de horas de cómputo de la semana anterior.  Después de este periodo, los clientes recibirán alertas por correo electrónico cuando su cómputo exceda 75%, 100% y 125% de su uso mensual basado en el consumo de los últimos tres meses.  Los clientes también pueden ver su uso actual y el balance no facturado en cualquier momento en el portal de cliente de servicios en línea de Microsoft.  La dirección de correo electrónico que se utiliza para la comunicación es la misma dirección que se utiliza al crear la cuenta de facturación.



  • WarNov Developer Evangelist

    Bing + IE9 en el Futuro Cercano

    • 4 Comments

    Con la aparición de IE9, le damos la bienvenida a un nuevo tipo de motor de búsqueda. Uno que ya tiene la efectividad que siempre esperamos, pero que sobrepasa la edad de piedra gracias a estándares como HTML5 aplicados a herramientas como IE9 en aplicaciones como Bing!

    Si Ud. es Silverlight'er no se preocupe, porque HTML5 para nada significa la desaparición de Silverlight. Este ejemplo nos muestra precisamente un escenario adecuado para HTML5, mientras para Silverlight tenemos escenarios con aplicaciones empresariales que requieren presencia online y una gran integración con el negocio de las compañías y sobretodo una interfaz de usuario inigualable.

    En este video les muestro cómo explotando las nuevas características de IE9 (como el soporte a HTML5 y la integración con Windows 7), podemos lograr una nueva era en motores de búsqueda.

    Disfrútenlo!

     
    Por ahora podrán descargar la beta de Internet Explorer 9 desde AQUI:

    Español: www.labellezadeinternet.com

    Ingles: www.beautyoftheweb.com

     


  • WarNov Developer Evangelist

    IE9 Beta disponible dentro de 45 minutos!

    • 6 Comments

    Es 15 de Septiembre de 2010 y son las 11:15am

    Presentamos la nueva versión de nuestro navegador web: se trata de Internet Explorer 9 (IE9), un explorador pensado para mejorar la experiencia de los usuarios, simplificar el trabajo de los desarrolladores y sacar el máximo provecho a las páginas web.

     

    clip_image001

    Este nuevo explorador se enfoca en cuatro aspectos: rapidez, confiabilidad, sencillez y compatibilidad. En palabras de José Antonio Barraquer, director de Unidad de Negocios de Windows para Microsoft Colombia, “Internet Explorer 9 se apropia de las ventajas del computador para ofrecer una navegación mucho más ágil; tiene una apariencia limpia que da más importancia a los contenidos, mantiene un robusto sistema de seguridad y ofrece un mayor soporte a los estándares modernos de desarrollo en internet”.

    La historia de Internet Explorer se remonta al 16 de agosto de 1995, cuando con la salida de Windows 95 al mercado apareció la versión 1.0 de este navegador. Desde entonces, se han realizado sustanciales mejoras en materia de rendimiento, seguridad y apariencia. Tantas, que hoy, 15 años después, se calcula que el 59 por ciento del tiempo que la gente pasa en un computador Windows es invertido en el explorador de internet.

    ¿Qué es lo nuevo de Internet Explorer 9?

    Más limpio y sencillo

    IE9 se enfoca en los contenidos y en lo que el usuario quiere ver y encontrar, por eso, el número de botones se reduce y el marco del explorador se desvanece en el fondo, trayendo a un primer plano la página que se visita. Algunas de características son:

    · Barra de direcciones inteligente más inteligente: La barra de direcciones y el cuadro de búsqueda se combinan en un solo recuadro desde donde el usuario puede navegar a un sitio, buscar y obtener sugerencias de sus proveedores de búsqueda, tener acceso a su historial y a sus sitios favoritos, etc.

    · Navegación por pestañas mejorada. Un renovado diseño para las nuevas pestañas muestra los títulos de los sitios más visitados por el usuario y permite reabrir las pestañas cerradas recientemente, así mismo permite restaurar las última sesión del navegador y carga páginas y gráficos de una manera mucho más rápida. Además podemos extraer pestañas de una instancia de IE9 y ponerlas en otra instancia!

    · Integración con Windows 7: a través de un pin o alfiler se pueden anclar los sitios web a la barra de tareas, para acceder a ellos con tan solo un clic y sin necesidad de abrir el navegador. Además, con el ajuste de ventanas de Aero Snap, ahora se pueden ver dos pestañas o ventanas al mismo tiempo, sin tener que acomodar el tamaño de cada una de ellas. Crece el botón “Atrás”, mucho más usado que el “Adelante”, para que el usuario vea únicamente lo que es indispensable para su navegación.

    clip_image002[4]

    Más confiable

    IE9 responde a las necesidades de los usuarios en materia de privacidad y confidencialidad, que, según Juan Carlos Ruiz, MVP que ha trabajado mucho con nosotros el tema de IE9, “necesitan algo confiable. Poder concentrarse lo que hacen en internet sin pensar en nada más, o hacer transacciones bancarias sin temor a que los roben”. Por eso, IE9 cuenta con sistemas integrados de seguridad, privacidad y confiabilidad que mantienen seguros a los usuarios y evitan que su experiencia se vea interrumpida.

    En materia de seguridad, Internet Explorer 9:

    · Introduce el Download Manager o Administrador de Descargas: Se trata de una función que permite administrar fácilmente los contenidos que están siendo y han sido descargados y que remplaza el cuadro de “Ejecutar, Guardar como o Cancelar” usado en las versiones anteriores de Internet Explorer. El Download Manager permite, desde una misma ventana, abrir o cancelar cualquiera de las descargas, y escanea cada uno de esos contenidos en busca de virus o archivos ejecutables potencialmente dañinos.

    clip_image004[4]

    · Mantiene la navegación en privado (InPrivate): Es una forma ‘navegar a escondidas’, que permite trabajar en la red sin dejar rastro de las páginas que se visitan o las palabras que se ingresan en los buscadores. Además protege los datos de formularios y las contraseñas, garantizando que su información personal se mantendrá en privado.

    · Mantiene la más alta protección contra el malware: Con filtros como Smartscreen y Anti-pishing que bloquean los mecanismos de suplantación de identidad y software maliciosos, Internet Explorer sigue siendo el navegador más seguro del mercado.

    clip_image006[4]

    Más rápido

    Según Walter Novoa (WarNov), bloguero y Developer Evangelist, “pensando en que a los usuarios nos gusta navegar muy rápido y no podemos esperar montones de tiempo a que las paginas descarguen, Internet Explorer 9 está diseñado para descargar las páginas mucho más rápido que otros navegadores. Además IE9 se aprovecha totalmente del hardware de la máquina, incluyendo la tarjeta de Video para sacarle el máximo provecho a HTML5 por ejemplo”. Algunas de sus novedades en materia de rapidez son:

    · Aceleración por hardware: Actualmente los navegadores usan sólo el 10% de las capacidades del computador, pero IE9 toma ventaja de todo el poder de cómputo de la máquina y del sistema operativo Windows, permitiendo al explorador correr como si fuera una aplicación nativa instalada en el computador.

    · Olvida los Plug-in adicionales: Soporta elementos de audio y video, habilita sombras, video embebido y contenido de audio sin necesidad de un Plug-in adicional.

    clip_image008[4]

    Más compatible e interoperable

    “Muchas de las aplicaciones para desarrollar para internet requieren del uso de aspectos técnicos muy elaborados. La compatibilidad, en estos casos, exige que podamos crear aplicaciones desde diferentes lenguajes que sean interoperables con los diferentes navegadores”, explica Sergio Acosta, experto diseñador, y agrega: “el soporte de HTML5, el nuevo lenguaje de HTML establecido como el nuevo estándar para creación de aplicaciones en internet, permite que todas las aplicaciones se vean exactamente igual y funcionen de la misma manera sin tener que reescribir varias veces el mismo sitio para los diferentes exploradores”.

    Las mejoras de IE9 en materia de interoperabilidad permiten a los desarrolladores enfocarse en crear grandiosas aplicaciones, en lugar de gastar tiempo de creando tres veces el mismo sitio. Dentro de las mejoras en este ámbito se destacan:

    · Soporte HTML5: Haciendo más sencillo el trabajo de los desarrolladores y logrando que su trabajo se vea igual en todos de los exploradores.

    · Compatibilidad con estándares modernos basados en CSS3, DOM L2 y L3, SVG, ECMASScript5, entre otros.

    Pasos para descargarlo

    El beta de Internet Explorer 9 puedes descargarse gratuitamente en castellano desde: www.labellezadeinternet.com Y en ingles http://www.beautyoftheweb.com dentro de 45 minutos (12pm del 15 de Septiembre de 2010)



  • WarNov Developer Evangelist

    Por qué los bloques Try-Catch sí afectan el performance

    • 7 Comments

    He escrito un post en el cual hablo de las Buenas Prácticas en Manejo de Excepciones .Net. Tuve un comentario muy interesante en el cual la persona me mencionaba que contrario a lo que yo afirmé en ese post, los bloques try..catch no generaban mayor impacto en el performance de la aplicación. Y me citó algunos artículos al respecto.

    Aunque los artículos obedecen a pruebas que en ocasiones producen casi los mismos resultados usando o no excepciones, puedo decirles muy respetuosamente que son bastante ingenuos porque no tienen en cuenta la estructura y funcionamiento del framework.net y sobre todo del optimizador de compilación.

    Así pues, les comento que para hacer la afirmación que hice, no ejecuté ninguna prueba. Solo hablé de una conclusión bastante lógica que se tiene al estudiar el comportamiento del optimizador de compilación del framework:

    Tomemos como ejemplo el siguiente código escuelero:
        
       

       1:      int cuenta = 1;
       2:      AlgunMetodo();
       3:      cuenta++;
       4:      OtroMetodo();
       5:      cuenta++;
       6:      Console.WriteLine(cuenta); 

    Cuando esto es compilado, el JIT de .NET efectivamente optimiza todo a:

       1:  AlgunMetodo();
       2:  OtroMetodo();
       3:  Console.WriteLine(3);

    Que obviamente corre enormemente más rápido.

    Sin embargo, para poder mantener las reglas de ordenamiento de memoria distribuida a través de hilos durante el tiempo de ejecución y compilación el CLR deshabilita TODA OPTIMIZACION que afecte el orden de lecturas y escrituras del CIL en los bloques protegidos. Los bloques protegidos conocidos también como regiones protegidas, bloques resguardados o bloques “try”.

    Esto en castellano sencillo nos indica que el JIT no puede optimizar código metido en bloques try..catch. Es por esto que recomiendo reducir el uso de excepciones al mínimo necesario. Y usarlas solo para solucionar problemas no relativos a negocio, que se pueden solventar simplemente con un algoritmo más inteligente.

    También por esto menciono que esos artículos son ingenuos, porque para hacer una prueba fehaciente deberíamos incluir un algoritmo de uso común en el cuál la optimización sí marca la diferencia.

    Así que si usamos el try-catch tendríamos:

       1:      int cuenta= 1;
       2:      try
       3:      {
       4:          AlgunMetodo();
       5:          cuenta++;
       6:          OtroMetodo();
       7:          cuenta++;
       8:      }
       9:      finally
      10:      {
      11:          Console.WriteLine(cuenta);
      12:      } 

    En este caso, al carecer de optimizaciones, la variable inicia con el valor de 1, luego se ejecuta AlgunMetodo(), luego la variable cuenta se vuelve a ajustar, luego OtroMetodo(), luego una tercera actualización y finalmente se escribe el calor de una variable, que cuesta más en ciclos de procesador, que escribir una constante. En síntesis, estamos desperdiciando ciclos.

    Estas optimizaciones que mostré aquí son de las mas sencillas que hace el JIT; pero no son las únicas; existen muchas otras optimizaciones que se pierden dentro de los bloques try..catch. Súmenle a esto le hecho de que efectivamente estas instrucciones consumen más memoria (poca o mucha pero la consumen) y as’;i podrán concluir por qué es mejor usarlas muy prudentemente.



  • WarNov Developer Evangelist

    Correcciones acerca de Documentación en SQL Azure (Tablas del Sistema e Integración con CLR)

    • 0 Comments

    Las siguientes son dos correcciones de documentación que apareció/sigue apareciendo en MSDN y que hoy en día no es correcta.

    Hace un tiempo en MSDN y por ende en artículos de este blog, apareció en la documentación que SQL Azure aún no soportaba tablas del sistema por ejemplo para consultar la metadata de la base de datos. Sin embargo hoy en día estas tablas y vistas sí están disponibles de manera que podemos ejecutar consultas como ésta:

    SELECT COUNT(*) from information_schema.tables 
    WHERE table_type = 'base table'

    Como observamos, a hoy, 16 de Agosto, esto sigue apareciendo erradamente en MSDN como una característica NO disponible en SQL Azure, cuando la verdad es que sí lo está (Click en la imagen para ver detalles)

    image


    Sin embargo, como se reitera con este POST, esa característica SÍ está disponible.

    Por otro lado, también se había anunciado que el CLR estaba disponible para integración con SQL Azure. Lastimosamente esta información también estaba errada. En este caso, la documentación de MSDN sí ha sido actualizada y muestra que el CLR no está disponible en SQL Azure.

    Para finalizar, se comenta que en todos los artículos de este blog acerca de Windows Azure, hemos tomado los correctivos correspondientes.



  • WarNov Developer Evangelist

    Video y Podcast: Introducción Avanzada a Windows y SQL Azure

    • 0 Comments

    A veces queremos saber de algo, sin tener que dedicarla el 100% de atención o tiempo… tal vez hacerlo mientras vamos en el transporte público o conduciendo… o sencillamente no tenemos tiempo para leer un extenso artículo y preferimos ver un video o tal vez oír al respecto.

    Este video – podcast está basado en este artículo de Windows Azure el cual tiene una presentación que hago siempre a mis entrenados. Se brinda una introducción avanzada a la plataforma para conceptualizarla y poder comenzar a trabajar de lleno con ella.

     

    Enjoy!



  • WarNov Developer Evangelist

    Cómo escalar aplicaciones. SCALE UP vs. SCALE OUT y las posibilidades con Windows y SQL Azure

    • 1 Comments

    Yendo directamente al grano, SCALE UP hace referencia a lograr escalabilidad a nivel de servidor, incrementándole sus recursos de hardware, antes de mejorar la escalabilidad usando otro servidor. Por ejemplo, aumentando su cantidad de memoria, o la capacidad/velocidad de los discos o la cantidad de núcleos de cómputo del servidor.

    En un enfoque SCALE OUT, la escalabilidad se logra “sacando” la carga a otros servidores.

    Al principio el enfoque SCALE UP puede parecer el menos costoso y más sencillo para muchos casos. Pero cuando las exigencias siguen aumentando con el tiempo, lo que sí es seguro, es que se llegará a un límite práctico en el que no será posible “agrandar” más el servidor para ponerle por ejemplo 500 núcleos de procesamiento de manera que pueda satisfacer una fuerte demanda. En estos casos, es fácil observar cómo puede resultar mucho más barato, eficiente y productivo un enfoque de SCALE OUT. Además, un SCALE UP generalmente genera tiempo de baja, mientras se cambian o mejoran las partes de hardware. Mientras que con un SCALE OUT, solo es cuestión de levantar más máquinas independientes.

    Windows Azure es tan flexible, que nos permite ambos tipos de escalamiento. El SCALE UP se logra a través del ajuste que podemos hacer a las instancias que creamos para correr nuestros servicios (recordemos que una instancia es cada uno de los servidores virtuales que ordenamos crear para desplegar nuestras aplicaciones de Windows Azure). Estas instancias vienen en cuatro tamaños. Así que al mejor estilo SCALE UP podemos hacer que el tamaño de cada instancia crezca. Estas son las posibilidades de tamaño que tendríamos:

    image

    Así que podríamos escalar desde 1.6 hasta 10.4 GHz en CPU, desde 1.75GB hasta 14GB de RAM y desde 225MB hasta 2TB de disco duro.

    En cuanto a la alternativa SCALE OUT, tenemos servidores que se aprovisionan muy rápido y pueden comenzar a trabajar en equipo manipulando solo unos elementos de configuración. Así pues, tenemos la ventaja de poder adicionar más y más instancias a nuestro despliegue, las cuales se ajustarán automáticamente con solo un despliegue inicial.

    ESCALABILIDAD CON SQL AZURE

    El SCALE OUT no aplica solo a los servidores de presentación o cómputo (web o worker roles), sino también de SQL Azure como tal. No obstante, en SQL Azure no tenemos la posibilidad de hacer SCALE UP.

    SQL Azure ofrece una gran cantidad de ventajas sobre todo al tener que escalar bases de datos de una manera elástica y rápida, dado que tenemos casi que ilimitada capacidad para levantar nuevas bases de datos para satisfacer cualquier demanda. En SQL Azure, no tenemos una relación física uno a uno entre servidores y bases de datos como en SQL Server tradicional. Pero la abstracción que se nos brinda es perfecta para que la mayoría de las veces el manejo que se le da a estos conceptos sea el mismo que on-premises. Sin embargo, cuando tenemos una cuenta de SQL Azure, tenemos la posibilidad de generar todas las bases de datos que queramos, las cuales residirán en servidores distintos (a veces coincidencialmente residirán en el mismo servidor). Pero esta distribución es ejecutada por los balanceadores de carga automáticos de Azure que se encargan de determinar cómo distribuir las cargas de peticiones a la plataforma.

    Entonces en SQL Azure no vamos a tener la posibilidad por ejemplo de aumentar la memoria de un server dado, sino que sencillamente levantamos otra base de datos. Con esto, podemos tomar una base de datos que requiera ser escalada y segmentarla o particionarla en otras bases de datos más pequeñas y con mejor rendimiento.

    Comprendido ya el concepto de SCALE OUT, veamos ahora que por ejemplo cuando hablamos de bases de datos, existen dos formas para hacer este tipo de escalamiento: Vertical y Horizontal. Estos tipos de escalamiento se ejecutan particionando las tablas que conforman la base de datos horizontal como verticalmente. Luego de estar particionadas, obviamente se generan más tablas y éstas a su vez se pueden ubicar en distintas bases de datos, lo que nos daría el escalamiento buscado.

    Escalamiento Vertical:

    Consiste en dividir las tablas verticalmente a través de columnas. Así pues, uno por ejemplo podría escoger dejar las columnas más importantes en una tabla y las menos usadas en otras. Por ejemplo dejar en una tabla T1 de la base de datos D1 los datos del cliente y su dirección principal, y en otra T2 en la base de datos D2, otra tabla con las direcciones secundarias. Entonces para lograr un correlacionamiento correcto entre T1 y T2, en T2 deberíamos tener un mecanismo de llaves foráneas hacia T1.

    Otro ejemplo de particionamiento vertical se observa por ejemplo cuando dejamos una tabla completa (o conjunto de ellas) en una sola base de datos. Y otras tablas en otras bases de datos. Por ejemplo, tiene mucho sentido en una aplicación de negocios, tener la tabla de clientes en una sola base de datos, para obtener el mayor rendimiento posible para ésta.

    Lo que es más, se puede combinar ese particionamiento para lograr aún más escalabilidad y eficiencia, de manera que podremos poner la tabla de clientes en su propia base de datos, y luego particionar sus columnas en distintas tablas, pero dentro de la misma base de datos.

    image

    Escalamiento Horizontal:

    Este escalamiento comprende la distribución de los datos de una tabla a través de varias tablas con la misma estructura, cada una de las cuales generalmente se encuentra en una base de datos distinta y en ocasiones aún en instancias y/o servidores distintos. Es un excelente acercamiento para circunstancias en las cuales la variabilidad de la carga de trabajo en el servidor de base de datos es muy alta, pues en SQL Azure por ejemplo, es muy fácil aprovisionar y desaprovisionar servidores; además siempre resulta mucho más barato que tener un servidor de muy altas prestaciones siempre encendido esperando por picos de carga de trabajo.

    En cada versión de la tabla se almacena un conjunto de datos que tienen como dato común el valor de una columna que generalmente se conoce como PartitionKey. Entonces cada versión de la tabla se llama Partition. Este es el tipo de particionamiento que se hizo popular con SQL Server 2005.

    Para poder tener “conciencia” de dónde están ubicados los datos con una PartitionKey determinada, existe una tabla maestra donde reside esta información.

    Por ejemplo; en una aplicación comercial, se puede decidir dejar en una base de datos diferente cada las ventas de cada ciudad. En este caso la ciudad sería la PartitionKey para identificar cada tabla. Sin embargo, una clave de partición, podría estar conformada por más campos dependiendo de la naturaleza de la aplicación y el tipo de carga de trabajo.

    Consideraciones para el escalamiento horizontal:

    1. Escoger una llave de partición adecuada, tras un profundo conocimiento del negocio. En general es más recomendable usar una llave natural que una numérica en estos casos. En el caso anterior, haber escogido la ciudad como llave de partición es mucho más eficiente por ejemplo que haber escogido por ejemplo el Id de la venta.

    2. Administración de particiones: Es una de las tareas más complejas luego de haber definido las particiones; generalmente implica consideraciones en el desarrollo de la aplicación que debe saber dónde insertar o modificar nuevos datos así como dónde buscar los existentes. La idea es escoger un tipo de partition key que no vaya a requerir una posterior reubicación de datos cuando el negocio eche a andar, lo que probablemente significaría un tiempo de baja del servicio.

    3. Evitar cross-database joins: Aparte de ser bastante ineficiente, algunas plataformas como SQL Azure no soportan consultas distribuidas. Por eso es mejor que todos los datos que requiere una tabla dada, estén en la misma DB. De lo contrario habrá que escribir el código necesario para poder ejecutar consultas asíncronas a través de varias particiones que retornen datos separadamente que luego tendrán que ser unidos en la capa de aplicación.

    4. Alta disponibilidad: Cuando se escoge un acercamiento de este tipo de escalabilidad, es requerido que todos los servidores a través de los cuales está particionada la base de datos tengan unos índices de disponibilidad bastante altos. Estos índices son provistos por SQL Azure. Es así como cada vez que creamos una base de datos, SQL Azure crea automáticamente tres copias de la misma, para asegurar esta alta disponibilidad. Cada copia es creada en servidores físicos distintos dentro de la misma ubicación geográfica. La sincronización entre estas bases de datos es automática también. En caso de falla, SQL Azure automáticamente redirige las peticiones a una de las copias de seguridad y vuelve a levantar una tercera copia para futuras eventualidades. Todo esto ocurre sin intervención humana y sin caídas del servicio.

    5. Administración: El escalamiento horizontal puede llegar a generar alta complejidad en la administración dado que hay que aplicar updates, ejecutar patching, ajustar un plan de recuperación de desastres, etc. y todo esto para cada servidor usado en el escalamiento. Afortunadamente SQL Azure se encarga de todas estas tareas automáticamente por nosotros. De las únicas tareas de administración que un DBA debería tener en cuenta son: creación de esquemas, afinamiento de índices, optimización de consultas, logins, usuarios y administración de la seguridad.

    image

    Conclusión:

    A pesar de que el particionamiento puede ayudar a mejorar el performance, la escalabilidad y los costos, puede llegar a ser bastante complejo implementar un esquema de particionado exitoso. Algunas aplicaciones tienen un esquema de particionamiento natural del cual se puede tomar ventaja mientras hay otras aplicaciones que requieren ser re - arquitecturadas para volverlas escalables; cosa que vale la pena la mayoría de las veces. Windows Azure y SQL Azure proveen una plataforma sobre la cual las aplicaciones pueden hacer SCALE-UP/SCALE-OUT en el caso de Windows Azure al permitir “agrandar” las instancias y al permitir usar varias instancias con el mismo despliegue. Y en el caso de SQL Azure con SCALE-OUT al permitir pasar de una o dos bases de datos a decenas o cientos de bases de datos de una manera muy sencilla sin incurrir en fuertes costos de infraestructura. Además, los clientes no pierden inversión si necesitas reducir nuevamente la infraestructura, ya que todo estaba en arriendo en el esquema de plataforma como servicio.



  • WarNov Developer Evangelist

    Cómo aprender Silverlight?

    • 0 Comments

    A continuación un corto pero sustancioso compilado de excelentes recursos que nos dejarán listos para aprender Silverlight:

    Comienzo con una referencia a los videos en español elaborados por mi buen amigo mexicano el MVP en Silverlight Rodrigo Díaz Concha (recuerdo que algunos los hizo estando aquí en Bogotá) que ahora están en Channel9.

    Luego, para ampliar lo visto aquí, pueden acceder al Curso de Entrenamiento en Silverlight también en Channel9, pero esta vez en Inglés con contenido complementario.

    También existe un Training Kit disponible en MSDN  para los que les gusta seguir laboratorios paso a paso.

    Si somos diseñadores con otras herramientas como las de Adobe, o desarrolladores con pocos conocimientos en diseño y queremos entrar de lleno al mundo de Blend y Silverlight, les recomiendo este post, donde les ofrezco más recursos enfocados específicamente a aprendizaje de diseño con énfasis en Silverlight.

    Y si nos gusta más leer, nada mejor que Silverlight Step by Step (cualquier versión os sirve para introducirnos en la tecnología, ya que hay versión 2, 3, y 4). Este libro es escrito por Laurence Moroney, un empleado de Microsoft.



  • WarNov Developer Evangelist

    Cuentas de prueba de Windows Azure gratuitas por una Semana

    • 8 Comments

    Para que puedan probar todo lo que deseen en Windows Azure por una semana de manera totalmente gratuita y sin tarjeta de crédito, he creado este sencillo concurso en el cual los ganadores serán las primeras 15 personas en comentar este post, poniendo su usario en twitter que debe estar siguiendo a @msdevcol y gustarle la página de Microsoft Developers Colombia en Facebook.

    Los 15 ganadores tendrán una cuenta activa en Windows Azure desde hoy hasta el día 16 de Julio.

    Por mensaje directo les enviaré su usuario y password para que entren directamente por el Windows Azure Developer Portal.

    Recuerden que aquí encuentran todos mis artículos de Azure y que si tienen dudas, pueden formularlas como comentarios en este Post.

    A comentar!

  • WarNov Developer Evangelist

    Breve Historia del Framework .NET

    • 11 Comments

    Otra de las preguntas frecuentes que tengo por ahí generalmente de personas que aún tienen que trabajar con desarrollos .net de legado (versión < 4.0), es: cuáles son las ventajas de hacer el cambio, sobre todo para tratar de convencer a sus líderes, para migrar.

    Lastimosamente ocurre una situación bastante particular, y es que cada versión del Framework ha hecho su trabajo muy bien. Así que una vez se termina una aplicación en determinada versión del Framework, no se ve la necesidad de evolucionar. Pero luego nos damos cuenta de que empezamos a limitar las implementaciones avanzadas que podríamos hacer a las que sí tendríamos acceso con la última versión.

    Es por esto que escribo este post, en el que hago un recorrido por la historia del Framework para que podamos ver rápidamente de qué nos estamos perdiendo, de acuerdo a la versión del Framework que tengamos instalada.

    • .NET Framework 1.0:
      • Liberado el 13 de Febrero de 2002 para Win98, Me, NT 4.0, 2000 y XP. Su soporte terminó en Julio de 2007 y el soporte extendido en 2009.
    • .NET Framework 1.1
      • Publicada en Abril de 2003 junto con el segundo reléase de Visual Studio .NET (2003). Fue la primera versión incluida como parte de un sistema operativo (Windows Server 2003). Su soporte terminó en octubre de 2008 y el extendido termina en octubre de 2013 (así que mejor vayan pensando en migrarse).
      • Mejoras:
        • Los controles ASP.NET que en el 1.0 eran un Addon ahora vienen nativos.
        • Seguridad mejorada con Code Access Security para ASP.NET
        • Soporte nativo para ODBC y Oracle
        • Nacimiento del .NET Compact Framework
        • Soporte a IPV6
        • Cambios numerosos en las APIs.
    • .NET Framework 2.0
      • Liberado con Visual Studio 2005, SQL Server 2005 y BizTalk 2006. El primero en incluirse automáticamente en las instalaciones de SQL Server. Sin ningún Service Pack, fue la última versión en soportar Win98 y Me. Luego vino el SP 2 y con éste, fue la última versión en soportar Windows 2000.
      • Mejoras:
        1. Los fabulosos Generics
        2. Soporte para compilaciones de 64 bits
        3. Numerosos cambios en las APIs
        4. Integración con SQL Server: CLR Integration
        5. Inclusión del Runtime de .NET en aplicaciones nativas.
        6. Nuevos y mejorados controles de ASP.NET
        7. Controles de Datos con Data Binding automático.
        8. Soporte para Temas, Skins y Webparts.
        9. Nacimiento del .NET Micro Framework.
        10. Clases Parciales!
        11. Tipos “Nullable” (por ejemplo enteros a los que se les puede dar el valor de nulo)
        12. Métodos Anónimos!
        13. Iteradores
        14. Tablas de Datos
    • .NET Framework 3.0
      • Conocido en sus comienzos como WinFX fue liberado en noviembre de 2006 e incluyó un nuevo conjunto de APIs hechas en código administrado que son parte integral de Windows Vista y Windows Server 2008. También está disponible para Windows XP SP2 y Windows Server 2003. No hubo mayores cambios arquitectónicos. De hecho, se usa el runtime del Framework 2.0. Aquí tampoco hubo liberación de Compact Framework.
      • Mejoras:
        • Windows Presentation Foundation (conocido antes como Avalon)
        • Windows Communication Foundation (conocido como Indigo)
        • Windows Workflow Foundation
        • Windows CardSpace (Conocido antes como InfoCard).
    • .NET Framework 3.5

       

    .NET Framework

     

    • Vio la luz en noviembre de 2007 pero no es incluida en Windows Server 2008. Modifica el CLR fundamental sobre el que se venía trabajando (2.0) para agregarle los métodos y propiedades requeridas sobre todo para LINQ. Aquí sí se liberó el Compact Framework 3.5. El código fuente de esta versión fue parcialmente liberado para conocimiento público con fines de depuración.
    • Mejoras:
      • Nuevas características de lenguaje en C#3.0 y VB.NET 9.0
      • Soporte para árboles de expresiones y expresiones y métodos lambda
      • Extension Methods!
      • Tipos Anónimos con inferencia estática de tipo
      • LINQ!
      • Soporte a paginación en ADO.NET
      • API de sincronización de ADO.NET
      • API de I/O asincrónico
      • PNRP Resolver (Peer-To-Peer)
      • Wrappers Administrados para instrumentación y Active Directory
      • Motores de WCF y WF mejorados que permiten el manejo de POX y JSON en WCF y también exponer WF como servicio. De esta manera, los servicios WCF se pueden mejorar con persistencia nativa de WF!
      • Soporte para pipeline de HTTP y sindicación de feeds.
      • ASP.NET Ajax ya no viene como un addon sino nativo.
    • Service Pack 1:
      • Liberado en agosto de 2008.
      • Performance mejorado para WPF en un 20-45%
      • Agregado el Entity Framework y los ADO.NET Data Services.
      • Agregados dos nuevos assemblies: System.Web.Abstraction y System.Web.Routing: Esenciales para el funcionamiento del MVC Framework. Incluyó un conjunto de controles de VisualBasic que se habían descontinuado como el Line y el Shape, en un conjunto llamado “Visual Basic Power Pack”. Viene con Windows 7 y Windows Server 2008 R2.
    • .NET Framework 3.5 SP1 Client Profile
      • Nace como una versión reducida del Framework con solo 28MB de tamaño, ideal para clientes inteligentes que no requieren todos los 250 MB del Framework completo.

     

    framework-net

     

    En la mayoría de casos (Excepto cuando se trata de pasar del 1.0 0 del 1.1 a cualquier otra versión del Framework) El paso es transparente y la migración no es muy compleja. Sin embargo es claro que siempre hay temores en las migraciones y puede hacerse complicado comenzar a disfrutar de las características de la última versión. Sin embargo, nada como estar trabajando con ella, de manera que ya vamos a tener disponibles todas las últimas características y sobretodo disfrutar de todas las nuevas tecnologías que siempre se enfocan a la última versión.

    Así que si no tiene el Framework 4.0. Que está esperando?

Page 10 of 13 (323 items) «89101112»