Building Microsoft-powered native video meetings on LinkedIn
August 9, 2021
As the world has increasingly embraced virtual connections over the past year, video communication has become essential to professional conversations. With over 744 million members on LinkedIn, we want to make professional conversations more personal by helping members meet face-to-face over video, especially in this time of hybrid and remote work where many of us cannot meet in person.
Not only was creating this feature a chance to leverage the power of Azure, but it was also an opportunity to provide a video meeting solution that would be easy to incorporate into products across our entire ecosystem.
Our vision for video meetings encompassed three goals:
- Members-first: Building a members-first feature for easy video conferencing
- Modular: Unlocking the power of video conferencing across the LinkedIn ecosystem
- Scalable and reliable: Enabling video conferencing that can scale to support hundreds of millions of members
Driving development with a members-first mentality
From an initial job search to a 1:1 conversation, we wanted to drive the productivity of our members end to end while keeping them safe. By adding video conferencing as a part of the messaging experience, members can connect virtually while maintaining the context of their existing conversation. Now, members can easily schedule free video meetings with their network without the need to download a client or sign up to any service. We’ve also included LinkedIn-specific profile information, which provides members with useful context about their conversation partners. To assist those who want to connect beyond messaging, we have also built smart actions that recommend when to schedule a video meeting.
Unlocking video conferencing across LinkedIn
We created video meetings by building a brand-new service to handle all communication between Azure Communication Services and the rest of LinkedIn, which allows us to consolidate all the authentication and business logic around video meetings. Additionally, we have developed video conferencing client SDKs for each platform to consolidate interaction with the server stack and provide a standardized user interface for video meetings.
The core microservice, LinkedIn Conferencing Infrastructure (LICI), provides a layer of abstraction for product-based microservices to interact with Azure and handles requests from the client SDKs to power additional functionality specific to LinkedIn. The client SDK, LinkedIn Conferencing Library (LICL), wraps the Azure service client SDKs to provide LinkedIn apps on every platform with a simple API for launching a video meeting, as well as a customizable calling interface. This provides a fast and simple way for product teams at LinkedIn to incorporate native video meeting functionality.
Conferencing-as-a-service for LinkedIn
LinkedIn Conferencing Infrastructure was built as a one-stop video conferencing solution catered to LinkedIn. Products that integrate with this conferencing platform get reliability, scale, monitoring, and trust and security integrations out-of-the-box. LICI empowers partner teams to build new conferencing features while acting as the control plane between the LinkedIn client libraries, Azure Communication Services, and LinkedIn products.
Some of the areas that LICI handles include:
- Conferencing infrastructure user access credentials and tokens. These tokens need to be requested from the Azure service and need to be refreshed regularly for added security while maintaining the mapping with the users’ LinkedIn identities.
- Orchestration and setup of the conference. This includes keeping track of future conferences and restrictions around when they can be started and ended, when participants can join, etc.
- Managing the conference lifecycle. This includes cleaning up abandoned conferences to better manage our footprint.
- Managing the participant roster. This includes keeping track of participant roles and permissions.
- Access control of both the overall conferencing infrastructure and individual conferences. This includes checks and control over all actions performed by the participants within the conference.
Access control is a good example of how we've customized Azure services for LinkedIn. While Azure Communication Services restricts overall access if a valid token or conference is not provided, it does not currently have per-conference access control on who can join. Azure Communication Services cannot have any notion of who the participants are, since this is LinkedIn member-specific data. With highly confidential data such as messaging conversations, we need to guarantee access control to the general conferencing infrastructure and on a per-conference level.
These checks reside within LICI and are guaranteed for all future products that are built on top of conferencing infrastructure for LinkedIn. More examples of data unique to LinkedIn are member blocking, Economic Graph information, and degrees of connections for the member. All this information provided by our products can be used to enrich the conference experience for our members.
Building for scale
Azure Communications Services is built on the same technology that powers Microsoft Teams, which already supports millions of users daily. When a LinkedIn member wants to start a video meeting, LinkedIn services will communicate with Azure Communication Services to generate a user token and call token for the occasion. LinkedIn apps then join the call by using the Azure client library, providing the specified call token and identifying the LinkedIn member with the user token. Once LinkedIn members are in the meeting, the service handles all communication for the video call using their own network and protocols. Since their mature video platform provides the communication framework that our video meeting experience is built on top of, we can be confident in the stability and scalability of video and audio transmission for LinkedIn video meetings.
Partnership with ACS
As customers of Azure, we have helped tune and influence the roadmap to include our necessary feature set. With our testing and feedback loop, we have also influenced the monitoring signals and events that are useful for customers to ingest from Azure Communication Services. Looking at the API from a customer perspective, we have helped them tune their API signature. The Azure team has also been very responsive and agile in making any desired changes. This partnership has given us the opportunity to look at the infrastructure and the product from a distinct perspective, provide quick iterations, and make the API even more robust for other customers of the service. This is a splendid example of how cross-company interaction can benefit the business.
Testing and monitoring
With multiple teams working to build the conferencing experience, we had to make sure the collaboration and integration went seamlessly. We achieved this by regular working sessions and bug bashing across teams.
To make sure there are no regressions introduced with new iterations of the service, we run validation tests that mimic the user behavior in both early integration and production environments on a cron-like schedule. We also have comprehensive monitoring in place that alerts us when something is not working as expected, which enables us to act swiftly and maintain a high-quality experience.
Now that we have built the foundations of video conferencing, we have many exciting features ahead as we continue to make LinkedIn video meetings even better.
Some of these features include:
- A calendar integration so that a scheduled meeting sends an email with an ICS to both parties
- Allowing for messaging chat while you are in a video conversation
- Screen sharing and virtual backgrounds
Our investment in video meetings has opened innovation for video conferencing across the LinkedIn ecosystem, with potential use cases ranging from messaging peers to interviewing candidates. As the professional landscape transitions to a mix of in-person and virtual communication, we are committed to building the best possible video meeting experience for our members.