Это третья часть серии о том, как шаг за шагом перейти от Bash к Go. В этом выпуске автор показывает, как с помощью Go можно строить платформы — то есть системы, которые упрощают работу команд и скрывают внутреннюю сложность инфраструктуры.
Что реализовано:
• Easypod API Server — простой API-сервер поверх Kubernetes.
• Поддерживаются три базовые операции:
- POST /pod — создать Pod
- GET /pods — получить список Pod’ов
- DELETE /pod/{name} — удалить Pod
• Подключение к Kubernetes через официальный Go SDK (client-go).
• Показаны примеры кода: структуры, обработчики запросов, JSON-декодинг, взаимодействие с API-сервером кластера.
Зачем это нужно:
• Bash-скрипты хороши для простых задач, но плохо масштабируются. Go даёт типизацию, читаемость и безопасность.
• Платформа на Go позволяет абстрагировать сложные операции (например, работу с Kubernetes) и предоставить командам удобный API.
• Такой подход можно развивать: добавлять новые маршруты, интеграции и строить полноценные инструменты для DevOps и платформенной инженерии.
Что можно улучшить:
• Добавить авторизацию и аутентификацию, чтобы ограничить доступ к API.
• Реализовать логирование, метрики и мониторинг.
• Улучшить обработку ошибок и подумать о масштабировании.
@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15❤10👍6😁4
💡 Совет для Go-тестов
Когда пишете вспомогательные функции вроде
Зачем? Если тест упадёт, Go покажет строку вызова в самом тесте, а не внутри хелпера. Так сразу видно, где именно ошибка.
@golang_google
#golang
Когда пишете вспомогательные функции вроде
assertEquals
или doRequest
, добавьте в них t.Helper(). Зачем? Если тест упадёт, Go покажет строку вызова в самом тесте, а не внутри хелпера. Так сразу видно, где именно ошибка.
@golang_google
#golang
👍73❤21🔥6🥰1🤔1
Офер в VK для бэкендеров и ML-щиков — станьте частью команды за выходные.
4–5 октября пройдёт VK Weekend Offer. Всего за 2 дня вы сможете пройти весь путь от знакомства с командами до приглашения на работу: пройти техническое собеседование, встретиться с лидами и получить офер.
Требования для бекэндеров – три года опыта коммерческой разработки, знание Java, Go, Python, C++.
Для ML-щиков – те же три года опыта + знания Classic ML, RecSys, NLP/LLM, CV, Speech.
Читайте подробности на сайте и подавайте заявку до 2 октября!
4–5 октября пройдёт VK Weekend Offer. Всего за 2 дня вы сможете пройти весь путь от знакомства с командами до приглашения на работу: пройти техническое собеседование, встретиться с лидами и получить офер.
Требования для бекэндеров – три года опыта коммерческой разработки, знание Java, Go, Python, C++.
Для ML-щиков – те же три года опыта + знания Classic ML, RecSys, NLP/LLM, CV, Speech.
Читайте подробности на сайте и подавайте заявку до 2 октября!
😁7👍6🤬4❤2😱2😢2
📊 Высокопроизводительная библиотека логирования для Go 🚀
mtlog — это библиотека структурированного логирования для Go, вдохновленная Serilog. Она обеспечивает нулевые аллокации для простых операций логирования и поддерживает мощные функции для сложных сценариев, включая шаблоны сообщений и совместимость с OpenTelemetry.
🚀Основные моменты:
- Нулевые аллокации для простых сообщений
- Поддержка шаблонов сообщений и Go синтаксиса
- Интеграция с Kubernetes и OpenTelemetry
- Многофреймворковая поддержка для HTTP
- Расширенные стратегии выборки и маршрутизации логов
📌 GitHub: https://github.com/willibrandon/mtlog
@golang_google
#golang
mtlog — это библиотека структурированного логирования для Go, вдохновленная Serilog. Она обеспечивает нулевые аллокации для простых операций логирования и поддерживает мощные функции для сложных сценариев, включая шаблоны сообщений и совместимость с OpenTelemetry.
🚀Основные моменты:
- Нулевые аллокации для простых сообщений
- Поддержка шаблонов сообщений и Go синтаксиса
- Интеграция с Kubernetes и OpenTelemetry
- Многофреймворковая поддержка для HTTP
- Расширенные стратегии выборки и маршрутизации логов
📌 GitHub: https://github.com/willibrandon/mtlog
@golang_google
#golang
❤12👍6🔥3🤬1🎉1
🚀 Оптимизация контейнеров с Slim
Slim — это инструмент для оптимизации и безопасности контейнеров, который помогает разработчикам уменьшать размер образов до 30 раз, сохраняя их функциональность. Он обеспечивает улучшенную видимость и удобство работы, позволяя легко настраивать и отлаживать контейнеры без необходимости в глубоких знаниях о Linux.
🚀 Основные моменты:
- Уменьшение размера контейнеров и улучшение безопасности.
- Поддержка различных языков программирования и ОС.
- Интерактивный интерфейс для анализа и отладки.
- Автоматическая оптимизация без изменения исходного кода.
📌 GitHub: https://github.com/slimtoolkit/slim
#go
Slim — это инструмент для оптимизации и безопасности контейнеров, который помогает разработчикам уменьшать размер образов до 30 раз, сохраняя их функциональность. Он обеспечивает улучшенную видимость и удобство работы, позволяя легко настраивать и отлаживать контейнеры без необходимости в глубоких знаниях о Linux.
🚀 Основные моменты:
- Уменьшение размера контейнеров и улучшение безопасности.
- Поддержка различных языков программирования и ОС.
- Интерактивный интерфейс для анализа и отладки.
- Автоматическая оптимизация без изменения исходного кода.
📌 GitHub: https://github.com/slimtoolkit/slim
#go
👍7❤4🥰2
PGMCP позволяет взаимодействовать с любыми базами данных PostgreSQL через естественные языковые запросы. Пользователи могут задавать вопросы на английском и получать структурированные результаты SQL с автоматической обработкой ошибок и потоковой передачей данных.
🚀Основные моменты:
- Поддержка любого PostgreSQL без изменений схемы
- Безопасный доступ только для чтения
- Автоматическая потоковая передача больших наборов данных
- Интеллектуальное понимание запросов
- Множественные форматы вывода (таблица, JSON, CSV)
📌 GitHub: https://github.com/subnetmarco/pgmcp
@golang_google
#go #golang
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥7❤6😁6🤯1
🚀Главное:
- Инъекция в любые целевые файлы.
- Поддержка извлечения данных из командной строки.
- Конфигурация через YAML-файлы.
- Удобный интерфейс для управления процессами.
📌 GitHub: https://github.com/alchemmist/devsyringe
#go #golang
@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔16❤6👍3🔥1🤩1
Удобная Go-библиотека tablewriter для создания таблиц в разных форматах:
ASCII, Unicode, Markdown, HTML
и с цветами для терминала.Подходит для:
- CLI-утилит
- логов
- веб-приложений
Простой инструмент, если нужно быстро и красиво вывести табличные данные.
go get github.com/olekukonko/[email protected]
@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32🔥10❤8🤬1
📦 Для Go появился лёгкий и удобный инструмент для событийной архитектуры
signals — это минималистичная библиотека без зависимостей, которая реализует простой pub-sub механизм для ваших Go-приложений.
Особенности:
- никаких внешних зависимостей
- тонкий и понятный API
- удобный in-process event system
Репозиторий: https://github.com/maniartech/signals
#golang
signals — это минималистичная библиотека без зависимостей, которая реализует простой pub-sub механизм для ваших Go-приложений.
Особенности:
- никаких внешних зависимостей
- тонкий и понятный API
- удобный in-process event system
Репозиторий: https://github.com/maniartech/signals
#golang
❤14👍8🔥7
Scrutiny — это веб-интерфейс для мониторинга S.M.A.R.T. состояния жестких дисков, интегрированный с smartd. Он помогает отслеживать критические метрики и предсказывать сбои, предоставляя удобный интерфейс для анализа данных.
🚀Основные моменты:
- Веб-интерфейс с акцентом на критические метрики
- Интеграция с smartd для автоматического обнаружения дисков
- Историческое отслеживание S.M.A.R.T. атрибутов
- Настраиваемые пороги на основе реальных данных о сбоях
- Поддержка уведомлений через вебхуки
📌 GitHub: https://github.com/AnalogJ/scrutiny
#go
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥5❤2🥰2🤬1
В хабе на Хабр «Разработка публичных облаков» — свежие статьи
от инженеров MWS Cloud Platform⬜️ .
Ценности решают. Как пять принципов помогли вырасти с 150 до 520 человек и запустить IaaS за год.
Binapi и VPP. Программируем SR Policy на Go, разбираем грабли и показываем рабочий прототип для traffic engineering.
Control plane под замком. Зачем прятать мастера Kubernetes и какие решения мы протестировали в Managed Kubernetes.
SPDK для VM. Почему стандартного QEMU мало и как мы ускоряли диски в публичном облаке.
eBPF & Security. Новые возможности для Cilium и Falco и новые риски: атаки на maps, io_uring и rootkits.
🔗 Подпишись на облачный хаб MWS — там регулярно рассказываем, как строим новое облако с нуля.
от инженеров MWS Cloud Platform
Ценности решают. Как пять принципов помогли вырасти с 150 до 520 человек и запустить IaaS за год.
Binapi и VPP. Программируем SR Policy на Go, разбираем грабли и показываем рабочий прототип для traffic engineering.
Control plane под замком. Зачем прятать мастера Kubernetes и какие решения мы протестировали в Managed Kubernetes.
SPDK для VM. Почему стандартного QEMU мало и как мы ускоряли диски в публичном облаке.
eBPF & Security. Новые возможности для Cilium и Falco и новые риски: атаки на maps, io_uring и rootkits.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍1
Это open-source альтернатива Cloudflare Images и ImageKit:
- ⚡️ Реальное время — обработка картинок через URL-API
- 🛠 Построено на Go для максимальной производительности
- 🌐 Удобно интегрировать в любые веб-сервисы
🔗 Репозиторий: https://github.com/kritihq/kriti-images
@Golang_google
#golang #go
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤10🔥6🤔1
ХОЧЕШЬ ПОВЫСИТЬ ГРЕЙД В 2025 ГОДУ? 🚀
Если:
— код разваливается от правок,
— бизнес-логика размазана,
— Entity — просто структуры,
— а тесты живут своей жизнью —
вам точно сюда.
📦 Научитесь строить архитектуру, устойчивую к изменениям.
Что будет на обучении?
✅ Создадим полноценный микросервис
✅ Разберем все тактические паттерны DDD
✅ Реализуем Use Case и Domain Service
✅ Напишем много тестов
✅ Реализуем HTTP, gRPC и Kafka адаптеры
📢 Повышайте свою ценность, как специалиста, прямо сейчас👉 https://microarch.ru/courses/ddd/languages/go?utm_source=posev&utm_medium=erid:2Vtzqvvi8v1&utm_campaign=4
Реклама. ИП Ветчинкин К.Е. ИНН: 773376451099 Erid: 2Vtzqvvi8v1
Если:
— код разваливается от правок,
— бизнес-логика размазана,
— Entity — просто структуры,
— а тесты живут своей жизнью —
вам точно сюда.
📦 Научитесь строить архитектуру, устойчивую к изменениям.
Что будет на обучении?
✅ Создадим полноценный микросервис
✅ Разберем все тактические паттерны DDD
✅ Реализуем Use Case и Domain Service
✅ Напишем много тестов
✅ Реализуем HTTP, gRPC и Kafka адаптеры
📢 Повышайте свою ценность, как специалиста, прямо сейчас👉 https://microarch.ru/courses/ddd/languages/go?utm_source=posev&utm_medium=erid:2Vtzqvvi8v1&utm_campaign=4
Реклама. ИП Ветчинкин К.Е. ИНН: 773376451099 Erid: 2Vtzqvvi8v1
❤3🤬3
⚡ Ophis - golang утилита, которая автоматически превращает ваши Cobra-команды в MCP-инструменты.
🔥 Плюсы:
- Мгновенная конверсия Cobra → MCP
- CLI-команды для интеграции с Claude и VSCode
- Упрощает подключение к MCP без лишних движений
🔗 Репозиторий: https://github.com/njayp/ophis
#golang #cli #MCP
🔥 Плюсы:
- Мгновенная конверсия Cobra → MCP
- CLI-команды для интеграции с Claude и VSCode
- Упрощает подключение к MCP без лишних движений
🔗 Репозиторий: https://github.com/njayp/ophis
#golang #cli #MCP
👍12❤4🔥3
Graceful Shutdowns в Go HTTP-серверах: как обеспечить 0 простоев при живом трафике
Graceful shutdown - это “прощание с клиентами”, когда сервер:
- перестаёт принимать новые запросы
- даёт завершиться текущим запросам
- чистит ресурсы (базы, файлы и т.д.)
- и только потом закрывается
Зачем это нужно:
Если просто “убить” сервер:
- запросы могут оборваться на полпути (например, оплата)
- пользователи получат ошибки или потеряют данные
- могут остаться “висячие” соединения и утечки ресурсов
Graceful shutdown решает это, особенно важно при деплое, перезагрузках, работе в Kubernetes/Docker.
# Как это сделать в Go
1. Использовать
2. Перехватывать сигналы ОС (`SIGINT`,
3. Использовать
4. Корректно закрывать ресурсы: БД, логи, файлы и т.д.
# Пример кода
Вывод
- Graceful shutdown — не просто “красивость”, а необходимая практика для надёжных Go-сервисов:
- минимизирует потери данных и ошибок для пользователей
- обеспечивает корректное завершение внутренних операций
- делает деплой и перезапуск безопасными и незаметными
https://blog.stackademic.com/graceful-shutdowns-in-go-http-servers-ensuring-zero-downtime-for-live-traffic-b8224b28ab4a
Graceful shutdown - это “прощание с клиентами”, когда сервер:
- перестаёт принимать новые запросы
- даёт завершиться текущим запросам
- чистит ресурсы (базы, файлы и т.д.)
- и только потом закрывается
Зачем это нужно:
Если просто “убить” сервер:
- запросы могут оборваться на полпути (например, оплата)
- пользователи получат ошибки или потеряют данные
- могут остаться “висячие” соединения и утечки ресурсов
Graceful shutdown решает это, особенно важно при деплое, перезагрузках, работе в Kubernetes/Docker.
# Как это сделать в Go
1. Использовать
http.Server.Shutdown(ctx)
- сервер перестаёт принимать новые запросы, но завершает текущие в рамках таймаута. 2. Перехватывать сигналы ОС (`SIGINT`,
SIGTERM`) через `os/signal
, чтобы начать shutdown. 3. Использовать
context.WithTimeout
, чтобы ограничить время завершения. 4. Корректно закрывать ресурсы: БД, логи, файлы и т.д.
# Пример кода
package main
import (
"context"
"log"
"net/http"
"os"
"os/signal"
"time"
)
func main() {
mux := http.NewServeMux()
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
time.Sleep(3 * time.Second)
w.Write([]byte("Request done"))
})
server := &http.Server{
Addr: ":8080",
Handler: mux,
}
go func() {
log.Println("Server starting on :8080")
if err := server.ListenAndServe(); err != nil && err != http.ErrServerClosed {
log.Fatalf("ListenAndServe error: %v", err)
}
}()
stop := make(chan os.Signal, 1)
signal.Notify(stop, os.Interrupt, os.Kill)
<-stop
log.Println("Shutting down server...")
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
if err := server.Shutdown(ctx); err != nil {
log.Fatalf("Forced shutdown: %v", err)
}
log.Println("Server exited gracefully")
}
Вывод
- Graceful shutdown — не просто “красивость”, а необходимая практика для надёжных Go-сервисов:
- минимизирует потери данных и ошибок для пользователей
- обеспечивает корректное завершение внутренних операций
- делает деплой и перезапуск безопасными и незаметными
https://blog.stackademic.com/graceful-shutdowns-in-go-http-servers-ensuring-zero-downtime-for-live-traffic-b8224b28ab4a
1❤19👍12🔥12
Gojekyll — это клон Jekyll, написанный на Go, предлагающий команды для сборки и сервировки сайтов с поддержкой живой перезагрузки. Он обеспечивает высокую скорость и частичную совместимость с Jekyll, позволяя использовать Liquid для шаблонов и SASS для стилей.
go install github.com/osteele/gojekyll@latest
🚀 Основные моменты:
- Быстрее Jekyll в 20 раз
- Поддержка SASS и Liquid
- Частичная совместимость с Jekyll
- Поддержка Windows
- Эмуляция некоторых плагинов
📌 GitHub: https://github.com/osteele/gojekyll
#go
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥3❤2