Category : golang

golang
Как начинать проект на Go в 2023 году

Когда-то я написал статью о том, как начинать проект на Go в 2018 году. С тех пор многое изменилось, и я захотел написать обновлённую версию статьи. В ней я расскажу всё, что нужно новичку, чтобы приступить к работе с Go.Установка/настройкаПервым делом нужно скачать и установить Go. Рекомендую всегда устанавливать его с самого вебсайта Go https://golang.org/ и выполнить инструкции для соответствующей операционной системы. За исключением релиза Go 1.18 (в который включены дженерики), у меня ник…

  • среда, 26 июля 2023 г. в 00:00:16
golang
Добавляем Starlark в приложение на Go

Жаворонок, картинка утащена с ВикипедииЧто за птица?Starlark (ранее известный как Skylark) - питоноподобный язык, изначально разработанный для системы сборки Bazel, со временем выбравшийся за её пределы через интерпретаторы для Go и Rust.Язык располагает к использованию в роли инструмента конфигурации, однако, благодаря хорошо написанному интерпретатору на Go и детальному описанию спецификации, его можно использовать в виде встроенного в приложение языка программирования - например, когда вы х…

  • вторник, 25 июля 2023 г. в 00:00:25
golang
Как построить систему, способную выдерживать нагрузку в 5 млн rps

Всем привет! Меня зовут Владимир Олохтонов, я руковожу командой разработки в отделе Message Bus, который является частью платформы Ozon. Мы занимаемся разработкой самых разных систем вокруг Kafka, etcd и Vault. В этой статье я расскажу о том, как мы строили линейно масштабируемую gRPC-прокси перед Kafka, способную обслуживать миллионы запросов в секунду, используя Go.Пруфы :)У нас довольно крупный кластер. Он состоит из 75 брокеров, управляет 30 000 партиций, а рейт поднимается до 5 млн запрос…

  • пятница, 21 июля 2023 г. в 00:00:16
golang
Go: особенности написания конкурентных программ

Мотивация написания статьиВсем нам предстоит поддерживать уже существующий код, а также проводить ревью кода коллег. Иногда становится очень тяжело видеть некоторые паттерны, которые кажутся безобидными, но при некорректном использовании или после неосторожного рефакторинга могут привести к различным проблемам:утечке горутин и каналовповреждению целостности структур данныхпаникамтрудноуловимым багам в бизнес-логикесамому страшному - неутолимому желанию порефакторить код, который выглядит как т…

  • четверг, 20 июля 2023 г. в 00:00:15
golang
Криптография на Rust и немного FFI

Частичный перевод моей статьи с MediumНачнем с того, что эта статья как и большинство моих статей родилась в процессе разработки. В данном конкретном случае - разработки внешней крипто-библиотеки для генерации крипто-кошельков.Да, определенно. Я считаю, что приставка "крипто" любому словосочетанию придает привкус гигантской яхты дрейфующей где-то в Майами.В итоге, выбор упал на Rust потому что я уже работал с ним, и знаю, что crates.io изобилует всякими библиотеками для работы с разноо…

  • вторник, 18 июля 2023 г. в 00:00:19
golang
Простые правила, которые помогают мне писать на Go без побочных эффектов

Владислав Белогрудов, старший разработчикУспел поработать с роботами, телекомом, поисковиками. В YADRO разрабатываю драйверы для OpenStack и систем хранения данных, модули для Ansible и еще много-много всего.Роб Пайк сказал, что простое лучше, чем сложное. Я бы добавил: простое лучше, чем прикольное. Ведь Go спроектирован, чтобы писать программы в простом стиле. Сегодня я хочу поговорить про такие, казалось бы, очевидные вещи, как функции, интерфейсы и методы. Их особенности в Go. И правила, к…

  • пятница, 14 июля 2023 г. в 00:00:22
golang
Учимся разрабатывать REST API на Go на примере сокращателя ссылок

В этой статье мы напишем полноценный REST API сервис — URL Shortener — и задеплоим его на виртуальный сервер с помощью GitHub Actions. Говоря «полноценный», я имею в виду, что это будет не игрушечный проект, а готовый к использованию: мы выберем для него актуальный http-роутер, позаботимся о логах, напишем тесты: unit-тесты, тесты хэндлеров и функциональные, настроим автоматический деплой через GitHub Actions и др. Но важно понимать, что «готовый к продакшену» != «энтерпрайз». Кратко об…

  • пятница, 14 июля 2023 г. в 00:00:22
golang
Микросервисы в банке: на чем их лучше писать? Java/Kotlin, а может Go?

В июле в офисе РСХБ-Интех (технологической дочки Россельхозбанка) состоялся бесплатный митап для Java-разработчиков — RSHB Backend Dev Meetup. Обсудили Kotlin, Go, маппинг и разные аспекты бэкэнд-разработки. В числе докладчиков выступал Иван Кочергин, руководитель центра собственной разработки РСХБ-Интех. Иван более 10 лет занимается разработкой на Java, последние три года — на Kotlin. В своем докладе он сравнил, на чем лучше писать микросервисы в банке: Java, Kotlin или Go. Делимся расшифровк…

  • пятница, 14 июля 2023 г. в 00:00:21
golang
database/sql биндинги для YDB в Go

YQL — это SQL‑диалект, специфичный для базы данных YDB. YQL требует заранее объявлять имена и типы параметров запроса. Это обеспечивает высокую производительность и корректное поведение. В синтаксисе YQL параметры необходимо перечислять явно с помощью инструкции DECLARE. И этот нюанс YDB может быть неожиданным для пользователей традиционных баз данных.Кроме того, поскольку таблицы YDB находятся в структуре, подобной виртуальной файловой системе, их имена могут быть довольно длинными. Существуе…

  • четверг, 13 июля 2023 г. в 00:00:17