Azure

  • 1,394 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,394
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
2
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • SaaS delivers a packaged or equivalent commercial software application to end users over the Internet with a subscription or usage-based pricing model. Microsoft Office Live

Transcript

  • 1. Windows Azure Óliver Centeno
  • 2. Contenidos1. Introducción a Windows Azure2. Instalación3. Primeros pasos con Azure4. Servicios de Almacenamiento5. Servicios de Computación6. Windows Azure AppFrabric7. Otros Servicios de Azure
  • 3. 1. Introducción a Windows Azure Cloud Computing Windows Azure SQL Azure Features Roles
  • 4. 1. Introducción a Windows Azure Windows Azure SQL Azure Cloud Computing Features Roles
  • 5. 1. Introducción a Windows Azure Cloud Computing  Grandes aplicaciones  Granjas de servidores  Alquiler de servicios
  • 6. 1. Introducción a Windows Azure ¿Por qué usar Cloud?  Sacar servicios al mercado más rápido  Realizar tests de mercado  Controlar las pérdidas del fracaso  Ajustar la inversión a picos productivos  Ahorro de costes por infraestructura  Total escalabilidad
  • 7. 1. Introducción a Windows Azure ¿Por qué usar Cloud?
  • 8. 1. Introducción a Windows Azure ¿Me lo repites?  Pagas por el consumo que haces  NO requiere una inversión inicial grande  Escalas cuando te hace falta  Puedes adaptarte al nivel de tráfico  Es tolerante a fallos de almacenamiento  NO requiere mantenimiento  Es distribuido
  • 9. 1. Introducción a Windows Azure Proveedores de Servicios (SaaS)  Aplicaciones especializadas  Aplicaciones empresariales  Mercados verticales  Mercados locales
  • 10. 1. Introducción a Windows Azure Arquitectura Orientada a Servicios (SOA)  Cada parte de la aplicación es un servicio  No importa dónde ni cómo  Máxima reutilización Cliente Seguridad Gestión Cliente BD Cliente Validación
  • 11. 1. Introducción a Windows Azure Cloud Computing  ArquitecturaSOA  Independiente de infraestructura  Basada en consumo de recursos  Implementaciones:  GoogleApp Engine  Amazon Web Services
  • 12. 1. Introducción a Windows Azure Everything as a Service  Servicios de almacenamiento (DaaS y FaaS)  Servicios de Software (SaaS)  Servicios de infraestructura (IaaS y PaaS)  Servicios de comunicación (CaaS)  Servicios de monitorización (MaaS)
  • 13. 1. Introducción a Windows Azure Cloud Computing as a Service
  • 14. 1. Introducción a Windows Azure Windows Azure
  • 15. 1. Introducción a Windows Azure Windows Azure  Sistema Operativo  En Nube  Ejecución escalable de aplicaciones  Front-end  Back-end
  • 16. 1. Introducción a Windows Azure Tipos de aplicaciones  Aplicaciones Web  Aplicaciones de cómputo
  • 17. 1. Introducción a Windows Azure Ejecutable en servidores paralelos
  • 18. 1. Introducción a Windows Azure Funcionamiento  Máquinas virtuales  Separan la máquina física de los recursos  Windows Server 2008 + IIS 7  Web role  Worker role  Agente
  • 19. 1. Introducción a Windows Azure ¿Por qué virtualizar?  Optimizar el uso del servidor
  • 20. 1. Introducción a Windows Azure Tamaños de máquina virtual  Configurable para cada rol
  • 21. 1. Introducción a Windows Azure Otros componentes de la infraestructura
  • 22. 1. Introducción a Windows Azure Balanceador de carga  Redirige el tráfico entrante  Minimizar posibles ataques  Tolerancia a fallos  Soporte para mantenimiento
  • 23. 1. Introducción a Windows Azure Worker roles  Procesosejecutables en nube  Manejados por el Fabric Controller Web roles  Iguales a los Worker roles  Pero con un IIS interno  Aplicaciones Web
  • 24. 1. Introducción a Windows Azure Fabric  Granja de servidores  Manejable como un todo Fabric Controller  Manejador/Kernel  Instala roles  Replica el estado  Matrix
  • 25. 1. Introducción a Windows Azure Servicios de Almacenamiento  Abstracción del almacén físico  Independiente de máquina  Compartido  Endpoints de acceso (URIs)  Accesibles por REST  Tokens de autenticación
  • 26. 1. Introducción a Windows Azure Servicios de Almacenamiento  Cuenta de almacenamiento  Contenedores de ficheros  BLOB  Colas de mensajes  Tablas
  • 27. 1. Introducción a Windows Azure Y, ¿todo esto es Azure?  Incluso más  Windows Azure Platform  SQL Azure  AppFabric  CDN  Virtual Machine …
  • 28. 1. Introducción a Windows Azure ¿Qué es SQL Azure?  Soporte para BD relacionales  Similar a SQL Server Express Edition  Accesible mediante protocolo TDS
  • 29. 1. Introducción a Windows Azure ¿Qué es AppFabric?  .Net Services  Servicios de control de acceso (ACS)  Compatible con autenticación de terceros  Service BUS  Comunicación con otras aplicaciones
  • 30. 1. Introducción a Windows Azure Y, ¿dónde están mis datos?  Centros de datos  Dublín  Amsterdam
  • 31. 2. Instalación Descarga del SDK y suscripción Plantillas para Visual Studio Despliegue de Aplicaciones
  • 32. 2. Instalación Descarga del SDK y suscripción Plantillas para Visual Studio Despliegue de Aplicaciones
  • 33. 2. Instalación Requisitos  Windows 7, Vista, 2008 Server o superior  Visual Studio 2008 o superior  Web Express Edition también es compatible  SQL Server Express o superior  Ejecutar VS como administrador…
  • 34. 2. Instalación Windows Azure SDK http://www.windowsazure.com/es-es/develop/net/ Versiones  Última 1.6  Cada versión cambia cosas… 
  • 35. 2. Instalación Windows Azure SDK
  • 36. 2. Instalación SDKbin  Ensamblados y herramientas  Development Fabric  csmonitor para emular Azure  cspack para desplegar en la nube  csrun para desplegar en local  dfui para manejar el emulador  dsinit para configurar el servicio de datos
  • 37. 2. Instalación Visual Studio Tools  Permite crear proyectos de Azure  Instalable desde WPI 3  Descarga directa versión 1.5  http://www.microsoft.com/downloads/es-es/ details.aspx?FamilyID=517AD007-E736-45DF- 81DF-7CC9FC8BC192  Añade los proyectos de roles de Azure
  • 38. 2. Instalación Proyectos de roles  ASP.Net  ASP.Net MVC  WCF Service  Worker  FastCGI
  • 39. 2. Instalación Despliegue de aplicaciones  Windows Azure Development Portal  https://windows.azure.com/  Suscripción/Evaluación  Tarjeta de crédito o…  http://windowsazurepass.com/  JUANALVARADO
  • 40. 2. Instalación
  • 41. 2. Instalación Ejecución de un proyecto  Establecer como proyecto de inicio  Se ejecuta en el Development Fabric (DF)  Emulador de cómputo  Emulador de almacenamiento  csmonitor
  • 42. 2. Instalación Posibles problemas  Instancia de la BD local no accesible  Azure Command Prompt  dsinit /sqlInstance:. /forceCreate  No se ejecuta el proyecto  Liberar los puertos 80 y siguientes del IIS  Comprobar la versión del SDK y del Tools  Comprobar el emulador de cómputo (dfui)
  • 43. 3. Primeros pasos con Azure Creación de una aplicación Azure Migración de una aplicación existente
  • 44. 3. Primeros pasos con Azure Creación de una aplicación Azure Conversión de una aplicación existente
  • 45. 3. Primeros pasos con Azure Antes de nada…  Para subir a la nube…  Hay que registrarse con un MS Passport  Hay que indicar un medio de facturación  Incluso para una cuenta de prueba…  Recomendado tener 2 cuentas  Una para procesos de negocio  Otra para aspectos técnicos
  • 46. 3. Primeros pasos con Azure Módulos de gestión en la nube  Portal  Diagnostics  Analytics y herramientas de facturación
  • 47. 3. Primeros pasos con Azure Desde el portal se administra todo  Crear un servicio  Establecer la URL del servicio  Establecer grupos de afinidad  Subir un proyecto a staging  Testear el proyecto  Cambiarlo a producción  Activar y gestionar los logs  … y más
  • 48. 3. Primeros pasos con Azure
  • 49. 3. Primeros pasos con Azure Por eso Por ahora… Vamos a trabajar con el emulador
  • 50. 3. Primeros pasos con Azure Tipos de desarrollo para Azure
  • 51. 3. Primeros pasos con Azure Creación de un servicio
  • 52. 3. Primeros pasos con Azure Creación de un servicio  Elegir el/los roles (tipos de proyecto)
  • 53. 3. Primeros pasos con Azure Creación de un servicio  Librerías de Azure
  • 54. 3. Primeros pasos con Azure Creación de un servicio  Listo para ejecutar en local
  • 55. 3. Primeros pasos con Azure Configurar el modelo de servicios  ¿Qué proyectos desplegar? ¿Qué roles jugarán?  ServiceDefinition.csdef  Qué roles hay y cómo se comunican  Detalles de HTTP Y endpoints de acceso  No modificable en caliente  ServiceConfiguration.cscfg  Configuración e instancias de cada rol  Modificable en caliente  Accesible por código
  • 56. 3. Primeros pasos con Azure Configurar el modelo de servicios  Ej:Añadir un servicio de almacenamiento  Modificar la configuración  ServiceConfiguration.cscfg  Indicar los datos de tu cuenta  <Setting name="Microsoft.WindowsAzure.Plugins. Diagnostics. ConnectionString" value=" DefaultEndpointsProtocol=https; AccountName=XXX; AccountKey=YYY" />
  • 57. 3. Primeros pasos con Azure Configurar el modelo de servicios  Ej:Añadir configuración personalizada  Modificar la configuración  Añadir un nuevo <Setting>  <Setting name="Prueba" />  <Setting name="Prueba" value="Ejemplo" />  El valor sólo en el .cscfg
  • 58. 3. Primeros pasos con Azure Empaquetar y desplegar  cspack permite crear un script de despliegue  Botón derecho en el proyecto > Publicar
  • 59. 3. Primeros pasos con Azure
  • 60. 3. Primeros pasos con Azure Recomendaciones  Desplegar siempre a staging  Indicar una etiqueta con fines históricos  En el portal fijarse el color de los cubos  Staging y producción  Azul indica que se está facturando  Parar el servicio si no se va a utilizar
  • 61. 3. Primeros pasos con Azure
  • 62. 3. Primeros pasos con Azure Ejercicio 1: Añadir un modelo de datos  Clase Producto en un proyecto independiente  Clase de gestión que genera productos  Listar  Añadir  Eliminar  Control ASP para mostrar los datos  Carga en el evento Page_load
  • 63. 3. Primeros pasos con Azure Ejercicio 2: Añadir más configuración  Añadir un <Setting> a <ConfigurationSettings> en ambos ficheros de configuración  El valor se indica sólo en el .cscfg  Acceder al valor almacenado desde la clase RoleEnvironment  Crear una clase que centralice el acceso a los ficheros de configuración
  • 64. 3. Primeros pasos con Azure Ejercicio 3: Obtener datos del servidor  Añadir la librería Microsoft.VisualBasic  Utilizar las clases Computer y Environment  Mostrar:  Nombre de la máquina  SO (nombre, versión,…)  Número de procesadores  Directorio actual  Nombre de usuario  ¿Otros?
  • 65. 3. Primeros pasos con Azure Ejercicio 4: Obtener la lista de procesos activos  Y mostrarla en una página  Procesos WaIISHost y MonAgentHost var procesos = Process.GetProcesses(); from p in procesos orderby p.ProcessName select new { Nombre = p.ProcessName, Id = p.Id.ToString() };
  • 66. 3. Primeros pasos con Azure WaIISHost  Alojaun IIS 7  Funciona aunque tires el IIS MonAgentHost  Monitoriza la salud del rol  Toma estadísticas  Rendimiento, memoria, capacidad de disco,…  Se comunica con el Fabric Controller
  • 67. 3. Primeros pasos con Azure Migración a Azure  Solo Proyectos compatibles  Web  ASP.Net, MVC 2 y 3, Web de datos dinámicos  Silverlight  Normal, de negocios y de navegación  WCF  Servicio WCF y Flujo de trabajo WCF
  • 68. 3. Primeros pasos con Azure Migración a Azure
  • 69. 3. Primeros pasos con Azure Migración a Azure 1. Pasos 1 y 2 del diagrama 2. Cambiar la cadena de conexión a SQL Azure 3. Mover los ficheros locales al entorno del rol 4. Incluir ensamblados en el paquete del servicio (Copia local = true) 5. Publicar la aplicación en Windows Azure (Pasos 3 y 4 del diagrama)
  • 70. 3. Primeros pasos con Azure Migración a Azure  Cadena de conexión tipo SQL Azure Server=tcp:[servidor].database.windows.net,1433; Database=[baseDeDatos]; UserID=[usuario]@[servidor]; Password=[password]; Trusted_Connection=False; Encrypt=True; MultipleActiveResultSets=True
  • 71. 3. Primeros pasos con Azure Migración a Azure  Crear un archivo local al rol LocalResource recurso = RoleEnvironment. GetLocalResource("almacen"); string[] paths = { recurso.RootPath, "MiFicheroTest.txt" }; String fichero = Path.Combine(paths); using (FileStream flujo = File.Create(fichero)){ // código de acceso al flujo }
  • 72. 4. Servicios de Almacenamiento Windows Azure Storage BLOB Storage Servicio de Tablas Procesamiento de Mensajes
  • 73. 4. Servicios de Almacenamiento Windows Azure Storage Securización y acceso a recursos SQL Azure Database Servicios de BI con SQL Azure Reporting Sincronización con SQL Azure Data Sync
  • 74. 4. Servicios de Almacenamiento Compartir ficheros entre máquinas es difícil  ¿Tienes suficiente espacio en disco?  ¿Cómo aumentas la capacidad?  ¿Qué pasa si un disco se estropea?  ¿Hay balanceo de carga?  ¿Qué pasa se pierde la conexión?  ¿Qué tope tiene respecto a lecturas y escrituras?  ¿Cómo distribuyes la carga equitativamente?
  • 75. 4. Servicios de Almacenamiento Las soluciones que soportan todas estas cuestiones son caras o ineficientes  Base de Datos de BLOBs  Carpetas compartidas  Sistema de Ficheros distribuidos (DFS)  Almacenamiento en red (NAS)  Arrays de discos (DAS)  Discos virtuales (SAN)
  • 76. 4. Servicios de Almacenamiento Windows Azure Storage  API basado en REST  Acceso a través de HTTP  Construido sobre infraestructura de Web Rol
  • 77. 4. Servicios de Almacenamiento Ventajas  Escalable al igual que los roles  Enormes centros de datos  Mantiene la consistencia mediante replicación  Mínimo 3 veces para aceptar un commit  Las peticiones van a instancias actualizadas  Rendimiento aceptable (50-100 ms)  Mejorable mediante caché  Acceso público o privado a los datos
  • 78. 4. Servicios de Almacenamiento Cuentas de almacenamiento  Subdominios distintos para cada tipo  http://[cuenta].[tipo].core.windows.net/  Colas de mensajes (queue)  Tablas (table)  BLOB  URL editable
  • 79. 4. Servicios de Almacenamiento Acceso al Development BLOB Storage  Librería StorageClient.dll  Equivalente a REST  Cadena de conexión  UseDevelopmentStorage=true  http://127.0.0.1:10000/[cuenta]/[contenedor]/[BLOB]  DSService.exe.config  CloudStorageAccount.DevelopmentStorageAccount
  • 80. 4. Servicios de Almacenamiento1. Crear un Contenedor (directorio)  No se admiten mayúsculas CloudStorageAccount cuenta; var cliente = cuenta.CreateCloudBlobClient(); CloudBlobContainer contenedor = cliente. GetContainerReference([nombre]); contenedor.CreateIfNotExist();
  • 81. 4. Servicios de Almacenamiento Ejercicio: Crear contenedores  Página que crea contenedores  Y los lista en un desplegable  Permitir eliminar un contenedor seleccionado  Comprobar la configuración NO de desarrollo  DefaultEndpointsProtocol=http; AccountName=devstoreaccount1;AccountKey= Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6I FsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==
  • 82. 4. Servicios de Almacenamiento2. Subir BLOBS  Se puede hacer por REST  O mediante el StorageClient contenedor.ListBlobs(); var blob = contenedor.GetBlobReference("remoto");  Subida blob.UploadByteArray(datos); blob.UploadFile("local"); blob.UploadFromStream(stream); blob.UploadText("Texto a subir");
  • 83. 4. Servicios de Almacenamiento Detalles  Máximo 4MB de subida  Modificar <system.web>  Ejemplo para limitar a 50MB  <httpRuntime executionTimeout="300" maxRequestLength="51200"/>  En nube el BLOB se corta en bloques de 4MB contenedor.GetBlockBlobReference("remoto.txt");
  • 84. 4. Servicios de Almacenamiento Ejercicio: Crear una página que  Liste los BLOB de un contenedor  Permita eliminar un BLOB seleccionado  Permita subir ficheros  Recomendado control FileUpload  PostedFile.FileName y FileBytes
  • 85. 4. Servicios de Almacenamiento3. Descargar un BLOB  Desde contenedor público  Basta indicar la URL  http://127.0.0.1:10000/[cuenta]/[cont]/[BLOB]  Desde contenedor privado blob.DownloadByteArray(); blob.DownloadText(); blob.DownloadToFile("local.txt"); blob.DownloadToStream(stream);
  • 86. 4. Servicios de Almacenamiento Detalles  Para descargarlo desde el navegador  Descargar a MemoryStream Response.ContentType = blob.Properties.ContentType; Response.AddHeader("Content-Disposition", "attachment;filename=" + blob.Name); Response.BinaryWrite(ms.ToArray());  Se puede usar una caché local de archivos  Carpeta en el disco remoto para guardar los ficheros File.WriteAllBytes(fichero, blob);  Privada para cada instancia
  • 87. 4. Servicios de Almacenamiento Ejercicio: Descargar BLOBs  Desde la página anterior  Configurar almacenamiento local  Crear un método/clase de acceso a BLOBs  Primero busca en local var cache=RoleEnvironment.GetLocalResource("local"); String fichero = cache.RootPath + blob.Name;  Si no lo encuentra descarga de contenedor if(!File.Exists(fichero))
  • 88. 4. Servicios de Almacenamiento4. Propiedades de los BLOB  blob.FetchAttributes();  blob.Properties y blob.Metadata  BlobType  ContentType  LastModifiedTimeUtc  Length  ContentEncoding  ContentLanguage  ContentMD5  …
  • 89. 4. Servicios de Almacenamiento Tipos de BLOB  PageBlob  Optimizados para lectura/escritura aleatoria  Máximo 1TB de datos por página  Desplazamientos y rangos de 512 bytes  BlockBlob  Optimizados para streaming  Resuelven la limitación de 64MB por PUT  Cortan el BLOB en bloques de 4MB máximo  Máximo total de 200GB
  • 90. 4. Servicios de Almacenamiento5. Copias de los BLOB  De contenedor a contenedor blobDestino.CopyFromBlob(blobOrigen);  Snapshots  Copias a fecha de hoy  No incrementa el coste blob.CreateSnapshot(); contenedor.GetBlobReference("[nombre]?snapshot =[datetime]");
  • 91. 4. Servicios de Almacenamiento Ejercicio: Modificar la descarga  Comprobando la fecha local/remota  Comprobando un Metadata personalizado  Crear un contenedor nuevo  Permitir copiar un BLOB a éste  Permitir snapshots
  • 92. 4. Servicios de Almacenamiento Table Service
  • 93. 4. Servicios de Almacenamiento Tablas simples Acceso privado Almacenar entidades No relacional  No FK  No Joins  No índices Se puede particionar
  • 94. 4. Servicios de Almacenamiento
  • 95. 4. Servicios de Almacenamiento Entidades y tablas  Cada entidad debe tener  Un Timestamp (fecha y hora de inserción)  Una clave de partición (PartitionKey)  Una clave de registro (RowKey)  Anotación DataServiceKey  Especificar “partición” e “id” de cada objeto
  • 96. 4. Servicios de Almacenamiento Ejemplo: Entidad Producto [DataServiceKey("PartitionKey", "RowKey")] public class Producto{ public string Timestamp{ get; set; } public string PartitionKey { get; set; } public string RowKey { get; set; } public string Nombre { get; set; } public string Descripcion { get; set; } }
  • 97. 4. Servicios de Almacenamiento Ejemplo: Entidad Producto var productos = new List<Producto>{ new Producto{ PartitionKey = "Colores", RowKey= "1", Nombre = "Azul", Descripcion = "Color azul" }, new Producto{ PartitionKey = "Colores", RowKey = "2", Nombre = "Azul", Descripcion = "Color rojo" } };
  • 98. 4. Servicios de Almacenamiento Columnas de una tabla
  • 99. 4. Servicios de Almacenamiento Notas  Se admiten distintos tipos de entidad  Almacenando en el PropertyBag  No recomendado  Se pueden modificar las entidades  Cuidado de no corromper en modelo  La clave de partición garantiza la ubicación  Misma partición  Mismo disco físico
  • 100. 4. Servicios de Almacenamiento A tener en cuenta:  Usar las entidades como contrato  Propiedades añadidas opcionales  Mantener propiedades antiguas y nuevas  O migrar los datos a la nueva definición  No usar la misma clave de registro en una misma partición
  • 101. 4. Servicios de Almacenamiento Más cosas  Lo más rápido: obtener una partición única  Una entidad en una partición es rápido  Si no usamos clave de registro es lento  Compara por propiedades del bag  Si no usamos ninguna clave es muy lento  Debe recorrer todas las particiones  Seguramente en varios servidores
  • 102. 4. Servicios de Almacenamiento ¿Y cómo consumo los registros?  Crear un Rol  Crear una entidad (: TableServiceEntity)  Crear una tabla var cliente = cuenta.CreateCloudTableClient(); cliente.CreateTableIfNotExist("miTabla");  Se puede usar el API de ADO.Net  System.Data.Services.dll  System.Data.Services.Client.dll
  • 103. 4. Servicios de Almacenamiento Clases de contexto  Permiten CRUD mediante ADO 1. Extender TableServiceContext 2. Constructor basado en la cuenta 3. Propiedad de consulta LINQ  Miembros heredados  AddObject()  DeleteObject()  UpdateObject()  MergeOption
  • 104. 4. Servicios de Almacenamiento Ejemplo: Clase de Contexto // Constructor public ContextoProductos(): base(cuenta. TableEndpoint.AbsoluteUri(), cuenta. Credentials){ } // Propiedad de consulta public DataServiceQuery<Producto> Producto{ get{return CreateQuery<Producto>("Productos");} }
  • 105. 4. Servicios de Almacenamiento Ejemplo: Encontrar una entidad var entidad = ( from item in contexto.Producto where item.PartitionKey == "Coches" && item.RowKey == id select item ).First();
  • 106. 4. Servicios de Almacenamiento Ejercicio: Tabla de colores  Crear una entidad Colores  Crear un contexto  Crear una página para hacer CRUD
  • 107. 4. Servicios de Almacenamiento Acceso mediante StorageClient  ClaseCloudTableClient  Métodos  GET: ListTables()  DELETE: DeleteTable("nombre")  POST: CreateTableIfNotexist("nombre")
  • 108. 4. Servicios de Almacenamiento Ejercicio: Manipular tablas  Mostrar las tablas de la cuenta  Crear tablas nuevas  Añadir entidades mediante el Contexto  Eliminar tablas
  • 109. 4. Servicios de Almacenamiento Queue Service
  • 110. 4. Servicios de Almacenamiento Soporte para comunicaciones async Modelo Productor-Consumidor Número ilimitado de mensajes Máximo 8KB/mensaje (modelo ticket) Mensajes tipo String codificados en base64 3 instancias de cada cola
  • 111. 4. Servicios de Almacenamiento Uso de la cola  REST y StorageClient … de nuevo  Clase CloudQueueClient  ListQueues();  CreateIfNotExist();  Delete();  Clear();  SetMetadata();  GetQueueReference();
  • 112. 4. Servicios de Almacenamiento Uso de la cola  Clase CloudQueueMessage  cola.AddMessage();  cola.PeekMessage();  cola.GetMessage();  cola.DeleteMessage();
  • 113. 4. Servicios de Almacenamiento Ejercicio: Crear una página  Que cree colas  Que permita añadir y consultar el metadata  Que permita escribir y leer mensajes
  • 114. 5. Servicios de Computación Escalado de Aplicaciones con Azure Creación de Servicios para Azure Comunicación de Servicios sobre Azure
  • 115. 5. Servicios de Computación Compute Creación de Aplicaciones con Azure Creación de Servicios para Azure Múltiples Websites sobre Azure
  • 116. 5. Servicios de Computación ¿Qué pasa cuando el servidor se sobrecarga?  ¿laspeticiones se encolan?  ¿de manera indefinida?  ¿hasta que el servidor se cae?  ¿hasta que se queja algún usuario?
  • 117. 5. Servicios de Computación Ejercicio: Simulación  Crear un WebForm con un UpdatePanel  Y un Timer que se actualice cada 5 sg  Mostrar la hora actual de refresco  Crear otro WebForm  Que duerma el Thread durante 10 sg  Thread.Sleep(10000);  Durante el evento Load de la página  Tras suficientes peticiones tendremos la simulación
  • 118. 5. Servicios de Computación Ejercicio: Simulación  Para hacerlo más cómodo  Crear una aplicación de consola  Que lance 100 hilos new Thread( () => { } ).Start();  Y cada uno haga 25 peticiones asíncronas var cliente = new WebClient(); cliente.DowloadStringAsync(url);
  • 119. 5. Servicios de Computación Por suerte en Azure puedo indicar el número de instancias que se ejecutan para cada rol
  • 120. 5. Servicios de Computación ¿Y si no quiero hacerlo a mano? ¿Y si no quiero tener tantas instancias? ¿Y si quiero que levanten por sí mismas? Windows Azure Management API  Exige un certificado digital de Azure  Modificar .cscfg en caliente
  • 121. 5. Servicios de Computación ¿Y si no me sirve? ¿Y si no puedo escalar en horizontal? Porque no había pensado en ello… Puedes escalar en vertical  Indicar un nuevo tamaño de VM  NO RECOMENDADO
  • 122. 5. Servicios de Computación ¿Qué implica el escalado horizontal?  Balanceo de carga  Varias instancias de WaIISHost  Replicar los datos de usuario ¿Qué implica el escalado vertical?  Actualizarla aplicación (cambiar .csdef)  OJO! Límite de tamaño de VM
  • 123. 5. Servicios de Computación Tipos de persistencia de datos  Session  ViewState  Cookies  Application  Base de Datos
  • 124. 5. Servicios de Computación Ejercicio: Crear una aplicación ASPX  Que muestre los datos de la sesión  Cada 5 segundos  Timer y UpdatePanel  Para una variable Session["variable"]  Crear otra página que la modifique  Desplegar 2 instancias del rol  Matar el proceso WaIISHost
  • 125. 5. Servicios de Computación ¿Problemas?  Azure no garantiza que las peticiones vayan a la misma instancia del rol  Porque consume mucha memoria  OutOfMemoryException  Table-storage session state provider Soluciones  Almacenar la sesión en tablas  O en SQL Azure
  • 126. 5. Servicios de Computación Worker roles
  • 127. 5. Servicios de Computación Procesos de background Normalmente asíncronos Normalmente basados en mensajes Similar a la definición de un Thread Cuyos hilos son las instancias del rol Método Run
  • 128. 5. Servicios de Computación Ejercicio: Crear un Worker Rol  Que permita realizar operaciones aritméticas  Sumar  Restar  Multiplicar  Dividir  Raíz Cuadrada
  • 129. 5. Servicios de Computación Tal cual lo hemos creado no hace nada Hay que enviarle mensajes a. Consumo desde cola b. Peticiones desde un rol en Azure c. Peticiones desde fuera
  • 130. 5. Servicios de Computación Consumo de mensajes de una cola while (true){ var msg = queue.GetMessage(); if (msg != null){ Procesar(msg); queue.DeleteMessage(msg); }else{ Thread.Sleep(5000); } }
  • 131. 5. Servicios de Computación Reacción a peticiones  Externas: WCF WebService  Internas
  • 132. 5. Servicios de Computación Habilitar peticiones  Definir un endpoint  Tipo, protocolo y puerto  Input para externas  Internal para internas  Escribir el código de servicio  Clase ServiceHost  Clase NetTcpBinding  RoleEnvironment.CurrentRoleInstance.InstanceEndpoints
  • 133. 5. Servicios de Computación private void IniciarServicioCalculadora(){ this.host = new ServiceHost(typeof(MiCalculadora)); var bind = new NetTcpBinding(SecurityMode.None); var ep = RoleEnvironment.CurrentRoleInstance. InstanceEndpoints["miEndpointDeServicio"]; this.host.AddServiceEndpoint(typeof(ICalculadora), bind, String.Format("net.tcp://{0}/MiServicio", ep.IPEndpoint)); this.host.Open(); while (true){ Thread.Sleep(500000); } }
  • 134. 5. Servicios de Computación Para acceso externo  Hay que habilitar también un servicio de metadatos var wsdl = this.host.Description.Behaviors . Find<ServiceMetadataBehavior>(); if (wsdl == null){ wsdl = new ServiceMetadataBehavior(); this.host.Description.Behaviors.Add(wsdl); } this.host.AddServiceEndpoint(ServiceMetadataBehavior. MexContractName, MetadataExchangeBindings. CreateMexTcpBinding(),String.Format( "net.tcp://{0} /MiServicio/wsdl", ep.IPEndpoint));
  • 135. 5. Servicios de Computación Para acceso interno  Notificar a otras instancias/roles 1. ChannelFactory<IServicio> factory = new ChannelFactory<IServicio>(bind); 2. var instancias = RoleEnvironment. CurrentRoleInstance.Role.Instances 3. var rol = RoleEnvironment.Roles["nombre"]; 4. var iep = instancia.InstanceEndpoints ["MiEndpointInternoDeServicio"]; 5. var url = new EndpointAddress(string.Format ("net.tcp://{0}/MiServicio", iep.IPEndpoint)); 6. IServicio proxy = factory.CreateChannel(url);
  • 136. 5. Servicios de Computación ¿Por qué Worker roles?  Liberar de carga el front-end  Habilitar multi-hilos  Trabajar por estados/fases
  • 137. 5. Servicios de Computación Ejercicio: Consumir el Worker rol  Desde un cliente de Servicio Web WCF  Configurar el endpoint externo  Crear el método de servicio  Lanzar el método de servicio desde Run
  • 138. 6. Windows Azure AppFrabric Service Bus Control de Acceso
  • 139. 6. Windows Azure AppFrabric Service Bus Control de Acceso Caching Integración
  • 140. 6. Windows Azure AppFrabric ¿Qué es AppFabric?  Plataforma para aplicaciones híbridas  ¿?  Librería de servicios de apoyo  Heredera de BizTalk  Funciones básicas  Securizar servicios (ACS)  Comunicar servicios (ESB)
  • 141. 6. Windows Azure AppFrabric ¿Cómo uso AppFabric? 1. Crear una solución .Net Services  http://portal.ex.azure.microsoft.com/ 2. Instalar el SDK de .Net Services  http://www.microsoft.com/download/en/details.aspx?id=27421 3. Instalar herramientas opcionales  Azure Management Tools  http://wapmmc.codeplex.com/  Azure Services Training Kit  http://www.microsoft.com/download/en/details.aspx?id=8396
  • 142. 6. Windows Azure AppFrabric Enterprise Service Bus (ESB)  Permite conectar cualquier servicio de un SOA  Ya que los WS se crearon para desacoplar  Pero se utilizan acoplados…  Proporciona:  Un registro de servicios (UDDI)  Una jerarquía de namespaces  Infraestructura para la seguridad  Un bus de mensajes  Posibilidades de orquestación
  • 143. 6. Windows Azure AppFrabric ¿Me lo repites?  Antes  Después
  • 144. 6. Windows Azure AppFrabric ESB  .Net Service Bus
  • 145. 6. Windows Azure AppFrabric ¿Cómo se implementa en Azure?  WCF sb://  Protocolo  Namespace  Microsoft.ServiceBus.dll
  • 146. 6. Windows Azure AppFrabric Ejemplo Worker Rol public override void Run(){ // Iniciar el servicio ServiceBusEnvironment.SystemConnectivity.Mode = ConnectivityMode.AutoDetect; using (host = new ServiceHost(typeof(MiServicio))){ this.host.Open(); while (true){ Thread.Sleep(30000); } } }
  • 147. 6. Windows Azure AppFrabric Ejemplo consumidor Microsoft.ServiceBus.ServiceBusEnvironment. SystemConnectivity.Mode = Microsoft.ServiceBus. ConnectivityMode.AutoDetect; // Clase Proxy del servicio public class Proxy : ClientBase<IServicio>, IServicio, IDisposable{ public void Metodo(int parametro){ this.Channel.Metodo(parametro); } }
  • 148. 6. Windows Azure AppFrabric ¿Así de simple?  No, Hay que configurar App.config <client> <endpoint address="sb://[MI-NAMESPACE].servicebus. windows.net/ MiServicio" binding="miBinding" contract=" IServicio" behaviorConfiguration="miBehavior"/> </client> <behavior><endpointBehaviors> <behavior name="miBehavior">…</behavior> </endpointBehaviors></behavior>
  • 149. 6. Windows Azure AppFrabric ¿Así de simple?  No, Hay que configurar App.config <extensions> <bindingExtensions> <add name="miBinding" type="Microsoft.ServiceBus. Configuration.NetTcpRelayBindingCollectionElement, Microsoft. ServiceBus, Version=1.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> </bindingExtensions> </extensions>
  • 150. 6. Windows Azure AppFrabric Control de Acceso
  • 151. 6. Windows Azure AppFrabric Access Control Services (ACS)  Identidad, autenticación y autorización  Es fácil de mantener en una red local  Pero difícil en cloud  Tokens de seguridad
  • 152. 6. Windows Azure AppFrabric Configurar el servicio para seguridad host.Authorization.ServiceAuthorizationManager = new ServiceAuthorizationManager(); Obtener los tokens de la cabecera  Clase WebOperationContext  HttpRequestHeader.Authorization WebOperationContext.Current.IncomingRequest. Headers[HttpRequestHeader.Authorization];
  • 153. 6. Windows Azure AppFrabricclass MiControlDeAcceso : ServiceAuthorizationManager{ override bool CheckAccessCore(OperationContext ctx){ string authorizationHeader = WebOperationContext . Current.IncomingRequest.Headers[HttpRequestHeader . Authorization]; if (!Valido) Denegar(); return true; } private static void Denegar(){ WebOperationContext.Current.OutgoingResponse . StatusCode = HttpStatusCode.Unauthorized; }}
  • 154. 7. Otros Servicios de Azure CDN Azure Diagnostics SQL Azure
  • 155. 7. Otros Servicios de Azure Servicios de contenido (CDN) Windows Azure Virtual Machine Role Windows Azure Virtual Network Windows Azure Marketplace
  • 156. 7. Otros Servicios de Azure Content Delivery Network (CDN)  Servidores distribuidos por todo el mundo  Servidores frontera  Servidores origen  Permiten distribuir contenidos
  • 157. 7. Otros Servicios de Azure Habilitable desde el portal
  • 158. 7. Otros Servicios de Azure API Diagnostics  Permite monitorizar el servidor  Método OnStart() del rol  Eventos del RoleEnvironment  Ejemplo: DiagnosticMonitor.Start("Microsoft.Windows Azure.Plugins.Diagnostics.ConnectionString"); RoleEnvironment.Changing += [Delegado];
  • 159. 7. Otros Servicios de Azure SQL Azure
  • 160. 7. Otros Servicios de Azure Otras clases relevantes  DiagnosticMonitorConfiguration  Infraestructura de logs  Desvío de logs  WindowsEventLog  PerformanceCounterConfiguration  Monitor de rendimiento  Tasa de muestreo configurable  Buffer de datos configurable  Ejemplo: @"Processor(_Total)% Processor Time"
  • 161. 7. Otros Servicios de Azure SQL Azure  Configurable desde el portal  Y desde el manager de SQL Server  Cuenta de admin asociada a un centro de datos  [servidor].database.windows.net
  • 162. 7. Otros Servicios de Azure SQL Azure  Accesible desde ADO.Net  Cuenta de usuario  [usuario]@[servidor]  Dispone de un firewall para restringir el acceso
  • 163. 7. Otros Servicios de Azure Algunas limitaciones:  No se admite el comando USE  No admite Transact-SQL  Sólo se puede conectar a través de 1433  No admite transacciones distribuidas  Todas las tablas tienen un índice  No se admiten consultas enormes (>30min)
  • 164. Muchas Gracias Óliver Centeno