Windows Azure

 Óliver Centeno
Contenidos

1.   Introducción a Windows Azure
2.   Instalación
3.   Primeros pasos con Azure
4.   Servicios de Almacenamiento
5.   Servicios de Computación
6.   Windows Azure AppFrabric
7.   Otros Servicios de Azure
1.   Introducción a Windows
              Azure
           Cloud Computing
            Windows Azure
              SQL Azure
               Features
                Roles
1.     Introducción a Windows Azure

    Windows Azure
    SQL Azure
    Cloud Computing
    Features
    Roles
1.      Introducción a Windows Azure

   Cloud Computing
      Grandes   aplicaciones
      Granjas de servidores
      Alquiler de servicios
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
1.     Introducción a Windows Azure

   ¿Por qué usar Cloud?
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
1.      Introducción a Windows Azure

   Proveedores de Servicios (SaaS)
      Aplicaciones   especializadas

      Aplicaciones   empresariales

      Mercados   verticales

      Mercados   locales
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
1.      Introducción a Windows Azure

   Cloud Computing
      ArquitecturaSOA
      Independiente de infraestructura
      Basada en consumo de recursos


      Implementaciones:
        GoogleApp Engine
        Amazon Web Services
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)
1.      Introducción a Windows Azure

   Cloud Computing as a Service
1.     Introducción a Windows Azure

   Windows Azure
1.      Introducción a Windows Azure

   Windows Azure
      Sistema  Operativo
      En Nube
      Ejecución escalable
       de aplicaciones
        Front-end
        Back-end
1.      Introducción a Windows Azure

   Tipos de aplicaciones
      Aplicaciones Web
      Aplicaciones de cómputo
1.     Introducción a Windows Azure

   Ejecutable en servidores paralelos
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
1.         Introducción a Windows Azure

   ¿Por qué virtualizar?
        Optimizar el uso del servidor
1.         Introducción a Windows Azure

   Tamaños de máquina virtual
        Configurable para cada rol
1.     Introducción a Windows Azure

   Otros componentes de la infraestructura
1.      Introducción a Windows Azure

   Balanceador de carga
      Redirige el tráfico entrante
      Minimizar posibles ataques
      Tolerancia a fallos
      Soporte para mantenimiento
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
1.         Introducción a Windows Azure

   Fabric
        Granja de servidores
        Manejable como un todo


   Fabric Controller
        Manejador/Kernel
        Instala roles
        Replica el estado
        Matrix
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
1.      Introducción a Windows Azure

   Servicios de Almacenamiento
      Cuenta de almacenamiento
      Contenedores de ficheros
      BLOB
      Colas de mensajes
      Tablas
1.      Introducción a Windows Azure

   Y, ¿todo esto es Azure?
      Incluso más
      Windows Azure Platform
      SQL Azure
      AppFabric
      CDN
      Virtual Machine
     …
1.      Introducción a Windows Azure

   ¿Qué es SQL Azure?
      Soporte  para BD relacionales
      Similar a SQL Server Express Edition
      Accesible mediante protocolo TDS
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
1.      Introducción a Windows Azure

   Y, ¿dónde están mis datos?
      Centros   de datos
      Dublín
      Amsterdam
2.          Instalación

     Descarga del SDK y suscripción
      Plantillas para Visual Studio
       Despliegue de Aplicaciones
2.                Instalación

    Descarga del SDK y suscripción
    Plantillas para Visual Studio
    Despliegue de Aplicaciones
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…
2.                     Instalación
   Windows Azure SDK

        http://www.windowsazure.com/es-es/develop/net/


   Versiones
       Última 1.6
       Cada versión cambia cosas… 
2.              Instalación

   Windows Azure SDK
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
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
2.                  Instalación

   Proyectos de roles
     ASP.Net
     ASP.Net MVC
     WCF Service
     Worker
     FastCGI
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
2.   Instalación
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
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)
3. Primeros pasos con Azure

        Creación de una aplicación Azure
      Migración de una aplicación existente
3.      Primeros pasos con Azure

    Creación de una aplicación Azure
    Conversión de una aplicación existente
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
3.       Primeros pasos con Azure

   Módulos de gestión en la nube
     Portal
     Diagnostics
     Analytics   y herramientas de facturación
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
3.   Primeros pasos con Azure
3.      Primeros pasos con Azure


 Por eso
 Por ahora…
 Vamos a trabajar con el emulador
3.       Primeros pasos con Azure

   Tipos de desarrollo para Azure
3.       Primeros pasos con Azure

   Creación de un servicio
3.       Primeros pasos con Azure

   Creación de un servicio
     Elegir   el/los roles (tipos de proyecto)
3.       Primeros pasos con Azure

   Creación de un servicio
     Librerías   de Azure
3.       Primeros pasos con Azure

   Creación de un servicio
     Listo   para ejecutar en local
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
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" />
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
3.         Primeros pasos con Azure
   Empaquetar y desplegar
       cspack permite crear un script de despliegue
       Botón derecho en el proyecto > Publicar
3.   Primeros pasos con Azure
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
3.   Primeros pasos con Azure
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
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
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?
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()
         };
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
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
3.      Primeros pasos con Azure

   Migración a Azure
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)
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
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
    }
4.     Servicios de
     Almacenamiento
       Windows Azure Storage
           BLOB Storage
         Servicio de Tablas
     Procesamiento de Mensajes
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
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?
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)
4. Servicios de Almacenamiento

   Windows Azure Storage
     API basado en REST
     Acceso a través de HTTP
     Construido sobre infraestructura de Web Rol
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
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
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
4. Servicios de Almacenamiento

1.   Crear un Contenedor (directorio)
        No se admiten mayúsculas

     CloudStorageAccount cuenta;
     var cliente = cuenta.CreateCloudBlobClient();
     CloudBlobContainer contenedor = cliente.
         GetContainerReference([nombre]);
     contenedor.CreateIfNotExist();
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==
4. Servicios de Almacenamiento
2.   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");
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");
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
4. Servicios de Almacenamiento

3.   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);
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
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))
4. Servicios de Almacenamiento
4.   Propiedades de los BLOB
        blob.FetchAttributes();
        blob.Properties y blob.Metadata
            BlobType
            ContentType
            LastModifiedTimeUtc
            Length
            ContentEncoding
            ContentLanguage
            ContentMD5
            …
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
4. Servicios de Almacenamiento

5.   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]");
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
4. Servicios de Almacenamiento




        Table Service
4. Servicios de Almacenamiento
 Tablas simples
 Acceso privado
 Almacenar entidades
 No relacional
     No FK
     No Joins
     No índices
   Se puede particionar
4. Servicios de Almacenamiento
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
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; }
    }
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"
       }
    };
4. Servicios de Almacenamiento

   Columnas de una tabla
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
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
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
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
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
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");}
    }
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();
4. Servicios de Almacenamiento

   Ejercicio: Tabla de colores
     Crear una entidad Colores
     Crear un contexto
     Crear una página para hacer CRUD
4. Servicios de Almacenamiento

   Acceso mediante StorageClient
     ClaseCloudTableClient
     Métodos
       GET:      ListTables()
       DELETE:   DeleteTable("nombre")
       POST:     CreateTableIfNotexist("nombre")
4. Servicios de Almacenamiento

   Ejercicio: Manipular tablas
     Mostrar las tablas de la cuenta
     Crear tablas nuevas
     Añadir entidades mediante el Contexto
     Eliminar tablas
4. Servicios de Almacenamiento




        Queue Service
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
4. Servicios de Almacenamiento

   Uso de la cola
     REST  y StorageClient … de nuevo
     Clase CloudQueueClient
          ListQueues();
          CreateIfNotExist();
          Delete();
          Clear();
          SetMetadata();
          GetQueueReference();
4. Servicios de Almacenamiento

   Uso de la cola
     Clase   CloudQueueMessage

       cola.AddMessage();
       cola.PeekMessage();
       cola.GetMessage();
       cola.DeleteMessage();
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
5.   Servicios de Computación

        Escalado de Aplicaciones con Azure
         Creación de Servicios para Azure
       Comunicación de Servicios sobre Azure
5.      Servicios de Computación

    Compute
    Creación de Aplicaciones con Azure
    Creación de Servicios para Azure
    Múltiples Websites sobre Azure
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?
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
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);
5.       Servicios de Computación

   Por suerte en Azure puedo indicar el
    número de instancias que se ejecutan
    para cada rol
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
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
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
5.       Servicios de Computación

   Tipos de persistencia de datos
     Session
     ViewState
     Cookies
     Application
     Base   de Datos
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
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
5.   Servicios de Computación



         Worker roles
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
5.       Servicios de Computación

   Ejercicio: Crear un Worker Rol
     Que  permita realizar operaciones aritméticas
     Sumar
     Restar
     Multiplicar
     Dividir
     Raíz Cuadrada
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
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);
       }
    }
5.       Servicios de Computación

   Reacción a peticiones
     Externas:   WCF WebService
     Internas
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
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); }
 }
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));
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);
5.       Servicios de Computación

   ¿Por qué Worker roles?
     Liberar de carga el front-end
     Habilitar multi-hilos
     Trabajar por estados/fases
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
6. Windows Azure AppFrabric

             Service Bus
          Control de Acceso
6.     Windows Azure AppFrabric

    Service Bus
    Control de Acceso
    Caching
    Integración
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)
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
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
6.      Windows Azure AppFrabric

   ¿Me lo repites?
     Antes
     Después
6.        Windows Azure AppFrabric

   ESB
     .Net   Service Bus
6.      Windows Azure AppFrabric

   ¿Cómo se implementa en Azure?
     WCF
              sb://
     Protocolo
     Namespace




     Microsoft.ServiceBus.dll
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);
         }
      }
    }
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);
       }
    }
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>
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>
6.   Windows Azure AppFrabric



        Control de Acceso
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
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];
6.       Windows Azure AppFrabric
class 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;
    }
}
7.   Otros Servicios de Azure

                 CDN
           Azure Diagnostics
              SQL Azure
7.       Otros Servicios de Azure

    Servicios de contenido (CDN)
    Windows Azure Virtual Machine Role
    Windows Azure Virtual Network
    Windows Azure Marketplace
7.        Otros Servicios de Azure

   Content Delivery Network (CDN)
     Servidores   distribuidos por todo el mundo
       Servidores frontera
       Servidores origen




     Permiten   distribuir contenidos
7.        Otros Servicios de Azure

   Habilitable desde el portal
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];
7.       Otros Servicios de Azure

   SQL Azure
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"
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
7.           Otros Servicios de Azure
   SQL Azure
       Accesible desde ADO.Net
       Cuenta de usuario
       [usuario]@[servidor]
       Dispone de un firewall para restringir el acceso
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)
Muchas Gracias

  Óliver Centeno

Azure

  • 1.
  • 2.
    Contenidos 1. Introducción a Windows Azure 2. Instalación 3. Primeros pasos con Azure 4. Servicios de Almacenamiento 5. Servicios de Computación 6. Windows Azure AppFrabric 7. 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 pasoscon 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 deAlmacenamiento  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 deAlmacenamiento  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 deAlmacenamiento  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 deAlmacenamiento  Windows Azure Storage  API basado en REST  Acceso a través de HTTP  Construido sobre infraestructura de Web Rol
  • 77.
    4. Servicios deAlmacenamiento  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 deAlmacenamiento  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 deAlmacenamiento  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 deAlmacenamiento 1. 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 deAlmacenamiento  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 deAlmacenamiento 2. 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 deAlmacenamiento  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 deAlmacenamiento  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 deAlmacenamiento 3. 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 deAlmacenamiento  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 deAlmacenamiento  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 deAlmacenamiento 4. Propiedades de los BLOB  blob.FetchAttributes();  blob.Properties y blob.Metadata  BlobType  ContentType  LastModifiedTimeUtc  Length  ContentEncoding  ContentLanguage  ContentMD5  …
  • 89.
    4. Servicios deAlmacenamiento  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 deAlmacenamiento 5. 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 deAlmacenamiento  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 deAlmacenamiento Table Service
  • 93.
    4. Servicios deAlmacenamiento  Tablas simples  Acceso privado  Almacenar entidades  No relacional  No FK  No Joins  No índices  Se puede particionar
  • 94.
    4. Servicios deAlmacenamiento
  • 95.
    4. Servicios deAlmacenamiento  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 deAlmacenamiento  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 deAlmacenamiento  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 deAlmacenamiento  Columnas de una tabla
  • 99.
    4. Servicios deAlmacenamiento  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 deAlmacenamiento  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 deAlmacenamiento  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 deAlmacenamiento  ¿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 deAlmacenamiento  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 deAlmacenamiento  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 deAlmacenamiento  Ejemplo: Encontrar una entidad var entidad = ( from item in contexto.Producto where item.PartitionKey == "Coches" && item.RowKey == id select item ).First();
  • 106.
    4. Servicios deAlmacenamiento  Ejercicio: Tabla de colores  Crear una entidad Colores  Crear un contexto  Crear una página para hacer CRUD
  • 107.
    4. Servicios deAlmacenamiento  Acceso mediante StorageClient  ClaseCloudTableClient  Métodos  GET: ListTables()  DELETE: DeleteTable("nombre")  POST: CreateTableIfNotexist("nombre")
  • 108.
    4. Servicios deAlmacenamiento  Ejercicio: Manipular tablas  Mostrar las tablas de la cuenta  Crear tablas nuevas  Añadir entidades mediante el Contexto  Eliminar tablas
  • 109.
    4. Servicios deAlmacenamiento Queue Service
  • 110.
    4. Servicios deAlmacenamiento  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 deAlmacenamiento  Uso de la cola  REST y StorageClient … de nuevo  Clase CloudQueueClient  ListQueues();  CreateIfNotExist();  Delete();  Clear();  SetMetadata();  GetQueueReference();
  • 112.
    4. Servicios deAlmacenamiento  Uso de la cola  Clase CloudQueueMessage  cola.AddMessage();  cola.PeekMessage();  cola.GetMessage();  cola.DeleteMessage();
  • 113.
    4. Servicios deAlmacenamiento  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 AzureAppFrabric 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 AppFrabric class 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

Notas del editor

  • #13 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