Доклады

Показать все доклады

GolangConf: Другое (1)

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.

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

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

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

Филипп Кулин

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Go Map Internals

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

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

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

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

GolangConf: Best practices (3)

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

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

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

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

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

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

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

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

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

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

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