mobile development across different platforms @ immobilienscout24

70
Mobile Development across Different Platforms www.immobilienscout24.de Berlin | 13.02.2012 | Hasan Hoşgel & Thomas Kummert

Upload: hasan-hosgel

Post on 11-Jan-2017

1.806 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Mobile Development across Different Platforms @ Immobilienscout24

Mobile Development across Different Platforms

www.immobilienscout24.de

Berlin | 13.02.2012 | Hasan Hoşgel & Thomas Kummert

Page 2: Mobile Development across Different Platforms @ Immobilienscout24

About us ...

Hasan Hoşgel, @alosdev

Senior Developer

Mobile enthusiast, Man of action

Page 3: Mobile Development across Different Platforms @ Immobilienscout24

About us ...

Thomas Kummert, @kummibaer

Developer

Pragmatic developer

Page 4: Mobile Development across Different Platforms @ Immobilienscout24

| Titel der Präsentation | Autor der Präsentation

Seite 4

ImmobilienScout24 Germany‘s leading real-estate portal

550 employees, 170 in the IT

Page 5: Mobile Development across Different Platforms @ Immobilienscout24

| Titel der Präsentation | Autor der Präsentation

Seite 5

ImmobilienScout24 Germany‘s leading real-estate portal

550 employees, 160 in the IT

> 6 Million unique users > 2 Billion PI > 180 Million Expose views ~ 1.5 Million active listings > 110,000 Vendors ... per month

Page 6: Mobile Development across Different Platforms @ Immobilienscout24

| Titel der Präsentation | Autor der Präsentation

Seite 6

ImmobilienScout24 Germany‘s leading real-estate portal

550 employees, 160 in the IT

2 datacenter ~100 physical ~800 virtual ... machines

> 6 Million unique users > 2 Billion PI > 180 Million Expose views ~ 1.5 Million active listings > 110,000 Vendors ... per month

Page 7: Mobile Development across Different Platforms @ Immobilienscout24

The Creators

2010-08 (no team): 1 x developer

2012-02 (2 teams): 7 x developer 2 x QA-engineer 2 x product manager 1 x designer

Page 8: Mobile Development across Different Platforms @ Immobilienscout24

The Creators

11 applications 1 Mobile site > 2.2 Mio Downloads > 7.8 Mio Visits > 20% mobile traffic

2010-08 (no team): 1 x developer

2012-02 (2 teams): 7 x developer 2 x QA-engineer 2 x product manager 1 x designer

Page 9: Mobile Development across Different Platforms @ Immobilienscout24

The Creators

2010-08 (no team): 1 x developer

2012-02 (2 teams): 7 x developer 2 x QA-engineer 2 x product manager 1 x designer

Agile development Scrum/ Kanban

11 applications 1 Mobile site > 2.2 Mio Downloads > 7.8 Mio Visits > 20% mobile traffic

Page 10: Mobile Development across Different Platforms @ Immobilienscout24

Native, hybrid or webapp?

http://www.flickr.com/photos/y_i/2330044065/sizes/l/in/photostream/

Page 11: Mobile Development across Different Platforms @ Immobilienscout24

Native, hybrid or webapp?

http://www.flickr.com/photos/y_i/2330044065/sizes/l/in/photostream/

Depends on application, environment and user needs

Page 12: Mobile Development across Different Platforms @ Immobilienscout24

Native, hybrid or webapp?

http://www.flickr.com/photos/y_i/2330044065/sizes/l/in/photostream/

Depends on application, environment and user needs

- User-interface - Responsive design

Page 13: Mobile Development across Different Platforms @ Immobilienscout24

Native, hybrid or webapp?

http://www.flickr.com/photos/y_i/2330044065/sizes/l/in/photostream/

Depends on application, environment and user needs

- User-interface - Responsive design

- Hardware - Device features - Security

Page 14: Mobile Development across Different Platforms @ Immobilienscout24

Native, hybrid or webapp?

http://www.flickr.com/photos/y_i/2330044065/sizes/l/in/photostream/

Depends on application, environment and user needs

- User-interface - Responsive design

- Hardware - Device features - Security

- External resources - Performance

Page 15: Mobile Development across Different Platforms @ Immobilienscout24

Native, hybrid or webapp?

http://www.flickr.com/photos/y_i/2330044065/sizes/l/in/photostream/

Depends on application, environment and user needs

- User-interface - Responsive design

- Hardware - Device features - Security

- Development - Technologies - Knowledge

- External resources - Performance

Page 16: Mobile Development across Different Platforms @ Immobilienscout24

Native, hybrid or webapp?

http://www.flickr.com/photos/y_i/2330044065/sizes/l/in/photostream/

Depends on application and user needs

- User-interface - Responsive design

- Hardware - Device features - Security

- Development - Technologies - Knowledge

- External resources - Performance

There is no „the right“ solution to fit every demand.

Page 17: Mobile Development across Different Platforms @ Immobilienscout24

Native, hybrid or webapp?

http://www.flickr.com/photos/y_i/2330044065/sizes/l/in/photostream/

Depends on application and user needs

- User-interface - Responsive design

- Hardware - Device features - Security

- Development - Technologies - Knowledge

- External resources - Performance

There is no „the right“ Solution to fit every demand.

Page 18: Mobile Development across Different Platforms @ Immobilienscout24

Native, hybrid or webapp?

Android & IOS will be supported Two Mainstream applications è native

Other applications can choose

Future: Mobile website with responsive Design & HTML 5

Page 19: Mobile Development across Different Platforms @ Immobilienscout24

Infrastructure

http://www.flickr.com/photos/theplanetdotcom/4878805439/in/photostream/

Page 20: Mobile Development across Different Platforms @ Immobilienscout24

Infrastructure

CI-Server: > SSD > Ubuntu 32-Bit > Jenkins > ADT

http://www.flickr.com/photos/theplanetdotcom/4878805439/in/photostream/

Page 21: Mobile Development across Different Platforms @ Immobilienscout24

Infrastructure

CI-Server: > SSD > Ubuntu 32-Bit > Jenkins > ADT

Repository: > Nexus

http://www.flickr.com/photos/theplanetdotcom/4878805439/in/photostream/

Page 22: Mobile Development across Different Platforms @ Immobilienscout24

Infrastructure

CI-Server: > SSD > Ubuntu 32-Bit > Jenkins > ADT

Repository: > Nexus

VCS: > SVN

http://www.flickr.com/photos/theplanetdotcom/4878805439/in/photostream/

Page 23: Mobile Development across Different Platforms @ Immobilienscout24

Infrastructure

CI-Server: > SSD > Ubuntu 32-Bit > Jenkins > ADT

Repository: > Nexus

VCS: > SVN

Errorreporting: > Hockeyapp

http://www.flickr.com/photos/theplanetdotcom/4878805439/in/photostream/

Page 24: Mobile Development across Different Platforms @ Immobilienscout24

Infrastructure

CI-Server: > SSD > Ubuntu 32-Bit > Jenkins > ADT

Repository: > Nexus

VCS: > SVN

~20 Android devices

Errorreporting: > Hockeyapp

http://www.flickr.com/photos/theplanetdotcom/4878805439/in/photostream/

Page 25: Mobile Development across Different Platforms @ Immobilienscout24

Infrastructure

CI-Server: > SSD > Ubuntu 32-Bit > Jenkins > ADT

Repository: > Nexus

VCS: > SVN

~20 Android devices

Errorreporting: > Hockeyapp

Build-Tools: > Maven > Maven-Android-Plugin > Android-Jenkins-Plugin > Eclipse + ADT

http://www.flickr.com/photos/theplanetdotcom/4878805439/in/photostream/

Page 26: Mobile Development across Different Platforms @ Immobilienscout24

Architecture

http://www.flickr.com/photos/designandtechnologydepartment/4029381213/in/photostream/

UI

services

filesystem sensors database network

Page 27: Mobile Development across Different Platforms @ Immobilienscout24

http://www.flickr.com/photos/designandtechnologydepartment/4029381213/in/photostream/

Exposeview

expose service

database network memory

Architecture example

Page 28: Mobile Development across Different Platforms @ Immobilienscout24

Used Frameworks

http://www.flickr.com/photos/designandtechnologydepartment/4029381213/in/photostream/

Page 29: Mobile Development across Different Platforms @ Immobilienscout24

Used Frameworks

http://www.flickr.com/photos/designandtechnologydepartment/4029381213/in/photostream/

Signpost (OAuth client)

Page 30: Mobile Development across Different Platforms @ Immobilienscout24

Used Frameworks

http://www.flickr.com/photos/designandtechnologydepartment/4029381213/in/photostream/

Signpost (OAuth client)

RoboGuice (dependency

injection)

Page 31: Mobile Development across Different Platforms @ Immobilienscout24

Used Frameworks

http://www.flickr.com/photos/designandtechnologydepartment/4029381213/in/photostream/

Signpost (OAuth client)

RoboGuice (dependency

injection)

JSoup (HTML parser)

Page 32: Mobile Development across Different Platforms @ Immobilienscout24

Used Frameworks

http://www.flickr.com/photos/designandtechnologydepartment/4029381213/in/photostream/

Signpost (OAuth client)

RoboGuice (dependency

injection)

JSoup (HTML parser)

Robotium (like selenium/

webdriver)

Page 33: Mobile Development across Different Platforms @ Immobilienscout24

Backend API

http://www.flickr.com/photos/roll_initiative/3305000778/in/photostream/

Page 34: Mobile Development across Different Platforms @ Immobilienscout24

Backend API

http://www.flickr.com/photos/roll_initiative/3305000778/in/photostream/

Best Cross-Platform approach:

create an API

Page 35: Mobile Development across Different Platforms @ Immobilienscout24

Backend API

http://www.flickr.com/photos/roll_initiative/3305000778/in/photostream/

Best Cross-Platform approach:

create an API

Rest-API resource oriented

Page 36: Mobile Development across Different Platforms @ Immobilienscout24

Backend API

http://www.flickr.com/photos/roll_initiative/3305000778/in/photostream/

Rest-API resource oriented

Json/ XML

Best Cross-Platform approach:

create an API

Page 37: Mobile Development across Different Platforms @ Immobilienscout24

Backend API

http://www.flickr.com/photos/roll_initiative/3305000778/in/photostream/

Rest-API resource oriented

Json/ XML „eat your own

dog food“

Best Cross-Platform approach:

create an API

Page 38: Mobile Development across Different Platforms @ Immobilienscout24

Backend API

http://www.flickr.com/photos/roll_initiative/3305000778/in/photostream/

Best Cross-Platform approach:

create an API

Rest-API resource oriented

Json/ XML „eat your own

dog food“

Don‘t create client dependent APIs

Page 39: Mobile Development across Different Platforms @ Immobilienscout24

Backend API – Best Practices

http://www.flickr.com/photos/familymwr/4927926523/in/photostream/

Page 40: Mobile Development across Different Platforms @ Immobilienscout24

Backend API – Best Practices

http://www.flickr.com/photos/familymwr/4927926523/in/photostream/

versioning

Page 41: Mobile Development across Different Platforms @ Immobilienscout24

Backend API – Best Practices

http://www.flickr.com/photos/familymwr/4927926523/in/photostream/

versioning downward compatible

Page 42: Mobile Development across Different Platforms @ Immobilienscout24

Backend API – Best Practices

http://www.flickr.com/photos/familymwr/4927926523/in/photostream/

versioning downward compatible

OAuth support

Page 43: Mobile Development across Different Platforms @ Immobilienscout24

Backend API – Best Practices

http://www.flickr.com/photos/familymwr/4927926523/in/photostream/

versioning downward compatible

communicate: upward compatibility

OAuth support

Page 44: Mobile Development across Different Platforms @ Immobilienscout24

Backend API – Best Practices

http://www.flickr.com/photos/familymwr/4927926523/in/photostream/

versioning downward compatible

communicate: upward compatibility

different views

OAuth support

Page 45: Mobile Development across Different Platforms @ Immobilienscout24

Backend API – Best Practices

http://www.flickr.com/photos/familymwr/4927926523/in/photostream/

versioning downward compatible

communicate: upward compatibility

different views

addable features

OAuth support

Page 46: Mobile Development across Different Platforms @ Immobilienscout24

Backend API – Best Practices

http://www.flickr.com/photos/familymwr/4927926523/in/photostream/

versioning downward compatible

communicate: upward compatibility

different views

addable features

OAuth support

help caching: Modified-Since- &

Etag-Header

Page 47: Mobile Development across Different Platforms @ Immobilienscout24

Backend API – Best Practices

http://www.flickr.com/photos/familymwr/4927926523/in/photostream/

versioning downward compatible

communicate: upward compatibility

different views

addable features

OAuth support

help caching: Modified-Since- &

Etag-Header

offer playground

Page 48: Mobile Development across Different Platforms @ Immobilienscout24

Android Best Practices

Page 49: Mobile Development across Different Platforms @ Immobilienscout24

Android Best Practices

test

Page 50: Mobile Development across Different Platforms @ Immobilienscout24

Android Best Practices

test test

Page 51: Mobile Development across Different Platforms @ Immobilienscout24

Android Best Practices

test test test

Page 52: Mobile Development across Different Platforms @ Immobilienscout24

Android Best Practices

test test test on all emulators

Page 53: Mobile Development across Different Platforms @ Immobilienscout24

Android Best Practices

test test test on all emulators

Page 54: Mobile Development across Different Platforms @ Immobilienscout24

Android Best Practices

test test test on all emulators

available devices

Page 55: Mobile Development across Different Platforms @ Immobilienscout24

Android Best Practices

test test test on all emulators

Don‘t recycle images >Gingerbread

è process‘ crash

available devices

Page 56: Mobile Development across Different Platforms @ Immobilienscout24

Android Best Practices

test test test

on all emulators

Don‘t recycle images >Gingerbread

è process‘ crash test test test on all emulators

available devices Remove dialogues in onSavedInstanceState

Page 57: Mobile Development across Different Platforms @ Immobilienscout24

Android Best Practices

Don‘t recycle images >Gingerbread

è process‘ crash

Don‘t use message.what=1006 on

LG Smartphones è ClassCastException

test test test

on all emulators

test test test on all emulators

available devices Remove dialogues in onSavedInstanceState

Page 58: Mobile Development across Different Platforms @ Immobilienscout24

Android Best Practices

Don‘t recycle images >Gingerbread

è process‘ crash

Don‘t use message.what=1006 on

LG Smartphones è ClassCastException

Json streamer vs. parser

test test test

on all emulators

test test test on all emulators

available devices Remove dialogues in onSavedInstanceState

Page 59: Mobile Development across Different Platforms @ Immobilienscout24

Android Best Practices

Don‘t recycle images >Gingerbread

è process‘ crash

Don‘t use message.what=1006 on

LG Smartphones è ClassCastException

Json streamer vs. parser AsyncTask vs. Handler

test test test

on all emulators

test test test on all emulators

available devices Remove dialogues in onSavedInstanceState

Page 60: Mobile Development across Different Platforms @ Immobilienscout24

Android Best Practices

offer StreetView, if possible: 1. create WebView 2. add JavascriptInterface 3. load data with base URL (maps.js & StreetViewService) 4. Start Intent for StreetView, if panorama exists! http://stackoverflow.com/a/4747663/495712

Page 61: Mobile Development across Different Platforms @ Immobilienscout24

Android Best Practices

offer StreetView, if possible: 1. create WebView 2. add JavascriptInterface 3. load data with base URL (maps.js & StreetViewService) 4. Start Intent for StreetView, if panorama exists! http://stackoverflow.com/a/4747663/495712

Attention: A lot of best practices

doesn‘t work on Honeycomb & higher

Page 62: Mobile Development across Different Platforms @ Immobilienscout24

http://www.flickr.com/photos/ponchopenguin/3262869038/sizes/l/in/photostream/

Forecast

Page 63: Mobile Development across Different Platforms @ Immobilienscout24

http://www.flickr.com/photos/ponchopenguin/3262869038/sizes/l/in/photostream/

Forecast

using Git

Page 64: Mobile Development across Different Platforms @ Immobilienscout24

http://www.flickr.com/photos/ponchopenguin/3262869038/sizes/l/in/photostream/

Forecast

using Git

Widget

Page 65: Mobile Development across Different Platforms @ Immobilienscout24

http://www.flickr.com/photos/ponchopenguin/3262869038/sizes/l/in/photostream/

Forecast

using Git

Widget extend IS24-API SDK

Page 66: Mobile Development across Different Platforms @ Immobilienscout24

http://www.flickr.com/photos/ponchopenguin/3262869038/sizes/l/in/photostream/

Forecast

using Git

Widget using new Google APIs

extend IS24-API SDK

Page 67: Mobile Development across Different Platforms @ Immobilienscout24

http://www.flickr.com/photos/ponchopenguin/3262869038/sizes/l/in/photostream/

Forecast

using Git tablet layout

Widget extend IS24-API SDK

using new Google APIs

Page 68: Mobile Development across Different Platforms @ Immobilienscout24

http://www.flickr.com/photos/ponchopenguin/3262869038/sizes/l/in/photostream/

Forecast

using Git tablet layout Google TV

layout

Widget extend IS24-API SDK

using new Google APIs

Page 69: Mobile Development across Different Platforms @ Immobilienscout24

http://www.flickr.com/photos/ponchopenguin/3262869038/sizes/l/in/photostream/

Forecast

using Git

code coverage

tablet layout Google TV

layout

Widget extend IS24-API SDK

using new Google APIs

Page 70: Mobile Development across Different Platforms @ Immobilienscout24

Thanks for your attention! Questions?

http://www.flickr.com/photos/peterjlambert/97671748/sizes/o/in/photostream/