31
LinkedIn Mobile How we do we do it?

LinkedIn Mobile How we do we do it?. Build Design Code Testing Deploy Platform iOS Android Browser Other

Embed Size (px)

Citation preview

Page 1: LinkedIn Mobile How we do we do it?. Build Design Code Testing Deploy Platform iOS Android Browser Other

LinkedIn MobileHow we do we do it?

Page 2: LinkedIn Mobile How we do we do it?. Build Design Code Testing Deploy Platform iOS Android Browser Other

BuildDesignCode

TestingDeploy

PlatformiOS

AndroidBrowserOther

Page 3: LinkedIn Mobile How we do we do it?. Build Design Code Testing Deploy Platform iOS Android Browser Other

Code

Page 4: LinkedIn Mobile How we do we do it?. Build Design Code Testing Deploy Platform iOS Android Browser Other

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 How we do we do it?. Build Design Code Testing Deploy Platform iOS Android Browser Other

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 How we do we do it?. Build Design Code Testing Deploy Platform iOS Android Browser Other

ModelModel

ViewViewControllerController

Typical Web Application

Client/Server Border

Page 7: LinkedIn Mobile How we do we do it?. Build Design Code Testing Deploy Platform iOS Android Browser Other

ActiveRecorActiveRecordd

ERBERBRails Rails ControllersControllers

Rails Systems

Process

Client/Server Border

Page 8: LinkedIn Mobile How we do we do it?. Build Design Code Testing Deploy Platform iOS Android Browser Other

Data Data ServiceService

TemplatingTemplatingControllersControllers

Tiered Systems

Process

Process

Client/Server Border

Page 9: LinkedIn Mobile How we do we do it?. Build Design Code Testing Deploy Platform iOS Android Browser Other

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 How we do we do it?. Build Design Code Testing Deploy Platform iOS Android Browser Other

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 How we do we do it?. Build Design Code Testing Deploy Platform iOS Android Browser Other

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 How we do we do it?. Build Design Code Testing Deploy Platform iOS Android Browser Other

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 How we do we do it?. Build Design Code Testing Deploy Platform iOS Android Browser Other

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 How we do we do it?. Build Design Code Testing Deploy Platform iOS Android Browser Other

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 How we do we do it?. Build Design Code Testing Deploy Platform iOS Android Browser Other

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 How we do we do it?. Build Design Code Testing Deploy Platform iOS Android Browser Other

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 How we do we do it?. Build Design Code Testing Deploy Platform iOS Android Browser Other

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 How we do we do it?. Build Design Code Testing Deploy Platform iOS Android Browser Other

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 How we do we do it?. Build Design Code Testing Deploy Platform iOS Android Browser Other

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 How we do we do it?. Build Design Code Testing Deploy Platform iOS Android Browser Other

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 How we do we do it?. Build Design Code Testing Deploy Platform iOS Android Browser Other

Test

Page 22: LinkedIn Mobile How we do we do it?. Build Design Code Testing Deploy Platform iOS Android Browser Other

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 How we do we do it?. Build Design Code Testing Deploy Platform iOS Android Browser Other

Deploy

Page 24: LinkedIn Mobile How we do we do it?. Build Design Code Testing Deploy Platform iOS Android Browser Other

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 How we do we do it?. Build Design Code Testing Deploy Platform iOS Android Browser Other

Thanks! & Questions?

Page 26: LinkedIn Mobile How we do we do it?. Build Design Code Testing Deploy Platform iOS Android Browser Other

Appendix

Page 27: LinkedIn Mobile How we do we do it?. Build Design Code Testing Deploy Platform iOS Android Browser Other

Product Design

Page 28: LinkedIn Mobile How we do we do it?. Build Design Code Testing Deploy Platform iOS Android Browser Other

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 How we do we do it?. Build Design Code Testing Deploy Platform iOS Android Browser Other

Search, Compose, Room NavigationSearch, Compose, Room Navigation

NotificationsNotifications

StreamStream YouYou InboxInbox FollowingFollowing

Breadth < 4

Depth < 3

Page 30: LinkedIn Mobile How we do we do it?. Build Design Code Testing Deploy Platform iOS Android Browser Other

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 How we do we do it?. Build Design Code Testing Deploy Platform iOS Android Browser Other

Mobile WebEnter the house

SEO

EmailOrganic