•Ashwin Neerabail, Ankit Srivastava, Kamran Massoudi, Madan Thangavelu, Uday Kiran Medisetty•19 min read•intermediate•
--
•View OriginalOverview
The article discusses Uber's comprehensive re-architecture of its Fulfillment Platform, aimed at enhancing its Go/Get strategy. It details the criticality and scale of the platform, the challenges faced with the previous architecture, and the new design principles and technologies adopted to ensure scalability, consistency, and extensibility.
What You'll Learn
1
How to design a scalable architecture for fulfillment platforms
2
Why transitioning from NoSQL to NewSQL can enhance data consistency
3
How to implement statecharts for managing entity lifecycles
Prerequisites & Requirements
- Understanding of distributed systems and microservices architecture
- Familiarity with Google Cloud Spanner and Apache Cassandra(optional)
Key Questions Answered
What are the key features of Uber's new Fulfillment Platform architecture?
The new Fulfillment Platform architecture emphasizes strong consistency, high availability, and extensibility. It utilizes Google Cloud Spanner for transactional capabilities, ensuring that operations across multiple entities are handled efficiently. The architecture supports horizontal scalability and minimizes operational overhead, addressing the challenges faced by the previous system.
How does Uber ensure data consistency in its new architecture?
Uber's new architecture leverages Google Cloud Spanner, which provides external consistency guarantees and supports transactions across multiple rows and tables. This ensures that data remains consistent even during concurrent operations, addressing the issues faced in the previous architecture where consistency was sacrificed for availability.
What challenges did Uber face with the previous Fulfillment Platform?
The previous architecture struggled with consistency issues, especially during concurrent writes, leading to potential data conflicts. Additionally, the lack of clear extensibility patterns made it difficult for new engineers to contribute effectively, while scalability concerns arose from the limitations of the existing NoSQL solutions.
Key Statistics & Figures
Concurrent users handled by the Fulfillment Platform
more than a million
This statistic highlights the platform's capability to manage extensive user interactions simultaneously.
Number of cities served by the Fulfillment Platform
over ten thousand
This reflects the scale at which Uber operates, emphasizing the need for a robust architecture.
Number of developers involved in extending the platform
500+
This indicates the collaborative effort required to build and maintain the Fulfillment Platform.
Technologies & Tools
Database
Google Cloud Spanner
Used as the primary storage engine for the new Fulfillment Platform, providing strong consistency and scalability.
Database
Apache Cassandra
Previously used for data storage, highlighting the transition to a more robust solution.
Key Actionable Insights
1Implementing a statechart model can significantly enhance the clarity and modularity of your application’s entity lifecycle management.By using statecharts, developers can maintain a clear structure for entity states and transitions, making it easier to manage complex workflows and interactions.
2Transitioning to a NewSQL database like Google Cloud Spanner can provide the necessary transactional guarantees that modern applications require.This transition helps in maintaining data integrity and consistency across distributed systems, which is crucial for applications that handle multiple concurrent transactions.
3Establishing a robust communication strategy among teams can facilitate smoother project execution and alignment on goals.Given the scale of collaboration required for the Fulfillment Platform's re-architecture, regular syncs and updates helped maintain momentum and address blockers effectively.
Common Pitfalls
1
Failing to establish clear extensibility patterns can lead to confusion and inefficiencies in team contributions.
Without a defined model for extending the platform, new engineers may struggle to understand the system, leading to increased onboarding time and potential errors in implementation.
Related Concepts
Distributed Systems
Microservices Architecture
State Management In Applications
Data Consistency Models