Jan 2025
13 Mon
14 Tue
15 Wed
16 Thu
17 Fri 06:00 PM – 07:00 PM IST
18 Sat
19 Sun
Review date and time - 17 January 2025, 6 PM - 7 PM
Presenters - Santanu Sinha (Chief Architect at PhonePe); Vishnu Naini (SRE at PhonePe)
Drove is a distributed container orchestrator built by PhonePe to address the challenges the team faced when Mesos reached end of life, including outdated security, lack of community support, and the need for numerous plugins.
🔗 Link to the slides shown at the review - https://images.hasgeek.com/embed/file/97396a27bd0b4d29815d59f6a2bf651b
Controller: Orchestrates executors, schedules and allocates resources, tracks workload lifecycles, exposes API and UI, streams logs, supports events, and uses Zookeeper for coordination and leader election.
Executor: Actual execution host where containers run.
Drove Gateway: Interfaces with NGINX for traffic routing (alternative to CoreDNS plugin).
Zookeeper: Used for coordination and leader election.
Aditya commended Drove, but suggested improvements to the presentation. He recommended a clearer narrative with a smooth flow, and a diagram showcasing Drove’s role in managing PhonePe’s infrastructure. He emphasized the need to explain the motivation for building Drove, especially considering the availability of other orchestration systems. He also questioned the ecosystem around Drove, the ease of writing JSON specifications, and the concept of local tasks.
Aditya pointed out that the transitions between talking about Drove software and the PhonePe infrastructure were abrupt. He suggested using a diagram at the beginning to illustrate the current setup and how Drove manages it, which would pique the audience’s interest and make the presentation flow better.
Anant’s feedback was that the presentation lacked a clear motivation and target audience, making it difficult for the audience to understand the purpose and relevance of the content. He suggested that the presenters compare Drove with other orchestration systems and provide benchmarking data to showcase its benefits, particularly highlighting whether features like performance improvements through fixed CPU allocation or NUMA are unique to Drove or better implemented compared to alternatives. He also noted the lack of security details, suggesting that this aspect should be elaborated to demonstrate Drove’s robustness. The diagrams were described as confusing because all elements appeared at once; Anant recommended revealing and explaining them gradually on the slides, preferably before the demo. Furthermore, he pointed out the excessive use of bullet points and the lack of visuals, which made the presentation harder to follow. He questioned the claim of “proprietary” elements, suggesting that “internal” might be a better term if there is no clear selling angle. The absence of documentation and contribution guidelines was also highlighted as a significant gap. Anant emphasized that the core unique selling points (USPs) of Drove, such as simplicity and fast cluster upgrades, were not sufficiently emphasized and should be the primary focus of the demo. He further recommended clearly stating the motivation for building Drove, including the challenges with existing tools and reasons for not adopting alternatives, at the beginning of the presentation. Additional suggestions included adding slide numbers for easier navigation and clarifying the design philosophy early in the presentation to establish a cohesive narrative.
Specific suggestions regarding the presentation’s structure and content:
Secrets management: He questioned the claim that secrets are not accessible, as he saw an auth token in the logs. He suggested separating PhonePe’s internal architecture from the open-source parts, especially regarding security.
Control Plane: Chandrapal found it difficult to visualize Drove’s control plane and data plane, and suggested explaining it more clearly using examples like Google Nest.
Santanu and Vishnu responded that:
Hosted by
{{ gettext('Login to leave a comment') }}
{{ gettext('Post a comment…') }}{{ errorMsg }}
{{ gettext('No comments posted yet') }}