Se trata de dar una visión general del uso de iCloud, Amazon Web Services y Microsoft Azure, desde el punto de vista del desarrollador de apps para IOS independiente o pequeñas startups. La presentación hace tiene una introducción de cloud, y después una descripción de cada plataforma con un ejemplo sencillo de uso.
4. Introducción
• ¿qué es el cloud computing?
–es un paradigma que permite ofrecer servicios a través de internet.
• ¿cuando empezó todo?
–fabricas de información (Wired Octubre 2006), explica la visión de Google,
Microsoft, Amazon...
• Distintas capas, distintas posibilidad
–PaaS: (Platform as a Service)
–SaaS: (Software as a Service)
–IaaS: (Infrastructure as a Service)
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
4
6. Construir Apps con
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
6
7. Construir Apps con
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
6
8. ¿Qué es iCloud?
• ¿Qué es?
–Nuevo servicio, Nueva API
–Proporcionan una replica de una“sandbox” en la
nube....pero podemos compartir documentos entre nuestras
apps jugando con los entitlements
–Siempre en ejecución y en tiempo real
–Mueve datos entre nuestros dispositivos
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
7
9. ¿Que es iCloud?
•Se encarga de notificar a nuestra App sobre los
cambios de los ficheros manejados
•Resuelve conflictos automáticamente...aunque
está en nuestra mano definir posibles estrategias
de resolución :-)
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
8
10. ¿como funciona?
• cuando creamos un documento, este es dividido en
pequeños trozos (chunks).
• la primera vez serán subidos todos los trozos a iCloud,
teniendo la primera versión del documento.
• cuando modificamos parte del documento, solo serán
actualizados en iCloud estos “trozos”, teniendo un nueva
versión del documento... en iCloud.
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
9
11. ¿como funciona?
•es atómico
•trabaja con paquetes
•Puede establecer una conexión peer to peer
cuando varios dispositivos estén en el mismo
rango de IPs dentro de una red WIFI
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
10
12. ¿como funciona?
• Metadata:
–nombre, tamaño, fecha de modificación, etc..
–siempre son subidos a iCloud
• iCloud tiene siempre los ficheros nuevos
• los dispositivos tienen los ficheros cuando son
necesarios...pero siempre tiene los Metadatos, esto permite
a la aplicación “saber los ficheros que tiene aunque no estén
en el dispositivo”
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
11
13. iCloud
•Incluido como parte IOS 5
•Es necesario tener un Apple ID
•Nos proporciona 5 GB de almacenamiento
gratuito, es posible comprar más espacio
•Los 5 GB están ligados al Apple ID, los
compartimos con todos los dispositivos asociados
al mismo.
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
12
14. iCloud Quota
Desde Ajustes/iCloud/
Almacenamiento/Gestionar
Almacenamiento
Comprar
Backup
Documentos y datos
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
13
15. iCloud Storage API
•Antes de empezar debemos considerar los dos
modos o estrategias de almacenamiento:
–Orientada a Documento
–Orientada a key-value data:
•Pensado para manejar pequeñas porciones de
datos, tipo plist de configuración o preferencias
para compartir entre distintas instacias de la App,
no critico
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
14
16. Primera App con iCloud
•Es necesario realizar unos pequeños pasos
previos al desarrollo:
–Crear un AppID y provisionarlo desde el IOS
Provisioning Portal
–Configurar en xCode los entitlements.
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
15
27. Primera app en iCloud
•comprobar si tenemos conexión entre nuestra
App e iCloud:
NSURL *theURL = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];
if (theURL) {
NSLog(@"Accediendo a-> %@", theURL);
} else {
NSLog(@"No hay acceso al container especificado en iCloud");
}
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
17
28. Primera app en iCloud
dispatch_queue_t globalQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(globalQueue, ^{
NSFileManager *fileManager = [[NSFileManager alloc] init];
NSURL *theUbiquityC = [fileManager URLForUbiquityContainerIdentifier:nil];
if (theUbiquityC) {
NSLog(@"Accediendo a-> %@", theUbiquityC);
} else {
NSLog(@"No hay acceso al container especificado en iCloud");
}
dispatch_queue_t mainQueue = dispatch_get_main_queue();
dispatch_async(mainQueue, ^{
[self ActualizarUbiquityContainer:theUbiquityC];
});
});
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
18
29. iCloud API
• iCloud API, tenemos métodos y clases nuevas que nos
proporcionan el soporte necesario para usar el storage de
iCloud.
–NSFileManager, NSFileCoordinator, NSFilePresenter
–NSMetadataQuery
–UIDocument / NSDocument
–API nativa para MS Windows
–Key Value Store (no soportada en Windows)
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
19
30. iCloud API
• Podemos hacer de forma manual la mayoría de las operaciones, esto añade
complejidad. La solución UIDocument.
–UIDocument funciona como un middleware entre el fichero y los datos reales.
–Implementa el protocolo NSFilePresenter, nos permite trabajar en background
cuando abrimos o guardamos ficheros. Evitando bloqueos en nuestra App....
–UIDocument tiene una arquitectura basada en una doble cola:
• El hilo de ejecución principal, donde realizamos operaciones de apertura, cierre
y edición.
• UIKit: Un segundo hilo en background
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
20
38. Lectura
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
22
39. Lectura
Cola Principal
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
22
40. Lectura
Cola Principal
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
22
41. Lectura
Cola Principal
Open
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
22
42. Lectura
Cola Principal
Open
Cola background
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
22
43. Lectura
Cola Principal
Open
Cola background
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
22
44. Lectura
Cola Principal
Open
Cola background
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
22
45. Lectura
Cola Principal
Open
read
Cola background
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
22
46. Lectura
Cola Principal
Open
read
Cola background
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
22
47. Lectura
Cola Principal
Open load
read
Cola background
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
22
48. Lectura
Cola Principal
Open load completion^
read
Cola background
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
22
49. Escritura
- (void)saveToURL:(NSURL *)url
forSaveOperation:(UIDocumentSaveOperation)saveOperation
completionHandler:(void (^)(BOOL success))completionHandler
- (id)contentsForType:(NSString *)typeName error:(NSError **)outError
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
23
50. Cola Principal
Cola background
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
24
51. Escritura Cola Principal
Cola background
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
24
52. Escritura Cola Principal
Save
Cola background
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
24
53. Escritura Cola Principal
Save
Cola background
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
24
54. Escritura Cola Principal
Save Snapshot
Cola background
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
24
55. Escritura Cola Principal
Save Snapshot
Cola background
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
24
56. Escritura Cola Principal
Save Snapshot
write
Cola background
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
24
57. Escritura Cola Principal
Save Snapshot
write
Cola background
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
24
58. Escritura Cola Principal
Save Snapshot completion^
write
Cola background
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
24
59. primera App
•DEMO
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
25
62. Amazon Web Services
•Amazon ofrece:
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
27
63. Amazon Web Services
• Desde 2006 ofrece sus servicios como Plataforma.
• Más de 40k servidores
• Data Centers en: Virginia,Dallas/Fort Worth, Los
Angeles, Miami, Newark/New Jersey, California, Seattle,
St. Louis, Amsterdam, Dublin, Frankfurt, London, Hong
Kong, Singapore, Tokyo...
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
28
64. Amazon Web Services
•Multiplataforma
–AMI, imagenes de maquinas de casi todos los SO
y combinaciones de productos, p.e. W2008 con
SQL Server 2008 R2 optimizado......
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
29
65. Amazon Web Services
•SDKs para:
–PHP
–Java
–Python
–Ruby
–.NET
–Mobile: Android y IOS
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
30
66. Amazon Web Services
•Desarrollo de apps con AWs es posible gracias a un
SDK.....pero necesitamos suscribirnos (tarjeta de
credito €)
•podemos usar AWS sin coste, durante un tiempo
limitado y usando los recursos limitados......para
investigar, aprender, desarrollar son suficientes....
Hay que controlar el consumo.
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
31
67. Amazon Web Services
•Desarrollo de apps con AWs es posible
gracias a un SDK.....pero necesitamos
suscribirnos (tarjeta de credito €)
•podemos usar AWS sin coste, durante un
tiempo limitado y usando los recursos
limitados......para investigar, aprender,
desarrollar son suficientes.... Hay que
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
32
68. Amazon Web Services
•Amazon IOS SDK DEMO: S3
–AmazonS3Client
•- (NSArray *)listBuckets
–AmazonClientException :-)
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
33
69. AWS
•El desarrollo es más rudimentario que iCloud.
–No hay un demonio controlando el estado de
nuestros objetos
–La resolución de conflictos cae en el desarrollo
•Es muy flexible, podemos usar la mayoria de
los servicios: EC2, S3, autoscaling
•No hay limites tipo Apple ID..
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
34
73. Windows Azure
•Desde 2009
•Más de 100k servidores
•24 data centers, localizados como Amazon,
con diferencia en Europa donde ofrece más
posibilidades.
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
37
74. Con Presencia Global…
Moscow,$RU$
Seoul,$KR$
Bay$Area,$CA$ Ashburn,$VA$
Doha,$QT$
San$
Antonio,$TX$
São$Paulo,$
BR$
Sydney,$AU$
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
38
75. Windows Azure
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
39
76. Windows Azure
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
39
77. Windows Azure
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
39
78. Windows Azure
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
39
79. Windows Azure
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
39
80. Windows Azure
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
39
81. Windows Azure
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
39
82. Windows Azure
•DEMO
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
40
83. Windows Azure
• IOS Toolkit
–disponible desde mayo 2011
–Repositorio en GitHub
–Documentación aceptable
• Por ahora este SDK solo nos permite jugar con el Storage: Tables,
Queue y Blobs
• ha diferencia de iCloud o Amazon, se trata de un SDK muy nuevo,
(en mi opinión) esta sujeto a cambios a corto plazo.
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
41
84. Windows Azure
• Como Amazon, tampoco es gratis. Existe una suscripción de
prueba de 90 dias, pide tarjeta de credito....pero es más que
suficiente para investigar, aprender, desarrollar
• No está limitado a un Apple ID
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
42
85. Q&A
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
43
86. referencias
• The Information Factories - Wired
• http://www.wadewegner.com/category/ios/
• http://www.raywenderlich.com/6015/beginning-icloud-in-ios-5-
tutorial-part-1
• http://aws.amazon.com/es/mobile/
• http://es.wikipedia.org/wiki/Computación_en_nube
• http://developer.apple.com/library/ios/#documentation/
DataManagement/Conceptual/DocumentBasedAppPGiOS/
Introduction/Introduction.html#//apple_ref/doc/uid/TP40011149
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
44
87. Q&A
Juan Antonio Martín
juan.antonio.martin@gmail.com – NSCoder Night Madrid
45