Обновить
175.15

Go *

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

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

Раз, два, три и готово! 3 месяца, 1 проект и новая команда

Время на прочтение5 мин
Охват и читатели3.4K

Привет, Хабр! Меня зовут Дмитрий Адмакин, руководитель отдела архитектурных решений и перспективной разработки одного из бизнес-центров в компании «БАРС Груп». Сегодня я расскажу о том, как мы создавали современную систему мониторинга по исполнению государственных программ, и что из этого вышло.

Читать далее

Bun: дружественный к SQL Golang ORM

Время на прочтение5 мин
Охват и читатели12K

Bun это дружественный к SQL Golang ORM для PostgreSQL, MySQL/MariaDB, MSSQL, и SQLite. Данная статья призвана познакомить вас с базовыми возможностями этой ORM.

Читать далее

HTTPs-сервер с сертификатом Let's Encrypt на Go

Время на прочтение2 мин
Охват и читатели13K

У меня есть приложение на Go, в котором в одном из потоков работает простой HTTP сервер. К этому серверу обращаются по HTTPS. Запрос приходит на Pound - HTTP/HTTPS reverse-proxy and load-balancer и перенаправляется в приложение. TLS сертификат изготавливается и обновляется с помощью Let's Encrypt.
  
Простая и привычная схема. Правда, чаще в этой схеме бывает Nginx, но в этой статье мы не будем рассуждать, почему Pound, а не Nginx. Все очень хорошо, но меня последнее время начинает раздражать, когда к простому и понятному коду на Go нужно прикрутить небольшого динозаврика с пять-шестью скриптами на Ansible, закатать все это в деплой и радоваться тому, как это все славно улеглось в небольшой виртуалке.

Читать далее

Разворачиваем Golang приложение в Kubernetes

Время на прочтение14 мин
Охват и читатели16K

В этой статье я хочу поделиться примером, как можно развернуть простое приложение на Golang в Kubernetes, с помощью helm чартов и skaffold скриптов. Думаю, данная статья может быть полезной тем разработчикам, которые только знакомятся с Kubernetes, а возможно и более опытным разработчикам, которые смогут почерпнуть что то интересное для себя.

Читать далее

Continuous integration в Go с GitHub Actions

Время на прочтение5 мин
Охват и читатели9.6K

В этой статье мы рассмотрим, каким образом можно использовать GitHub Actions для создания конвейера непрерывной интеграции, который автоматически тестирует, проверяет и анализирует ваш код Go.

Читать далее

Чат-бот под несколько месенджеров

Время на прочтение12 мин
Охват и читатели11K

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

Всё началось с того, что у нас был бот на python-telegram-bot, делал он простые вещи, умел послать случайную весёлую гифку из Интернета, кошечку, собачку, затем мы крикрутили к нему наш таск-трекер и бот стал создавать тикеты прямо из чата.

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

Итак, поехали

В поисках gRPC-шлюза

Время на прочтение8 мин
Охват и читатели11K

Дано:

несколько gRPC-сервисов, каждый слушает свой порт.

сервисы могут доверенно подключаться друг к другу, для аутентификации используется Mutual TLS.

некоторые процедуры предназначены только для внутреннего пользования, доступ извне к ним должен быть ограничен

Найти:

единую точку входа для API (API Gateway) для gRPC, HTTP/2.

Дисклеймер: решение так и не найдено, зато проведено исследование gRPC-отражения (reflection). Много ссылок.

Читать далее

Открытый микрофон «Спроси меня про Go»: 21 января в 19.00

Время на прочтение1 мин
Охват и читатели1.7K
21 января Яндекс.Практикум проведёт вебинар в формате открытого микрофона «Спроси меня про Go». На вебинаре ответим на любой вопрос, связанный с Go: про язык и его возможности, про карьеру Go-разработчика, а главное, попробуем ответить на вопрос — стоит ли изучать Go сейчас и зачем он нужен именно вам.



Мероприятие будет полезно тем, кто что-то слышал про Go и хочет узнать больше, тем, кто хочет понять, применим ли Go для конкретных задач, а также тем, кто уже писал на Go и хочет обменяться идеями или опытом с другими гоферами.
Читать дальше →

SAGA на golang

Время на прочтение9 мин
Охват и читатели19K

После того, как я написал статью про паттерн CQRS, мне захотелось описать ещё один интересный шаблон для микросервисной архитектуры, а именно saga (он же повествование).

Читать далее

Разработка системы заметок с нуля. Часть 2: REST API для RESTful API Service + JWT + Swagger

Время на прочтение9 мин
Охват и читатели16K

Продолжаем серию материалов про создание системы заметок. В этой части мы спроектируем и разработаем RESTful API Service на Golang cо Swagger и авторизацией. Будет много кода, ещё больше рефакторинга и даже немного интеграционных тестов.

Подробности в видео и текстовой расшифровке под ним.

В первой части мы спроектировали систему и посмотрели, какие сервисы требуются для построения микросервисной архитектуры.

Читать далее

Кодогенерация в GO на примере маршалинга и анмаршалинга интерфейсных типов данных

Время на прочтение10 мин
Охват и читатели6.2K

Есть интерфейс и есть несколько типов удовлетворяющих этому интерфейсу. Хочется сделать так, что бы можно было сохранить в JSON список таких интерфейсов а потом восстановить из JSON-а этот список.

Давайте прикинем как это сделать на Go

Эволюция Docker. Часть 2.2

Время на прочтение22 мин
Охват и читатели3.5K

Данная статья является третьей в цикле (1,2), посвященном изучению исходного кода Docker и прямым продолжением предыдущей статьи, в которой мы начали разбирать код первого публичного релиза Docker v0.1.0. В этой части будет рассмотрена реализация практически всех команд, а в конце, мы создадим образ и запустим докер контейнер на его основе. Для удобства я постарался разбить список команд на условные группы: работа с образами, работа с контейнерами, сетевой стек и т.д. 

А теперь, как говорится, “without further ado”, приступим к изучению кода из файла commands.go начиная с команд для управления образами (images).

Читать далее

Как мы делали инструмент для QA, а сделали для всего техотдела

Время на прочтение4 мин
Охват и читатели3.9K

Как-то очень давно наш отдел автоматизации внутренних процессов посетил админ (ops) с идеей помочь нашим тестировщикам. Основная идея был упростить деплой т.к. было очень неудобно писать ручные curl запросы к gitlab'у с кучей меняющихся параметров. Так заставили нас наша команда решила помочь дружественному отделу и сделать их работу более приятной.

В статье я постараюсь поделиться тем, как мы разрабатывали GUI для curl'a, а сделали очень крутой сервис автоматизации. А также с какими проблемами столкнулись и как их решили (или нет).

Читать далее

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

Как мы делали универсальный сервис подписания для инфраструктуры Госуслуг на C и GO. Часть 1

Время на прочтение14 мин
Охват и читатели5.8K

Это первая часть статьи, в которой будет рассмотрена GO-часть нового сервиса подписания для всем известного (а если не всем, то многим) портала Госуслуг. Сюда входит конфигурирование, тестирование, ресты, файловый менеджер и планировщик. В общем все то, что происходит до того, как данные будут переданы в C-часть для подписания и верификации. Я также кратко опишу основные предпосылки к созданию нового сервиса.

Читать далее

Автоматы на службе распределенных транзакций

Время на прочтение20 мин
Охват и читатели6.8K

В этой заметке я расскажу о доменах, построенных на основе конечных автоматов, и распределенных транзакциях, реализованных при помощи таких доменов.



Такой подход я активно использую при разработке сервисов со сложным многоступенчатым поведением, где до сих пор он показал себя довольно неплохо (хотя и не без проблем).

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

Книга «gRPC: запуск и эксплуатация облачных приложений. Go и Java для Docker и Kubernetes»

Время на прочтение10 мин
Охват и читатели11K
image Привет, Хаброжители! Год от года обретая новых сторонников, облачно-ориентированные и микросервисные архитектуры стали основой современного IT. Такой переход значительно повлиял и на структуру коммуникаций. Теперь приложения часто подключаются друг к другу по сети, и это происходит с помощью технологий межпроцессной коммуникации. Одной из наиболее популярных и эффективных технологий такого рода является gRPC, но информации о ней не хватает. Так было, пока не вышла эта книга!

Наконец архитекторы и разработчики смогут подробно разобраться, как технология gRPC устроена «под капотом», и для этого не придется разгребать десятки устаревших ссылок в поисковике.

Поняв основы gRPC и изучив паттерны коммуникации, вы научитесь создавать приложения gRPC на Go и Java, запускать их в продакшене, а также разберетесь, как gRPC взаимодействует с экосистемой Kubernetes.
Читать дальше →

Создаем бессерверное приложение с помощью Azure Functions и Go

Время на прочтение8 мин
Охват и читатели3.4K

Вебхуки — популярный пример использования FaaS (функция как услуга) платформ. Их можно использовать для многих различных целей, например, для отправки клиентам уведомлений, содержащих забавные гифки! Используя serverless функцию, довольно удобно инкапсулировать функциональность вебхука, предоставив ее в виде HTTP-эндпоинта. В этом туториале вы узнаете, как интегрировать приложение Slack в качестве serverless (бессерверного) бэкенда с использованием Go и Azure Functions. Вы можете расширять платформу Slack и интегрировать сервисы, реализуя собственные приложения или рабочие процессы, которые будут иметь доступ к полному объему возможностей платформы, что позволяет вам реализовывать впечатляющие возможности в Slack.

Это немного упрощенная версия Giphy для Slack. Оригинальное приложение Giphy для Slack выдает по поисковому запросу целый набор гифок. Для простоты примера приложение-функция, продемонстрированное в этом туториале, возвращает всего одну (случайную) гифку, соответствующую ключевому слову поискового запроса с помощью Giphy Random API. В этой статье содержится пошаговое руководство по развертыванию приложения в Azure Functions и его интеграции с рабочей средой Slack.

Читать далее

Job — шаблон проектирования для новичков и опытных Go программистов

Время на прочтение4 мин
Охват и читатели15K

Я начал программировать на Go после достаточно продолжительного периода программирования на PHP. Полагаю судя по последним тенденциям, мой случай далеко не единичный. Go в целом набирает популярность среди Web разработчиков.

Читать далее

Пишем CRUD-приложение на Go с помощью Mysql, GORM, Echo, Clean Architecture

Время на прочтение5 мин
Охват и читатели30K

Начнем сначала


В этой статье будет сказ о том, как на Clean Architecture написать API с функциями CR(U)D, где в качестве БД взят Mysql, фреймворк – Echo, ORMapper – GORM.

Что делаем


API с функциями Create, Read, (Update), Delete. Обновление на самом деле реализовать особо не удалось, милости прошу попробовать самостоятельно.

Целевая аудитория


Те разработчики, которые хотят создать простой API после освоения Go.
Читать дальше →

О репозиториях замолвите слово

Время на прочтение7 мин
Охват и читатели10K
image

В последнее время на хабре, и не только, можно наблюдать интерес GO сообщества к луковой/чистой архитектуре, энтерпрайз паттернам и прочему DDD. Читая статьи на данную тему и разбирая примеры кода, постоянно замечаю один момент — когда дело доходит до хранения сущностей предметной области — начинается изобретение своих велосипедов, которые зачастую еле едут. Код вроде бы состоит из набора паттернов: сущности, репозитории, value object’ы и так далее, но кажется, что они для того там “чтобы были”, а не для решения поставленных задач.
В данной статье я бы хотел не только показать, что, по моему мнению, не так с типичными DDD-примерами на GO, но также продемонстрировать собственную ORM для реализации персистентности доменных сущностей.

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

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