
S3-совместимое хранилище из Go: чек-лист перед продом
Что проверить в коде на aws-sdk-go-v2 перед выкатом: таймауты, ретраи, лимит соединений, multipart и особенности не-AWS провайдеров вроде MinIO и Yandex Object Storage.

Что проверить в коде на aws-sdk-go-v2 перед выкатом: таймауты, ретраи, лимит соединений, multipart и особенности не-AWS провайдеров вроде MinIO и Yandex Object Storage.

Утечки time.After в бесконечном select, забытый Stop() у таймера, монотонные часы и Reset с непустым каналом. Разбираем то, на чём чаще всего спотыкаются перед выкатом.

Пакет html/template экранирует данные сам, но только если вы даёте ему работать. Разбираем, где контекстное экранирование ломается и как не открыть дыру через template.HTML.

Три способа собрать PDF в Go — от рисования по координатам до рендеринга HTML через headless-браузер. У каждого своя цена по скорости, точности вёрстки и зависимостям.

Утечки соединений, зависшие горутины, битые загрузки и ретраи, которые не спасают. Разбираем частые ошибки в коде работы с S3-совместимыми хранилищами на Go и показываем, как их избежать.

Вебхук приходит один раз, а платёж списывается дважды — потому что обработчик не был идемпотентным. Разбираем ошибки, которые ломают приём вебхуков на Go: от чтения тела до ретраев.

aws-sdk-go-v2, minio-go или самописный клиент через HTTP — у каждого свой вес в бинарнике, свой стиль ретраев и свои сюрпризы с эндпоинтами. Разбираем, что выбрать под задачу.

Пользователь заливает видео на 800 МБ, а сервис отвечает out of memory. Разбираем, чем отличаются загрузка через память, потоковую обработку и presigned URL, и когда что выбирать.

Пакет log/slog в стандартной библиотеке Go закрывает большинство задач структурированного логирования. Разбираем, что проверить перед выкатом: формат, уровни, контекст, PII и производительность.

Что выбрать для приёма файлов на 2-10 ГБ в Go-сервисе: multipart, стриминг в io.Copy, прямой upload в S3. Разбор четырёх подходов с ценой каждого и типичными ошибками.

Наивный обработчик multipart в Go складывает файл в память и роняет сервис на файле в пару гигабайт. Разбираем, как принимать большие загрузки потоком, ограничивать размер и не держать всё в RAM.

Как протянуть контекст с trace_id через горутины, HTTP-клиенты и логи в Go, не превращая сигнатуры функций в помойку. Разбор рабочих подходов и их цены.