Доклады

Показать только принятые доклады

GolangConf: Другое (14)

Как сделать так чтобы ваша организация начала разрабатывать на Go

Несмотря на то что Go уже более 10 лет, все еще сложно сказать что он является общепринятым языком разработки.
Я расскажу о том как "продать" Golang в вашей компании, что может помочь адаптации языка, а что помешать.

Программный комитет ещё не принял решения по этому докладу

The insane speed of esbuild - a JavaScript bundler and minifier written on Golang

Esbuild is an open-source JavaScript bundler that is extremely-fast and way better than other popular bundlers like Rollup, Webpack, and Parcel. Written solely by Evan Wallace in Go with speed in mind, fully parallelizes parsing, printing, and source map generation.

In this talk, I will explore esbuild, a JavaScript bundler and minifier built using GoLang that packages JS code for distribution on the web. I will examine how it’s able to work so fast and discuss why this tool is becoming very useful in front-end development. I will discuss the following: What is esbuild, and why is it so fast? Comparing esbuild to other bundlers (Benchmark) Is esbuild production-ready? and a quick live demo.

Программный комитет ещё не принял решения по этому докладу

Ent: Making Data Easy in Go

Dmitry Vinnik

Facebook

Ent is an entity framework built for Go programming language. This framework provides developers with a Graph-based, ORM.

In this talk, we will learn how to use Ent when dealing with data schemas, including types, relations and constraints. It’s a hands-on talk, so get ready to follow along!

What do most applications do these days? They interact with data in one way or another. As your app’s scale increases, it becomes more challenging to manage databases, schemas, queries, and constraints. These challenges are why a technique called Object-Relational Mapping, or ORM, was created.

At Facebook, we tend to think about data modeling in graph concepts and as we were working with Go, it led us to create a new open source project, Ent.

Доклад принят в программу конференции

Зачем международным компаниям российские разработчики

Если вы задумываетесь о поиске новых проектов или full time работы в международных компаниях, стоит знать, какие у них ожидания, где их вообще искать, и как готовиться к интервью.
Вам также необходимо знать, как себя презентовать иностранному заказчику, особенно учитывая языковые и культурные различия.
Обсудим эти вопросы, а также - почему вообще международные компании будут искать себе Golang разработчиков в СНГ, чем их можно зацепить, чтобы получить ожидаемый контракт, работать удаленно или релоцироваться в другую страну.

Программный комитет ещё не принял решения по этому докладу

Enjoy OOP with Golang

Hiroki Inoue

Whiteplus, Inc

I’ll present a way to improve the maintainability of the system with Go using OOP. Go does not have some of what other languages that support OOP have, but it can embody the idea of OOP. This fact gave me the opportunity, which I’d like to share with you, to abstract and re-understand OOP.

Overview
In this session, I’ll explain the idea and procedure for incorporating Object-Oriented ideas into code using Go by showing sample code.

The problem I’d like to solve
I’d like to challenge the problem of difficulty to maintain a system that has been in operation for a long time. We make use of OOP as a means of achieving this. I also would like to tackle the difficulty of applying OOP to our code effectively.

Go has no classes, no constructors, no inheritance, no implements keywords. However, we can write code in an Object-Oriented way. This experience gave me the opportunity to review and re-understand what is OOP.

As a software engineer, my desire is to develop a system that is easy to maintain, which enforces our service to be flexible and continue to grow. To do that, I focus on OOP and agile development. And I try to show you how to put them into practice with Go.

Программный комитет ещё не принял решения по этому докладу

Test-Driven Development для Go: зачем и как

«Как это вообще — писать тесты на Go, когда ещё нет кода?»

С концепцией Test-Driven Development я познакомился в те времена, когда ещё писал на Python. Идея была интересная: лучше понимаешь требования задачи, потому что нужно сразу написать тесты.

После перехода на Go захотелось взять с собой в новый стек уже знакомые best practices — в частности, TDD. Но не всё прошло гладко. Python — динамический, там можно глубоко залезть в структуру класса, удобно мокать. В Go с этим оказалось сложнее.

Но при более пристальном вглядывании выяснилось, что и в Go не всё так плохо: есть готовые библиотеки, нет значительных барьеров и, главное, — есть профит от TDD.

В докладе расскажу об особенностях TDD для Go: в чём заключается концепция, какие есть плюсы и минусы, когда её стоит использовать. Расскажу теорию и покажу примеры, а также поделюсь наводками на полезные ресурсы для тех, кто решит попробовать.

Надеюсь, будет полезно для тех, кто пока не успел познакомиться с TDD, и для тех, кто уже знаком, но пока не увидел для себя профита от TDD.

Программный комитет ещё не принял решения по этому докладу

Использование внешних скриптов в Go приложениях

Часто у разработчиков возникает задача исполнять сторонний код внутри приложения без его перекомпиляции. Это может быть система плагинов или различные пользовательские скрипты. Примеры готовых решений и примеры использования. План действий для создание своего скриптового языка.

Программный комитет ещё не принял решения по этому докладу

Leveraging Functional Programming when Go Generics come

Doni Rubiagatra

Zero One Group

At dotGo 2015 there was a talk by Francesc Campoy called “Functional Go?”. He said, “If Go had generics, Go doesn’t have Generics thought”.

In this talk, We will revisit Functional Programming / Functional thinking and try to answer how we can maximize FP potential when generics come in Go.

In the talk “Functional Go?” Francesc Campoy explains that Functional Programming is doable in Golang but slower in performance and requires reflection magic. He also said, “If Go had generics, Go doesn’t have Generics thought”. So, It would be interesting if we revisit FP when generics come in Go. It’s better? It’s the performance still the problem? We are gonna explore that in this talk.

This talk will be exploring FP in Go in 3 parts.

How we can implement and get the benefit of Functional Thinking / Data-Oriented Programming in Go. We will explore how to separate the Go program into Action, Computation, and Data.
Look back once more on how FP was implemented in Go before generics, how it compares to other FP languages.
Let’s Try multiple concepts of FP in Go generics (Map, Filter, Reduce, Functor), it is easier than before? Let’s see
And finally, the takeaway, what are will do after this? Just implement Functional Thinking in Go? Creating a new library for Hardcore FP in Go? The sky is the limit!

Программный комитет ещё не принял решения по этому докладу

Будущее Golang разработчика - рыночный запрос и тенденции

Мы проанализируем рынок ИТ, чтобы понять, как менялись запросы компаний на Golang разработчиков в последние годы.
Какие были требования, как менялась заработная плата.
В каких направлениях и индустриях они больше всего востребованы.
Также обсудим вариативность спроса в зависимости от географии клиентов.

Программный комитет ещё не принял решения по этому докладу

Get your applications cached: yes and without Varnish

Discover where, how and why to setup different cache systems to multiple places of your applications will give you performances boost and save lot of money. Obviously without Varnish.

We’re all expose services either on the web or internally to serve clients. For most of them, there are web APIs and get or manage data via HTTP requests. In the most cases we serve the same content at multiple times and run our code as much as the requests number. With the APIs and the stateless, this execution is unavoidable because the state isn’t saved between requests. From applicative to reverse-proxy one, see together how to implement it.

Программный комитет ещё не принял решения по этому докладу

Golang learning by project: Souin

I’m Træfik user since v1.4 but there was no caching system. I scrolled over the internet to know if any solution exists but nothing appear then I decided to write my own Træfik cache system. This talk it will be a feedback on Golang learning, issues, tips and tricks to start on this awesome language

I discovered Golang language but didn’t have any time to follow multiples tutorials to learn it. But one day I discovered Træfik reverse-proxy project when I wanted to switch my infrastructure into fully dockerized one. I’m Træfik user since v1.4 but after many months using it I encountered an issue : there were no caching system in this reverse-proxy. I scrolled over the internet to know if any solution exists but nothing appears.

Then I decided to write my own Træfik cache system, but the main question was “Which language?”

PHP ? Nah. Nodejs ? What a joke ! C++ ? I didn’t learn this language at school and it’s really insane to learn. Then I was on Træfik github repository when I decided to write it in Golang. Another good point: that’s compatible with docker integration.

So I started the project and called it Souin This talk will be a feedback on Golang learning, issues, tips and tricks to start on this awesome language.

Программный комитет ещё не принял решения по этому докладу

Go - Best practices

We would like to share the best development practices that has helped us reduce the amount of time/effort spent in maintaining the application. Even Golang beginners can attend and a GitHub repository containing the sample code/notes used in this presentation for future reference will be provided.

With the ever rising adoption of Go, it is of paramount importance to develop applications that need minimum maintenance. We would like to share some of our best development practices that we have realized and accumulated over time that has helped us reduce the amount of time and effort spent in maintaining the application.

Программный комитет ещё не принял решения по этому докладу

How I made a powerful cache system using Go

I’m Træfik user since v1.4 but there was no caching system. I scrolled over the internet to know if any solution exists but nothing appear then I decided to write my own Træfik cache system. Now it’s compatible with all reverse-proxies and have lot of cool features.

I discovered Go language but didn’t have any time to follow multiples tutorials to learn it. But one day I discovered Træfik reverse-proxy project when I wanted to switch my infrastructure into fully dockerized one. I’m Træfik user since v1.4 but after many months using it I encountered an issue : there were no caching system in this reverse-proxy. I scrolled over the internet to know if any solution exists but nothing appears.

Then I decided to write my own Træfik cache system, but the main question was “Which language?” - PHP ? Nah. - Nodejs ? What a joke ! - C++ ? I didn’t learn this language at school and it’s really insane to learn.

Then I was on Træfik github repository when I decided to write it in Go. Another good point: that’s compatible with docker integration.

So I started the project and called it Souin Let’s see together how I bring it up from code to deployment.

Программный комитет ещё не принял решения по этому докладу

Monitoring your services & why you should care

Most of your time on a project is spent on making sure your service is ready to go live. But how do you know if your application works properly once actual humans start using it?

In this talk, I will show you how to detect & react to production issues before your clients do.

The talk will go through what monitoring a service means, why it’s useful & helpful & what are the popular & widespread tools available for getting the job done. We will also cover alerting on production issues & going on-call. Why that is important & how it could save your enterprise from losing a lot of $$$.

The focus would be on monitoring via metrics & leveraging the most popular & useful tool for the job - Grafana \w the aid of the time-series database Prometheus.

Программный комитет ещё не принял решения по этому докладу

GolangConf: Машинное обучение: гофер против питона (2)

Зачем мы переписали сервис рекомендаций на Go и что получили в сравнении с Python.

Рекомендации Авито - это первое, что видит пользователь, когда попадает на главную страницу. Нагрузка на наш основной сервис порядка 200 тысяч запросов в минуту.
Мы постоянно боремся за качество рекомендаций, которые видит пользователь и время за которое он их получает. За последние два года мы сильно улучшили качество рекомендаций, расширяя наши базовые ML модели, но сильно проиграли в latency. Главным врагом производительности и latency стало, добавление ML модели второго уровня на основе catboost для ранжирования объявлений от базовых ML моделей первого уровня в реалтайм.

В докладе я расскажу:
- как мы приняли решение переписать все на Go, перед этим мы выжали из питона все что смогли;
- как подружили CatBoost с Go и стали использовать ML модель на основе CatBoost в Go;
- как делали сверку при переходе, ответ от сервиса рекомендаций не детерминированный;
- что получили по latency и cpu после перехода.

Программный комитет ещё не принял решения по этому докладу

Использование в Golang моделей обученных на Python

Юрий Букаткин

Программный регион

В докладе расскажу:

- почему мы используем Golang;
- какие Golang ML библиотеки и для чего используем;
- как мы дружили Python-модели ML c backend, написанном на Golang;
- про наше решение хранение хранения моделей машинного обучения;
- покажу подробный путь модели от jupyter playbook до procduction;

Программный комитет ещё не принял решения по этому докладу

GolangConf: Go для высоконагруженных систем (9)

Методы эффективной обработки данных на Go в real-time рекомендательных системах

Мы компания Propellerads рекламный нетворк. Одна из основных задач рекламного нетворка
эффективный real-time подбор рекламы для показа конкретному пользователю. Для этих целей
используется machine learning. При real-time обработке запросов на побор рекламы сайтов,
необходимо как можно быстрее оценить вероятность что данный пользователь совершит конверсию
для множества имеющихся рекламных предложений. При больших объемах входного траффика (больших частотах запросов на подбор рекламы), больших объемах имеющихся рекламных предложений и большой вычислительной сложности machine learning моделей это становится нетривиальной задачей.

Для реализации данной задачи в нашей компании созданы несколько микросервисов на языке Go.
Система обрабатывает более 200K запросов в секунду. При этом в секунду рассчитываются вероятности конверсии
для 25M рекламных предложений.

В данном докладе мы рассмотрим некоторые задачи которые мы решаем и приемы эффективной обработки данных в микросервисах, написанных на Go, которые позволяют нам эффективно выполнять такие задачи.

- Чтение большого объема данных из нашей шины событий (kafka)
- Расчет агрегатов событий в различных разрезах (счетчиков) с наименьшими затратами по CPU и memory footpint
какие структуры данных мы для этого используем.
- Уменьшение contention при обработке событий
- Приемы оптимизации CPU и memory footprint при расчетах machine learning моделей

Программный комитет ещё не принял решения по этому докладу

Golang. Быстро/медленно

Филипп Кулин

СПбЭК-Майнинг

- Выбор эталона для сравнения... если сможем
- switch,slice или map?
- slice или map? Когда?
- atomic или lock, или rwlock?
- передавать по ссылке или значению?
- Использовать ли defer?
- Насколько дорогое оборачивание ошибок?
- Разименовывание
- Ох уж эти дженерики

Доклад принят в программу конференции

Эксплуатация связки Go + PostgreSQL

В своем докладе я расскажу о проблемах. которые возникают в ходе эксплуатации PostgreSQL и как их можно решить.

Программный комитет ещё не принял решения по этому докладу

Идем по приборам вместе с gRPC

Команда платформы каждый день трудится над тем, чтобы у всех инженеров были правильные “приборы”, они понимали что их системы работают как надо и быстро реагировали на проблемы. За последние несколько лет мы накопили большой опыт, а также успели набить много шишек по использованию gRPC в Go.

В своем доклада я расскажу про:
⁃ наш путь погружения во внутренности фреймворка gRPC
⁃ из каких этапов состоит обработка запросов
⁃ какую полезную информацию можно получить на каждом этапе
⁃ почему в интернете часто врут и как на самом деле правильно считать такие простые вещи, как RPS и время обработки запроса
⁃ плохо документированные фичи, которые открывают огромный простор для интеграции

Доклад принят в программу конференции

Как обеспечить гарантию доставки сообщений в развивающихся системах ?

В своем докладе на примере реальных сервисов я покажу, какие проблемы могут возникнуть при обмене данными по сети. Рассмотрим, какие есть для этого способы решения и почему среди всех вариантов мы выбрали паттерн Outboxer и написали его реализацию в виде библиотеки для go.

Доклад принят в программу конференции

Быстрое декодирование AVRO -> Go struct в event-based системах

Компания PropellerAds - рекламная сеть. У нас реализована сервисно-микросервисная event-base архитектура на базе Go сервисов, которые общаются по GRPC, в качестве шины данных используют Apache Kafka, события из которой попадают в колоночную БД Vertica и другие Go сервисы, необходимые для быстрого подбора и показа рекламы.

Многие Highload проекты имеют событийную архитектуру: события летят по шине данных, а затем попадают на обработку в зависимые сервисы или хранилища. На разных этапах этого флоу могут возникать проблемы производительности.

В этом докладе я расскажу о том, как мы переходили с гибкой структуры schema less событий в формате JSON на формат AVRO с использованием Schema Registry. Во время перехода мы столкнулись с проблемой медленного декодирования AVRO существующими средствами Go (linkedin/goavro, actgardner/gogen-avro, mitchellh/mapstructure). Скомбинировав указанные решения, избавившись от лишних reflection удалось реализовать быстрое декодирование AVRO в существующие Go структуры в сервисах, которые читают Кафку.
Мы разработали подход, который позволяет быстро создавать и модифицировать типы событий, которые между сервисами передаются через GRPC (Protobuf), сериализуются в AVRO с использованием Schema Registry и быстро декодируются конечными сервисами в Go structs.

Программный комитет ещё не принял решения по этому докладу

Паттерн архитектуры реал-тайм веб-рекламы (МТС DSP) и примеры реализации

программатик МТС оперирует деперсонифицированными данными: ~3млрд связок ~600 млн кук, относящимся к ~100млн профилей пользователей с разбивкой по более чем 2 тысяч групп интересов. Мы разработали собственную программатик платформу и в докладе мы расскажем как сделать архитектуру программатик, который позволяет решить все "хотелки" бизнеса, не "падает" под собственным весом и практически неограниченно масштабируется.

Расскажем о простом архитектурном паттерне, работающем в реальном-масштабе времени который, позволяет обрабатывать 200к rps с латентностью порядка 20мс/ При этом горизонтально масштабируется, позволяет применять МЛ модели и различные стратегии открутки рекламы, и на горячих путях практически отсутствует копирование данных.

Применение общего архитектурного подхода проиллюстрируем двумя примерами: калькулятор охвата рекламной кампании и «горячий» и «холодный» путь биддера DSP — реалтайм ядра DSP.

Программный комитет ещё не принял решения по этому докладу

Система real-time управления предложениями туроператоров

Расскажем о том, как с помощью несложного технологического решения полностью поменять опыт пользователя, от улучшения актуальности предложений до предоставления скидок.

Ассортимент туров у туроператоров — очень динамичная штука: цены и наличие туров меняются каждую минуту. При этом наши пользователи совершают до 35 тысяч поисков каждую минуту, а в сутки наш поиск обрабатывает до 50 ТБ данных. Мы разработали сервис, который способен не только поддерживать такую нагрузку, но и в режиме реального времени управлять результатами поиска, которые видит пользователь: добавлять спецпредложения, показывать важные примечания, известные только нашим менеджерам, убирать из выдачи сомнительные предложения и много другое.

* Супер-динамический ассортимент и проблемы хранения — работа с кешем, Redis и долговременные хранилища.
* Высоконогруженные клиентские сервисы и общая инфраструктура продукта, включающая в том числе монолит на Ruby — проблемы интеграции.
* Highload на поиске и динамическое распределение нагрузки с помощью AWS-инфраструктуры.

Программный комитет ещё не принял решения по этому докладу

Зачем Go для распределённой компиляции С++, и при чём тут PHP

Расскажу о распределённой компиляции гигантских C++ проектов, которую мы внутри ВКонтакте написали на Go и выкладываем в Open Source. Будет про стыковки технологий, хайлоад и гигантскую кодовую базу. Затронем С++, внутренности VK и немного наш компилятор KPHP.

Программный комитет ещё не принял решения по этому докладу

GolangConf: Обзор текущего состояния языка (2)

Go To Memory

Как и многие языки, Go часто использует магию под названием heap и обычно, когда мы пишем наши джейсоногонятели, благодаря прекрасному дизайну Go, мы просто не задумываемся об этом, хоть и знаем, что это «где то есть».
Но, если попробовать заглянуть в кроличью нору поглубже, мы увидим, не только какими методами аллокатор go старается облегчить программисту жизнь, но и почему, он это делает.
В этом докладе, я постараюсь охватить тему работы памяти на нескольких уровнях, начиная от железа, заканчивая моментом, когда вам требуется БОЛЬШЕ <s>ЗОЛОТА</s> памяти

Программный комитет ещё не принял решения по этому докладу

Что дженерки нам готовят

Много раз при обсуждении преимуществ и прелестей Go как языка разработки мне приходилось слышать что-то типа «у вас ДАЖЕ нет дженериков» или «вот завезут дженерики, тогда и поговорим». Так вот - дженерики завезли, попробовать можно уже сейчас, а доступно для всех будет в 2022. Сообщество окончательно определилось как именно всё будет реализовано, и что мы получим в результате. Для этого доклада я внимательно изучил все черновики авторов и посмотрел как дженерики реализованы в других языках. Например, в Python. Я расскажу о том, как какие идеи лежат в основе и как мы можем использовать дженерики, чтобы писать читаемый код. И не использовать там, где это не нужно.

Доклад принят в программу конференции

GolangConf: Стандартная библиотека (2)

Go Map Internals

Каждый из нас является уверенным пользователем структуры данных, которая называется hash map (или просто map в Go).

Как человек, которому очень нравятся классические структуры данных, я потратил время для изучения их внутреннего строения и очень хочу поделиться информацией с сообществом.

Данный доклад является обзором внутренностей реализации map в языке Go.

Доклад принят в программу конференции

История реализации векторного поиска на go

Для того, чтобы пользователи Lamoda могли получать рекомендации похожих товаров на основе тех, что они выбирают/покупают, мы запустили проект под названием Лакинатор. Как Акинатор, но только для одежды. Для таких рекомендаций необходимо в онлайне уметь искать схожие друг с другом товары в определенных категориях. Поиск идет по подсчитанным векторам.

- Изначально думали использовать поиск по хэш индексу (lsh), но в итоге остановились на обычном переборе. Расскажу, почему, казалось бы, неэффективное решение может быть самым подходящим для решения задачи.

- После того как мы остановились на переборе надо было придумать, как искать топ N элементов. Расскажу, как выбирали подходящую структуру данных и как работать с бенчмарками в go.

- Когда микрооптимизации бывают реально полезны. Поговорим про инлайнинг функций в go. В нашем кейсе он был полезен, так как при поиске перебором одни и те же участки кода исполняются очень много раз. Даже небольшое ускорение такого участка может сильно повлиять на итоговую скорость.

Программный комитет ещё не принял решения по этому докладу

GolangConf: Best practices (10)

Бардак в main, стандартизация и uber.fx. Продакшн-применение библиотеки, и почему стоит и не стоит бояться DI контейнеров

Данила Проценко

Лаборатория Касперского

uber.fx и управление запуском приложения
жизненный цикл компонент, и что вобще можно называть компонентом
запуск, остановка, обработка ошибок
как может выглядить красивый main
как тестировать это все
плюсы, минусы, страхи, проверки

Программный комитет ещё не принял решения по этому докладу

Кэш в оперативной памяти своими руками

Что делать, когда вам нужно отвечать настолько быстро, что позволить себе ~1-3 ms для похода в Redis за кэшем - это очень дорого? Можно же хранить кэш прямо в памяти приложения. Но тогда встают вопросы:
- Память кончается, надо что-то выбросить из кэша! Но что именно?
- Как обновлять значения в кэше так, чтобы не завалить внешние ресурсы большой нагрузкой (предотвратить эффект "Свалки кэша")?
- Если приложение распределенное и нам подобный кэш надо держать согласованным - каким образом это сделать (согласованность кэшей)?

В докладе постараемся дать ответы на эти и некоторые другие вопросы про построение кэшей в оперативной памяти приложения.

Доклад принят в программу конференции

Монолит на Go - это прекрасно

Как-то в одном стартапе и мы по пошли по пути построения монолита, а не модных и современных микросервисов. Я считаю что это был правильный выбор, и хочу рассказать почему.

Программный комитет ещё не принял решения по этому докладу

Работа с полиморфным поведением в большой кодовой базе

Основным средством получения полиморфизма в Go являются интерфейсы. И хотя они несомненно очень удобны и позволяют добиться многого, с ростом кодовой базы и поддерживаемой функциональности их применимость может требовать пересмотра. Что делать, если интерфейс слишком большой и разнородный? Что делать, если полиморфная логика слишком сложная? Как подружить полиморфизм с оптимизациями, рефакторингами и микросервисной архитектурой? В своём докладе я расскажу, как организована наша кодовая база из 1M+ строк на Go, как мы используем и как не используем фичи Go, как добиваемся масштабируемой архитектуры на уровне кода и как проектируем API в проекте, где новые А/B-тесты запускаются каждый день.

Программный комитет ещё не принял решения по этому докладу

Best practices ≠ Rocket science

«Вот когда будем создавать новый продукт с нуля, тогда точно сделаем всё правильно по части архитектуры.»

Недавно мне представилась возможность проверить, насколько легко реализовать эту идею на практике. Мы делали аукцион — сервис для продажи авто через дилеров, без создания объявления на флагманском сервисе Авито.

В докладе расскажу, как эволюционировала архитектура нашего продукта с момента возникновения: почему мы выбрали именно такую архитектуру, как искали баланс между «скорее запилить MVP» и «нужно структурировать код», с какими сложностями столкнулись в процессе, какие паттерны проектирования в Go оказались для нас полезнее всего.

Надеюсь, доклад будет интересен для разработчиков, которые планируют создавать свои приложения на Go с нуля, прямо сейчас проходит через ранние стадии создания приложений или находится на более поздних стадиях разработки и хотят свериться по best practices, а также всем, кто интересуется вопросами архитектуры.

Программный комитет ещё не принял решения по этому докладу

Распределенный запуск задач в кластере K8S через Go

Рассмотрим вопрос и возможности запуска программ, написанных на Go в кластере K8S, а также их управление своим контроллером прямо из сервиса на Go.

Программный комитет ещё не принял решения по этому докладу

Мобильные api: переход с json на бинарный формат

Я поделюсь опытом перевода апи-сервера для мобильных приложений с json-формата на бинарный, зачем так делать и как ничего не сломать по дороге.

Программный комитет ещё не принял решения по этому докладу

Как работать с секретами в Golang, чтобы минимизировать хаос в менеджменте секретов.

В докладе вы узнаете:

- Как организовать код так, чтобы работа с секретами была более простой и безопасной.
- Примеры реализации работы с секретами из кода. В том числе примеры работы с dynamic renewable-секретами.
- Как при работе с секретами не завязываться на конкретного вендора.
- Несколько ляпов из нашего реального опыта, на которых вы можете поучиться и сделать свои выводы.

Программный комитет ещё не принял решения по этому докладу

Разработка отказоустойчивого приложения с запланированной деградацией

В мире разработки микросервисов множество разработчиков сталкиваются с вопросами работоспособности системы в условиях потери отдельных частей системы. Приложение не должно умирать от потери части серверов, потери внешних сервисов или полного отключения сети

Доклад рассматривает:
1. Использование технологий компании HashiCorp: Nomad, Consul, Vault
2. Деление production && staging окружения. "Отбор" staging в случае аварий, автоматически перераспределяя нагрузку
3. Почему nomad, а не k8s
4. Чек-лист, которые мы вынесли для себя при разработке graceful degradation для сервиса

Доклад принят в программу конференции

Как Go выполняет встраивание (inlining) функций

Это обзорный доклад о том, как происходит встраивание (inlining) функций в Go. Из него вы узнаете:
— зачем вообще встраивание нужно, какие преимущества и недостатки несет в себе
— как Go встраивает функции и как эта стратегия менялась со временем
— какие есть ограничения и как некоторые из них можно обойти

Доклад принят в программу конференции