Automated Code Transformation for Context Propagation in Go
Thu 26 Aug 2021 04:00 - 04:10 - Analysis—Programming Languages Chair(s): Ramy Shahin
Microservices architecture, which is increasingly being adopted by large technology companies, can accelerate development and deployment of backend code by partitioning a monolithic infrastructure into independent components. At the same time, microservices often compose into massively distributed systems, where analyzing the behavior of an individual service may not be enough to diagnose a performance regression or find a point of failure. Instead, a more global view of the entire computation may be required, where some form of global context is used to trace relevant information flowing through the system.
In the Go language, the recommended method of propagating this tracing context through service’s code is to pass it as the first parameter to all functions on call paths where the context is used. This kind of code transformation, in addition to modifying function calls and function signatures, may involve modifications to other language constructs – performing it manually can be very tedious, particularly for large existing services. In this paper we describe an automated code transformation tool supporting this style of context propagation. We describe the design and implementation of the tool and, based on a case study using real production services, demonstrate that the tool can on average eliminate 94% of manual effort required to propagate tracing context through the code of a given service.
Adam Welc currently works at Uber Technologies. Previously, he worked at Huawei, focusing on optimizing Java for execution in the cloud. Adam has also worked as a researcher at Intel, Adobe, and Oracle, developing new language implementations as well as novel approaches for concurrent programming. His research interests are in the area of programming languages implementation, design, and tooling, with specific interests in runtime systems, interpreters and compilers, as well as performance analysis and optimization. Adam holds a PhD in Computer Science from Purdue University.
Wed 25 AugDisplayed time zone: Athens change
16:00 - 17:00 | Analysis—Programming LanguagesResearch Papers / Industry Papers +12h Chair(s): Santanu Dash University of Surrey, Michael Pradel University of Stuttgart | ||
16:00 10mPaper | Automated Code Transformation for Context Propagation in Go Industry Papers Adam Welc Uber Technologies DOI | ||
16:10 10mPaper | Toward Efficient Interactions between Python and Native Libraries Research Papers Jialiang Tan College of William & Mary, Yu Chen College of William & Mary, Zhenming Liu College of William & Mary, Bin Ren College of William & Mary, Shuaiwen Leon Song University of Sydney, Xipeng Shen North Carolina State University, Xu Liu North Carolina State University, Oak Ridge National Laboratory, USA DOI | ||
16:20 10mPaper | Accelerating JavaScript Static Analysis via Dynamic Shortcuts Research Papers DOI | ||
16:30 30mLive Q&A | Q&A (Analysis—Programming Languages) Research Papers |
Thu 26 AugDisplayed time zone: Athens change
04:00 - 05:00 | Analysis—Programming LanguagesResearch Papers / Industry Papers Chair(s): Ramy Shahin University of Toronto | ||
04:00 10mPaper | Automated Code Transformation for Context Propagation in Go Industry Papers Adam Welc Uber Technologies DOI | ||
04:10 10mPaper | Toward Efficient Interactions between Python and Native Libraries Research Papers Jialiang Tan College of William & Mary, Yu Chen College of William & Mary, Zhenming Liu College of William & Mary, Bin Ren College of William & Mary, Shuaiwen Leon Song University of Sydney, Xipeng Shen North Carolina State University, Xu Liu North Carolina State University, Oak Ridge National Laboratory, USA DOI | ||
04:20 10mPaper | Accelerating JavaScript Static Analysis via Dynamic Shortcuts Research Papers DOI | ||
04:30 30mLive Q&A | Q&A (Analysis—Programming Languages) Research Papers |