LinkedIn Mobile: How do we do it?

74,681 views
74,158 views

Published on

A brief overview of the design, code, test and deploy model we use at LinkedIn in the mobile group to build and support multiplatform development.

Published in: Technology, Design
0 Comments
64 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
74,681
On SlideShare
0
From Embeds
0
Number of Embeds
628
Actions
Shares
0
Downloads
351
Comments
0
Likes
64
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • LinkedIn Mobile: How do we do it?

    1. LinkedIn Mobile How we do we do it?
    2. BuildDesign CodeTestingDeploy
    3. Build PlatformDesign iOS Code AndroidTesting BrowserDeploy Other
    4. Design
    5. 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
    6. Search, Compose, Room NavigationStream You Inbox Following Notifications Breadth < 4 Depth < 3
    7. 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
    8. Mobile Web Enter the house SEO Email Organic
    9. Code
    10. Other iOS Android Mobile Web WrapJS/HTML + Native Native JS/HTML JS/HTML Screen based REST API Mobile Server (node.js + MongoDB) Domain REST API LinkedIn Platform
    11. Other iOS Android Mobile Web WrapJS/HTML + Native Native JS/HTML JS/HTML Screen based REST API Mobile Server (node.js + MongoDB) Domain REST API LinkedIn Platform
    12. 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
    13. Mobile Server• Stateless Load Balancer Nginx Nginx• Platform Transport: JSON In / JSON Out Node JS Node JS Server Server• Nginx as Web Server Mongo Logging Tracking• CDN for Static Content DB Server Server• Log / Track Everything LinkedIn Platform
    14. Screen Based JSON• Single Request per { ttype: nut1, screen time: 298349823, header: “Wow, that is pretty cool”,• JSON is template ....... ...... based footer: “shared by Kiran Prasad”, id: 1298398127,• Updatable on } server
    15. Other iOS Android Mobile Web WrapJS/HTML + Native Native JS/HTML JS/HTML Screen based REST API Mobile Server (node.js + MongoDB) Domain REST API LinkedIn Platform
    16. iOS• Native for all infinite lists• Native for Window Manager• JS/HTML for all screens that are detail views• Per screen choice for the stuff in the middle• Async JS/iOS Bridge
    17. Other iOS Android Mobile Web WrapJS/HTML + Native Native JS/HTML JS/HTML Screen based REST API Mobile Server (node.js + MongoDB) Domain REST API LinkedIn Platform
    18. Android• Native for all the screens• WebView for browsing the web• Moving towards more HTML5• Contacts locally stored but rest only in memory cache
    19. Other iOS Android Mobile Web WrapJS/HTML + Native Native JS/HTML JS/HTML Screen based REST API Mobile Server (node.js + MongoDB) Domain REST API LinkedIn Platform
    20. Mobile Web• Backbone for MVC • LocalStorage for personal Cache• Underscore for utils• Zapto for DOM • SASS for CSS Manipulation • Closure for compiling• Modified iScroll for • Hash based Loader Scrolling
    21. Test
    22. 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
    23. Deploy
    24. Deploy / Monitor• Enterprise Build available • Keynote for to employees Performance and Availability monitoring• Ship everything 2 times a week • DeviceAnywhere for compatibility testing• Apps and Server Deploy independently • Internal monitoring for QPS, Uptime, etc• 2 Week Bake for Big Stuff • Client Crash Log Metrics tracked daily
    25. Thanks! & Questions?

    ×