linkedin mobile

31
LinkedIn Mobile How we do we do it?

Upload: arden

Post on 07-Feb-2016

32 views

Category:

Documents


0 download

DESCRIPTION

LinkedIn Mobile. How we do we do it?. Build. Platform. Design Code Testing Deploy. iOS Android Browser Other. Code. iOS Native 30%. Android 80%. Mobile Web 100%. Other OS Wrappers 100%. Mobile Web JS/HTML. Screen based REST API. Mobile Server (node.js + MongoDB). - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: LinkedIn Mobile

LinkedIn MobileHow we do we do it?

Page 2: LinkedIn Mobile

BuildDesignCode

TestingDeploy

PlatformiOS

AndroidBrowserOther

Page 3: LinkedIn Mobile

Code

Page 4: LinkedIn Mobile

Mobile Server (node.js + MongoDB)Mobile Server (node.js + MongoDB)

LinkedIn PlatformLinkedIn Platform

Domain REST API

Screen based REST API

iOS NativeiOS Native30%30%

AndroidAndroid80%80%

Mobile Mobile WebWeb100%100%

Other OS Other OS Wrappers Wrappers

100%100%

Mobile WebMobile WebJS/HTMLJS/HTML

Page 5: LinkedIn Mobile

Mobile Server (node.js + MongoDB)Mobile Server (node.js + MongoDB)

LinkedIn PlatformLinkedIn Platform

Domain REST API

Screen based REST API

iOS NativeiOS Native30%30%

AndroidAndroid80%80%

Mobile Mobile WebWeb100%100%

Other OS Other OS Wrappers Wrappers

100%100%

Mobile WebMobile WebJS/HTMLJS/HTML

Page 6: LinkedIn Mobile

ModelModel

ViewViewControllerController

Typical Web Application

Client/Server Border

Page 7: LinkedIn Mobile

ActiveRecorActiveRecordd

ERBERBRails Rails ControllersControllers

Rails Systems

Process

Client/Server Border

Page 8: LinkedIn Mobile

Data Data ServiceService

TemplatingTemplatingControllersControllers

Tiered Systems

Process

Process

Client/Server Border

Page 9: LinkedIn Mobile

Real Systems

TemplatingTemplatingControllersControllers

Process

Data Data ServiServi

cece

Process

Data Data ServiServi

cece

Process

TrackinTrackingg

Process

BG BG QueuQueu

ee

Process

......

Process

......

Process

Client/Server Border

Page 10: LinkedIn Mobile

TemplatingTemplatingControllersControllers

Real HTML5 Systems

Browser / Mobile Client

Data Data ServiServi

cece

Process

Data Data ServiServi

cece

Process

TrackinTrackingg

Process

BG BG QueuQueu

ee

Process

......

Process

......

Process

Client/Server Border

Page 11: LinkedIn Mobile

Real HTML5 with Node.JS

TemplatinTemplatingg

ControllerControllerss

Browser / Mobile Client

Data Data ServiServi

cece

Process

Data Data ServiServi

cece

Process

TrackinTrackingg

Process

BG BG QueuQueu

ee

Process

......

Process

......

Process

Client/Server Border

Node.JS - Aggregation, FormattingNode.JS - Aggregation, Formatting

Page 12: LinkedIn Mobile

Why Node.JS: Evented & JS

•I/O Bound for most interaction

•Aggregation and Manipulation of Strings

•Lots of persistent socket connections

•Client developers are doing server development

Page 13: LinkedIn Mobile

Mobile Server

•Stateless

• Platform Transport: JSON In / JSON Out

•Nginx as Web Server

• CDN for Static Content

• Log / Track Everything

Load BalancerLoad Balancer

NginxNginx

Node JS Node JS ServerServer

MongMongoDB oDB

NginxNginx

Node JS Node JS ServerServer

LogginLogging g

ServerServer

TrackinTracking g

ServerServer

LinkedIn PlatformLinkedIn Platform

Page 14: LinkedIn Mobile

Screen Based JSON

• Single Request per screen

• JSON is template based

•Updatable on server

{ ttype: nut1, time: 298349823, header: “Wow, that is pretty cool”, ....... ...... footer: “shared by Kiran Prasad”, id: 1298398127,}

Page 15: LinkedIn Mobile

Mobile Server (node.js + MongoDB)Mobile Server (node.js + MongoDB)

LinkedIn PlatformLinkedIn Platform

Domain REST API

Screen based REST API

iOSiOSJS/HTML + JS/HTML +

NativeNative

AndroidAndroidNativeNative

Mobile Mobile WebWeb

JS/HTMLJS/HTML

OtherOtherWrap Wrap

JS/HTMLJS/HTML

Page 16: LinkedIn Mobile

iOS•Native for all infinite

lists

•Native for Window Manager

• JS/HTML for all screens that are detail views (70% of App today)

• Per screen choice for the stuff in the middle

• Async JS/iOS Bridge

Page 17: LinkedIn Mobile

Mobile Server (node.js + MongoDB)Mobile Server (node.js + MongoDB)

LinkedIn PlatformLinkedIn Platform

Domain REST API

Screen based REST API

iOSiOSJS/HTML + JS/HTML +

NativeNative

AndroidAndroidNativeNative

Mobile Mobile WebWeb

JS/HTMLJS/HTML

OtherOtherWrap Wrap

JS/HTMLJS/HTML

Page 18: LinkedIn Mobile

Android•Native for all the

screens

•WebView for 20% of screens

•Moving towards more HTML5

•Contacts locally stored but rest only in memory cache

Page 19: LinkedIn Mobile

Mobile Server (node.js + MongoDB)Mobile Server (node.js + MongoDB)

LinkedIn PlatformLinkedIn Platform

Domain REST API

Screen based REST API

iOSiOSJS/HTML + JS/HTML +

NativeNative

AndroidAndroidNativeNative

Mobile Mobile WebWeb

JS/HTMLJS/HTML

OtherOtherWrap Wrap

JS/HTMLJS/HTML

Page 20: LinkedIn Mobile

Mobile Web

• Backbone for MVC

•Underscore for utils

• Zapto for DOM Manipulation

•Modified iScroll for Scrolling

• LocalStorage for personal Cache

• SASS for CSS

•Closure for compiling

•Hash based Loader

Page 21: LinkedIn Mobile

Test

Page 22: LinkedIn Mobile

Test•Automation:

Vows, Robotium, Selenium, FoneMonkey, GHUnit

•Hudson for build management

•Internal Tool for Layout Testing

•PhantomJS based Tool for Performance

•Bug Bash + 2 Week Demos

•2 Week Team Demo

Page 23: LinkedIn Mobile

Deploy

Page 24: LinkedIn Mobile

Deploy / Monitor• Enterprise Build available to employees

• Ship everything 2 times a week

• Apps and Server Deploy independently

• 2 Week Bake for Big Stuff

• Keynote for Performance and Availability monitoring

•DeviceAnywhere for compatibility testing

• Internal monitoring for QPS, Uptime, etc

•Client Crash Log Metrics tracked daily

Page 25: LinkedIn Mobile

Thanks! & Questions?

Page 26: LinkedIn Mobile

Appendix

Page 27: LinkedIn Mobile

Product Design

Page 28: LinkedIn Mobile

Interaction vs Visual

•Designing a house’s floorplan

•Focus on Rooms, Doors and Hallways

•Stay away from Paint, Furniture and Carpet

•Has & Does for each screen

•Black & White then add color

Page 29: LinkedIn Mobile

Search, Compose, Room NavigationSearch, Compose, Room Navigation

NotificationsNotifications

StreamStream YouYou InboxInbox FollowingFollowing

Breadth < 4

Depth < 3

Page 30: LinkedIn Mobile

Adjust for App Platform

•On Screen Back vs Hardware Back

•Up vs Back / Stacks vs Pages

•Pull To Refresh vs Button Refresh

•Settings

•Visual Design

Page 31: LinkedIn Mobile

Mobile WebEnter the house

SEO

EmailOrganic