The Largest Go Conference in Russia

GopherCon Russia 2021
April 23-25, Online

1000 gophers.
Conference day is free!
Conference languages: English and Russian.
About
We are having a conference day on April 23. 2 tracks of excellent talks, as well as a lot of tech talks and contests from our partners! It is free! Register to join!

Workshops will be held on the 24th and 25th. Each workshop consists of a 3-hour class, chat with QA, homework with feedback on your code from an expert. Ticket sales will be open soon. Please keep checking back.
Conference Day, April 23. UTC+3
Workshops, April 24-25. UTC+3
Speakers
Gopher since before v1. Go Time podcast host. Author of Go Programming Blueprints: Second Edition. Xbar, Pace Firesearch.
Aaron is a developer advocate at Microsoft, core maintainer of the Athens Project, and core maintainer of the KEDA HTTP Addon project. He has 15+ years of software engineering experience ranging from frontend design to distributed data systems. He discovered Go in 2013 and Kubernetes in 2015 and hasn't looked back. He lives in Portland, OR in the US.
Felix is a Staff Engineer at Datadog where he works on Continuous Profiling for Go. Before that he was working on manufacturing systems for Apple, herding big PostgreSQL clusters. In his spare time he's usually working on open source, playing beach volleyball, or giving questionable advice on the internet.
Andrey Smirnov
Andrey is the CTO creating the revolutionary Talos operating system for clusters. Previously, he was engaged in the development of distributed object storage, as well as a variety of online projects.
Ilya Danilkin
Backend developer at Avito (ex-Gett, ex-Ozon), engaged in product development in the Auto B2B team.
Rashmi Nagpal
Rashmi Nagpal works at LoopUp as a software engineering intern. Her interests include automating #allthings, classifying legacy code, making them faster and simpler to use. She is a global leader at Women Who Go, to heighten women representation from varied socio-economic backgrounds in Golang. She loves writing poems and playing board games.
Oleg Kovalev
Oleg is an open-source addicted gopher, a big fan of statistical code analysis, and one Generic Talks podcast co-host.
Alexander Egurnov
Team Lead Backend at Verve Group in Berlin. He has been building high-load systems with Go since 2016. He is always happy to share his knowledge with other gophers.
Andrey Minkin
CTO and Co-founder of Mad Devs. Andrey has 15 years of different experience in IT: from system administration to management. He has been programming with Go since 2014 and has made and launched a lot go different projects to prod.
Ivan Osdchiy
Ivan is a backend developer iat Avito.Delivery an adadvocate of the systematic approach to Software Engineering.
Bulat Zamalutdinov
Bulat works at Percona. He has been programming with Go for more than 5 years. Recently, he started to get interested in Kubernetes in general and Kubernetes operators in particular.
Nikolay Marzhan
Nikolay is Kubernetes and Clouds lover and, currently, his goal to bring databases into the Kubernetes world. Since 2004, most of his career has focused on the development of deployment, update, and monitoring systems.
Iskander Sharipov
Iskander works on static analysis and compilers. Author of ruleguard and go-critic. Participated in the development of toolchains for Go (mainly AVX512) and KPHP.

Valery Meleshkin
Once, Valery worked on a time series extension for Riak. Another time, he squeezed 250Gb/hour of protobuf-encoded data into one instance of Postgresql. These days he tinkers with Apache Calcite and Spark at Contiamo GmbH, helping build a data virtualization platform. He can't wait for generics to become available in Go. Every Saturday Valery rants about databases and video games in the DevZen podcast.
Talks
A tour of xbar code.
Mat Ryer takes you through the xbar project monorepo explaining key technical decisions and why they were made. All the way from the front end code that delivers the native app UI, through the service layers and native API integration, down to the xbar data APIs that power the app, and the website. Mat will explain how the focus on pragmatism and minimalism allowed him to deliver the new project within a couple of months.
Mat Ryer
Building an Autoscaling HTTP Proxy for Kubernetes.
You probably already know generally how HTTP proxies work. You might have even built one! Out of the box, Go comes with a ReverseProxy type in the standard library, but a production deployment -- especially in Kubernetes or similar distributed systems -- needs to do more than the standard library. Some additional requirements include autoscaling systems, connection backoffs, request rewriting, and more.
We ran into these requirements in building the open source KEDA HTTP Addon project. In this talk, I'll briefly review the requirements of such a proxy and we'll proceed to live code a comparable one from scratch.
You'll walk away with a deeper understanding of the net, net/http and net/http/httputil packages as well as several relevant concurrency patterns you can use to build your own proxies - and other robust and performant networking systems in Go.

Aaron Schlesinger
Go Profiling from Bottom Up.
The Go language ships with many fantastic profiling tools. There is CPU, Heap, Mutex, Block and Goroutine profiling. It also includes the wonderful pprof visualization tool for inspecting the data.
However, using these tools on real world applications can be a challenge because there is a lot of data, yet very little information on what any of it actually means. So you might find yourself wondering, oh, this is weird! How is the data collected? Why is my profile showing more time than my application was running for? What's the accuracy of the data? Is there any bias in the data? What known issues might impact the results in my particular environment? How much performance overhead should I expect? Are there any other side effects that could harm my application?
If you ever found yourself asking these kinds of questions while profiling, this talk is for you. Instead of introducing Go's profiling tools as magic black boxes to inspect your application, we'll look behind the curtain of the Go internals, OS and Hardware level to gain a deep understanding from the bottom up.
Felix Geisendörfer
Learning Unsung Gotchas of Go.
GO is one of the simplistic, neat, and effective languages, but it has few gotchas. These gotchas run the gamut from minor syntactic annoyances to psychological behavior. By sharing the invaluable references - this talk will cover them, which will conserve Go programmer's time and wasted effort. From beginner to expert level, everyone is warmly welcomed as the examples shared will cover a breadth of opportunities to learn.
Rashmi Nagpal
Testing in Go with Ginkgo and Gomega.
In this talk we will explore testing options in Go beyond the `testing` package.
We will go over the most useful features of Ginkgo BDD testing framework and Gomega, the accompanying matcher library.
If you feel that your tests could be more expressive, better structured and less repetitive, this talk is for you.
Alexander Egurnov
Transparent one-to-many gRPC proxy. (in Russian)
Sometimes there is a task of proxying gRPC requests with changing requests on the fly: this can be a shared authorization layer, ensuring compatibility of API versions, load balancing, or a high-availability scenario. Since the gRPC protocol uses protobuf and strong typing, you can code a proxy, implementing each API method manually or using code generation, but this is inconvenient. In this talk, I'll show you how to make a transparent proxy for requests with their changes on the fly, in a case where the proxy server does not know the structure of each request and response. In particular, we will consider the case of sending a single incoming request to several backend nodes with the assembly of all received responses into a single response for the client.
Andrey Smirnov
A second before calling main (). (in Russian)
I offer you to discover what happens in the Go runtime before our code starts executing in main (). Let's analyze what is being created and checked there, and why these things are working like this. The talk will be useful for both beginners and experienced developers. Only a few people have wondered what happens there in this couple of milliseconds.
Oleg Kovalov
Embed package: unpacking knowledge. (in Russian)
In this talk, we will look at the novelty in Go 1.16: the new embed package. Let's compare its implementation with existing solutions for static packaging using examples and live demos.
Ilya Danilkin
From Python to Go and back. (in Russian)
Back in 2014, I changed my coding language from Python to Go. I had been working with Go for more than 5 years. At the end of 2020, I returned back to the world of Python.
In this talk, I want to compare the two ecosystems, share my impressions, insights, and problems I've met. I'll tell you what (in my opinion) is wrong with Go, how both languages have changed during this time. Let's discuss what is missing in Python and what is missing in Go.
My story is based on personal experiences, insights, the path I've traveled, and mistakes I've made.
Andrew Minkin
PostgreSQL optimization in Go: from 50 to 5000 RPS. (in Russian)
Let's analyze how to optimize the communication of the database with a Go service. Let's take a closer look at the borderline area, which is usually not covered by either database specialists or application programmers. Let's go from the general approach to optimization to the bloody nuances.
Ivan Osadchiy
Workshops
Crafting Kubernetes Operators on Go. (in Russian)
Operators are a great tool for simplified deployment and automatic
management of complex applications in Kubernetes.
This is a workshop for engineers who develop applications and system administrators who want to learn how to create operators for Kubernetes.
Participants will receive step-by-step instructions on how to create Kubernetes operators for complex stateful applications (such as databases) in Go (operators in Ansible and Helm will not be considered). We will show you the workflow for the current version of the operator-SDK, which includes both code generation capabilities and a set of library calls for various operations with Kubernetes objects.
Bulat Zamalutdinov and Mykola Marzhan.
April 24th, 11:00 - 14:00 UTC+3
Crafting linters using ruleguard. (in Russian)
In this workshop, we will understand what ruleguard is and how to use it to write diagnostics for our projects.
What's new we'll learn:
* What are" rules " and how to create, test, debug, store, and version them.
* Learn how to set up non-trivial projects.
* Learn how to analyze common integration problems and errors.
* We will discuss how to simplify the idea of diagnostics so that they become expressible through ruleguard.
* Learn the specifics of working with go / * packages in the context of ruleguard.
* We will understand what to do if the features of ruleguard are still not enough.
Iskander Sharipov
April 24th, 15:00 - 18:00 UTC+3
Fuzz and Property-Based tests in Go. (in Russian)
You write tests all day long, yet your code still crashes with a strange bug after a week? Brakes have failed when you decided to turn on a radio?! You heard about fuzzing but didn't understand how to apply it to your code?
During this workshop, we will:
* put our hands to randomized testing approaches: property-based and fuzz testing;
* discuss their differences, pros, cons, and pitfalls;
* help you decide when these approaches are the right tool for the job;
* learn to swiftly discover properties fit for checking without racking your brains for hours;
* touch on writing data-generators for complex data structures;
* go through the code examples of varying complexity: from fuzzing and checking elementary properties in form of ∀ X: decode(encode (X)) ≡ X to checking whether a system is equivalent to a stateful model.
Valeriy Meleshkin and Alexey Palazhchenko
April 25th, 15:00 - 18:00 UTC+3
Partners
General Partner
One of the most popular classifieds site in Russia. We have tens of thousands of rps to the backend, hundreds of millions ads in the database, terabytes of images in the storage, and a powerful system of automated moderation, on machine learning basis. Monthly audience of the project is a quarter of Russian population
Gold Partner
Ozon was founded in 1998, when '.ru' domain was only four. Today Ozon is one of the largest russian e-commerce companies, providing 1.2 million customers with a broad choice of 1.5 million goods. A team of Go and .NET developers makes this possible using a micro-service architecture built with Docker & Kubernetes.
Gold Partner
Gett is a unique dynamic highloaded system which is on the journey from a taxi aggregator to a global ground transportation provider in the B2B segment. Gett RnD is responsible for creating and further developing the SaaS platform - the solution being successfully implemented and utilised in the UK and US, with global growth in play.
SberMarket
Gold Partner
SberMarket ("Instamart Technologies") is an online service that helps you make purchases from the comfort of your home. Our mission is to save people's time, energy, and money for something more substantial.
SberMarket was created on the basis of Instamart startup. It joined the Sber ecosystem in 2019. In 2020, our RnD team has grown x5 and ensured the stability of the service with a х20 increase in load. No other eCom company in Russia has experienced such growth in a year!
Silver Partner
At JetBrains, we create cutting-edge development tools to make your coding experience more productive and enjoyable. Trusted by millions of developers worldwide, our products automate your mundane and routine tasks and simplify the challenging ones. GoLand makes it easy to read, write, and edit more than just Go code. It is fully equipped to handle web, frontend, and backend development, as well as work with databases. GoLand offers a host of smart features such as intelligent code completion, safe refactorings with one-step undo, a powerful built-in debugger, and on-the-fly error detection with quick-fixes. GoLand helps all Go developers, from novices to experienced professionals, create fast, efficient, and reliable code – and have more fun doing it.
Silver Partner
We're the tech team behind social networking apps Bumble and Badoo. Our products help millions of people build meaningful connections around the world.
Silver Partner
MyOffice is a platform for corporate workplace organization and collaborate document editing in public institutions and large commercial companies. The platform includes complete set of modern office software products ready-to-work on all well-known operating systems, mobile platforms and in web-browsers. In our company we pay huge attention to all quality aspects including design, usability, pure code and level of test coverage.
Silver Partner
Kaspersky is a global cybersecurity company founded in 1997. Kaspersky's deep threat intelligence and security expertise is constantly transforming into innovative security solutions and services to protect businesses, critical infrastructure, governments and consumers around the globe. The company's comprehensive security portfolio includes leading endpoint protection and a number of specialized security solutions and services to fight sophisticated and evolving digital threats. Over 400 million users are protected by Kaspersky technologies and we help 250,000 corporate clients protect what matters most to them.
Silver Partner
ZAVOD Games is one of the leading independent online game developers. Our team believes in uncompromising product quality and development efficiency. We pride ourselves on streamlined processes and a deliberate, thought-through approach to every task. Focusing on the long-term prospective, production at ZAVOD is thorough and calm. Thanks to our sensible and flexible work style, we created the hit "Taonga: The Island Farm", which is played by millions of users around the world.
Organizers
Alexey Palazhchenko
Golang Moscow meetups organizer and speaker, GolangShow and From Code to Prod podcasts co-host.
Elena Grahovac
Elena is an Engineering Manager at GetYourGuide.
Elena Mogilnikova
Conference producer.
Maria Pervuhina
Event manager.
Contact us
Feel free to email us!
E-mail: hello@gophercon-russia.ru
Phone: +7 999 112 53 89

Slack: slack.golang-ru.com#gophercon channel