• Save
Azure
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Azure

on

  • 1,502 views

 

Statistics

Views

Total Views
1,502
Views on SlideShare
1,502
Embed Views
0

Actions

Likes
0
Downloads
2
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial-NoDerivs LicenseCC Attribution-NonCommercial-NoDerivs LicenseCC Attribution-NonCommercial-NoDerivs License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • 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

Azure Presentation 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