Промты для Go и Rust: микросервисы с gRPC и REST API, конкурентность и профилирование без лишних рук

Промты для Go и Rust: как собрать высоконагруженный бэкенд без армии сеньоров

Высоконагруженный бэкенд на Go и Rust обычно требует команды опытных инженеров: одни проектируют архитектуру, другие пишут конкурентный код, третьи профилируют и отлаживают. Но что, если большую часть рутины можно переложить на AI-ассистента? Правильно сформулированные промты позволяют одному разработчику закрывать задачи, которые раньше занимали у сеньоров часы. В этой подборке — 15 практических промтов для проектирования, оптимизации и отладки бэкенда на Go и Rust. Каждый промт проверен на реальных сценариях и сопровождается примером использования. Вы сможете быстрее создавать микросервисы, настраивать gRPC и REST API, работать с конкурентностью и профилировать узкие места.

Как пользоваться промтами

Все промты предполагают, что вы работаете с AI-ассистентом, который поддерживает контекст. Чем конкретнее вы опишете входные данные (версии, ограничения, метрики), тем точнее будет ответ. Не бойтесь уточнять и просить альтернативы.

1. Проектирование микросервиса на Go с gRPC и REST

Задача: Создать скелет микросервиса с двумя интерфейсами: gRPC для внутренних вызовов и REST для внешних клиентов.

Промт:

Ты — senior Go-разработчик. Спроектируй микросервис "order-service" со следующими требованиями:
- gRPC API на порту 50051 (proto3), методы: CreateOrder, GetOrder, ListOrders.
- REST API на порту 8080, эндпоинты: POST /orders, GET /orders/{id}, GET /orders.
- Используй grpc-gateway для генерации REST из proto.
- Стек: Go 1.22, PostgreSQL, sqlc для запросов, wire для DI.
- Напиши структуру проекта, пример .proto файла, конфиг grpc-gateway и main.go с graceful shutdown.
- Добавь middleware для логирования и recovery.

Пример использования: Вы копируете промт, получаете готовый каркас с файлами. Остаётся только дописать бизнес-логику.

2. Конкурентный паттерн Worker Pool на Go

Задача: Обрабатывать тысячи задач параллельно с ограничением количества горутин.

Промт:

Напиши на Go реализацию worker pool с динамическим размером пула. Требования:
- Входной канал задач (func() error).
- Максимальное количество воркеров задаётся через конфиг (например, 100).
- Поддержка контекста для отмены.
- Сбор ошибок через errgroup.
- Пример использования: обработка 10 000 HTTP-запросов с ограничением параллелизма.
- Добавь бенчмарк для сравнения с наивным запуском горутин.

Пример: Вы вставляете промт в AI-ассистент, получаете код с комментариями и тестами.

3. Оптимизация Rust-сервиса с помощью профилирования

Задача: Найти узкие места в существующем Rust-сервисе.

Промт:

У меня есть Rust-сервис на Actix Web, который обрабатывает 5000 RPS. При нагрузке 10 000 RPS latency растёт с 20 мс до 200 мс. Предложи план профилирования:
- Какие инструменты использовать (perf, flamegraph, tokio-console)?
- Как найти блокировки в async-коде?
- Как оптимизировать аллокации (использование арены, пулы объектов)?
- Приведи пример кода с заменой Vec на SmallVec или ArrayVec.

Пример: AI выдаёт пошаговый план с командами и ожидаемыми результатами.

4. Миграция с REST на gRPC в Go

Задача: Постепенно перевести монолит на gRPC без простоя.

Промт:

Составь план миграции REST API на gRPC для Go-сервиса. Условия:
- Есть 20 эндпоинтов, которые используются мобильными клиентами.
- Нужно обеспечить обратную совместимость.
- Используй grpc-gateway для поддержки REST параллельно.
- Опиши шаги: создание proto, генерация кода, внедрение в существующий роутер, тестирование, переключение трафика.
- Приведи пример кода для одного эндпоинта.

Пример: Вы получаете дорожную карту и готовые сниппеты.

5. Отладка утечки памяти в Rust

Задача: Найти и устранить утечку памяти в async-приложении.

Промт:

В Rust-сервисе на Tokio наблюдается рост потребления памяти. Подозреваю утечку из-за циклических ссылок в Arc<Mutex<...>>. Предложи:
- Как использовать Weak для разрыва циклов.
- Инструменты для диагностики (valgrind, heaptrack, DHAT).
- Пример кода с исправлением.
- Как написать тест, воспроизводящий утечку.

Пример: AI демонстрирует замену Arc на Weak и даёт команды для профилирования.

6. Генерация кода для gRPC-клиента на Go

Задача: Быстро создать клиент для существующего gRPC-сервиса.

Промт:

Сгенерируй Go-клиент для gRPC-сервиса с proto-файлом (приложи содержимое). Нужно:
- Подключение с TLS.
- Интерцепторы для логирования и таймаутов.
- Пример вызова метода CreateOrder.
- Обработка ошибок и ретраи.

Пример: Вы вставляете proto, получаете готовый клиентский код.

7. Проектирование схемы БД для высоких нагрузок

Задача: Спроектировать схему PostgreSQL для сервиса заказов с миллионами записей.

Промт:

Спроектируй схему PostgreSQL для order-service. Требования:
- 10 млн заказов, 1 млн пользователей.
- Частые запросы: выборка заказов пользователя, фильтрация по статусу и дате.
- Нужны индексы, партиционирование по дате.
- Напиши DDL и примеры запросов с EXPLAIN ANALYZE.

Пример: AI предлагает партиционирование по месяцам и составные индексы.

8. Оптимизация конкурентности в Rust с Rayon

Задача: Ускорить обработку данных на многоядерном процессоре.

Промт:

Перепиши последовательный код на Rust с использованием Rayon для параллельной обработки вектора из 1 млн элементов. Покажи до и после, замерь ускорение. Учти, что операция — это CPU-интенсивная функция.

Пример: Вы получаете код с par_iter() и бенчмарк.

9. Написание интеграционных тестов для gRPC

Задача: Покрыть тестами gRPC-сервис на Go.

Промт:

Напиши интеграционные тесты для gRPC-сервиса на Go с использованием testcontainers и bufconn. Проверь методы CreateOrder и GetOrder. Используй testify для ассертов.

Пример: AI генерирует тестовый файл с моками и запуском контейнера PostgreSQL.

10. Рефакторинг легаси Go-кода на generics

Задача: Убрать дублирование с помощью дженериков.

Промт:

Дан код на Go с повторяющимися функциями для разных типов. Перепиши его с использованием generics (Go 1.18+). Покажи сокращение количества строк и улучшение читаемости.

Пример: AI заменяет несколько функций на одну параметризованную.

11. Настройка мониторинга для Rust-сервиса

Задача: Внедрить метрики Prometheus и трейсинг.

Промт:

Добавь в Rust-сервис на Actix Web экспорт метрик Prometheus (количество запросов, latency) и интеграцию с OpenTelemetry для трейсинга. Приведи код и необходимые зависимости.

Пример: AI показывает, как использовать метрики через actix-web-prom и opentelemetry.

12. Обработка ошибок в Go: переход на errors.Is и errors.As

Задача: Улучшить обработку ошибок в большом проекте.

Промт:

Покажи, как рефакторить обработку ошибок в Go, используя errors.Is и errors.As вместо сравнения по строке. Приведи примеры кастомных ошибок и их обёртывания.

Пример: AI демонстрирует создание sentinel errors и их проверку.

13. Оптимизация аллокаций в Rust с помощью bumpalo

Задача: Снизить нагрузку на аллокатор в горячем пути.

Промт:

Замени стандартные аллокации в функции обработки запроса на аренный аллокатор bumpalo. Покажи код до и после, замерь производительность.

Пример: AI приводит пример с bumpalo::Bump и бенчмарк.

14. Генерация Dockerfile для Go-сервиса

Задача: Собрать минимальный образ.

Промт:

Напиши многоступенчатый Dockerfile для Go-сервиса, который собирается в статический бинарник и запускается на scratch. Учти кэширование слоёв.

Пример: AI выдаёт Dockerfile с этапами builder и финальным образом.

15. Профилирование Go-сервиса с pprof

Задача: Найти утечку горутин.

Промт:

В Go-сервисе количество горутин растёт со временем. Опиши, как использовать pprof для диагностики: получение профиля, анализ, поиск утечки. Приведи пример кода с добавлением pprof эндпоинтов.

Пример: AI показывает, как подключить net/http/pprof и интерпретировать графики.

Заключение

Эти промты помогут вам быстрее создавать и оптимизировать бэкенд на Go и Rust, не привлекая дополнительных сеньоров. Главное — адаптировать их под свои задачи и проверять сгенерированный код. Начните с одного-двух промтов, интегрируйте в свой рабочий процесс и постепенно расширяйте набор. Помните: AI — это инструмент, который усиливает ваши навыки, а не заменяет их.

← Все статьи

Комментарии

Читайте также

Ettin Suite: Почему парные энкодеры и декодеры стали новым SoTA в AI

23 июня 2026

Освоение автономных систем и робототехники: курс по ROS 2, SLAM и компьютерному зрению на Asibiont

17 июля 2026

Почему навыки кинопроизводства и видеопроизводства важны в 2026 году: внутри курса, который готовит вас к ИИ и короткому контенту

30 июня 2026

Мультимодальный AI: 10 промтов, которые превращают текст, картинки и видео в единый конвейер

27 августа 2026

Яндекс.Музыка + ASI Biont: Создаём AI-плейлисты и анализируем вкусы без единой строки кода

3 июля 2026

Транспортное право: как системно изучить законы перевозок и избежать ошибок в работе — курс на Asibiont

18 июля 2026

Как я три года пилю свой музыкальный сервер: часть вторая. Архитектура Kalinka и её место среди музыкальных систем

21 июля 2026

Как AI-агент ASI Biont интегрируется с Twitter/X: автоматизация без кода для менеджеров социальных сетей

7 июля 2026

GPS/GLONASS трекеры и NMEA: как подключить их к AI-агенту ASI Biont через COM-порт

14 августа 2026