LinkedIn is one of the world’s largest professional networking platforms with over 810 million members globally as of 2021. With such a massive userbase, LinkedIn requires a robust and scalable technology stack to support its products and services.
Frontend/Client Side
For its frontend and client side, LinkedIn uses:
- React – A JavaScript library for building user interfaces. LinkedIn adopted React in 2015 to build modular, composable UIs.
- Redux – An open source JavaScript library for managing application state. It works well with React.
- TypeScript – A typed superset of JavaScript that adds optional static typing. This helps improve developer productivity.
- LESS/CSS – LinkedIn uses LESS as a CSS pre-processor for styling components. Standard CSS is used as well.
By leveraging React and Redux, LinkedIn is able to build complex yet performant UIs that can handle the demands of its userbase. React’s component model also allows for better code reuse across the platform. TypeScript adds type safety which is useful for large codebases. And LESS makes it easier to maintain style sheets.
Backend/Server Side
For its backend and server side systems, LinkedIn utilizes:
- Java – An OOP language that is performant, scalable and has rich ecosystem. Java is LinkedIn’s main server side language.
- Spring Framework – An application framework for Java. Used to build web apps and microservices.
- Play Framework – A web app framework for Java and Scala focused on developer productivity.
- Kafka – An open source distributed event streaming platform. Used for data pipelines and streaming apps.
- Apache Spark – An engine for large-scale data processing. Used for machine learning and analytics.
- Voldemort – A distributed key-value storage system. An alternative to caching layers like Redis.
- Oracle – A relational database. LinkedIn uses Oracle for its primary data storage.
- MongoDB – A popular document database. Used to store specialized datasets in JSON format.
Java and Spring make up the core foundations of LinkedIn’s backend architecture. The Play framework is used to build some lightweight microservices. Kafka handles event streaming from all the LinkedIn interactions happening in real-time. Spark powers the company’s machine learning and data analytics capabilities. Voldemort gives low latency access to key-value style data points. Oracle manages LinkedIn’s member profiles, posts, jobs and more relational data. And MongoDB stores specialized social data like follower graphs.
Infrastructure/Cloud
LinkedIn runs its infrastructure predominantly on the Microsoft Azure public cloud. Some key technologies used are:
- Azure Virtual Machines – IaaS foundation for running custom VMs
- Azure Container Service – Kubernetes powered container management
- Azure Functions – Serverless computing platform
- Azure Storage – Distributed storage service
- Azure SQL Database – Managed SQL databases
- Azure CosmosDB – Distributed NoSQL database
- Azure Cache for Redis – In-memory data store
Azure gives LinkedIn the ability to quickly scale up or down its infrastructure to match demand. Containers and serverless architectures also give better cost efficiency and density vs traditional VMs. LinkedIn takes advantage of managed database services like Azure SQL and CosmosDB rather than provisioning its own. And it uses Redis caching on Azure to reduce calls to persistent storage.
Mobile Apps
For its mobile apps on iOS and Android, LinkedIn uses:
- React Native – Cross platform UI framework for mobile. Reuses knowledge of React web skills.
- Redux – State management library reused from web app.
- OkHttp – Networking client for REST API calls.
- Volley – Networking library optimized for Android.
React Native allows LinkedIn to use the same React component model to build for both iOS and Android from a single codebase. Redux state management is also shared between mobile and web. OkHttp and Volley handle network calls on mobile. Overall, LinkedIn aims for maximum code reuse across web and mobile apps.
Testing
LinkedIn relies on these tools for testing:
- JUnit – Java unit testing framework.
- Mockito – Used for test doubles and mocks in Java tests.
- Espresso – Android UI testing framework.
- Jest – JavaScript testing framework that works with React apps.
- Enzyme – JavaScript testing utility for React components.
JUnit and Mockito enable automated unit and integration testing for LinkedIn’s Java backend code. Mobile uses Espresso for reliable Android UI testing. Web leverages Jest as the test runner and Enzyme for rendering React components in test environments.
DevOps
LinkedIn uses various DevOps tools and solutions including:
- Jenkins – Open source automation server for CI/CD pipelines.
- Git – Distributed version control system.
- Bamboo – Atlassian’s CI/CD and release management tool.
- Ansible – Infrastructure automation and configuration management.
- Terraform – HashiCorp’s infrastructure-as-code tool.
Jenkins and Bamboo both help accelerate LinkedIn’s software delivery pipelines. Git facilitates version control and code sharing between developers. Ansible and Terraform enable infrastructure automation and reduce configuration drift. Overall, LinkedIn invests heavily in DevOps to continuously deliver software at high velocity.
Machine Learning
For machine learning workloads, LinkedIn employs:
- TensorFlow – End-to-end open source ML platform.
- Keras – High-level neural networks API that runs on TensorFlow.
- Apache Spark MLlib – Distributed ML framework.
- Azure Machine Learning – Managed ML service on Microsoft Azure.
TensorFlow and Keras provide solid foundations for deep learning and neural networks. Spark MLlib enables distributed training over large datasets. And Azure Machine Learning gives managed machine learning capabilities through a cloud service. These solutions power LinkedIn’s feed ranking, content recommendations, search intelligence, spam reduction, and other areas relying on ML.
Conclusion
In summary, LinkedIn leverages:
- React, Redux, TypeScript and LESS/CSS on the frontend
- Java, Spring, Play, Kafka, Spark, Voldemort, Oracle and MongoDB on the backend
- Azure services for its cloud infrastructure
- React Native for mobile apps
- JUnit, Mockito, Espresso, Jest and Enzyme for testing
- Jenkins, Git, Bamboo, Ansible and Terraform for DevOps
- TensorFlow, Keras, Spark MLlib and Azure ML for machine learning
This combination of technologies allows LinkedIn to scale reliably while rapidly delivering new features to its member base. The company has invested heavily in building internal platforms and tools around this stack. It also opensources many of those back to the community. As LinkedIn’s product lineup continues evolving, this technology foundation ensures the company is well-equipped to adapt and innovate for the future.