Если вы бывали на HighLoad++, то знаете о традиционном митапе по Go. Активисты, интересующиеся Go, занимали зал на пару часов, представляли небольшие доклады, обсуждали насущные темы, холиварили. Были на HighLoad++ и отдельные доклады по Go.
Теперь, нам кажется, что пора выходить на новый уровень, поэтому 7 октября мы проведем GolangConf. Из названия понятно, что это конференция про Go, но этого явно недостаточно.
![](https://habrastorage.org/r/w780q1/webt/so/d4/19/sod419pjzbbpf4k_31vyfrs4vrg.jpeg)
Мы готовим эту конференцию для:
Чтобы определить, какие именно темы нужно обсудить на конференции по Go, какие проблемы и задачи важны для каждой из категорий слушателей, мы собрали Программный комитет и активистов Go-сообщества. Устроили своего рода мозговой штурм. Результатами делимся с вами и, поскольку главная наша цель — развивать сообщество, надеемся на ваш отклик. Напишите в комментариях, что нужно раскрыть полнее, что совсем неинтересно, а что именно то что нужно. Посоветуйте, например, стоит ли обсуждать особенности эксплуатации Go под Windows, а то мнения разделились.
Представлять действующих лиц будем по мере выхода на сцену.
Елена Граховац (руководитель команды автоматизации TechOps-процессов в немецком финтех-стартапе N26. Соведущая подкаста GolangShow, член ПК GolangConf. Пишет на Go с 2015-го, профессиональный опыт в ИТ — 11 лет).
Во-первых, на конференции по Go будет секция для тех, кто давно пишет на Go, столкнулся с серьезными проблемами или может быть уперся в производительность и хочет копнуть в хардкор. В эту условную секцию мы подберем кейсы, например, когда использовалась популярная библиотека, но возникли проблемы производительности, которые удалось преодолеть. Рассмотрим нестандартные подходы и неочевидные, но актуальные, решения.
Во-вторых, у нас будет секция «для новичков». В ней будут доклады для тех, кто уже что-то умеет на других языках программирования, но думает о том, подойдет ли Go для его задач или нет.
Мы планируем доклады о том, под какие задачи подходит Go, как совершить переход с других языков программирования, или — любимая тема всех программистов — как выкинуть язык X и переписать все на Go.
Отдельным потоком будет секция митапов, воркшопов и лайтовых докладов, как место, где можно поговорить на наболевшую тему или начать обсуждать то, что внезапно всплыло во время конференции. Например, вспомнил, что хочешь поделиться своим опытом, вдохновившись другими докладами, — пожалуйста, для этого есть все условия. Такой подход редко встретишь на других конференциях.
Конечно, можно просто пообщаться в кулуарах, но митапы дают возможность собрать аудиторию побольше, обсудить проблемы, похвастаться чем-то, или, наоборот, о чём-то погрустить и поделиться своей болью.
Кроме того мы планируем затронуть не очень технические, на первый взгляд, темы. Например, на конференции GopherCon Europe было два доклада, посвященных читабельности кода с небольшим уклоном в нейронауку. Эти знания помогут лучше структурировать свое приложение, сделать человеко-понятным и более удобным для коллег. Надеемся увидеть на нашей конференции доклады на новые темы, которым пока уделяется недостаточно внимания.
Игорь Должиков (инженер SRE в компании Openprovider, автоматизирует процессы разработки микросервисов, обеспечивает их надежность и высокую доступность, с помощью Go)
На конференциях, посвященных одному языку, обычно происходит агитация: почему именно этот язык, чем он интереснее, почему нужно на него переходить. Сам-то я давно на Go и понимаю актуальность. Но мне кажется, важно раскрыть ключевые концепции, допустим, объяснить, почему Google делает свои продукты на Go.
Тем, кто успешно программирует на PHP или Python, нужно на примерах показать, почему стоит посмотреть на Go. Не только для специфических задач, а привести примеры крупных компаний, которые разрабатывают на этом языке целые масштабные проекты.
Елена Граховац: Верно, это один из наших фокусов — показать примеры: почему это может быть интересно, кому это может быть интересно, что люди могут выиграть.
Если мы будем рассказывать, как круто переходить с языка «X» на Go, а потом у участников конференции с этим что-то не заладится, и они начинают нас ругать, это будет не здорово. Поэтому было бы классно рассказать истории провала и выяснить, почему не удалось добиться успеха.
Все примеры должны быть связаны с постановкой вопроса:
Игорь Должиков: Кроме того, мне кажется, были бы уместны доклады аналогичные самым первым докладам Роба Пайка. Видимо все стесняются, но было бы хорошо, если бы кто-нибудь взялся за доклады уровня новичка, которые кратко показывают в коде самые ключевые моменты в Go-архитектурах: как поднять первый сервер, как работать с каналами и горутинами и прочее. Почему-то таких докладов нет на русском.
Марко Кевац (Руководитель команды в отделе платформы в Badoo. C Go практически с самого начала. Главный инициатор внедрения Go в компании. Автор и докладчик, член ПК GolangConf. Хардкорный сишник. Недолюбливает GC).
Тем, кто думает о внедрении Go, будет интересна тема взаимодействия Go с другими языками. То есть Java соединить с С очень просто. Rust соединить с С очень просто. А на С написано огромное количество всего. С Go с этим всегда мучения и зачастую люди просто решают переписать все на Go. Так гораздо проще, удобнее, все утилиты работают, и не получишь никаких странных багов. Обсудим на конференции, когда все выкинуть не лучшая идея, а что точно нужно писать на Go — все-таки у нас Go-конференция.
Олег Бунин: А не для новичков какие еще темы могли быть затронуты на конференции? Например, на Moscow Python Conf++ у нас был чуть ли не целый трек докладов, связанных с популярной областью его применения — машинным обучением. Есть такая область для Go?
Виталий Левченко (Евангелист, организатор ITGM, Go и SRE митапов в Петербурге, член ПК GolangConf. Работает с Go с релиза. руководитель разработки NDA).
Такой темой может стать производительность. Попробуем собрать несколько хардкорных докладов на тему highload. Плана, почему нужно TCP заменить на UDP, но более в контексте Go.
Например, я давно хочу услышать в России доклад, связанный с вопросом производительности, но не видел ничего достаточно серьезного — это история про Go-шный ассемблер. Это важная и большая тема.
Марко Кевац: Такой доклад можно совместить с безопасностью и шифрованием. Сейчас, грубо говоря, если хочешь запрограммировать на Go шифрование или безопасность, чтобы оно работало быстро, нужно писать на ассемблере. Это одна часть проблемы. Сразу же появляется другая — что это все нужно как-то тестировать и поддерживать потом. Могла бы быть реально хардкорная тема.
Виталий Левченко: Это ещё ценно, потому что разработчики оптимизируют, оптимизируют ключевое место, а после этого упираются в привычный Go, поднимают лапки и говорят «дальше всё». А на самом деле дальше ассемблер.
Олег Бунин: Какие ещё темы вы хотите поднять на конференции?
Елена Граховац: Сейчас Go пытаются применять буквально везде. Например, энтузиасты встраиваемых устройств тоже пытаются писать на Go, даже есть специальные фреймворки. Go также используют для машинного обучения, одно время был тренд TensorFlow на Go. Мы бы с удовольствием рассмотрели доклад про подобный опыт. Но тут, как и вообще для всех докладов конференции, важно, чтобы это был именно личный опыт.
Марко Кевац: Действительно, Go как язык применяют где угодно. Если вы слышите о каком-то новом проекте сейчас, то 90%, что он написан на Go. Я бы очень хотел послушать обзорный доклад об этом тренде, о том, как Go из молодого популярного язык стал вездесущим, о возможном будущем и т.д.
Игорь Должиков: Предлагаю затронуть тему контейнеризации. Может быть, никто не заметил, но произошла революция — перенос приложений в контейнеры. И фактически он прошла нога в ногу с языком Go.
Виталий Левченко: Верно, интересны темы формата: патчим Kubernetes, собираем свое облако на Go, свой Service mesh. Несколько компаний в России этим точно занимаются.
Елена Граховац: И так мы как раз подошли в нашей третьей категории участников — инженеров инфраструктуры, которые взаимодействуют с облачными сервисами и вынуждены хотя бы немного разбираться в Go.
Марко Кевац: А что думаете на счет мобильного программирования на Go?
Елена Граховац: У Google был такой проект, но он закрылся. Поэтому мне кажется, мобильное программирование на Go мертво. Пожалуйста, если знаете, что это нет так, опровергните меня.
Виталий Левченко: Я не знаю ни одного успешного кейса в России, никто больше одной библиотеки для себя не делал, но мы будем рады такой заявке.
Марко Кевац: Мне кажется, что еще Go популярен для разработки консольных приложений и конкурирует в этом с Rust, в том числе за счет того, что собирается в один бинарник, который легко положить на сервер и использовать везде.
Елена Граховац: Это опять связано с тем, кто эти бинарники использует: инженеры, инфраструктуры и DBA. Например, в нашей компании DBA решили писать на Go, чтобы можно было просто генерировать бинарники, которые бы для делали то, что они хотят.
Игорь Должиков: Мы давно пишем шаблоны сервисов на Go — шаблоны сервисов, которые на Go, пишем на Go.
Виталий Левченко: Здесь же есть отдельная большая тема, которая плохо раскрыта и которую хорошо бы выделить в отдельную секцию, — observability, то есть логирование, метрики, open tracing, и как они с этим всем работать.
Олег Бунин: А с какими основными проблемами и задачами сталкиваются в крупных компаниях при использовании Go?
Елена Граховац: Много с чем. Начиная с того, как структурировать приложение на Go если: есть куча микросервисов и нужен монорепозиторий, или куча микросервисов и отдельные репозитории. Как управлять зависимостями, как встроить безопасность — задач очень много, но они актуальны с любым языком программирования. Та же проблема observability — это проблема, скорее, именно Cloud Native приложений. Но мы можем рассмотреть ее в контексте Go.
Но темы, связанные с архитектурой будут специфичны, потому что в Go всё-таки не ООП. И то, как, например, в Java структурируется приложение и как выделяется класс, сильно отличается от подходов, применимых для Go.
Алексей Палажченко (lead Gopher в Percona, гофер со стажем, контрибьютор в Prometheus).
Про любую из этих тем можно говорить в контексте Go. Допустим, монорепо или мультирепо в контексте Go сильно отличается, потому что импорт пути использует URL целиком. Даже в таких вещах есть существенные отличия, так что, мне кажется, про всё это можно говорить.
Олег Бунин: Скажите, архитектурные паттерны, которые используются при проектировании приложений, которые будут работать на Go, похожи на некие стандартные или это совсем отдельная история?
Виталий Левченко: Есть понятие Go-way, которое так или иначе проскакивает в сообществе. Go достаточно уникальный с точки зрения подходов.
Елена Граховац: Вопрос, что такое Go-way — холиварный, было бы интересно его обсудить.
Если говорить про паттерны, то традиционные паттерны ООП для Go неактуальны вообще. Но при этом у Go есть что-то свое. Например, практики обработки ошибок, подходы к структурированию, работы с контекстом, обработки запросов и т.д. В веб-приложения на Go есть своя специфика.
Олег Бунин: Я правильно понимаю, что среднестатистический программист на Go должен знать и понимать больше о том, как работает компьютер, чем обычный программист на PHP? У программиста на Go больше доступа к процессору и тредам, больше контроля над исполнением кода?
Елена Граховац: Я бы не согласилась, если честно.
Виталий Левченко: У Go, скорее, достаточно прямой доступ. Грубо говоря, можно вызывать sys call прямым вызовом. Записать что-то на диск с нужными опциями можно в два действия. Это удобно, нормально документировано и используется.
Виталий Левченко: Это связано с вопросом производительности. Как только у Go-разработчика встает вопрос производительности, он начинает работать с железом. После этого сразу выясняется, что нужно разбираться в железе и Linux.
Виталий Левченко: С этим связан нетривиальный вопрос онбординга разработчиков, которые входят в Go. Некоторые считают, что человек без опыта не go-шник. И есть позиция, что можно взять людей вообще без опыта в Go, сразу бросить в проект на Go, и всё будет нормально. Такой опыт был бы очень полезен.
Игорь Должиков: Хорошая тема для доклада: не несите свой опыт и все подходы, которые работают для одного языка (PHP, в частности), в Go. Это частая ошибка.
Виталий Левченко: Добавить к этому вопрос: «Как управлять программистами, которые переходят с PHP на Go?» и получится отличный доклад. Кто возьмется сделать, пишите?
И раз заговорили о менеджменте, предложу обсудить Go с этой точки зрения. В первую очередь, его минусы.
Обычно языки программирования рассматривают со стороны инженера: архитектурные особенности, синтаксис и т.д. На любой языковой конференции существенная часть тем — выбрать или нет инструмент в конкретном случае. Языки при этом сравнивают по техническим характеристикам, а есть командно-специфические и менеджмент-специфичные проблемы, и с ними сложнее. Доклад о них будет полезен тем, кто принимает решение, использовать ли Go.
Go становится все популярнее, поэтому мы ждём на нашей конференции специалистов, которые интересуются Go, но еще не очень с ним знакомы.
Марко Кевац: Я бы очень хотел услышать доклад, который называется что-то типа «Как мы живем без дженериков?» и в котором бы по пунктам было разобрано, что можно вот так и так это обойти. Все говорят об этих дженериках, и, возможно, они и упрощают жизнь, но на самом деле без них можно обойтись. Интересно показать с практической стороны, как этого добиться.
Виталий Левченко: Кроме дженериков вызывает холивары, среди тех, кто не из Go, обработка ошибок. Обработка ошибок в Go сильно отличается от всех остальных языков, есть свои паттерны, о которых не все знают и используют. С появлением Go 1.13 частично эта проблема решится, но в любом случае, обработка ошибок —важная тема.
Алексей Палажченко: Помимо дженериков и ошибок есть третий конь Апокалипсиса — это модули.
Елена Граховац: Что в контексте модулей более спорно: они работают, как не работают, или что тянут пол интернета зависимостей?
Алексей Палажченко: Мне кажется, всё вместе. К GolangConf в октябре эта тема будет еще более актуальна, потому что в августе выйдет релиз Go 1.13, и к как раз народ начнет на него переходить. До этого всё это были энтузиасты по большому счету.
Елена Граховац: Как вы думаете, что расскажут на американском GopherCon? Анонсируют Go 2.0?
Марко Кевац: Я думаю, что никаких открытий мы не увидим.
Алексей Палажченко: Моё предположение, что в основном будут говорить про тулинг и модули, то есть gopls, goproxy, registry и audit.
Алексей Палажченко: Говоря о холиварах, я бы сходил на доклад на тему: «Go — отстой» или «Go — хуже, чем Х» от известного человека, который хорошо пишет на Х, например.
Елена Граховац: Можно позвать любого человека из нашей компании, он расскажет, почему Kotlin лучше, чем Go. А я потом сделаю доклад: «Как гоферу выжить в компании, которая хочет ассоциироваться только с Kotlin».
Алексей Палажченко: Было бы неплохое комбо. Интересно ходить на конференцию по языку Х, где среди прочего будут рассказывать, что Х — отстой. Чтобы сделать такой доклад нужно иметь стальные нервы и очень хорошую аргументацию. Как правило, такие люди сильно готовятся, получаются интересные, хорошие доклады и интересное обсуждение в кулуарах.
Виталий Левченко: Кстати, про Security еще ни слова не сказали.
Елена Граховац: Да, доклад на тему Go и security от хардкорного специалиста security мы были бы рады получить. Отзовитесь, если это вы. Хотя, мне кажется, эта тема почти везде не раскрыта, не только в Go.
И раз мы уж вспомнили про security, предлагаю тему — что-нибудь про Windows. Я пыталась вспомнить, какие я знаю баги именно в Go, связанные с security, и они все почему-то про Windows.
Марко Кевац: Что такое Windows?
Елена Граховац: Я серьезно спрашиваю, чего вы шутите?
Алексей Палажченко: Редко, но не один, и не два, и не три раза у меня что-то спрашивали про Windows. У кого-то просто локально не настраивается. Кто-то спрашивает, как Excel табличку сделать из Go или как с Home работать. Поэтому обзорный доклад, как вообще использовать Go на Windows, может и не будет суперпопулярный, но точно соберёт этих людей вместе, что ценно само по себе.
Марко Кевац: Соглашусь. Я недавно был на воркшопе для «новичков» Go, на котором программисты попытались банально установить Go и что-то с ним поделать. Огромное количество проблем возникло именно из-за Windows и особенностей работы на ней с Go.
Алексей Палажченко: Windows в нашем пузыре нет, но вообще говоря он есть. Судя опросам, Windows — самая популярная платформа.
Елена Граховац: Что ещё хотим обсудить на нашей конференции? Мне, например, была бы интересна тема карьерного роста Go-разработчиков.
Виталий Левченко: Чем он отличается от карьерного роста любого другого разработчика?
Елена Граховац: В этом и вопрос: есть ли разница. Я, например, вижу, что в Go-разработчики иногда приходят, чтобы потом перейти в SRE. Сейчас в Берлине это тренд, приходят молодые ребята, которые говорят: «Я вообще-то хочу быть SRE, но понимаю, что сразу не смогу, поэтому пока поработаю junior Go-разработчиком, а потом как-нибудь перейду в SRE».
Виталий Левченко: Значит, есть интерес, и на конференции нужно охватить SRE.
Елена Граховац: SRE — это те, кто много используют Go для автоматизации своих задач, всего, что должно быть автоматизировано после первого использования. Поэтому это актуальный вопрос для Go-конференции.
Виталий Левченко: А еще из Go-шников быстрее вырастают SRE из-за спектра необходимых знаний.
Игорь Должиков: У меня как раз был доклад на DevOpsConf как SRE с помощью шаблонизации делается на Go за 5 минут.
Виталий Левченко: Стоит упомянуть базы данных на Go. Некоторые говорят: «Не будем использовать Prometheus, потому что он на Go написан, это медленно». Аналогично CocroroachDB полностью написан на Go, что иногда служит решающим аргументом против неё. Мы, как гоферы, конечно, надеемся, что найдется спикер, который на своем опыте опровергнет эти утверждения. Но аргументированное подтверждение тоже примем.
Елена Граховац: Еще одна тема — это Serverless. Популярные serverless-провайдеры поддерживают Go: AWS, Google, Microsoft Azure. В этой теме мало опыта, но надеемся найдем кого-нибудь, кто готов им делиться.
Виталий Левченко: Другой неожиданной, но актуальной в контексте Go и микросервисности, может быть тема синхронности документации с кодом. Код с документацией со временем расходится. Чтобы была спецификация, по которой генерируется код, который используется внешними партнерами и внутренними, встречается очень редко. Доклад, например, почему нужно всё бросить и использовать JSON-RPC, был бы полезен Go-разработчикам.
Теперь, нам кажется, что пора выходить на новый уровень, поэтому 7 октября мы проведем GolangConf. Из названия понятно, что это конференция про Go, но этого явно недостаточно.
![](https://habrastorage.org/webt/so/d4/19/sod419pjzbbpf4k_31vyfrs4vrg.jpeg)
Мы готовим эту конференцию для:
- Go-разработчиков — тех, кто уже давно сидит на Go, кому интересно обсудить новинки, поговорить о производительности и «кишках», узнать, что меняется в Go, похоливарить о дженериках, например.
- Кроме того, поскольку Go-общество расширяется, мы ждем программистов, которые только-только переходят на Go или даже только подумывают об этом. Покажем им истории успеха, реализовавшегося с переходом на Go, или истории провала. Узнаем, что не получается, почему, какие их первые чувства, мнения, впечатления.
- Третья категория посетителей — пользователи инструментов, написанных на Go. Это популярные в рамках Cloud Native инфраструктур: Kubernetes, Docker, Terraform, Consul и другие продукты Hashicorp. На Go-конференции гости, с одной стороны, узнают, какие у этих инструментов есть проблемы, связанные с особенностями языка, а с другой — увидят, какие в Go есть вызовы и задачи, чтобы начать, например, контрибьютить в эти проекты.
Чтобы определить, какие именно темы нужно обсудить на конференции по Go, какие проблемы и задачи важны для каждой из категорий слушателей, мы собрали Программный комитет и активистов Go-сообщества. Устроили своего рода мозговой штурм. Результатами делимся с вами и, поскольку главная наша цель — развивать сообщество, надеемся на ваш отклик. Напишите в комментариях, что нужно раскрыть полнее, что совсем неинтересно, а что именно то что нужно. Посоветуйте, например, стоит ли обсуждать особенности эксплуатации Go под Windows, а то мнения разделились.
Представлять действующих лиц будем по мере выхода на сцену.
Секции GolangConf
![](https://habrastorage.org/webt/zv/jf/qg/zvjfqgo39ebycrevif_lzvj-_9k.jpeg)
Во-первых, на конференции по Go будет секция для тех, кто давно пишет на Go, столкнулся с серьезными проблемами или может быть уперся в производительность и хочет копнуть в хардкор. В эту условную секцию мы подберем кейсы, например, когда использовалась популярная библиотека, но возникли проблемы производительности, которые удалось преодолеть. Рассмотрим нестандартные подходы и неочевидные, но актуальные, решения.
Во-вторых, у нас будет секция «для новичков». В ней будут доклады для тех, кто уже что-то умеет на других языках программирования, но думает о том, подойдет ли Go для его задач или нет.
Мы планируем доклады о том, под какие задачи подходит Go, как совершить переход с других языков программирования, или — любимая тема всех программистов — как выкинуть язык X и переписать все на Go.
Было бы здорово послушать и о негативном опыте перехода, потому что такое тоже бывает, но об этом, к сожалению, не очень часто говорят. Если у вас есть такой опыт, напишите нам.
Отдельным потоком будет секция митапов, воркшопов и лайтовых докладов, как место, где можно поговорить на наболевшую тему или начать обсуждать то, что внезапно всплыло во время конференции. Например, вспомнил, что хочешь поделиться своим опытом, вдохновившись другими докладами, — пожалуйста, для этого есть все условия. Такой подход редко встретишь на других конференциях.
Конечно, можно просто пообщаться в кулуарах, но митапы дают возможность собрать аудиторию побольше, обсудить проблемы, похвастаться чем-то, или, наоборот, о чём-то погрустить и поделиться своей болью.
Кроме того мы планируем затронуть не очень технические, на первый взгляд, темы. Например, на конференции GopherCon Europe было два доклада, посвященных читабельности кода с небольшим уклоном в нейронауку. Эти знания помогут лучше структурировать свое приложение, сделать человеко-понятным и более удобным для коллег. Надеемся увидеть на нашей конференции доклады на новые темы, которым пока уделяется недостаточно внимания.
Зачем вам Go
![](https://habrastorage.org/webt/8b/mb/s4/8bmbs4fg3ocpr64bhagi-hzxcba.png)
На конференциях, посвященных одному языку, обычно происходит агитация: почему именно этот язык, чем он интереснее, почему нужно на него переходить. Сам-то я давно на Go и понимаю актуальность. Но мне кажется, важно раскрыть ключевые концепции, допустим, объяснить, почему Google делает свои продукты на Go.
Тем, кто успешно программирует на PHP или Python, нужно на примерах показать, почему стоит посмотреть на Go. Не только для специфических задач, а привести примеры крупных компаний, которые разрабатывают на этом языке целые масштабные проекты.
Елена Граховац: Верно, это один из наших фокусов — показать примеры: почему это может быть интересно, кому это может быть интересно, что люди могут выиграть.
Мы хотим оставаться до конца честными и рассказать, кому и когда не стоит выбирать Go.
Если мы будем рассказывать, как круто переходить с языка «X» на Go, а потом у участников конференции с этим что-то не заладится, и они начинают нас ругать, это будет не здорово. Поэтому было бы классно рассказать истории провала и выяснить, почему не удалось добиться успеха.
Все примеры должны быть связаны с постановкой вопроса:
- надо ли переходить на Go;
- кому надо;
- почему надо;
- как это сделать.
Игорь Должиков: Кроме того, мне кажется, были бы уместны доклады аналогичные самым первым докладам Роба Пайка. Видимо все стесняются, но было бы хорошо, если бы кто-нибудь взялся за доклады уровня новичка, которые кратко показывают в коде самые ключевые моменты в Go-архитектурах: как поднять первый сервер, как работать с каналами и горутинами и прочее. Почему-то таких докладов нет на русском.
![](https://habrastorage.org/webt/lv/vn/ey/lvvneyt3islehdfnlynhd0cbjjm.png)
Тем, кто думает о внедрении Go, будет интересна тема взаимодействия Go с другими языками. То есть Java соединить с С очень просто. Rust соединить с С очень просто. А на С написано огромное количество всего. С Go с этим всегда мучения и зачастую люди просто решают переписать все на Go. Так гораздо проще, удобнее, все утилиты работают, и не получишь никаких странных багов. Обсудим на конференции, когда все выкинуть не лучшая идея, а что точно нужно писать на Go — все-таки у нас Go-конференция.
Производительность Go
Олег Бунин: А не для новичков какие еще темы могли быть затронуты на конференции? Например, на Moscow Python Conf++ у нас был чуть ли не целый трек докладов, связанных с популярной областью его применения — машинным обучением. Есть такая область для Go?
![](https://habrastorage.org/webt/lv/fk/fu/lvfkfupmreqenvyfjkhbkf77oma.jpeg)
Такой темой может стать производительность. Попробуем собрать несколько хардкорных докладов на тему highload. Плана, почему нужно TCP заменить на UDP, но более в контексте Go.
Например, я давно хочу услышать в России доклад, связанный с вопросом производительности, но не видел ничего достаточно серьезного — это история про Go-шный ассемблер. Это важная и большая тема.
Марко Кевац: Такой доклад можно совместить с безопасностью и шифрованием. Сейчас, грубо говоря, если хочешь запрограммировать на Go шифрование или безопасность, чтобы оно работало быстро, нужно писать на ассемблере. Это одна часть проблемы. Сразу же появляется другая — что это все нужно как-то тестировать и поддерживать потом. Могла бы быть реально хардкорная тема.
Виталий Левченко: Это ещё ценно, потому что разработчики оптимизируют, оптимизируют ключевое место, а после этого упираются в привычный Go, поднимают лапки и говорят «дальше всё». А на самом деле дальше ассемблер.
Go везде
Олег Бунин: Какие ещё темы вы хотите поднять на конференции?
Елена Граховац: Сейчас Go пытаются применять буквально везде. Например, энтузиасты встраиваемых устройств тоже пытаются писать на Go, даже есть специальные фреймворки. Go также используют для машинного обучения, одно время был тренд TensorFlow на Go. Мы бы с удовольствием рассмотрели доклад про подобный опыт. Но тут, как и вообще для всех докладов конференции, важно, чтобы это был именно личный опыт.
То, что написано в документации, там и можно прочитать, а самое ценное — когда доклад построен на примерах, с чем столкнулись, как преодолевали, что получили.
Марко Кевац: Действительно, Go как язык применяют где угодно. Если вы слышите о каком-то новом проекте сейчас, то 90%, что он написан на Go. Я бы очень хотел послушать обзорный доклад об этом тренде, о том, как Go из молодого популярного язык стал вездесущим, о возможном будущем и т.д.
Игорь Должиков: Предлагаю затронуть тему контейнеризации. Может быть, никто не заметил, но произошла революция — перенос приложений в контейнеры. И фактически он прошла нога в ногу с языком Go.
Виталий Левченко: Верно, интересны темы формата: патчим Kubernetes, собираем свое облако на Go, свой Service mesh. Несколько компаний в России этим точно занимаются.
Елена Граховац: И так мы как раз подошли в нашей третьей категории участников — инженеров инфраструктуры, которые взаимодействуют с облачными сервисами и вынуждены хотя бы немного разбираться в Go.
Марко Кевац: А что думаете на счет мобильного программирования на Go?
Елена Граховац: У Google был такой проект, но он закрылся. Поэтому мне кажется, мобильное программирование на Go мертво. Пожалуйста, если знаете, что это нет так, опровергните меня.
Виталий Левченко: Я не знаю ни одного успешного кейса в России, никто больше одной библиотеки для себя не делал, но мы будем рады такой заявке.
Марко Кевац: Мне кажется, что еще Go популярен для разработки консольных приложений и конкурирует в этом с Rust, в том числе за счет того, что собирается в один бинарник, который легко положить на сервер и использовать везде.
Елена Граховац: Это опять связано с тем, кто эти бинарники использует: инженеры, инфраструктуры и DBA. Например, в нашей компании DBA решили писать на Go, чтобы можно было просто генерировать бинарники, которые бы для делали то, что они хотят.
Игорь Должиков: Мы давно пишем шаблоны сервисов на Go — шаблоны сервисов, которые на Go, пишем на Go.
Виталий Левченко: Здесь же есть отдельная большая тема, которая плохо раскрыта и которую хорошо бы выделить в отдельную секцию, — observability, то есть логирование, метрики, open tracing, и как они с этим всем работать.
Go в крупных компаниях
Олег Бунин: А с какими основными проблемами и задачами сталкиваются в крупных компаниях при использовании Go?
Елена Граховац: Много с чем. Начиная с того, как структурировать приложение на Go если: есть куча микросервисов и нужен монорепозиторий, или куча микросервисов и отдельные репозитории. Как управлять зависимостями, как встроить безопасность — задач очень много, но они актуальны с любым языком программирования. Та же проблема observability — это проблема, скорее, именно Cloud Native приложений. Но мы можем рассмотреть ее в контексте Go.
Но темы, связанные с архитектурой будут специфичны, потому что в Go всё-таки не ООП. И то, как, например, в Java структурируется приложение и как выделяется класс, сильно отличается от подходов, применимых для Go.
![](https://habrastorage.org/webt/2i/af/ot/2iafotpzbncpnou4l06tklql_jk.jpeg)
Про любую из этих тем можно говорить в контексте Go. Допустим, монорепо или мультирепо в контексте Go сильно отличается, потому что импорт пути использует URL целиком. Даже в таких вещах есть существенные отличия, так что, мне кажется, про всё это можно говорить.
Go-way
Олег Бунин: Скажите, архитектурные паттерны, которые используются при проектировании приложений, которые будут работать на Go, похожи на некие стандартные или это совсем отдельная история?
Виталий Левченко: Есть понятие Go-way, которое так или иначе проскакивает в сообществе. Go достаточно уникальный с точки зрения подходов.
Елена Граховац: Вопрос, что такое Go-way — холиварный, было бы интересно его обсудить.
Если говорить про паттерны, то традиционные паттерны ООП для Go неактуальны вообще. Но при этом у Go есть что-то свое. Например, практики обработки ошибок, подходы к структурированию, работы с контекстом, обработки запросов и т.д. В веб-приложения на Go есть своя специфика.
Олег Бунин: Я правильно понимаю, что среднестатистический программист на Go должен знать и понимать больше о том, как работает компьютер, чем обычный программист на PHP? У программиста на Go больше доступа к процессору и тредам, больше контроля над исполнением кода?
Елена Граховац: Я бы не согласилась, если честно.
Виталий Левченко: У Go, скорее, достаточно прямой доступ. Грубо говоря, можно вызывать sys call прямым вызовом. Записать что-то на диск с нужными опциями можно в два действия. Это удобно, нормально документировано и используется.
Марко Кевац: Я соглашусь, мне кажется, что Go-шник должен больше понимать, чтобы программировать нормально. Но не на порядок.
Виталий Левченко: Это связано с вопросом производительности. Как только у Go-разработчика встает вопрос производительности, он начинает работать с железом. После этого сразу выясняется, что нужно разбираться в железе и Linux.
С PHP на Go
Игорь Должиков: Однажды я сказал, что Go — это новый PHP, так меня чуть не закидали помидорами. Сейчас это язык, за который берутся именно для того, чтобы что-то быстро накидать.
Виталий Левченко: С этим связан нетривиальный вопрос онбординга разработчиков, которые входят в Go. Некоторые считают, что человек без опыта не go-шник. И есть позиция, что можно взять людей вообще без опыта в Go, сразу бросить в проект на Go, и всё будет нормально. Такой опыт был бы очень полезен.
Игорь Должиков: Хорошая тема для доклада: не несите свой опыт и все подходы, которые работают для одного языка (PHP, в частности), в Go. Это частая ошибка.
Виталий Левченко: Добавить к этому вопрос: «Как управлять программистами, которые переходят с PHP на Go?» и получится отличный доклад. Кто возьмется сделать, пишите?
И раз заговорили о менеджменте, предложу обсудить Go с этой точки зрения. В первую очередь, его минусы.
Обычно языки программирования рассматривают со стороны инженера: архитектурные особенности, синтаксис и т.д. На любой языковой конференции существенная часть тем — выбрать или нет инструмент в конкретном случае. Языки при этом сравнивают по техническим характеристикам, а есть командно-специфические и менеджмент-специфичные проблемы, и с ними сложнее. Доклад о них будет полезен тем, кто принимает решение, использовать ли Go.
Go становится все популярнее, поэтому мы ждём на нашей конференции специалистов, которые интересуются Go, но еще не очень с ним знакомы.
Go против всех
Марко Кевац: Я бы очень хотел услышать доклад, который называется что-то типа «Как мы живем без дженериков?» и в котором бы по пунктам было разобрано, что можно вот так и так это обойти. Все говорят об этих дженериках, и, возможно, они и упрощают жизнь, но на самом деле без них можно обойтись. Интересно показать с практической стороны, как этого добиться.
Виталий Левченко: Кроме дженериков вызывает холивары, среди тех, кто не из Go, обработка ошибок. Обработка ошибок в Go сильно отличается от всех остальных языков, есть свои паттерны, о которых не все знают и используют. С появлением Go 1.13 частично эта проблема решится, но в любом случае, обработка ошибок —важная тема.
Алексей Палажченко: Помимо дженериков и ошибок есть третий конь Апокалипсиса — это модули.
Елена Граховац: Что в контексте модулей более спорно: они работают, как не работают, или что тянут пол интернета зависимостей?
Алексей Палажченко: Мне кажется, всё вместе. К GolangConf в октябре эта тема будет еще более актуальна, потому что в августе выйдет релиз Go 1.13, и к как раз народ начнет на него переходить. До этого всё это были энтузиасты по большому счету.
Елена Граховац: Как вы думаете, что расскажут на американском GopherCon? Анонсируют Go 2.0?
Марко Кевац: Я думаю, что никаких открытий мы не увидим.
Алексей Палажченко: Моё предположение, что в основном будут говорить про тулинг и модули, то есть gopls, goproxy, registry и audit.
Алексей Палажченко: Говоря о холиварах, я бы сходил на доклад на тему: «Go — отстой» или «Go — хуже, чем Х» от известного человека, который хорошо пишет на Х, например.
Елена Граховац: Можно позвать любого человека из нашей компании, он расскажет, почему Kotlin лучше, чем Go. А я потом сделаю доклад: «Как гоферу выжить в компании, которая хочет ассоциироваться только с Kotlin».
Алексей Палажченко: Было бы неплохое комбо. Интересно ходить на конференцию по языку Х, где среди прочего будут рассказывать, что Х — отстой. Чтобы сделать такой доклад нужно иметь стальные нервы и очень хорошую аргументацию. Как правило, такие люди сильно готовятся, получаются интересные, хорошие доклады и интересное обсуждение в кулуарах.
Go, Security и Windows
Виталий Левченко: Кстати, про Security еще ни слова не сказали.
Елена Граховац: Да, доклад на тему Go и security от хардкорного специалиста security мы были бы рады получить. Отзовитесь, если это вы. Хотя, мне кажется, эта тема почти везде не раскрыта, не только в Go.
И раз мы уж вспомнили про security, предлагаю тему — что-нибудь про Windows. Я пыталась вспомнить, какие я знаю баги именно в Go, связанные с security, и они все почему-то про Windows.
Марко Кевац: Что такое Windows?
Елена Граховац: Я серьезно спрашиваю, чего вы шутите?
Алексей Палажченко: Редко, но не один, и не два, и не три раза у меня что-то спрашивали про Windows. У кого-то просто локально не настраивается. Кто-то спрашивает, как Excel табличку сделать из Go или как с Home работать. Поэтому обзорный доклад, как вообще использовать Go на Windows, может и не будет суперпопулярный, но точно соберёт этих людей вместе, что ценно само по себе.
Марко Кевац: Соглашусь. Я недавно был на воркшопе для «новичков» Go, на котором программисты попытались банально установить Go и что-то с ним поделать. Огромное количество проблем возникло именно из-за Windows и особенностей работы на ней с Go.
Алексей Палажченко: Windows в нашем пузыре нет, но вообще говоря он есть. Судя опросам, Windows — самая популярная платформа.
Карьера Go-разработчика
Елена Граховац: Что ещё хотим обсудить на нашей конференции? Мне, например, была бы интересна тема карьерного роста Go-разработчиков.
Виталий Левченко: Чем он отличается от карьерного роста любого другого разработчика?
Елена Граховац: В этом и вопрос: есть ли разница. Я, например, вижу, что в Go-разработчики иногда приходят, чтобы потом перейти в SRE. Сейчас в Берлине это тренд, приходят молодые ребята, которые говорят: «Я вообще-то хочу быть SRE, но понимаю, что сразу не смогу, поэтому пока поработаю junior Go-разработчиком, а потом как-нибудь перейду в SRE».
Виталий Левченко: Значит, есть интерес, и на конференции нужно охватить SRE.
Елена Граховац: SRE — это те, кто много используют Go для автоматизации своих задач, всего, что должно быть автоматизировано после первого использования. Поэтому это актуальный вопрос для Go-конференции.
Виталий Левченко: А еще из Go-шников быстрее вырастают SRE из-за спектра необходимых знаний.
Игорь Должиков: У меня как раз был доклад на DevOpsConf как SRE с помощью шаблонизации делается на Go за 5 минут.
И другие темы
Виталий Левченко: Стоит упомянуть базы данных на Go. Некоторые говорят: «Не будем использовать Prometheus, потому что он на Go написан, это медленно». Аналогично CocroroachDB полностью написан на Go, что иногда служит решающим аргументом против неё. Мы, как гоферы, конечно, надеемся, что найдется спикер, который на своем опыте опровергнет эти утверждения. Но аргументированное подтверждение тоже примем.
Елена Граховац: Еще одна тема — это Serverless. Популярные serverless-провайдеры поддерживают Go: AWS, Google, Microsoft Azure. В этой теме мало опыта, но надеемся найдем кого-нибудь, кто готов им делиться.
Виталий Левченко: Другой неожиданной, но актуальной в контексте Go и микросервисности, может быть тема синхронности документации с кодом. Код с документацией со временем расходится. Чтобы была спецификация, по которой генерируется код, который используется внешними партнерами и внутренними, встречается очень редко. Доклад, например, почему нужно всё бросить и использовать JSON-RPC, был бы полезен Go-разработчикам.
Если уже видите, как раскрыть одну из многих названных тем — ждём заявку. Или присоединяйтесь к нашему мозговому штурму в комментариях или telegram-чате конференции. Мы делаем GolangConf для вас.