Все потоки
Поиск
Написать публикацию
Обновить
93.94

Go *

Компилируемый, многопоточный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Flamingo, Go ahead! или Как реализовать DDD в Go?

Время на прочтение7 мин
Количество просмотров5.4K

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

При проектировании нового программного решения была поставлена задача выбрать язык и фреймворк. По результатам проведенного исследования был выбран язык Go, как обеспечивающий высокую производительность вместе со скоростью разработки, а также фреймворк Flamingo для реализации принципов Domain Driven Design. Всем, кому интересно узнать, что же за птица такая Flamingo, приглашаю под кат.

Концепция предметно-ориентированного проектирования, она же DDD (Domain Driven Design), описанная Эриком Эвансом, активно используется при построении информационных систем для предприятий. Не стоит пересказывать основные принципы DDD, благо, помимо книги самого Эванса, они описаны в большом количестве статей. Нам важно другое. Эти принципы гораздо проще реализовать в своей информационной системе, если они поддерживаются фреймворком.

Для .Net, например, есть ASP.NET Boilerplate (https://aspnetboilerplate.com/), полностью реализующая все компоненты DDD – Entity, Value, Repository, Domain Service, Unit of Work и еще много всего. Но мы для одной из своих внутренних информационных систем используем Go. 

Мы решили использовать фреймворк Flamingo, распространяемый под лицензией MIT. Он разработан немецкой компанией AOE GmbH в 2018 году и к настоящему моменту “дорос” до версии 3.4 и до 331 звезды на Github. Flamingo используется в информационных системах аэропортов Окланда, Франкфурта и Хитроу, а также в T-Mobile.

Читать далее

«Видишь гофера? А он есть». Чем живут русскоязычные golang-разработчики

Время на прочтение1 мин
Количество просмотров14K

Если ты пишешь на Go, то владеешь супервостребованной технологией. Добро пожаловать в клуб! Нам в СберМаркет Tech интересно узнать, как учатся и делятся опытом русскоязычные гошники, какой стек используют и какие задачи решают на работе. Думаем, о жизни Golang-комьюнити будет интересно узнать и вам.

Уделите нам 10 минут, ответив на 14 простых вопросов, а мы поделимся результатами: найдем в результатах самые неочевидные и интересные факты, а также составим по вашим ответам список актуальных ресурсов, где прокачиваются Golang-разработчики.

Пройти опрос

Как починить QA-отдел, или Ещё один переезд в Go

Время на прочтение11 мин
Количество просмотров7.2K

Привет, Хабр.  

Меня зовут Саша, я занимаюсь разработкой инструментов мониторинга тестирования, но по факту ещё и исполняю роль руководителя направления QA в домене Маркетплейса, ответственном за создание всех карточек товаров на Ozon.  

Если вкратце, наша задача заключается в сопровождении селлера от этапа загрузки файла Excel, в котором есть сто тысяч пар носков, до момента, когда все эти носки окажутся на витрине Ozon. Очевидно, что мы занимаемся не только парсингом экселек — у нас есть и highload-сервисы раздачи контента, несколько стейт-машин, системы с мастер-данными всего Озона, и немалый отдел ML, так что мы регулярно сталкиваемся со сложными и нестандартными задачами, подход к решению которых, впрочем, мы всё-таки пытаемся стандартизировать. 

За последние полтора года, как наше направление отделилось от основной разработки Маркетплейса, QA-отдел вырос в пять раз, с 5 до 25 QA-инженеров. О том, как мы решали вопросы масштабирования команды и плакали пытались справиться с legacy-наследием в доставшихся нам процессах, подробнее расскажу под катом. 

Читать далее

Под капотом у компилятора Go: добавление нового оператора в Go — часть 1

Время на прочтение11 мин
Количество просмотров11K

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

Мы собираемся изменить компилятор Go, добавив новую (условно) языковую фичу, и собрать модифицированный компилятор, чтобы ее опробовать.

Читать далее

База по шардированию базы

Время на прочтение10 мин
Количество просмотров67K

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

Мы на пальцах рассмотрим что такое шардирование, как оно помогает в масштабировании и даже рассмотрим тот самый этап «роста».

Читать далее

The Best Golang framework: no framework?

Время на прочтение9 мин
Количество просмотров14K

Вольный перевод статьи на ресурсе threedots.tech от Robert Laszczak - главного инженера в SlashID, сооснователя Three Dots Labs и создателя популярной Golang-библиотеки Watermill.

На протяжении некоторого времени я занимался руководством группы Go-разработчиков и одним из самых распространенных вопросов от начинающих специалистов был - "Какой фреймворк мне следует использовать?".

Читать далее

Проблема grpc-gateway и как ее можно решить

Время на прочтение5 мин
Количество просмотров5.5K

Модификация кода сгенерированного с помощью grpc-gateway для возможности использования middleware.

Читать далее

Hashmap(map) по версии Golang вместе с реализацией на дженериках

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров38K

Привет. Сегодня рассмотрим такую интересную структуру данных как hashmap, а именно ее реализацию в Go. Вкратце разберем что такое hashmap, как это выглядит под капотом Go 1.19. Посмотрим отличия реализации с Java и Python. Реализуем hashmap из под капота с помощью дженериков.

Читать далее

Библиотека алгоритмов на графах на языке Go. Часть 1

Время на прочтение5 мин
Количество просмотров11K

Приветствую тебя, дорогой читатель! Мне 21, я студент и младший Go-разработчик, а это - мой первый пост на Хабре. Недавно в компании с одногруппником мы решили взяться за амбициозный проект и я решил, что он, как никакой другой, подходит под первую статью. Проект заключается в создании библиотеки, содержащей основные алгоритмы на графах.

Читать далее

Приглашаем на Ozon Tech Community Go Meetup

Время на прочтение2 мин
Количество просмотров2.6K

UPD: приложили записи докладов и слайды


Всем салют!

Давно не виделись. Я Леонид Могучев, тимлид группы тарификации Ozon.

Go is love, Go is life. Go — целевая платформа разработки, используемая в Ozon Tech. На Go у нас написано более 1000 микросервисов, обеспечивающих работу сайта, склада, систем логистики. 

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

А вот и тот анонс поближе, который просили в комментариях. Ждём всех в гости на открытый Ozon Tech Community Go Meetup 9 декабря в 18:00 в Москве.

Читать далее

Golang-дайджест № 23 (1 – 30 ноября  2022)

Время на прочтение3 мин
Количество просмотров4.5K

Свежая подборка новостей и материалов

Интересное в этом выпуске

Руководство по стилю Go Style, выпущен Goland 2022.3, видео с конференции GopherCon 2022

Читать далее

Gitea + Drone + Nginx + Portainer. Пошаговое руководство по деплою аналога github на своём железе

Время на прочтение8 мин
Количество просмотров21K

В данном туториале я расскажу вам как можно задеплоить gitea на своём железе с использованием docker-compose подключить drone, для возможности автоматизации тестирования и доставки собственных приложений, настроить reverse-proxy через nginx для доступа через сеть и включить portainer для мониторинга запущенных контейнеров.

Читать далее

Улучшенный benchstat для оптимизирующих гоферов

Время на прочтение5 мин
Количество просмотров3.3K

Привет!


Если вы писали бенчмарки и пытались понять, что там ускорилось и на сколько, то наверняка вы пользовались утилитами вроде benchstat.


Мне очень нравится эта утилита, но временами я понимаю, что некоторые её особенности работают против меня. Сегодня я расскажу вам о своей обёртке над benchstat, которая добавляет улучшения, полезные в моей работе.


Читать дальше →

Ближайшие события

Парсинг XML в Golang

Время на прочтение10 мин
Количество просмотров24K

Актуальность XML в 2022 году была бы под вопросом, но все еще остается много legacy систем, которые могут предоставлять данные в этом формате, поэтому нам приходится с ним работать. XML популярен в travel индустрии. Например, GDS (международные системы бронирования, более подробно можно почитать в википедии) или информационная система Darwin ассоциации железнодорожных транспортных компаний Великобритании активно используют его. Поэтому, я надеюсь, что эта статья будет кому-то полезна. В ней рассмотрена пара подходов к парсингу xml в Golang: обычный и потоковый, пользовательский парсинг поля и работа с различными кодировками. Мы будем использовать пакет encoding/xml из стандартной библиотеки. Если вы уже работали c encoding/json, то будет много похожего, но некоторые различия все же есть.

Читать далее

Введение в DDD: когда микросервисов на Go недостаточно

Время на прочтение8 мин
Количество просмотров7.5K

Микросервисная архитектура помогает строить гибкие и масштабируемые приложения. Однако в случае бессистемного использования этого подхода вы довольно быстро столкнётесь с разочарованием и неконтролируемыми сложностями. Избежать проблем помогает Domain-Driven Design (DDD) — предметно-ориентированное проектирование. В статье расскажем о принципах его работы, а также разберём основы стратегических паттернов в Golang. 

Читать далее

Domain Fronting. версия 1.3

Время на прочтение6 мин
Количество просмотров5.1K

В данной статье представляется новый взгляд на старую и знакомую заядлым пентестерам тему как DomainFronting. Тем более, что после недавних нововведений в протокол TLS v1.3 от компании Cloudflare эта избитая тема заиграла новыми красками.

Читать далее

VK Cup: место встречи чемпионов

Время на прочтение2 мин
Количество просмотров3.1K

Привет, Хабр! Я к вам с хорошими новостями: 28 ноября стартовала регистрация на чемпионат VK Cup! В этом году он посвящён только разработке (но не расстраивайтесь — дизайнерский трек мы перенесли в программу чемпионата VK Design Cup).

Классическое олимпиадное программирование пройдёт на площадке Codeforces — регистрируйтесь. К остальным трекам – мобильной разработке, машинному обучению и разработке на Go и JavaScript можно присоединиться на платформе All Cups.

Все полезные подробности о чемпионате — уже восьмом — читайте под катом.

Читать далее

Пишем анонимный мессенджер с нуля

Время на прочтение39 мин
Количество просмотров28K

Приключение на 20 минут.

Читать далее

Рассматриваем под лупой отладчик Delve для Go-разработчиков

Время на прочтение6 мин
Количество просмотров11K

Отладка не должна быть частью разработки, потому что она непродуктивна и отнимает много времени. В идеале код нужно сразу делать чистым, понятным и покрывать тестами. Но хотя современные подходы к разработке ПО не подразумевают дальнейшей отладки, мы каждый день продолжаем сталкиваться с унаследованным кодом, который может быть не покрыт тестами, быть сложным и запутанным. И в результате нам всё же приходится заниматься этим неблагодарным делом.

Сегодня есть множество IDE, поддерживающих работу с Go и позволяющих отлаживать приложения. На текущий момент для Go представлены два отладчика: GDB (но он не поддерживает многие фичи языка, например Go-рутины) и Delve. Многие IDE используют последний как дефолтный отладчик. И в этой статье я расскажу о возможностях Delve: о том, что умеет сам отладчик, а не что нам предоставляет IDE.

Читать далее

Полезные ресурсы для погружения в Go: выбор сотрудников Selectel

Время на прочтение4 мин
Количество просмотров20K

Попросили коллег порекомендовать ресурсы — подкасты, ютуб-каналы, книги, блоги и GitHub-репозитории — для изучения языка программирования Go. Сохраняйте подборку в закладки: пригодится и начинающим, и опытным специалистам. А также делитесь своими вариантами в комментариях.
Читать дальше →

Вклад авторов