Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Мы обещали 5-6 причин перейти на Go, так и получилось! На GolangConf — конференции полностью посвященной Go — 7 октября будет 5 докладов с пометкой «Переход на Go» для тех, кто только собирается или начинает использовать этот язык в своих проектах.
Но это только начало. С первого раза нам удалось собрать очень сильную и разнообразную программу, отвечающую потребностям трех категорий участников: профессиональных Go-разработчиков; тех, кто только переходит на Go; инженеров-инфраструктуры и пользователей инструментов, написанных на Go.
В программе конференции 21 доклад, сессия блиц-докладов и митапы. В любое время гости конференции смогут выбрать из 3–4 разных тем и найти для себя что-нибудь интересное. Думаю даже, что более актуальной будет проблема выбора и невозможность разорваться между потоками (хорошо, что потом все будет на видео). Одновременно в разных залах будут обсуждаться темы, актуальные самым разным специалистам.
Большое внимание мы уделим лучшим практикам работы с Go и вообще любым кодом. С опытными гоферами обсудим вопросы производительности и разные хардкорные вещи. Для инженеров инфраструктуры тоже будет несколько интересных докладов. Блок о нестандартных способах использования Go и вовсе никого не оставит равнодушным. К тому же, будет целых два доклада о разработке фронтенда на Go, причем оба от иностранных спикеров.
Можно сказать, фронтенд — экспериментальное направление. На Go не часто пишут продакшн-фронтенд, чаще WebAssembly пробуют в личных небольших проектах. Докладчики, которых мы пригласили, смогут не просто в общих чертах рассказать о том, как начать использовать WebAssembly. Это глубокие доклады, построенные на личном опыте, они покажут, что жизненного можно сделать на WebAssembly, и как его использовать в своих проектах.
К отбору тем и спикеров программный комитет подходил очень строго. Большинство наших докладчиков известны в Go-сообществе, но в то же время есть и новые лица. Когда из раза в раз на конференциях выступают одни и те же люди, это немного скучно. Хочется видеть новый взгляд, новые вызовы, новых спикеров. Нам удалось привлечь свежую кровь, и у них тоже очень интересные доклады, построенные на практическом опыте. Например, я с нетерпением жду доклад Ксении Якиль.
Едва ли не жестче был отбор иностранных спикеров, потому что заявок от них было много. Но мы знаем, что нашей аудитории может быть тяжело слушать много докладов на английском. 8-9 докладов за день — это и так большой объем новой информации, а когда из-за языка нужно затрачивать дополнительные усилия, чтобы вникнуть, становится совсем тяжело. Поэтому англоязычных докладов у нас всего три, но они самые-самые.
На самом деле, мировое Go-сообщество очень дружное и готово делиться опытом. Мы получили очень хороший отклик, когда открыли Call for Papers на PaperCall.io и объявили о конференции в международном Go-сообществе в Slack и Twitter. Правда, мы не успели привлечь суперзвезд мирового сообщества, их календарь мероприятий расписан на год вперед. Но зато у нас есть далекоидущие планы на следующий GolangConf.
В этом году у нас уже будет 21 классный доклад. Здесь расскажу о нескольких из них, а за полной информацией и расписанием заходите на сайт конференции.
Искандер Шарипов (ВКонтакте) в прошлом работал над Go-компилятором и сторонним тулингом для него — статических анализаторов и утилит для рефакторинга. Сейчас планирует портировать многие инструменты, созданные для Go, в экосистему PHP. Об этом колоссальном опыте Искандера наверняка можно будет поспрашивать в кулуарах, а его доклад будет в первую очередь интересен тем, кто задумывается над вопросами обработки кода на Go:
Ключом к ответам на эти вопросы является нормализация Go-программ, и именно о ней и пойдет речь в докладе. Но не на словах, а на деле— рассмотрим библиотеку для нормализации кода на Go и несколько её практических применений.
Контрибьютор в Go Johan Brandhorst приедет в Москву, чтобы познакомить нас с WebAssembly и показать, как начать работу с WebAssembly и Go. WebAssembly уже почти два года поддерживается в браузерах и в качестве эксперимента включен в Go, начиная с версии 1.11. Может быть, он даже сможет заменить JavaScript в браузере и стать тем самым языком, код на котором может работать где угодно.
После этого доклада начинающие гоферы узнают, как использовать Go с WebAssembly, что эти технологии позволяют делать сейчас, а что станет возможным в будущем.
В экосистеме Go существует несколько замечательных WebSocket-библиотек. Казалось бы — бери и делай свой проект, взяв за основу готовое решение. Однако, несколько насущных проблем придется решить самостоятельно, например:
И наконец — придется самостоятельно писать свой протокол поверх WebSocket и клиентов, которые его реализуют на всех современных клиентских платформах. Готовы ли вы на такое?
Эти вопросы уже решает opensource-библиотека Centrifuge, которая добавляет множество полезных фич поверх Gorilla WebSocket для построения real-time-приложений. Автор этого проекта, Александр Емелин, выступит на GolangConf. Александр научит приемам и практикам, которые позволяют эффективно работать с большим количеством соединений, и расскажет, как эти подходы работают в продакшн Мессенджера Авито.
Мы знаем (кто еще не знает, к этому докладу уже узнает), что Go предоставляет мощные и гибкие инструменты для написания конкурентных программ, но не диктует строгих правил их использования. Статьи и доклады часто дают противоречащие друг другу рекомендации, как передавать работу в горутины, как их завершать, как обрабатывать ошибки…
Гофер со стажем, организатор митапов и конференций, ведущий воркшопов и подкастов Алексей Палажченко (Percona) поможет разобраться в этих вопросах. Алексей приведет реальный пример API, который по ходу доклада постепенно будет улучшаться и на котором мы будем исследовать возможные задачи и проблемы.
Наверное, многие из нас увлеклись программированием, потому что мечтали писать игры. Вот и Алексей Акулович занимается бэкендом сложных проектов ВКонтакте, но желание заниматься GameDev’ом не оставил, а удачно сочетает с разработкой на Go. Всем, кому хочется развеяться за написанием игрушки, не залезая в Unity/Unreal и прочие радости, пригодится этот доклад.
Алексей покажет нам 2D- и 3D-desktop/web-фреймворки, возможности handmade-разработки и варианты расширения функциональности без перекомпиляции основного бинарника. Речь пойдет о ситуации в 2019 году, так что современные версии и тенденции прилагаются.
А если вы давно мечтали писать интерфейсный код исключительно на GO, приходите на доклад Aarushi Kansal(Tier). Традиционно, классная визуализация и реализация творческих, на стыке с искусством, идей — прерогатива JavaScript-разработчиков, но Ааруши расскажет, как на Go создавать приложения и графику, работающие в браузере. После этого доклада вы поверите, что можно полностью раскрыть свой потенциал во фронтенд-разработке, не отказываясь от любимого языка.
Андрей Смирнов — автор многих opensource-проектов и мастер-класса «Разработка надёжных высоконагруженных систем». Его доклад на GolangConf в первую очередь предназначен для тех, кто пользуется Kubernetes. Андрей расскажет о процессе разработки операционной системы Talos и о том, чего удалось добиться за счет использования Go. Например, сборка операционной системы и цикл обратной связи через CI занимает не более 5 минут.
Увидим, как простые и понятные концепции конкурентного программирования в Go позволяют организовать запуск фаз инициализации ОС параллельно и при этом в корректной последовательности. Обсудим, когда для проверки системы можно обойтись простыми unit-тестами и как выглядят интеграционные тесты для ОС. Андрей говорит, что в этой нише Go оказался практически в монопольном положении, узнаем, почему и чем это удобно для нас.
Кстати, об интеграционных тестах. Они, несмотря на доклады об их пользе и даже большое количество мемов, все еще не получают должного внимания. Или это только у гоферов так, и у нас просто unit-тестирование заложено в генах? Как бы то ни было, в Badoo задались целью написать интеграционные тесты на Go, и у них это отлично получилось. Ксения Якиль расскажет, как. Как реализовать для интеграционного тестирования фреймворк на Go, какие сложности попадутся на пути и каких результатов можно достичь. Вот увидите, писать интеграционные тесты на Go реально и не так больно.
Независимо от того, на каком языке вы пишите, случается, что старый код оказывается проще переписать, чем отрефакторить. Печальнее всего, когда это ваш собственный код, с любовью написанный «всего лишь» несколько лет назад.
Григорий Петров (Evrone) любит нейрофизиологию и докапываться до причин. Его доклад на GolangConf — это практическая инструкция по борьбе со сложностью кода: откуда она берется, почему ее нельзя убрать и как с ней бороться. Григорий расскажет про декомпозицию, установку «маяков» разными способами, приемы написания полезных идентификаторов, создание капканов с помощью типов. До «пишите функции покороче, а имена идентификаторов понятнее» не опустимся :)
А в финальной части доклада обсудим «gradual»-подход к написанию читаемого кода, который не ограничивается знакомым вам по динамическим языкам «gradual typing».
И вот тут, под вечер, когда мы уже обсудим многие вопросы разработки на Go, окончательно убедим сомневающихся переходить на Go, Филипп Кулинподнимет вот какую тему: «Почему Golang такой странный» и обещает все разложить по полочками и рассказать, как все было на самом деле и куда исчезли дженерики.
Может быть, вы заметили, что среди докладчиков нет ни одного члена программного комитета, хотя он состоит из активистов сообщества, которых вы точно знаете, если были на Go-митапах и конференциях. Мы занимались другим: отбирали темы, помогали спикерам, готовили дополнительные активности.
Членов программного комитета в дни конференции можно будет найти и расспросить в специальной экспертной зоне. Часто у новичков в Go бывают вопросы, которые почему-то не решаются, с которыми по непонятным причинам получается затык, и даже StackOverflow никак не помогает. На конференции у нас будет отдельный стенд, на котором можно будет задать такие вопросы членам программного комитета и активистам Go-сообщества. Приходите со своими вопросами, и мы вместе попробуем их решить!
GolangConf входит в семейство конференций Онтико, а значит отдельное помещение будет выделено под митапы — небольшие узкотематические встречи группы единомышленников. Это может быть и мастер-класс или воркшоп, но главное в нем в любом случае будет общение специалистов, обсуждение болей и совместный поиск решения. Каждый участник может попробовать организовать свой митап или выступить в роли члена программного комитета и проголосовать за предложения других участников.
И, конечно, нетворкинг как неотъемлемая часть любой конференции в нашем случае будет особенно полезен, так как на конференции все участники будут так или иначе заинтересованы в одной теме — Golang. Вечером после основной программы нас, конечно же, ждет афтепати и возможность пообщаться в более неформальной атмосфере.
Но это только начало. С первого раза нам удалось собрать очень сильную и разнообразную программу, отвечающую потребностям трех категорий участников: профессиональных Go-разработчиков; тех, кто только переходит на Go; инженеров-инфраструктуры и пользователей инструментов, написанных на Go.
В программе конференции 21 доклад, сессия блиц-докладов и митапы. В любое время гости конференции смогут выбрать из 3–4 разных тем и найти для себя что-нибудь интересное. Думаю даже, что более актуальной будет проблема выбора и невозможность разорваться между потоками (хорошо, что потом все будет на видео). Одновременно в разных залах будут обсуждаться темы, актуальные самым разным специалистам.
Большое внимание мы уделим лучшим практикам работы с Go и вообще любым кодом. С опытными гоферами обсудим вопросы производительности и разные хардкорные вещи. Для инженеров инфраструктуры тоже будет несколько интересных докладов. Блок о нестандартных способах использования Go и вовсе никого не оставит равнодушным. К тому же, будет целых два доклада о разработке фронтенда на Go, причем оба от иностранных спикеров.
Можно сказать, фронтенд — экспериментальное направление. На Go не часто пишут продакшн-фронтенд, чаще WebAssembly пробуют в личных небольших проектах. Докладчики, которых мы пригласили, смогут не просто в общих чертах рассказать о том, как начать использовать WebAssembly. Это глубокие доклады, построенные на личном опыте, они покажут, что жизненного можно сделать на WebAssembly, и как его использовать в своих проектах.
Спикеры GolangConf
К отбору тем и спикеров программный комитет подходил очень строго. Большинство наших докладчиков известны в Go-сообществе, но в то же время есть и новые лица. Когда из раза в раз на конференциях выступают одни и те же люди, это немного скучно. Хочется видеть новый взгляд, новые вызовы, новых спикеров. Нам удалось привлечь свежую кровь, и у них тоже очень интересные доклады, построенные на практическом опыте. Например, я с нетерпением жду доклад Ксении Якиль.
Едва ли не жестче был отбор иностранных спикеров, потому что заявок от них было много. Но мы знаем, что нашей аудитории может быть тяжело слушать много докладов на английском. 8-9 докладов за день — это и так большой объем новой информации, а когда из-за языка нужно затрачивать дополнительные усилия, чтобы вникнуть, становится совсем тяжело. Поэтому англоязычных докладов у нас всего три, но они самые-самые.
На самом деле, мировое Go-сообщество очень дружное и готово делиться опытом. Мы получили очень хороший отклик, когда открыли Call for Papers на PaperCall.io и объявили о конференции в международном Go-сообществе в Slack и Twitter. Правда, мы не успели привлечь суперзвезд мирового сообщества, их календарь мероприятий расписан на год вперед. Но зато у нас есть далекоидущие планы на следующий GolangConf.
В этом году у нас уже будет 21 классный доклад. Здесь расскажу о нескольких из них, а за полной информацией и расписанием заходите на сайт конференции.
Applied Go code similarity analysis
Искандер Шарипов (ВКонтакте) в прошлом работал над Go-компилятором и сторонним тулингом для него — статических анализаторов и утилит для рефакторинга. Сейчас планирует портировать многие инструменты, созданные для Go, в экосистему PHP. Об этом колоссальном опыте Искандера наверняка можно будет поспрашивать в кулуарах, а его доклад будет в первую очередь интересен тем, кто задумывается над вопросами обработки кода на Go:
- Как находить дублирующиеся функции и методы в вашей кодовой базе.
- Как избежать переизобретения функционала стандартной библиотеки Go.
- Как упростить анализ Go-кода на синтаксическом уровне.
Ключом к ответам на эти вопросы является нормализация Go-программ, и именно о ней и пойдет речь в докладе. Но не на словах, а на деле— рассмотрим библиотеку для нормализации кода на Go и несколько её практических применений.
Get Going with WebAssembly
Контрибьютор в Go Johan Brandhorst приедет в Москву, чтобы познакомить нас с WebAssembly и показать, как начать работу с WebAssembly и Go. WebAssembly уже почти два года поддерживается в браузерах и в качестве эксперимента включен в Go, начиная с версии 1.11. Может быть, он даже сможет заменить JavaScript в браузере и стать тем самым языком, код на котором может работать где угодно.
После этого доклада начинающие гоферы узнают, как использовать Go с WebAssembly, что эти технологии позволяют делать сейчас, а что станет возможным в будущем.
Масштабируем WebSocket-соединения на Go
В экосистеме Go существует несколько замечательных WebSocket-библиотек. Казалось бы — бери и делай свой проект, взяв за основу готовое решение. Однако, несколько насущных проблем придется решить самостоятельно, например:
- как масштабировать подключения пользователей;
- что делать с теми пользователями, которые не могут подключиться по WebSocket;
- как управлять временем жизни постоянного соединения;
- что делать с потерей сообщений при кратковременных дисконнектах пользователя.
И наконец — придется самостоятельно писать свой протокол поверх WebSocket и клиентов, которые его реализуют на всех современных клиентских платформах. Готовы ли вы на такое?
Эти вопросы уже решает opensource-библиотека Centrifuge, которая добавляет множество полезных фич поверх Gorilla WebSocket для построения real-time-приложений. Автор этого проекта, Александр Емелин, выступит на GolangConf. Александр научит приемам и практикам, которые позволяют эффективно работать с большим количеством соединений, и расскажет, как эти подходы работают в продакшн Мессенджера Авито.
Как ошибиться с конкурентностью в Go
Мы знаем (кто еще не знает, к этому докладу уже узнает), что Go предоставляет мощные и гибкие инструменты для написания конкурентных программ, но не диктует строгих правил их использования. Статьи и доклады часто дают противоречащие друг другу рекомендации, как передавать работу в горутины, как их завершать, как обрабатывать ошибки…
Гофер со стажем, организатор митапов и конференций, ведущий воркшопов и подкастов Алексей Палажченко (Percona) поможет разобраться в этих вопросах. Алексей приведет реальный пример API, который по ходу доклада постепенно будет улучшаться и на котором мы будем исследовать возможные задачи и проблемы.
Go делать игры!
Наверное, многие из нас увлеклись программированием, потому что мечтали писать игры. Вот и Алексей Акулович занимается бэкендом сложных проектов ВКонтакте, но желание заниматься GameDev’ом не оставил, а удачно сочетает с разработкой на Go. Всем, кому хочется развеяться за написанием игрушки, не залезая в Unity/Unreal и прочие радости, пригодится этот доклад.
Алексей покажет нам 2D- и 3D-desktop/web-фреймворки, возможности handmade-разработки и варианты расширения функциональности без перекомпиляции основного бинарника. Речь пойдет о ситуации в 2019 году, так что современные версии и тенденции прилагаются.
Go for frontend
А если вы давно мечтали писать интерфейсный код исключительно на GO, приходите на доклад Aarushi Kansal(Tier). Традиционно, классная визуализация и реализация творческих, на стыке с искусством, идей — прерогатива JavaScript-разработчиков, но Ааруши расскажет, как на Go создавать приложения и графику, работающие в браузере. После этого доклада вы поверите, что можно полностью раскрыть свой потенциал во фронтенд-разработке, не отказываясь от любимого языка.
Как написать операционную систему на Go
Андрей Смирнов — автор многих opensource-проектов и мастер-класса «Разработка надёжных высоконагруженных систем». Его доклад на GolangConf в первую очередь предназначен для тех, кто пользуется Kubernetes. Андрей расскажет о процессе разработки операционной системы Talos и о том, чего удалось добиться за счет использования Go. Например, сборка операционной системы и цикл обратной связи через CI занимает не более 5 минут.
Увидим, как простые и понятные концепции конкурентного программирования в Go позволяют организовать запуск фаз инициализации ОС параллельно и при этом в корректной последовательности. Обсудим, когда для проверки системы можно обойтись простыми unit-тестами и как выглядят интеграционные тесты для ОС. Андрей говорит, что в этой нише Go оказался практически в монопольном положении, узнаем, почему и чем это удобно для нас.
Интеграционные тесты на Go
Кстати, об интеграционных тестах. Они, несмотря на доклады об их пользе и даже большое количество мемов, все еще не получают должного внимания. Или это только у гоферов так, и у нас просто unit-тестирование заложено в генах? Как бы то ни было, в Badoo задались целью написать интеграционные тесты на Go, и у них это отлично получилось. Ксения Якиль расскажет, как. Как реализовать для интеграционного тестирования фреймворк на Go, какие сложности попадутся на пути и каких результатов можно достичь. Вот увидите, писать интеграционные тесты на Go реально и не так больно.
Как и зачем писать читаемый код
Независимо от того, на каком языке вы пишите, случается, что старый код оказывается проще переписать, чем отрефакторить. Печальнее всего, когда это ваш собственный код, с любовью написанный «всего лишь» несколько лет назад.
Григорий Петров (Evrone) любит нейрофизиологию и докапываться до причин. Его доклад на GolangConf — это практическая инструкция по борьбе со сложностью кода: откуда она берется, почему ее нельзя убрать и как с ней бороться. Григорий расскажет про декомпозицию, установку «маяков» разными способами, приемы написания полезных идентификаторов, создание капканов с помощью типов. До «пишите функции покороче, а имена идентификаторов понятнее» не опустимся :)
А в финальной части доклада обсудим «gradual»-подход к написанию читаемого кода, который не ограничивается знакомым вам по динамическим языкам «gradual typing».
Почему Golang такой странный
И вот тут, под вечер, когда мы уже обсудим многие вопросы разработки на Go, окончательно убедим сомневающихся переходить на Go, Филипп Кулинподнимет вот какую тему: «Почему Golang такой странный» и обещает все разложить по полочками и рассказать, как все было на самом деле и куда исчезли дженерики.
Митапы и экспертная зона
Может быть, вы заметили, что среди докладчиков нет ни одного члена программного комитета, хотя он состоит из активистов сообщества, которых вы точно знаете, если были на Go-митапах и конференциях. Мы занимались другим: отбирали темы, помогали спикерам, готовили дополнительные активности.
Членов программного комитета в дни конференции можно будет найти и расспросить в специальной экспертной зоне. Часто у новичков в Go бывают вопросы, которые почему-то не решаются, с которыми по непонятным причинам получается затык, и даже StackOverflow никак не помогает. На конференции у нас будет отдельный стенд, на котором можно будет задать такие вопросы членам программного комитета и активистам Go-сообщества. Приходите со своими вопросами, и мы вместе попробуем их решить!
GolangConf входит в семейство конференций Онтико, а значит отдельное помещение будет выделено под митапы — небольшие узкотематические встречи группы единомышленников. Это может быть и мастер-класс или воркшоп, но главное в нем в любом случае будет общение специалистов, обсуждение болей и совместный поиск решения. Каждый участник может попробовать организовать свой митап или выступить в роли члена программного комитета и проголосовать за предложения других участников.
И, конечно, нетворкинг как неотъемлемая часть любой конференции в нашем случае будет особенно полезен, так как на конференции все участники будут так или иначе заинтересованы в одной теме — Golang. Вечером после основной программы нас, конечно же, ждет афтепати и возможность пообщаться в более неформальной атмосфере.
GolangConf ровно через неделю 7 октября в Инфопространстве, с нетерпением ждем встречи Go-сообщества. Присоединяйтесь!