Presentation: Front-End APIs: Powering Fast-Paced Iterations

Track: Next Gen APIs: Designs, Protocols, and Evolution

Location: Broadway Ballroom North, 6th fl.

Day of week:

Slides: Download Slides

Level: Intermediate

Persona: Architect, Developer, Front-end Developer, General Software

What You’ll Learn

  • Learn how LinkedIn uses API modeling and how it evolved over time.
  • Discuss how LinkedIn embeds an entity model into a view model to keep all views in sync.
  • Gain knowledge on how they add new features to the API on the server side without any changes on the client.

Abstract

LinkedIn uses a unified API server to power our new flagship experience on all platforms (desktop web, mobile web, iOS and Android). The API and clients are released using a completely automated continuous release and deployment pipeline, to enable a rapidly evolving product.

We explore our original ideas behind API modeling, the challenges we’ve faced, and how we are evolving our modeling strategy over time based on our learnings. We will present a use-case study of building the templated API behind LinkedIn’s new in-app notification experience. This new API allows new notification types to be rapidly introduced without requiring any client-side changes while continuing to preserve baseline requirements around backward compatibility, data consistency and caching.

Question: 

QCon: I understand your talk is inspired from your work. Tell us a bit about it.

Answer: 

Karthik: I work for the Application Infrastructure team at LinkedIn. Specifically, I lead the mobile infrastructure team.

Our team designs and builds shared libraries (examples include networking, caching, image loading, analytics, performance instrumentation etc.) and tools (build, debug and test tools) used by all native mobile applications (iOS/Android) at LinkedIn. Since our mobile clients are thin, we also focus a lot on the server-client interaction. This includes but is not limited to, the structure of the API exposed by the server, the wire format, compression algorithms to use when communicating between client and server etc.

Aditya: I lead the infrastructure development for the frontend API server, which powers the LinkedIn app on iOS, Android and Web. Our team is focussed on laying down the foundation of our frontend API server, its overall architecture, modeling direction, testing strategy. Our team is also responsible for developer happiness and operational stability of the service. This drives us to push the boundaries on coming up with innovative ways to enable application teams to ship features as fast as possible with stable infrastructure

Question: 

QCon: What is your audience, the front or the back-end engineer?

Answer: 

Karthik: LinkedIn has massive scale (in terms of user base), as well as significant complexity in the structure of APIs we expose to our clients on account of diverse features. In addition, we also move fast and release new code to our API server/web clients multiple times a day, and mobile apps once a week. A huge army of developers, designers, site reliability engineers, product managers, engineering managers, project managers work smoothly in tandem to make this happen. Since the product moves so fast, designing an API that evolves elegantly and minimizes engineering work for adding new features, while being relatively stable is crucial.

This talk charts our journey along various approaches for API design that we’ve explored, our missteps and learnings at each stage, where we are now and a sneak peek into our future direction.

Aditya: The talk is going to be around the evolution of how we started with entity-based modeling. This is where you describe an entity that's sent to the client and then the client does the transformation. We are moving from this approach to a place where we have our own language that the client can use to stitch everything together as it needs. The talk will have what we've learned from this approach, and how it helps us shoot for shipping features to consumers without making client-side changes. The goal is to monitor and power these experience directly from the server side.

Question: 

QCon: What would you like someone to leave your talk with?

Answer: 

Karthik: How to design and structure APIs that can evolve quickly to support various client UI use cases, while making minimal/no changes to client side code to support these new use cases.

Speaker: Karthik Ramgopal

Application Infrastructure @LinkedIn

Karthik is a Senior Staff engineer in the application infrastructure group, and leads the mobile infrastructure team at LinkedIn. In his previous career stints, Karthik has worked on several consumer internet products in India and the US, and has significant experience in building and optimizing infrastructure powering large scale applications.

Find Karthik Ramgopal at

Speaker: Aditya Modi

Staff Software Engineer @LinkedIn

Aditya is a Staff Software Engineer in the Application Infrastructure team. He leads the infrastructure development for the frontend API server, which powers the LinkedIn app on iOS, Android and Web. Previously, he led the development efforts on the frontend server that powers the realtime communication platform at LinkedIn. He has also been a part of the Android Infrastructure team which builds libraries leveraged by Android apps at LinkedIn.

Find Aditya Modi at