Slide 1

Slide 1 text

Simone Brunozzi ( @simon ) Senior Technology Evangelist, Amazon Web Services Rethinking the mobile universe with Amazon Web Services

Slide 2

Slide 2 text

“Knowledge starts from great questions.”

Slide 3

Slide 3 text

The Mobile Universe PART ONE

Slide 4

Slide 4 text

1 Are Desktop and Mobile that different? PART ONE

Slide 5

Slide 5 text

Desktop Mobile

Slide 6

Slide 6 text

Users Front End Back End

Slide 7

Slide 7 text

Users Front End Back End 3rd party API 3rd party API

Slide 8

Slide 8 text

Users Front End Back End 3rd party API Desktop Mobile 3rd party API

Slide 9

Slide 9 text

Desktop Mobile

Slide 10

Slide 10 text

Desktop Mobile

Slide 11

Slide 11 text

Real World

Slide 12

Slide 12 text

Desktop Mobile Mobile

Slide 13

Slide 13 text

Desktop Mobile Mobile

Slide 14

Slide 14 text

Mobile Mobile Desktop

Slide 15

Slide 15 text

2 Why Desktop? Why Mobile? PART ONE

Slide 16

Slide 16 text

Location awareness Desktop Mobile App complexity / Richness Payments Intimacy

Slide 17

Slide 17 text

Location awareness Mobile App complexity / Richness Payments Intimacy Desktop

Slide 18

Slide 18 text

Location awareness Mobile App complexity / Richness Payments Intimacy Desktop

Slide 19

Slide 19 text

Location awareness Mobile App complexity / Richness Payments Intimacy Desktop

Slide 20

Slide 20 text

Location awareness Mobile App complexity / Richness Payments Intimacy Desktop

Slide 21

Slide 21 text

Location awareness Mobile App complexity / Richness Payments Intimacy Camera/GPS/ NFC/Bluetooth/ Voice Bandwidth/ Power/Screen/ Keyboard Desktop

Slide 22

Slide 22 text

Let’s talk Mobile...

Slide 23

Slide 23 text

3 Mobile Web or Rich (Native) App? PART ONE

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

"Don't shrink. Rethink." Jeff Hawkins 1998 Palm developer conference

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

4 HTML5? App stores? Discovery? Distribution? Monetization? PART ONE

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

Web Native mobile apps Native desktop

Slide 32

Slide 32 text

Web Desktop Mobile Native desktop Native mobile apps

Slide 33

Slide 33 text

Web Desktop Mobile Native desktop Native mobile apps

Slide 34

Slide 34 text

5 Does it make a difference? (if I use Cloud Computing or not) PART ONE

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

Benefits of Cloud Computing

Slide 37

Slide 37 text

No content

Slide 38

Slide 38 text

AWS Mobile SDK PART TWO

Slide 39

Slide 39 text

6 How can I develop with Amazon Web Services? PART TWO

Slide 40

Slide 40 text

AWS Developer tools 38 SDKs IDE toolkits

Slide 41

Slide 41 text

AWS Developer tools 39 SDKs IDE toolkits Command Line Tools

Slide 42

Slide 42 text

AWS Developer tools 40 SDKs IDE toolkits Command Line Tools Command Line Interface New!

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

No content

Slide 45

Slide 45 text

No content

Slide 46

Slide 46 text

No content

Slide 47

Slide 47 text

7 Can you show me an example? PART TWO

Slide 48

Slide 48 text

DEMO (before the technical details)

Slide 49

Slide 49 text

No content

Slide 50

Slide 50 text

Now the technical details :-)

Slide 51

Slide 51 text

8 How can I get started? PART TWO

Slide 52

Slide 52 text

Using the AWS Mobile SDK (Android) 1) Download + install Eclipse 2) Download + install ADT (Android Dev Tools) plugin 3) Configure the ADT plugin (prompted after restart) 4) Download + setup the Android SDK Manager 5) Setup an Android Virtual Device (AVD) 6) Download and install the AWS toolkit for Eclipse 7) You can easily start a new AWS Android Project 50

Slide 53

Slide 53 text

51

Slide 54

Slide 54 text

52

Slide 55

Slide 55 text

53

Slide 56

Slide 56 text

54

Slide 57

Slide 57 text

55

Slide 58

Slide 58 text

9 Why do I need the AWS Mobile SDKs? PART TWO

Slide 59

Slide 59 text

Why do I need the AWS Mobile SDKs? 57 Simplifies Development Thick client Architecture iOS: v 4.3 and above x y Android: v 2.2 (API level 8) and above

Slide 60

Slide 60 text

Why do I need the AWS Mobile SDKs? 58 Simplifies Development x y No back end needed High/Low level interfaces Credentials management

Slide 61

Slide 61 text

Thin/Thick client architecture AWS SDK Service

Slide 62

Slide 62 text

Thin/Thick client architecture Service AWS SDK AWS Mobile SDK

Slide 63

Slide 63 text

10 Which services are supported by the AWS Mobile SDKs? PART TWO

Slide 64

Slide 64 text

62 Compute / Networking Amazon EC2 Elastic Load Balancing Auto Scaling App services Amazon SQS Amazon SNS Amazon SES Database Amazon DynamoDB Amazon SimpleDB Deployment/Management Amazon CloudWatch Storage/CDN Amazon S3 EXTRA Security Token Service

Slide 65

Slide 65 text

11 How are the SDKs integrated into my Application? PART TWO

Slide 66

Slide 66 text

App integration 64 Single framework that can be added to your application Single or service level jars available Android iOS

Slide 67

Slide 67 text

App integration 65 Single framework that can be added to your application Single or service level jars available Statically linked (only parts that are used will be added) Proguard integration (obfuscate/minimize) Android iOS

Slide 68

Slide 68 text

Why Proguard is important 1) Removes unused code (usage.txt) 2) Classes/fields/methods names are obscured (mapping.txt) 3) Non obfuscated ones are listed in “seeds.txt” 4) The resulting .apk is smaller, harder to reverse engineer 66

Slide 69

Slide 69 text

Why Proguard is important 1) Removes unused code (usage.txt) 2) Classes/fields/methods names are obscured (mapping.txt) 3) Non obfuscated ones are listed in “seeds.txt” 4) The resulting .apk is smaller, harder to reverse engineer 1) Proguard just needs to be enabled 2) You can customize it through “proguard-project.txt” 67

Slide 70

Slide 70 text

68 http://mobile.awsblog.com

Slide 71

Slide 71 text

12 Some code, please? PART TWO

Slide 72

Slide 72 text

AmazonS3Client s3 = new AmazonS3Client ( new BasicAWSCredentials ( ACCESS_KEY_ID, SECRET_KEY ) ); 70 Create Amazon S3 client

Slide 73

Slide 73 text

AmazonS3Client s3 = new AmazonS3Client ( new BasicAWSCredentials ( ACCESS_KEY_ID, SECRET_KEY ) ); s3.createBucket ( PICTURE_BUCKET ) ; 71 Create Amazon S3 client Create Amazon S3 bucket

Slide 74

Slide 74 text

AmazonS3Client s3 = new AmazonS3Client ( new BasicAWSCredentials ( ACCESS_KEY_ID, SECRET_KEY ) ); s3.createBucket ( PICTURE_BUCKET ) ; PutObjectRequest por = new PutObjectRequest ( PICTURE_BUCKET, PICTURE_NAME, new java.io.File ( image ) ); s3.putObject ( por ) ; 72 Create Amazon S3 client Create Amazon S3 bucket Put object into bucket

Slide 75

Slide 75 text

AmazonS3Client s3 = new AmazonS3Client ( new BasicAWSCredentials ( ACCESS_KEY_ID, SECRET_KEY ) ); s3.createBucket ( PICTURE_BUCKET ) ; PutObjectRequest por = new PutObjectRequest ( PICTURE_BUCKET, PICTURE_NAME, new java.io.File ( image ) ); s3.putObject ( por ) ; S3Object data = s3.getObject ( PICTURE_BUCKET, PICTURE_NAME ) ; 73 Get object from bucket Create Amazon S3 client Create Amazon S3 bucket Put object into bucket

Slide 76

Slide 76 text

Low level APIs 74 Low level APIs

Slide 77

Slide 77 text

High level (DynamoDB) 75 AWS Persistence Framework for Core Data iOS v 5.0 and above

Slide 78

Slide 78 text

High level (DynamoDB) 76 DynamoDB Mapper for Android

Slide 79

Slide 79 text

Key primaryKey = new Key().withHashKeyElement(targetValue); DeleteItemRequest request = new DeleteItemRequest() .withTableName(PropertyLoader .getInstance() .getTestTableName()) .withKey(primaryKey); ddb.deleteItem(request); mapper.delete(deleteUserPreference); 77 Low level API DynamoDB mapper for Android

Slide 80

Slide 80 text

13 What about security and credentials? PART TWO

Slide 81

Slide 81 text

79 http://aws.amazon.com/articles/SDKs

Slide 82

Slide 82 text

Never store credentials in the App 1) Credentials can be extracted from an App 2) No individual revocation (all or none) 3) No rotation (the App would not work) 80

Slide 83

Slide 83 text

Token Vending Machine Security Token Service IAM 1) Anonymous TVM (identity of the phone user is not stored) 2) Identity TVM (user registration and login)

Slide 84

Slide 84 text

14 I need HELP! PART TWO

Slide 85

Slide 85 text

How to get help 1) https://forums.aws.amazon.com/forum.jspa?forumID=88 2) SDKs contain samples/articles 3) AWS Mobile blog: http://mobile.awsblog.com 4) AWS Support 83

Slide 86

Slide 86 text

The Mobile Universe PART ONE AWS Mobile SDK PART TWO ??? PART THREE Conclusions PART FOUR

Slide 87

Slide 87 text

A guest PART THREE

Slide 88

Slide 88 text

86 1/8

Slide 89

Slide 89 text

87 2/8

Slide 90

Slide 90 text

88

Slide 91

Slide 91 text

89 5/8

Slide 92

Slide 92 text

90 4/8

Slide 93

Slide 93 text

91 6/8

Slide 94

Slide 94 text

92 7/8

Slide 95

Slide 95 text

93 8/8

Slide 96

Slide 96 text

Conclusions PART FOUR

Slide 97

Slide 97 text

Simone Brunozzi ( @simon ) Senior Technology Evangelist, Amazon Web Services Rethinking the mobile universe with Amazon Web Services Thank you!