SkyDrive y Windows 8.1

Esta publicación es parte de una serie de textos que publicaremos estos días de diferentes personas que forman parte de grupos de Microsoft que nos ayudaron a construir Windows 8.1

Mi nombre es Adam Czeisler y soy Gerente de Desarrollo para una mitad del equipo de SkyDrive en Windows Services. Nuestro equipo, llamado SkyDrive Devices & Roaming, es responsable de construir el software de cliente que es la expresión de SkyDrive en todos los dispositivos, como tabletas y PC Windows. La otra mitad del equipo, llamado SkyDrive Cloud Services, es responsable de construir el servicio web que le da vida a esas experiencias. También construyen el sitio web de SkyDrive en http://www.skydrive.com.

En los últimos dos años, que han sido la antesala de nuestro trabajo en Windows 8.1, nuestro equipo construyó y lanzó diferentes aplicaciones de SkyDrive en todas las principales plataformas. Lanzamos aplicaciones para Windows Phone, Xbox, iOS, Android, y una aplicación de la Tienda para Windows 8. También lanzamos clientes de sincronización que realizan sincronización de dos vías de archivos al servicio de SkyDrive en Windows 8/7/Vista así como en Mac OSX. Esta fue una gran experiencia de aprendizaje para nuestro equipo. Durante el transcurso de estas actualizaciones a las aplicaciones, aprendimos cómo la gente quiere acceder a sus archivos desde sus dispositivos, qué características les importan más en cada dispositivo, y también el conjunto único de retos de desarrollo y oportunidades que estas plataformas ofrecen. Todo este trabajo nos preparó para el año pasado cuando nos alistamos, junto con expertos del equipo de Windows, para traer la mejor experiencia de SkyDrive a Windows.

Antes de Windows 8.1

Antes de Windows 8.1, nuestros diseños de ingeniería caían en dos grandes categorías, aplicaciones y clientes de sincronización. Las aplicaciones se comunican con el servicio de SkyDrive a través de la API sin estado previo JSON en un patrón de diseño similar al de un sitio web. De hecho, las aplicaciones de SkyDrive navegan la jerarquía de archivos y carpetas en SkyDrive a través de la misma API JSON que se utiliza en el sitio web de SkyDrive. Este diseño es muy útil porque nos esforzamos en hacer que el conjunto de características fuera consistente entre todos los puntos. La imagen muestra la aplicación de SkyDrive en Xbox 360, construida en la API JSON (ver el video).

1

En contraste, los clientes de sincronización utilizaban un protocolo propietario de sincronización directo con una capa más baja del conjunto de servicios de SkyDrive. Este protocolo de sincronización es por lo general limitado para dar soporte a operaciones “CRUD” en archivos (Crear, Leer, Actualizar y Eliminar).

2

Cada enfoque de ingeniería tiene sus pros y sus contras. El diseño utilizado para las aplicaciones es bueno porque les permite tener una pequeña huella en el dispositivo. Las aplicaciones son capaces de navegar conjuntos de datos muy grandes de manera relativamente rápida porque la API JSON les permite preguntar por cualquier vista de las tres de manera independiente. Almacenar elementos como vistas miniatura, estructura de árbol, etc., puede realizarse de una manera dinámica y el caché puede administrarse de manera independiente a la lógica central. Debido a esta opción de diseño, estas aplicaciones funcionan a la perfección en dispositivos de poco almacenamiento como teléfonos o tabletas.

Por otro lado, este enfoque tiene dos grandes desventajas: 1) las operaciones sin conexión no se pueden realizar en archivos y, 2) debido a que la mayoría de las operaciones se realizan de manera directa contra el servicio, el desempeño es limitado por la velocidad de la red en lugar de serlo por la velocidad del almacenamiento local en el dispositivo.

Los clientes de sincronización tienen las características opuestas. En el lado positivo, tienen operaciones CRUD completas de manera natural, disponibles con o sin conexión. Y cuando las aplicaciones interactúan con los archivos, lo hacen contra el almacenamiento local en el dispositivo por lo que la velocidad es por lo general uno o dos órdenes de magnitud más alta que cuando se accede al contenido desde la red.

Pero el enfoque de sincronización tiene una gran desventaja – para navegar o interactuar con cualquiera de los archivos en SkyDrive ellos tienen que ser descargados en su totalidad en el dispositivo. Esta solución es simplemente inaceptable en un dispositivo con almacenamiento limitado porque la porción de datos que podría caber en el dispositivo es por lo general muy pequeña para ser utilizada. También el tiempo crudo para descargar y en ocasiones incluso el costo de descargar estos datos puede ser muy grande.

Lo mejor de ambos mundos

En Windows 8 atacamos esos problemas con el lanzamiento tanto de una aplicación moderna como un cliente de sincronización de SkyDrive. Teníamos todos los pros y los contras en los dos diseños de ingeniería. Además, la aplicación y el cliente de sincronización no se podrían comunicar entre ellos, lo que llevaba a algunas inconsistencias temporales que podían ser confusas para la gente que utilizaba ambas. Cuando comenzamos a planear para Windows 8.1 sabíamos que queríamos hacer algo mejor. ¿Podíamos tener lo mejor de ambos mundos?

Para hacerlo, sabíamos que requeríamos de una solución que permitiera a la gente navegar por completo SkyDrive en Internet Explorer y en la aplicación moderna de SkyDrive. También queríamos que fueran capaces de realizar operaciones CRUD contra su conjunto de datos, incluso sin conexión. Pero no queríamos tener que descargar todo el SkyDrive al dispositivo local para conseguirlo. ¿Era posible realizarlo? No estábamos seguros, así que unimos fuerzas con los expertos en el equipo Windows para ver si podíamos construir una solución híbrida que nos diera todo lo que queríamos.

Compartir experiencias

Nuestro equipo tiene gran experiencia en la tecnología de sincronización de archivos. Muchos miembros han lanzado diferentes productos de sincronización de archivos a través de los años; algunos incluso han trabajado en tecnologías similares dentro de Microsoft Research. Pero no teníamos gran experiencia con la arquitectura Windows Shell, código base o API. Era muy claro que íbamos a necesitar esto para poder entregar la mejor integración posible de SkyDrive en Windows. Por fortuna, el equipo en Windows, con mayor experiencia en esta área, se acercó para ayudarnos a diseñar e implementar la integración de SkyDrive en Windows. Este equipo, llamado Cloud Experience, fue nuestro socio principal en Windows en este año. Después de discutir el problema que ya mencionamos, llegaron con un diseño para una nueva plataforma en Windows llamada “archivos inteligentes”. Estos archivos contienen sólo metadatos y no tienen “cuerpo”. Además, tienen un comportamiento especial en el que las aplicaciones o los componentes en el sistema pueden registrarse para ser el proveedor de los contenidos del archivo y cuando un cliente lee el cuerpo del archivo a través de algunas API, estos proveedores son invocados para satisfacer la solicitud. Al enganchar el motor de sincronización de SkyDrive con esta propuesta como proveedor para archivos en el espacio de nombre de SkyDrive, podíamos proveer, de manera transparente, acceso a los datos almacenados en el servicio sin tener que forzar todos los datos que existen en el dispositivo antes de acceder a ellos. Sonaba prometedor, así que este fue el diseño que elegimos.

Ahora contábamos con una solución que reducía el espacio que se requería en el dispositivo para acceder al nombre de espacio mientras permite operaciones CRUD completas para ser desempeñadas con conexión como sin ella a través de Explorer en el Escritorio. Pero también necesitábamos que la aplicación moderna de SkyDrive pudiera ver y modificar esos archivos. Así que reconstruimos la aplicación de SkyDrive al principio de las API Windows Shell, que están en la parte alta del sistema principal de archivos con comportamiento adicional como el que se mencionó arriba para archivos inteligentes. Esto significó que la aplicación de SkyDrive ahora podía tener acceso sin conexión así como tener un espectro de desempeño desde la red a velocidades locales que depende de si los archivos son o no descargados a la máquina local. Increíble. ¡Ahora sólo teníamos que construirlo!

El camino hacia el envío

Trabajar de manera directa en Windows este último año para integrar a profundidad SkyDrive en el sistema operativo fue una gran aventura para nuestro equipo. Aprendimos de primera mano sobre la gran cantidad y profundidad de escenarios que Windows Shell soporta al integrarse tanto como proveedor en el motor de sincronización como consumidor en la aplicación moderna. A través del proceso generamos un profundo respeto por la gente que construyó ese sistema en las últimas décadas de una forma tan llena de capas y con capacidades de extensión, que permite aumentar su tamaño con un sistema de servicio soportado de archivos en poco tiempo con sólo algunos cambios en la arquitectura.

Por ejemplo, la imagen a continuación muestra el diálogo existente de copia de archivo en Explorer que sin esfuerzos, ilumina un escenario donde el motor de sincronización es invocado en automático para descargar varias imágenes conforme son copiadas al Escritorio desde una carpeta en SkyDrive. Estadísticas como porcentaje de compleción, rendimiento y bytes restantes se muestran al usuario. Incluso pueden pausar o abortar la operación a través de esta interfaz de usuarios y debido a la profunda integración con Windows Shell, el motor de sincronización responderá a estos comandos de manera directa.

3

Otra cosa para resaltar fue el trabajo en conjunto con el grupo en Windows dedicado al análisis de desempeño y mejoras. Con su guía y apoyo, hicimos muchos cambios clave para minimizar el impacto del motor de sincronización en el sistema. Por ejemplo, para un monitoreo más eficiente de los cambios en el sistema de archivos lo integramos en un componente construido en Windows llamado Rastreador de Cambios. Esto nos permitió eliminar casi todos los escaneos directos de los archivos locales en SkyDrive, lo que en la versión independiente del cliente de sincronización era necesario para asegurar que no perdíamos ningún cambio mientras el proceso no corría. Con ayuda del equipo de Cloud Experience cortamos la huella de memoria a la mitad al aprovechar el indexador de búsqueda para almacenar estatus de transferencia de archivos. También trabajamos para proteger el estado inactivo del CPU al crear un modo latente especial en el motor de sincronización para que cuando no hubiera algún trabajo pendiente por hacer pudiéramos “ir a dormir” y tener un impacto casi nulo en el resto del sistema.

Evitar los caminos sin retorno

Ahora, al hablar de la aplicación moderna de SkyDrive, quiero resaltar otra gran asociación que tuvimos este año con el equipo que construye las aplicaciones y controles relacionados con el procesamiento de foto e imagen en Windows, llamado Apps for Creative Expression. En Windows 8 construyeron la aplicación moderna de Fotos que agregaba fotos de SkyDrive así como fotos de su dispositivo local. La aplicación tenía una interfaz bastante llamativa para ver fotos pero ambos equipos estábamos frustrados de que los consumidores pudieran llegar a un “camino sin retorno” tanto en la aplicación de SkyDrive como en la de Fotos cuando interactuaban con imágenes en SkyDrive. Por ejemplo, no podían mover, renombrar o editar fotos en SkyDrive desde la aplicación de fotos y en la aplicación de SkyDrive, el visor no era tan rico como el que se encontraba en la aplicación de Fotos. En verdad queríamos resolver estos problemas en conjunto para Windows 8.1. La forma en que lo hicimos fue construir las dos aplicaciones con casi todo el mismo código fuente y binarios, con algunas pequeñas diferencias en el tiempo de ejecución en vistas por defecto y temas- además de trabajar de manera directa en las aplicaciones centrales, el equipo de Apps for Creative Expression diseño y construyó el hermoso control de visor/editor que se utiliza en las dos aplicaciones.

Para un gran ejemplo de los tipos de escenarios que se habilitaron con la integración del motor de sincronización de SkyDrive en Windows y el código compartido entre las aplicaciones de Fotos y SkyDrive, prueben navegar a pantalla completa a través de algunas fotos en SkyDrive y utilicen cualquiera de las dos aplicaciones, desplacen para que aparezca la barra de aplicación y luego elijan ‘Editar’. El archivo completo se descargará de manera automática desde el servicio de SkyDrive y el control de edición de foto aparecerá con una variedad de útiles herramientas habilitadas en su totalidad para el tacto, que les permitirán mejorar sus fotos. Si salvan los cambios, estos serán cargados de manera automática a SkyDrive a través del motor de sincronización. No importa si interactúan con sus fotos de SkyDrive a través de la aplicación de Fotos o en la de SkyDrive, siempre contarán con el conjunto completo de características adecuadas y disponibles para ustedes.

4

Clientes como extensiones del servicio

Una de nuestras filosofías como equipo ha sido que los clientes son una extensión del servicio. Pensamos en ellos como sólo otro punto al final del camino que expresa el servicio al cliente, como si fuera un navegador. Esto significa que todos los clientes deberían tener casi el mismo conjunto de características y capacidades. Claro que serán ajustadas de acuerdo al dispositivo pero la experiencia del cliente debería ser familiar en cada expresión del servicio.

Además de asegurar que las experiencias eran consistentes y familiares al final, también necesitábamos asegurarnos que las operaciones en todos los puntos finales eran confiables y robustas. Desde el punto de vista de ingeniería, para que cualquier servicio alcance el nivel de confiabilidad que nuestros consumidores esperan hay tres capacidades requeridas. Los ingenieros deben ser capaces de 1) medir la confiabilidad, 2) diagnosticar problemas, y 3) implementar arreglos. Este proceso debe repetirse en un ciclo continuo. Conforme el ciclo continúa, la calidad aumenta.

Cuando diseñamos nuestros clientes independientes de sincronización, nos dimos cuenta que teníamos brechas en las tres áreas anteriores que necesitábamos llenar. Así que a través de los años hemos reiterado en soluciones que incrementen nuestras capacidades de medición, diagnóstico e implementación. Creamos un sistema de telemetría que mide la convergencia en la sincronización a través de todos nuestros clientes a diario. Construimos un proyecto para reunir datos anónimos que permitiera al equipo diagnosticar complicaciones que fueran resaltadas en el sistema de telemetría. Y para finalizar construimos un mecanismo de actualización para el cliente de sincronización de Windows a través del cual podíamos implementar arreglos a todas las partes finales que no tuvieran interacción con el usuario. Cuando integramos el motor de sincronización de SkyDrive en Windows 8.1 fuimos capaces de mantener todas esas capacidades ya sea al traerlas al sistema operativo o a través de la utilización de mecanismos pre-existentes. Debido a esto, fuimos capaces de continuar nuestro trabajo para monitorear y mejorar la experiencia de nuestros clientes en la utilización diaria de nuestro producto.

El lanzamiento de la versión final al mundo

Estoy muy emocionado por el anuncio de la disponibilidad general de Windows 8.1. Con el conocimiento de que millones de clientes utilizarán SkyDrive en más formas útiles que tal vez no han sido capaces de realizar, con muchas de ellas utilizando un servicio de archivo en la nube por primera vez, es sencillo, emocionante e inspirador, todo al mismo tiempo. Como equipo enfrentaremos nuevos retos conforme escalamos para cumplir con las demandas de los millones de nuevos clientes que esperamos obtener. Aprenderemos y mejoraremos de manera continua. Nuestra meta es deleitar a cada persona que utilice SkyDrive, cada minuto y cada día que lo utilicen, para que se conviertan en clientes de por vida.

Y por cierto, hay toneladas de características increíbles en Windows 8.1 además de la integración de SkyDrive. Una de mis favoritas es el nuevo tamaño pequeño de los mosaicos en la pantalla de Inicio. Ahora puedo tener todas mis aplicaciones importantes en una pantalla, que siempre está viva con color y actividad. Esta es mi pantalla de Inicio con Windows 8.1. ¡Espero la disfruten tanto como yo!

5

(Esta es la pantalla de Inicio de Adam en Windows 8.1!)

Adam Czeisler, Gerente de Desarrollo en SkyDrive