#gowayfest

Go Way Fest 2017

GoWayFest is the first of a kind event in Eastern Europe fully dedicated to Go.
It will be interesting for both beginners and experienced gophers.
Besides talks day (July 21) we organize a pre-party at Juno (July 20) as well as afterparty: first at SPACE right after the conference and then on July 22 we invite you to join us at a musical festival - "Rock Za Bobrov". We'll give out 10 free tickets to the festival during the conference!

Speakers

Program

  • 09.30 – 10.15

    Registration, Welcome Coffee, Opening

  • 10.15 – 10.55

    Why Go Scales? (en) Keynote Speaker

    Eyal Post

    Go is repeatedly being marketed as a language suited for developing high performance server applications, but what exactly makes Go programs scale? In this session we'll look at the design of the Go language and runtime, compare it to other technologies and understand how it works internally and what makes it perfect for high performance applications. If you want to learn about the language that was used to develop Kubernetes, Docker, Gett, Juno and other well known high traffic systems, this is the session for you!

  • 11.00 – 11.40

    Legacy in the Box. Dev-environment on the Base of Kubernetes (ru)

    Ilya Saulenko

    Новые микросервисы появляются, но монолит никуда не исчезает. Мы в Avito разрабатываем и деплоим сервисы с помощью связки Docker и Kubernetes. Зачастую интегрировать монолит с сервисами довольно проблематично. А что, если монолит тоже завернуть в Docker+Kubernetes и применять те же практики, что и для микросервисов?
    В докладе речь пойдёт о том, как изменилась Dev-среда в Avito в связи с переходом на микросервисную архитектуру. В частности, поговорим про:
    - подход "legacy in a box";
    - то, как мы решали проблемы с базами и sphinxsearch;
    - то, как Docker и Kubernetes помогли нам сократить различия между окружениями;
    - Developer Experience.
    Доклад будет полезен как командам, планирующим или переживающим распил монолита, так и всем тем, кому приходится работать со сторонними legacy-системами.

  • 11.40 – 12.00

    Coffee

  • 12:00 – 12:40

    Design Your Client in Goway (en)

    Mike Kabischev

    The Golang standard library provides a lot of examples of code design practices and patterns which allow us to create great things. However in practice engineers often ignore them. I`m going to tell the story about one little library: the way from write-to-work stage to the idiomatic go implementation.

  • 12:40 – 13:20

    Testing and Data Validation Using Generated Code (en)

    Max Chechel

    In this talk I will make a review of code generation tools that can help you to test your Go programs without writing tons of boilerplate code. Together we will go through the process of testing concurrent go program using a mock generation tool that we use at Juno.

  • 13.20 – 14.30

    Lunch

  • 14:30 – 15:10

    Visualizing Concurrency in Go (en)

    Ivan Danyliuk

    One of the primary strengths of Go programming language is a built-in first-class support for concurrency. Go is designed with concurrency in mind, backed by solid mathematical theory, and has incredibly good tooling for testing and developing concurrent software.
    I offer a completely new approach to understanding and representing concurrency by visualizing it in 3D space. This new approach allows you to see what’s happening inside the real code—from a simple “Hello, World” to real production-level high-loaded servers. It leverages the power of open source technologies, such as Go and WebGL, to help you understand the complex but astonishing world of modern concurrent software.

  • 15:15 – 15:55

    Profiling and Optimizing Go Programs (en)

    Alexey Palazhchenko

    Over the years Go compiler become smarter and standard library become faster, yet sometimes one still needs to fix a bottleneck, to resolve a locking problem and understand garbage collector pauses. My talk is about all this. We will learn to write proper benchmarks, use pprof and execution tracer, will look into runtime debug information and will touch a Linux performance tools. I will also mention a few of Go compiler optimizations and how not to accidentally disable them.

  • 15.55 – 16.15

    Coffee

  • 16:15 – 16:55

    Build Your Own Network Security Protocol and Get Away Uncaught

    Daniel Podolsky

    This speech is about team which invented its own network security protocol for the big Golang project. Yes we were sober and conscious and still did it!
    First of all - “why”?!
    Everybody knows Go runtime SSL is quite slow. Less common it’s memory footprint could not be considered as optimal.
    Yes, we do know we can link OpenSSL to our program and get as performant as NGINX, for example.
    But did it cross your mind OpenSSL is also not fast enough for some corner cases? Say, you have to accept 1M new connections in 30 seconds…
    The problem is: SSL is slow and CPU intensive on establishing connection phase.
    On inCaller project we came across this: to perform the tasks we need 32 CPU cores only. That mean 4 servers cluster. To accept new connections fast enough we need 480 CPU cores, which give us 60 servers cluster.
    60 servers cluster is about 15 times worst than 4 servers cluster, obviously.
    Looking to this unpleasant math we’ve decided to build our own encryption and security protocol. And we succeeded!
    What we did, how we did it and what we’ve got finally - this is what my speech about.

  • 17.00 – 17.40

    Golang's Realtime GC in Theory and Practice (en)

    Will Sewell & Jim Fisher

    Each day, Pusher sends billions of messages in realtime: source to destination in less than 100ms. How do we achieve this? A key factor is Go’s low-latency garbage collector.
    Garbage collectors are a bane of realtime systems because they pause the program. So when designing our new message bus, we chose the language carefully. Go emphasizes low latency, but we were wary: does Go really achieve this? If so, how?
    Go's garbage collector runs concurrently with the program. But concurrency is hard! It was only through several white-board sessions that we convinced ourselves that Go's GC works. In the first half of this talk we step through animations of the algorithm which we hope will give you some intuition.
    So much for theory -- is it low latency in practice? In the second half of the talk we will present the results of benchmarking pause times in a number of languages. How did Go compare? Come to this talk to see the results...
    This talk is given by Will Sewell and Jim Fisher, both working at Pusher. Can't wait? You can read their investigation into Go's GC.

  • 17:45 – 18:00

    To Go or not to Go? (en) Keynote Speaker

    Igor Magazinik

    Choosing Go for backend side was Juno's right choice along with many other companies worldwide. Why Go? How did we start? And the most important is how did we look for right people to join the backend team?

  • 18.00 – 20:00

    Networking & Openair After-Party

  • 11.00 – 11.40

    Business Logic Verification In Go Applications Using Contexts (ru)

    Maxim Kupriianov

    Concurrency primitives are first class citizens of the Go language and any sufficiently complex project would use them in many places to create a concurrent flow. When you start a HTTP server in Go program, e.g. using http.ListenAndServe, it will implicitly handle incoming requests in separate goroutines, creating a lot of parallel branches of execution. It's a common practice to have tens of thousands goroutines spawned and processing requests simultaneously.
    As a result, the business logic becomes blurried away, it's being obscured by a complex dynamic system with lots of concurrent processes, which may have stochastic effects, making the flow of execution hardly understandable. But it's important to have ability to understand, audit and verify business logic flow in such applications.
    This talk explains the purpose and typical use cases for Go contexts, and presents an approach for business logic verification in your applications that leverages contexts to capture the execution flow for further analysis.

  • 11:40 – 12:00

    Coffee

  • 12:00 – 13:20

    Production-Ready Microservices: Write in Go (Workshop) (ru)

    Elena Grahovac

    Even if you are a beginner, you have probably heard that people love Go because it makes easy to build reliable and efficient applications and services.
    But how to write services fast? How to understand if my service is ready to run in production? How to develop necessary requirements and meet them?
    During the workshop we will discuss how to design stable, scalable, reliable and performant services. Step by step, we will write a service from scratch and prepare it for the deployment. So, at the end of the workshop participants will be able to run their own services on the Heroku platform.
    How to prepare your environment for the workshop: https://github.com/rumyantseva/production-ready-microservices#how-to-prepare-for-the-workshop

  • 13:20 – 14:30

    Lunch

  • 14:30 – 15:10

    Magical Go that Saves Money and Time (ru)

    Dmitry Zotov

    Как использование новых технологий инфраструктурных решений и внедрение новых языков программирования, в т.ч. Go, помогли сэкономить сотни тысяч долларов на серверных решениях.
    В рамках топика будут подниматься такие темы как:
    - причины выбора Go
    - разработка архитектурных решений
    - обучение разработчиков новому языку (сложности vs. энтузиазм)
    - экономия от введенных технических изменений

  • 15:15 – 15:55

    How We Go at Lazada (ru)

    Andrey Chernov

    At Lazada we have more then 3 years experience of having Go in production. So that talk will cover such topics like how we started using Go, what do we have now (architecture, frameworks, etc...) and what are our future plans.

  • 15:55 – 16:15

    Coffee

  • 16:15 – 16:55

    Pipelines на базе io.Reader и io.Writer (ru)

    Stas Afanasiev

    В докладе поговорим про построение pipelines на базе стандартных и кастомных реализаций io.Reader/io.Writer, а также про саму концепцию использования io.Reader/io.Writer.

  • 17:00 – 17:40

    Go Scheduler (ru)

    Cyril Lashkevich

    Доклад про устройство самой интересной части golang, отличающей его от других распространенных языков. Будет рассмотрено, как устроено выделение ресурсов горутинам и асинхронный ввод вывод в runtime golang.

How to get to Minsk

Partners

Partners Participants

Infopartners

Organizers

  • Space