Category : golang

golang
Паттерн Identity Map в Golang

Привет, Хабр!Identity Map — это паттерн проектирования, предназначенный для управления доступом к объектам, которые загружаются из базы данных. Основная его задача — обеспечить, чтобы каждый объект был загружен только один раз, что предотвращает излишние запросы к базе данных и повышает производительность приложения.Identity Map можно реализовать в Golang и с помощью него можно управлять объектами более эффективней, сокращая задержки и нагрузку на сервера БД.Немного про Identity Map Паттерн Id…

  • понедельник, 29 апреля 2024 г. в 00:00:08
golang
Остаться в живых (keepalive) feat. HTTP/2, Go & gRPC-Go

Привет, Хабр!) Меня зовут Ильяс. В этой статье мы разберём известную идею — keepalive в межсервисном взаимодействии, которая спасла уже не одну компанию в трудное время :). Но чтобы добавить интереса, мы разберём, какие проблемы в keepalive принесли современные технологии (ведь что может пойти не так с этой простой идеей?). Поэтому в статье мы рассмотрим механизмы, которые позволяют проверять стабильность соединения между клиентом и сервером в случае, когда обычные TCP keepalive из-за сложности…

  • воскресенье, 28 апреля 2024 г. в 00:00:08
golang
Применение чистой архитектуры в Go

Одна из проблем, с которыми мне часто доводится сталкиваться в различных софтверных проектов — это сильная связанность кода, при которой в него так сложно вносить даже простые изменения, не провоцируя нежелательных побочных эффектов. Дело в том, что программисты склонны сосредотачиваться на разработке конкретных фич, не задумываясь о том, как база кода станет развиваться в будущем. Также не все учитывают, что применяемые сегодня библиотеки и фреймворки могут постепенно сойти со сцены спустя н…

  • воскресенье, 28 апреля 2024 г. в 00:00:08
golang
Бойлерплейт как инструмент стандартизации Go-проектов

Трудности в процессе разработки на Go — частая история. Чтобы их преодолеть, нам даже пришлось писать собственный бойлерплейт. Хотя казалось бы — всё уже есть, но нет, нам понадобилось имплементировать собственную хардкорную штуку. Расскажем, почему и зачем.Привет, Хабр! Я Александр Калошин из компании Last.Backend. Это статья по мотивам совместного доклада на GolangConf 2023 моего и Константина Пастор-Гертье.Написали собственный Kubernetes и PagerDutyКомпания Last.Backend появилась в 2014 году…

  • пятница, 26 апреля 2024 г. в 00:00:13
golang
Fuzzing-тестирование. Практическое применение

Привет, Хабр! Меня зовут Никита Догаев, я Backend Team Lead в команде Контента на портале поставщиков Wildberries. Мы отвечаем за карточки, которые каждый день испытывают на прочность сотни тысяч продавцов из разных стран.В статье поделюсь своим опытом применения фаззинга для нагрузочных и интеграционных тестирований. Расскажу про генерацию текстов на армянском языке, тестирование SQL-запросов, а также можно ли использовать фаззер и unit-тестирование бок о бок, и какие баги нам удалось найти. Н…

  • пятница, 26 апреля 2024 г. в 00:00:13
golang
Пишем поиск семантически похожих текстов (или товаров) за полчаса на Go и Postgres (pgVector)

Казалось бы, в посгресе и так есть неплохой полнотекстовый поиск (tsvector/tsquery), и вы из коробки можете проиндексировать ваши тексты, а потом поискать по ним. Но на самом деле это не совсем то, что нужно — такой поиск работает лишь по чётким совпадениям слов. Т.е. postgres не догадается, что "кошка гонится за мышью" — это довольно близко к "котёнок охотится на грызуна". Как же победить такую проблему? TLDR: Преобразовываем наши тексты в наборы чисел (векторы) при помощи AP…

  • среда, 24 апреля 2024 г. в 00:00:10
golang
Использование миграций баз данных в Go

Недавно мы столкнулись с необходимостью найти библиотеку для удобной работы с базами данных. В нашем проекте команда решила не использовать ORM (Object-Relational Mapping), а вместо этого применить миграции. Так как я работал только с ORM, мне, как и автору статьи, было мало знакомо понятие миграций баз данных. В поисках информации о миграциях и популярных решениях, я наткнулся на эту статью. Перевод статьи я оставил ниже. Возможно, она будет вам полезна. Буду признателен, если вы сможете поде…

  • вторник, 23 апреля 2024 г. в 00:00:06
golang
Как мы ускорили Golang-тесты на CI

Привет, Хабр! 👋 Меня зовут Александр, я занимаюсь разработкой ПО. В этой статье я расскажу о том, как желание улучшить свой рабочий процесс CI помогло ускорить все golang-пайплайны в PaaS СберМаркета.В СберМаркете микросервисная архитектура. В качестве CI/CD используется GitLab. На CI гоняются вполне типовые задачи по тестированию, различным проверкам, сборкам образов и т. д. Часть job предоставляется самим сервисом, часть — внедряется в пайплайн сервиса нашей платформой.Во всех golang-сервиса…

  • среда, 17 апреля 2024 г. в 00:00:16
golang
Сказ о Python или почему его лучше не выбирать новичкам

Всем привет, я Full-stack программист с опытом командной разработки около полугода, а также опытом в создании небольших и средних проектов в районе 3-х лет. Тут я хочу внести ясность для новичков в IT, которые мечутся из стороны в сторону, пытаясь и язык повостребованнее найти, и чтобы попроще учиться, ну и на галеру протиснуться.Простота обманчиваМожно подумать, что Python очень простой язык, скорость написания кода х5, он вроде как нужен, вот, смотри, какие-то графики, я прав, а вот ты ошиба…

  • среда, 17 апреля 2024 г. в 00:00:16