370 likes | 547 Views
Ponentes : Angel Acha ( Microsoft Innovation Center – Cantabria ) - www.ciin.es Gisela Torres ( Renacimiento ) - Roberto Gonzalez ( Renacimento ) - Luis Panzano (Microsoft Iberica ) Organiza : Ethel García (Microsoft Iberica ). Azure Camps 11 y 12 Mayo, Madrid.
E N D
Ponentes : Angel Acha ( Microsoft Innovation Center – Cantabria ) - www.ciin.esGisela Torres ( Renacimiento) -Roberto Gonzalez (Renacimento) -Luis Panzano (Microsoft Iberica)Organiza: Ethel García (Microsoft Iberica) AzureCamps 11 y 12 Mayo, Madrid
web. www.ciin.estwitter. @MICCantabriaemail. aacha@ciin.esblog. geeks.ms/blogs/ciin AzureCamps Angel Acha Centro de Innovación en Integración Microsoft Innovation Center - Cantabria
¿Y ahora qué? • Utilizar «cloudstorage» desde tus aplicaciones on-premises • Windows Azure Storage • SQL Azure • Combinar «cloudcomputing» con tus aplicaciones on-premises (para extender su funcionalidad) • Para crear un online-marketplace para tu aplicación • Para ejecutar tareas (cálculos) que requieran cargas de CPU intensas (repartiendo el trabajo entre varias instancias de worker role) • Añadir nueva funcionalidad a una aplicación ya existente
¿Y ahora qué? • Utilizar los servicios proporcionados por AzureAppFabric desde tus aplicaciones existentes • Access Control • Service Bus • Crear una versión SaaS de tu aplicación • En vez de instalar SW en las máquinas de tus clientes • Más escalable que una aplicación on-premises • Proporcionar servicios de soporte a plataforma cloud • Creando herramientas • Creando componentes
Mover una aplicación a la nube • Primer paso: • Lograr que la aplicación se ejecute en la nube sin perder ninguna funcionalidad • Segundo paso: • Mejorar la aplicación haciendo uso de las funcionalidades disponibles en Azure
Primer paso: Llegar a la nube • 1) Plantear el diagrama con la estructura de la aplicación actual
Primer paso: Llegar a la nube • 1) Plantear el diagrama con la estructura de la aplicación actual – Frontal Web
Primer paso: Llegar a la nube • 2) Establecer los objetivos y requerimientos • Que acceda a los mismos datos que versión on-premises • Quitar dependencias con AD • ¿Que información de diagnostico deseamos que obtenga? • ¿Cómo realizar la autenticación y seguridad? • ……..
Primer paso: Llegar a la nube • 3) Plantear la arquitectura de a aplicación tras migrar a la nube
Primer paso: Llegar a la nube • 4) Analizar la aplicación existente para determinar que piezas necesitamos cambiar al migrar a la nube
Primer paso: Llegar a la nube • 5) Empezar a migrar • Crear el «web role» • Realizar modificaciones en web.config para utilizar nuevo sistema de autenticación • Crear las nuevas BD’s o sistemas de almacenamiento • SQL Azure • Windows Azure Storage • Migrar los datos • Modificar el código de la aplicación para que vaya a buscar los datos a la nueva ubicación • Modificar string de conexión para que apunte a BD en SQL Azure • Modificar código de acceso a datos para que utilice Azure Storage
Primer paso: Llegar a la nube • 6) Establecer los métodos de configuración y despliegue • Nº de instancias de role, UpgradeDomains, FaultDomains • Crear scripts de despliegue • Utilizar «Mock» Issuer • ….
Primer paso: Llegar a la nube • 7) Analizar los costes de la aplicación actual y como podríamos mejorar • En menor coste • En base a que conceptos me van a cobrar y cuanto • Estimar los costes • Mejorar rendimiento y escalabilidad
Segundo paso: Mejorar la aplic. • Automatizar el despliegue • Crear Task de MSBuild que llamen a scripts de PowerShell • Usar Windows Azure Storage en vez de SQL Azure • Evaluar la posibildad de utilizar Azure Storage en vez de SQL Azure (más barato) • ¿Qué cambios sería necesario realizar en el código de la aplicación
Segundo paso: Mejorar la aplic. • Migrar los procesos de servicio en background que tengamos on-premises a worker roles de Azure Onpremises Cloud
Segundo paso: Mejorar la aplic. • Abstraer el worker role para poder reutilizarlo
Segundo paso: Mejorar la aplic. • Abstraer el worker role para poder reutilizarlo
Segundo paso: Mejorar la aplic. • Abstraer el worker role para poder reutilizarlo
Segundo paso: Mejorar la aplic. • Sacar el máximo partido del Worker Role • Dependiendo de sus necesidades de computación • Periodicidad con la que se ejecuta
Tips: Aplicaciones basadas en BD • Realizar la migración de la BD’s SQL Server a SQL Azure • Crear «script» DDL con esquema de la BD utilizando SQL Server Management Studio u otras herramientas • Realizar el volcado de los datos de SQL Server a SQL Azure • Utilizar BulkCopy (bcp), u otra herramientas para realizar el volcado • Modificar el string de conexión para que el código de la aplicación vaya a buscar los datos a la nueva ubicación
Statelessness • Load balancer round-robins requests in multi instance roles • Follow web farm best practices • Do not store state on individual instances • Do not assume subsequent requests will hit the same instance • Don’t forget things like dynamically generated images loaded by a page
AJAX and Windows Azure • Client side calls may not return to the same instance the original page came from • AJAX calls must be stateless • Don’t generate a page and leave state on the server to call via AJAX later • All instances require the same MachineKey for ViewState hashing • Fabric uses same machine key for all instances in a role
Windows Azure Session State Windows Azure Load Balancer uses round-robin allocation. Session state must persist to client or storage on every request session[“foo”] = 1; session[“foo”] = 2; LB What is the value of session[“foo”]? SQL Azure Windows Azure Storage
Solving Session State • Persist to Storage via Session State Provider • Windows Azure AppFabric Caching • SQL Azure • Windows Azure Storage • Custom • Persist to Client • Use cookies Don’t forget ASP.NET MVC TempData relies on Session State provider by default
Windows Azure AppFabric Caching • Using Windows Azure AppFabric Caching as the session store • In-memory, distributed cache • Based on Windows Server AppFabric Caching • Used the Microsoft.Web.DistributedCache assembly found in the SDK • Enable ASP.NET 4 Session Compression • Currently available in AppFabric LABS Portal as CTP
AppFabric Caching Session State Session state stored using Windows Azure AppFabric Caching and an out-of-the-box session state provider session[“foo”] = 1; session[“foo”] = 2; LB What is the value of session[“foo”]? AppFabric Caching
SQL Server Session State • Use SQL Azure as backing store • http://azuresqlsession.codeplex.com/wikipage?title=Home&ProjectName=azuresqlsession • Round trip to database twice per request • Read at request start • Write at request end • Enable ASP.NET 4 Session Compression • Scale out across multiple DBs • Use session state partitioning • http://tinyurl.com/scale-session • SQL Azure is competitive on cost basis
SQL Azure Session State Session state stored using SQL Server Session State Provider and session state partitioning session[“foo”] = 1; session[“foo”] = 2; LB resolve partition What is the value of session[“foo”]? SQL Azure 3 x 1GB Databases
Windows Azure Storage Providers • Sample ASP.NET Providers (Session, Membership, Role etc…) • Sample Codehttp://code.msdn.microsoft.com/windowsazuresamples • Uses Blob + Table Storage • Several storage transactions per request • Enable ASP.NET 4 Session Compression Sample Provider should be treated as a starting point only.
Cookies • Serialize and Encrypt state into cookie • Possible to implement as Session State Provider • Cookies add significant performance overhead • Cookies sent with every request to domain • Use alternative host header to serve images etchttp://www.myweb.comhttp://images.myweb.com • Use Windows Azure Storage for static content