LinkedIn Mobile

31
LinkedIn Mobile How we do we do it?

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 of LinkedIn Mobile

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