Истовый инженер
7.38K subscribers
194 photos
3 videos
284 links
Профессионалы о технологиях

Больше статей, интервью и лекций – на портале engineer.yadro.com
Download Telegram
​​📍5 способов писать эффективный код на Go: от названий переменных до архитектуры

Эффективная разработка — это далеко не всегда про планирование спринтов и оценку задач. Часто эффективность написания кода зависит от процессов, налаженных инженерами и руководителями команд. В каждом языке программирования есть свои приёмы, используя которые можно писать код более продуктивно.

В новом материале эксперты компании YADRO — руководитель группы разработки подсистем Геннадий Ковалёв и эксперт по разработке ПО Даниил Подольский — обсудили способы повысить эффективность написания кода в команде Go-разработчиков. Авторы уверены, что ультимативный синтаксис и чистая архитектура помогают командам быстрее и слаженнее решать задачи, и доказывают это на практических примерах.

Из статьи вы узнаете:

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

Некоторые тезисы дискуссионные — например, авторы по-разному относятся к вопросу нейминга переменных и комментариям в коде. Возможно, у вас есть альтернативное мнение и иные практики повышения эффективности разработки. Расскажите, каких правил придерживаетесь вы?

Читать статью

#программы #языкипрограммирования #go
Please open Telegram to view this post
VIEW IN TELEGRAM
📄Работа над ошибками: пишем кастомный инструмент для обработки ошибок на Go

Система хранения данных — сложное устройство, и, если при работе произошла ошибка, оно должно своевременно и понятно сообщать об этом пользователю. В большинстве веб-сервисов для этого используют баннер с надписью «Что-то пошло не так», но такой способ уведомления не отражает суть ошибки, а в его основе — сложный код, с которым неудобно работать инженеру.

Александр Лырчиков, старший инженер по разработке ПО в YADRO, рассказывает, как он и его команда искали оптимальное решение для обработки ошибок на Go, которое подойдёт для пользователя, программиста и машины, и почему написали собственный инструмент — Terror, сокращение от tatlin-error. Из материала вы узнаете:

Почему стандартное сообщение из библиотеки Go не решает проблему пользователя;
Какие решения рассматривали разработчики и почему они не подошли;
Какие требования создатели Terror предъявили к кастомному решению и удалось ли учесть их все.

Александр подробно описал реализацию решения и оставил инструкции для тех, кто захочет создать аналог Terror в собственном проекте.

Читать статью

#программы #go #системыхраненияданных
Please open Telegram to view this post
VIEW IN TELEGRAM
​​🎤Первый в сезоне митап по Go в Санкт-Петербурге: построим PaaS без хардкода и научимся отлаживать приложение в проде

25 сентября пройдёт митап по разработке на Go, на котором выступят инженеры из YADRO и Avito.Tech. Встреча состоится в «Петроконгрессе», а участники из других городов смогут присоединиться к онлайн-трансляции. Регистрируйтесь, чтобы забронировать место на площадке или получить ссылку на стрим на одной из трёх платформ.

Митап откроет Даниил Подольский, эксперт по разработке ПО, глава программного комитета GolangConf и активист Go Spb. Кто выступит на встрече:

Артемий Андрианов, Go-разработчик в платформенной команде Common YADRO Platform, расскажет, как делал безопасную «песочницу»‎ для настройки параметров платформенного сервиса с помощью CEL;
Богдан Бондаренко, Go-разработчик в телеком-направлении в YADRO, объяснит, как Ginkgo и Gomega упрощают написание тестов и делают их выразительнее;
Павел Агалецкий, ведущий инженер в AvitoTech, поделится подходами, которые помогут с отладкой, когда приложение уже в проде.

Онлайн-участники смогут задавать вопросы спикерам в комментариях к трансляции. Для офлайн-гостей подготовили демозону с «железом» для ЦОД и телеком-операторов, код для которого пишут Go-разработчики из YADRO, а также выставку open source-инструментов из сообщества Go SPB.

Зарегистрироваться на митап

#программы #go #ивент
Please open Telegram to view this post
VIEW IN TELEGRAM
​​📄Упражнения для хорошей памяти: три способа оптимизировать работу с памятью на Go с помощью memory pools

Когда программа испытывает пиковую нагрузку, она потребляет много памяти. В языке Go это «замечает» Garbage Collector, останавливает программу и освобождает память. Сервис делает свою работу, но она влияет на эффективность программы, поэтому часто возникает необходимость снизить нагрузку на GC.

Go-разработчик в YADRO Александр Иванов столкнулся с проблемой: когда по сети приходило много данных, GC фиксировал пиковое потребление памяти, останавливал программу, освобождал память и продолжал выполнять программу.

Это влияло на эффективность работы, поэтому инженер решил уменьшить количество потребляемой памяти в моменты пиковой нагрузки и протестировал несколько способов, как это сделать. В этом материале он собрал результаты поисков и рассказал, для каких проектов подойдёт та или иная реализация memory pool. Вы узнаете:

О принципах, по которым язык Go работает с памятью;
Как завести Channel Pool, поместить память в sync.Pool или создать memory arena;
Какие бенчмарки получились у каждого решения по итогам тестов;
Что стоит учесть в разработке memory pool для вашего проекта и как выбрать подходящую реализацию;
Какая реализация в итоге помогла решить проблему с пиковыми нагрузками.

В конце статьи найдёте ссылку на репозиторий с кодом, где автор сравнивает разные memory pools.

Читать статью

#программы #go
Please open Telegram to view this post
VIEW IN TELEGRAM
📍Go-митап в Нижнем Новгороде: разглядываем монструозный Makefile, пишем плагин для Redpanda/Connect и возвращаемся к монолиту

12 декабря в 18:00 в нижегородском отеле AZIMUT начнётся заключительный в этом году митап YADRO. К экспертам компании присоединятся спикеры из Ви.Tech, Wildberries и активные участники программного комитета GolangConf.

Откроют митап ведущий инженер по разработке ПО в YADRO Руслан Барсуков и технический менеджер Wildberries Виталий Левченко. Они расскажут о планах развития Go-сообщества в Нижнем Новгороде. На смену им придут эксперты с тематическими докладами:

▪️Генерация стабов для тестирования микросервисов, связанных по gRPC — Кирилл Шувалов, разработчик телеком-дивизиона YADRO;
▪️Как стримить данные из Snowflake в Couchbase, или зачем писать свой плагин для Redpanda/Connect — Александр Ванюшкин, разработчик Weborama, автор курса по программированию на Go в Яндекс Лицее;
▪️Собираем проект на Go: от Make до Mise — Даниил Подольский, эксперт по разработке ПО и один из лидеров внутреннего Go-сообщества YADRO, глава программного комитета GolangConf;
▪️Страх и ненависть: почему мы пилим монолит без использования микросервисов — Кирилл Кузин, старший Golang-разработчик Ви.Tech.

Офлайн-гости смогут познакомиться с решениями YADRO для дата-центров и телеком-операторов, поучаствовать в технических интерактивах и получить призы от компании. А те, кто не доедет до Нижнего, — задать вопросы спикерам в чате онлайн-трансляции.

Зарегистрироваться на митап ➡️

Для тех, кто хочет больше узнать о Go прямо сейчас, подготовили подборку статей «Истового инженера»:

▪️5 способов писать эффективный код на Go
▪️Простые правила, которые помогают писать на Go без побочных эффектов
▪️Три способа оптимизировать работу с памятью на Go с помощью memory pools
▪️Строим пул потоков на С и Go

#программы #go #митап

@ultimate_engineer
Please open Telegram to view this post
VIEW IN TELEGRAM
🔖Go-митап в Москве: подключайтесь онлайн к первому митапу гоферов в этом сезоне

13 марта приглашаем на митап для гоферов: обсудим изменения в Go 1.24 и их влияние на разработку, разберём сложные темы конкурентности в языке и пакета unsafe.

Что в программе

▪️От мьютексов к lock-free: разберём, почему мьютексы не так просты, как кажутся, и когда стоит переходить на lock-free структуры — Илья Уваркин, инженер-программист в департаменте разработки унифицированной системы хранения данных в YADRO;
▪️Погружение в unsafe: узнаем, когда стоит (и не стоит) использовать пакет unsafe, как оптимизировать структуры и работать с промышленными протоколами — Нина Пакшина, Go-разработчик;
▪️Дискуссия «Go 1.24: куда движется язык?». Эксперты из AvitoTech, Yandex и YADRO обсудят слабые указатели, механизм отслеживания зависимостей, новый пакет crypto/mlkem и другие важные изменения в Go 1.24.

Где и когда

Митап пройдёт 13 марта в Москве в Loft Megapolis Hall (Варшавское ш., 33, стр. 12). Начало в 19:00, сбор гостей — с 18:00. Сейчас можно присоединиться к онлайн-трансляции: зарегистрируйтесь, чтобы получить ссылку.

Зарегистрироваться на митап ➡️

Если вы хотите узнать больше о Go прямо сейчас, читайте статьи «Истового инженера»:

5 способов писать эффективный код на Go;
→ Простые правила, которые помогают писать на Go без побочных эффектов;
→ Три способа оптимизировать работу с памятью на Go с помощью memory pools;
→ Строим пул потоков на С и Go.

#программы #go #митап

@ultimate_engineer
Please open Telegram to view this post
VIEW IN TELEGRAM
​​📖Пополняем список полезных источников: что почитать и посмотреть про конкурентность в Go

Разработчики на Go часто слышат, что конкурентный код в этом языке создаётся легко и «почти бесплатно» — достаточно добавить go перед вызовом функции. Но удобство может быть обманчивым: без грамотного управления синхронизацией и каналами система рискует превратиться в хаос. Чтобы этого избежать, важно изучить проверенные статьи и книги про механизм конкурентности.

Владислав Белогрудов, эксперт по разработке ПО в YADRO, собрал такие материалы в одной статье. В ней — ресурсы, которые помогут разобраться, как в Go работать с горутинами и каналами без хаоса и дедлоков.

Из статьи вы узнаете:

Почему конкурентность — это не параллелизм и как избежать распространённых ошибок;
Как управлять синхронизацией и обработкой ошибок в конкурентных программах;
Каким образом можно эффективно использовать горутины, каналы и паттерны конкурентности.

Читать

#go #языкипрограммирования

@ultimate_engineer
Please open Telegram to view this post
VIEW IN TELEGRAM