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!
Сo-founder and CTO of iMesh, Viber, Juno
A computer geek with over 20 years of experience in the software industry, I did assembly programming on the Apple IIe at the age of 10 and, since then, Developed professionally using quite a few programming languages and different technologies. Recently, I was the Chief Architect of Clarizen and today I’m working as an architect at Gett.
Ivan Daniluk is a senior software engineer with more than a decade of experience in writing networking software for security market. He’s an active member of the Go community, a conference speaker (OSCON, GopherCon, Codemotion etc), the host of the GolangShow podcast, and organizer of Golang meetups in Ukraine and Barcelona, the author of numerous articles about Go, and the author of a few popular projects for Gophers. Ivan enjoys helping people to learn about Go and programming and is highly interested in artificial intelligence, data science, neuroscience, visualizations, and new approaches to education in general.
Will and Jim are software engineers at Pusher. We help keep the realtime messaging system ticking along smoothly. Our work ranges from high performance distributed systems, to prototyping and early stage product development. After using a number of languages in the past, we have frequently been turning to Go for our most recent projects. We run a meetup in London -- The Realtime Guild (https://www.meetup.com/the-realtime-guild/) -- where we talk about anything that's low-latency. We enjoy giving talks and writing technical blog posts which you can find on the [Pusher engineering blog] In the evenings, Jim is developing the presentation app from the future. Will is currently hibernating until the weather is warm enough to get out of London and get onto his mountain bike.
Senior Backend-developer, Avito platform developer.
Elena is a software development engineer at Openprovider. She is also a co-host of the GolangShow podcast. She is passionate about designing microservices and finding the best ways to manage them.
Mike has been working with backend development of high loaded systems since 2010. He has participated in products development at Wikimart, Lazada, LinguaLeo. Mike has focused on tasks as SRE, improvement of stability and scaling of systems, infrastructure automatisation, outer API creation. In summer of 2016 Mike moved to Minsk and joined Juno team, he does GIS and algorithmic solutions implementation.
В разработке более 13 лет, за это время было перепробовано множество технологий и написано множество сервисов, из заметных: платёжные сервисы и системы денежных переводов для операторов большой тройки, системы бесконтактной (NFC) оплаты проезда с помощью мобильного телефона в общественном транспорте для Москвы, Санкт-Петербурга и Казани. В настоящее время работаю бэкенд-инженером в ride-sharing стартапе Juno, где мы пишем микросервисы на Go с использованием практически всего стека AWS.
Cyril @notorca Lashkevich is a post-modern software engineer working on low-level of applied systems. His current focus activity is digital signal processing, performance optimization, networking and general understanding how computers work.
I'm a Gopher with more then 4 years Golang experience. Now I'm working at Lazada RUS as a team lead (backend).
Sysadmin with 25 years experience, Software architect with 10 years experience, Teamlead with 7 years experience, Golang developer with 4 years experience
Gopher since r60. Golang Moscow organiser. GolangShow co-host.
Дмитрий является одним из основателей маркетинговой платформы Affise Performance. Обладая более чем 10-летним опытом работы в сфере разработки высоконагруженных систем, Дмитрий имеет богатый опыт в создании и развитии партнерских программ и платформ анализа трафика в качестве инженера-программиста. Пройдя путь от инженера до собственника продукта Димитрий ориентируется в процессах разработки, их оптимизации и экономии не только как собственник бизнеса, но и как технический специалист.
Stas, as many engineers, started with web in a large high paid development in his youth. Worked with gamedev, hardware, social networks analysis instruments. Is acquainted with Java, Perl and Ruby. Focuses on development of highly loaded backend on Go for more than 2 years. In 2016 he moved to Minsk and joined Juno team. He does GIS & algorithmic solutions implementation.
Senior Go Developer (3.5+ years). Open Source contributor. I do lots of fun things.
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!
Новые микросервисы появляются, но монолит никуда не исчезает. Мы в Avito разрабатываем и деплоим сервисы с помощью связки Docker и Kubernetes. Зачастую интегрировать монолит с сервисами довольно проблематично. А что, если монолит тоже завернуть в Docker+Kubernetes и применять те же практики, что и для микросервисов?
В докладе речь пойдёт о том, как изменилась Dev-среда в Avito в связи с переходом на микросервисную архитектуру. В частности, поговорим про:
- подход "legacy in a box";
- то, как мы решали проблемы с базами и sphinxsearch;
- то, как Docker и Kubernetes помогли нам сократить различия между окружениями;
- Developer Experience.
Доклад будет полезен как командам, планирующим или переживающим распил монолита, так и всем тем, кому приходится работать со сторонними legacy-системами.
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.
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.
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.
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.
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.
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.
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.
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
Как использование новых технологий инфраструктурных решений и внедрение новых языков программирования, в т.ч. Go, помогли сэкономить сотни тысяч долларов на серверных решениях.
В рамках топика будут подниматься такие темы как:
- причины выбора Go
- разработка архитектурных решений
- обучение разработчиков новому языку (сложности vs. энтузиазм)
- экономия от введенных технических изменений