Performance and Scalability of Go Applications

Workshop organized by Italian Gophers on scalability and performance of a Go application

Performance and Scalability of Go Applications

This is the first in a series of traveling workshops on Go organized by the Italian Gophers community!

• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •

Fabio Falzoi’s workshop aims to show participants how to improve the scalability and performance of an application written in Go. We will start with an overview of the language’s features, explaining the design choices made by the Google Go Team and their impact on performance. With the help of various examples, we will see how to write idiomatic and high-performance code, thus maximizing the runtime capabilities. We will take a detailed look at the various tools that Go provides to observe application behavior, with the goal of identifying bottlenecks and understanding how to eliminate them. Special attention will be given to memory management in Go: we will examine how the memory allocator and garbage collector work, and how to make our code as efficient as possible with them.

Agenda:

• Modern CPU architecture from a Go developer’s perspective
• Go runtime architecture and its effects on application scalability
• Go tools: benchmarking, profiling, and the execution tracer
• Memory management in Go: memory allocator and garbage collector

Prerequisites:

• A laptop with a working Go 1.13 environment
• Basic knowledge of the Go language

Who is Fabio Falzoi?

Passionate about programming from an early age, Fabio has experience in various areas of development: Linux kernel and embedded programming, big data, and web applications. Initially attracted to Go for its C-like syntax, he appreciated its features and has been using it in production since 2018, as well as for many personal projects.