Привет, Хабр! Я Олег Арутюнов, Go разработчик из Контура. Сейчас я работаю над проектом Мойра – опенсорс-системе реалтайм-алёртинга. Мойру разработали в Контуре ещё в 2015 году для того, чтобы доставлять алёрты на основе метрик из системы мониторинга Graphite, позже появилась поддержка метрик из Prometheus/VictoriaMetrics. Наша задача в случае поломки какой-то системы в Контуре, как можно быстрее уведомить о ней пользователей, разбудить их, достать и заставить всё починить.Пользователь Мойры со…
Не все знают, как писать функциональные тесты. В этой статье будут библиотеки, фишки про функциональные тесты, а самое главное - попрактикуемся их писать на примере Rest APIФункциональное тестированиеФункциональное тестирование - это такой тип тестирования, когда проверяется не маленькая часть, а вся программа, при этом сама программа не знает о том, что ее тестируюют. Правильно ли она работает при определенных условиях, что вернет, какая будет ошибка и т.дБиблиотекиВот несколько библиотек для …
Привет, Хабр!Сегодня мы рассмотрим в одну из интересных особенностей Golang — reflection. Мы рассмотрим, что такое reflection, как он работает, и когда его стоит использовать. Reflection позволяет программам инспектировать свои структуры и модифицировать поведение в runtime. Пакет reflectВ Go reflection реализован через пакет reflect. Этот пакет имеет интерфейсы и функции для динамического анализа типов и значений на стадии выполнения программы. Основные концепции, которые необходимо понимать, …
Привет, друзья! Очень важно думать о том, чтобы приложения были надежными и защищёнными. Go — язык, который известен своей простотой и производительностью. Но ни один язык не безопасен сам по себе и об этом нужно заботится самостоятельно.В этой статье мы поделимся с вами методами, которые помогут сделать ваши Go-приложения неприступными крепостями.Валидация пользовательского вводаВалидация пользовательского ввода – одно из базовых действий списке задач. Программа должна рассматривать входные да…
Привет, Хабр! Всегда было любопытно, как автоматизировать отправку кодов через SMS для второго этапа подтверждения личности при входе пользователя. Мы с коллегой решили разработать простой, но эффективный инструмент, который мог бы автоматически генерировать и отправлять SMS с кодами пользователя. Для реализации этой задачи выбрали API сервиса МТС Exolve.Этот сервис упрощает рассылку SMS и предоставляет удобные инструменты для работы с сообщениями. Также Exolve добавляет новым пользователям 300…
Недавно на работе меня попросили придумать рабочую задачку для студентов. Поскольку я работаю в инфраструктурной команде, мои повседневные задачи вряд ли подходят для их домашек или курсовых работ. Чтобы найти подходящую идею, я начал перебирать инструменты, которыми мы с командой часто пользуемся. Большинство из них интегрированы с чатами и ботами, и один из ключевых инструментов — это Алерт Бот. Он отслеживает логи и отправляет оповещения, если происходит что-то необычное. Это позволяет нам б…
Начну с того, что я C#-разработчик, но Go мне очень нравится и один из проектов я решил для разнообразия и расширения знаний написать в связке Go + React.js + MongoDB. И тут я понял, что не могу найти библиотеку пакет для чтения единых настроек конфигурации из разных источников. Часть настроек была в .env, часть - в переменных окружения. Хотелось получить экземпляр одной структуры со всеми значениями, выполнив какую-то одну функцию. Возможно, плохо искал. Но, не найдя, решил написать своё. Тем …
Привет, Хабр!Defer — это ключевое слово в Go, которое позволяет отложить выполнение функции до момента завершения выполнения текущей функции. Это относительно простой способ управлять ресурсами.В этой статье мы и рассмотрим как использовать defer в Golang.ОсновыЧтобы понять, как defer работает в Go, нужно знать немного о его внутреннем устройстве. Когда вы используете defer, вы говорите компилятору Go отложить выполнение указанной функции до момента завершения окружающей функции. То естьdefer п…
Когда-то мне пришлось перелопатить сотни статей, пролистать горы книг и выпить не одну чашку кофе, чтобы разобраться в микросервисной архитектуре. Я искал ответы на вопросы, которые появлялись на каждом шагу: как заставить микросервисы работать дружно, как удержать систему на плаву и, главное, как не сойти с ума от всех этих нюансов. После всего этого марафона мне хочется поделиться своими находками и советами, чтобы сэкономить тебе пару бессонных ночей.Эта статья — это своего рода маленький га…