YouTube video summary

Effective Performance Engineering at Twitter-Scale

Technology25 Jun 20244 min summaryFrom InfoQ
Effective Performance Engineering at Twitter-Scale
InfoQ
YouTube

Performance Engineering Challenges

  • Traditional performance engineering approaches are no longer sufficient to handle the complexity of modern software applications.
  • Performance engineering used to be easy due to consistent hardware advancements, but now it's harder because of specialized hardware.
  • Modern software applications are highly complex, making it challenging to identify and optimize performance issues.

Systems Thinking for Performance Engineering

  • Systems thinking provides a language and framework for modeling and understanding complex relationships within a system, enabling performance engineers to identify and address bottlenecks and inefficiencies.
  • Performance engineering should be viewed as a counting exercise on top of a system model, where resources are counted and analyzed to determine their utilization and impact on performance.
  • Having a system model in place allows performance engineers to count resources at the appropriate granularity to accurately assess and optimize performance.

Performance Engineering at Twitter

  • At Twitter's scale, performance engineering involves building a model of the system and collecting metrics at a fine granularity.
  • Custom samplers and systems are used to collect low-level telemetry with minimal overhead.
  • The data infrastructure built for performance engineering is also used to solve real problems, such as optimizing GC intervals and identifying underutilized resources.
  • The data generated is also used by other teams for capacity planning and service optimization.
  • Twitter's performance engineering team developed a data aggregation pipeline to analyze trace data and gain insights into the performance of their distributed systems.
  • They used tracing and profiling techniques to capture the interactions between different services and understand how they contribute to overall performance.
  • They built a service dependency explorer to visualize the connectivity and load amplification between services, allowing them to identify bottlenecks and optimize resource allocation.
  • The team also developed a model called "Laten here" to perform causal reasoning and determine the root causes of latency issues.
  • The data engineering efforts enabled the team to answer complex performance-related questions that were not possible with other data sets.
  • The team's work extended beyond performance engineering to include data privacy analysis, where they leveraged the system dependency data to identify sensitive information and access patterns.

Building a Successful Performance Engineering Team

  • Performance engineering doesn't fit neatly into traditional organizational structures due to its cross-functional nature.
  • To be effective, performance engineers need to align their work with either top-line or bottom-line objectives.
  • Building a strong network of advocates and supporters within the organization is crucial for performance engineers to gain influence and drive change.
  • The symbolic significance of having a dedicated performance engineering team emphasizes the importance of performance optimization within the organization.
  • Performance engineers should encourage and support other engineers to contribute to performance work, rather than trying to centralize all performance-related tasks.
  • To build a successful performance engineering team, you need a diverse team with different skill sets.
  • Start with a small team of people who are much better than you at some things.
  • Do a lot of odd jobs and favors to justify your existence and build trust.
  • Make mistakes, learn from them, and move on.
  • Write down your vision and methodology once you have a bit of trust and some small wins.
  • As your team grows, intentionally brand yourselves as the performance people.
  • Invest in talks, publishing, and writing papers to share your knowledge.
  • Once you're mature, start creating platforms and products that allow others to do similar things.
  • Design the team to fit the organization structure, don't copy what others do.
  • Outreach and adoption are serious work, treat them as such.
  • People make work happen and their strengths and personalities differ, so it's important to respect that and seek diversity in skills and perspectives.
  • Embrace chance and don't have a predetermined mindset, as long as everyone is going in the right direction, the particular path is not that important.
  • Software engineering is a social enterprise, so to succeed in the long term, it's important to be helpful, generous, and make friends.

Tools and Techniques for Performance Engineering

  • Understanding the structure of a service and the distributed system is valuable for performance optimization.
  • eBPF is a powerful tool for gathering metrics and can be used to obtain metrics that are traditionally obtained in-process, often with less cost and better performance.
  • Traces are stored in a real-time data pipeline with different indices depending on the level of information needed.
  • Queries on traces may have a five-minute delay, but they can answer questions that no other data sources can.
Made with Recall · in 3 seconds

Get a summary like this for anything you read, watch or save.

Recall summarizes any link you paste, then keeps it in your personal library so you can search, chat with it, and never lose a key idea again.

YouTube videosArticlesPodcastsPDFsAnything else
Save this summary

Then save anything you watch or read next.

Bookmark this summary, then save any video, article or PDF you read next.

Save to your library

Ready to get started?

Save, summarize & chat with your content.

GET STARTED

IT'S FREE

No credit card required · 30 Day Refund on Premium · 24 Hour Support

Recall web app on laptop