BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage News LinkedIn Improves Development Productivity by 10x by Implementing a Messaging Client-Side SDK

LinkedIn Improves Development Productivity by 10x by Implementing a Messaging Client-Side SDK

This item in japanese

Bookmarks

LinkedIn recently published how it significantly improved development productivity by implementing a client-side Messenger SDK. Usage of the SDK reduces code maintenance costs across multiple apps by abstracting away thousands of lines of code into shared libraries. In one case, the new SDK saved 40+ developer weeks of effort when building a new LinkedIn experience.

Michele Ursino, senior staff engineer at LinkedIn, and Joe Xue, engineering leader at LinkedIn, explain how the SDK increases productivity:

Our Messenger SDK significantly increased developer productivity by reducing code maintenance costs across multiple apps by abstracting away thousands of lines of code into shared libraries. In certain cases, we achieved a 10X reduction in lines of code, moving from upwards of 3,000 lines to a couple hundred. The result is that developers can now create new messaging experiences in weeks as opposed to months or quarters.

Ursino and Xue claim that by creating a common front-end platform across LinkedIn's messaging experiences, they've proven a model that others can replicate for other core features:

Organizations with multiple, large applications like LinkedIn should reconsider their approach to building applications. Instead of each application being a standalone entity, it could be thin layers built on top of reusable platform libraries that expose advanced capabilities of various technology pillars all the way to the user interface as needed.

LinkedIn rebuilt its messaging experience in mid-2020. However, Ursino and Xue explain that "implementing full messaging reliability and functionality on devices running LinkedIn products was a complex task that required a lot of work and careful attention to many details." To ensure maximum consistency and reliability, LinkedIn extended the messaging platform to include managing messaging data in client devices and front-end API. LinkedIn's messaging team packaged all messaging capabilities into a full-feature data layer SDK to address the complexity of messaging data management in client applications.


Source: https://engineering.linkedin.com/blog/2023/unifying-messaging-experiences-across-linkedin

LinkedIn divided the new SDK into two types of libraries: API library ("messenger-api"), used to integrate messaging in an application API, and client libraries (messenger-data), used to represent the mailbox locally on devices.

The API library has three functions: to bridge requests in GraphQL from clients to the back-end messaging platform infrastructure, allow the host API to customize messaging API behaviour, and enable other systems to use GraphQL to decorate messaging data. It implements error checking for messaging data from other systems and exposes a GraphQL schema with queries used by client SDK libraries on each platform to fetch information. This architecture allows host API code to customize the transformation of messaging data from the back-end messaging platform to front-end data in each API request life cycle.


Source: https://engineering.linkedin.com/blog/2023/unifying-messaging-experiences-across-linkedin

The client libraries implement an Event Driven Data Layer (EDDL) for messaging, providing an up-to-date representation of mailbox data on the client device and syncing it with the actual mailbox data in the back-end. The libraries aim to ensure maximum messaging reliability and easy access to mailbox data for application developers. They also adopt a reactive approach to support fast rendering and screen updates of device conversations and messages. They immediately notify the host application code of any data changes to allow for necessary UI updates.


Source: https://engineering.linkedin.com/blog/2023/unifying-messaging-experiences-across-linkedin

LinkedIn has fully migrated its flagship applications to the Messenger SDK for all messaging capabilities, providing a consistent and reliable messaging experience across all client platforms. The SDK has brought feature parity across platforms, modernized codebases, improved stability and reliability, and increased developer productivity.

About the Author

Rate this Article

Adoption
Style

BT