Если бы мы организовывали предновогодний корпоратив «здорового» гофера, он выглядел бы так. 12 декабря, в четверг, собираем Go-разработчиков в Нижнем Новгороде и онлайн, чтобы обсудить практики тестирования микросервисов на Go, историю распила монолита, которая привела к… монолиту, и работу с монструозным Makefile (ждем откровений Даниила Подольского). В качестве нетайных Сант выступят эксперты из Wildberries, YADRO, Ви.Tech и Weborama — спикеры и участники GolangConf. Чтобы почувствовать прибл…
Привет, Хабр! На связи команда разработки App.Farm — продукта, созданного в РСХБ‑Интех. Хотели бы представить вам цикл статей о нем.App.Farm — продукт по типу PaaS, необходимый для стандартизации процесса разработки бизнес‑приложений: от хранения исходного кода до запуска сервисов. Основные подсистемы платформы включают хранилище исходного кода и CI, хранилище артефактов, среду исполнения приложений, SSO, интеграционную подсистему, observability и т. д.Подробнее ознакомиться с компонентами можн…
Обработка заказов — это один из самых сложных аспектов в e-commerce, особенно когда речь идёт о микросервисной архитектуре. Большинство существующих систем используют хореографию для управления заказами, что сложно реализовать и часто приводит к беспорядку. Бизнес-требования разбиты на множество мелких задач, и обеспечить отказоустойчивость бывает трудно. В таких системах часто возникает низкая прозрачность, поиск дефектов может занять дни, а внедрение новой функциональности — месяцы. Проблему …
Всем привет! Меня зовут Андрей Волков, уже более семи лет я занимаюсь разработкой. За свою карьеру я также успел поработать в продуктовой разработке в России и на аутстаффе с российскими и западными заказчиками. Моим основным стеком был Symfony/PHP. Спустя несколько лет работы на фреймворке Symfony благодаря курсу «Продвинутый Go-разработчик» от Яндекс Практикума у меня получилось сменить стек и уйти на позицию PHP/Go разработчика в компанию Rambler.Обучающая игра: как пришла идеяЭто было ещё з…
Вы знаете, что обычные сетевые библиотеки Go начинают «тяжело дышать», если их нагрузить десятками тысяч соединений? Неважно, делали вы HTTP API или свой TCP сервер — дефолтные инструменты вроде net всегда имеют свои лимиты. Тут-то хорош зайдет Netpoll — библиотека, которая позволяет серверам обрабатывать сотни тысяч соединений одновременно и при этом не терять в производительности.Почему Netpoll?Если вы уже успели поиграться со стандартной библиотекой net, то знаете: она классная... до поры до…
Что делать, если сервис на проде внезапно лег, а куда копать — непонятно. Знакомая ситуация? Запускать отладчик ой как страшно, но иногда это единственное решение. Как подготовиться и избежать фиаско? Несколько полезных советов дал ведущий инженер платформы крупного e-commerce сервиса. А еще в нашей подборке — хардкор без хардкода на платформенном сервисе с CEL в конфиге и осознанный, но безболезненный переход на Ginko/Gomega для смелых Go-тестировщиков.Платформенный сервис без хардкода: CEL в …
ВведениеПри знакомстве с Go, наверное, первое, что узнаешь, так это о возможностях параллелизма. Насколько просто писать многопоточный код на этой технологии. В обеспечении этой простоты не последнюю роль играет наличие такого типа данных, как каналы, которые обеспечивают взаимодействие горутин - легковесных потоков Go. Чтение и запись в этот тип данных приводит к блокировкам, благодаря которым удаётся управлять многопоточностью. Но помимо очевидных операций над каналами их ещё можно закрывать.…
Привет, Хабр! Представим ситуацию: вы клиент. Разговор с менеджером завершён, он предложил вам что-то полезное — услугу, продукт или подписку — и, допустим, вы соглашаетесь: «Почему бы и нет, отличная идея». Менеджер записал ваше согласие и обещал напомнить вам через месяц. Звучит просто.Но вот в реальности ни один менеджер не помнит про сотни обещаний клиентам. И здесь на помощь приходит автоматизация. В этой статье рассмотрим, как построить систему автоматического напоминания, которая избавит…
Необходимость конструкторовКонструкторы в Go нужны, чтобы инкапсулировать логику создания экземпляров структур и предоставлять удобный и безопасный способ их инициализации. Хотя Go не имеет встроенного синтаксиса для конструкторов, как, например, в языках с объектно-ориентированной моделью, создание функций-конструкторов становится необходимым в следующих ситуациях:Установка значений по умолчаниюЕсли для структуры требуются значения по умолчанию, использование конструктора позволяет задать их ц…