Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 412новых вакансий за сутки·55 411вакансий открыто сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании5 671
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 396 кандидатов открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python8 728
  • Облачные технологии6 606
  • QA вакансии2 165
  • Android1 317
  • Инженер данных878
  • Продакт-менеджер314

Разработка

  • iOS1 229
  • Backend вакансии1 210
  • AI вакансии545
  • Fullstack вакансии500
  • Frontend вакансии422
  • Mobile вакансии28

По стеку

  • Go5 192
  • Java3 112
  • Kotlin1 085
  • Node.js992
  • Rust846
  • .NET660
  • PHP319
  • C++266
  • C#208

DevOps и инфраструктура

  • Kubernetes3 904
  • Linux-инфраструктура2 843
  • DevOps вакансии2 684
  • Terraform / IaC2 162
  • Мониторинг и Observability1 062
  • CI/CD921
  • SRE303
  • Кибербезопасность31

Аналитика и данные

  • Аналитик данных537
  • Data Scientist445
  • Бизнес-аналитик402
  • Системный аналитик68

Другие направления

  • Проджект-менеджер103
  • UI/UX дизайн70
  • Ручное тестирование14

По регионам

  • Вакансии в США26 186
  • Вакансии в Европе10 369
  • Работа в России3 628
  • Вакансии в Канаде2 306

По формату

  • Удалённые вакансии43 484
  • Релокация в США26 186
  • Гибридная работа5 597
  • Офисная работа4 383

По уровню

  • Senior вакансии22 724
  • Middle вакансии11 726
  • Junior вакансии3 874

Сейчас нанимают

Все компании
  • Rakuten189 вакансий
  • Wise186 вакансий
  • ASML164 вакансии
  • Grab135 вакансий
  • Celonis45 вакансий
  • Spotify37 вакансий
  • Infobip28 вакансий
  • Adyen26 вакансий
  • Monzo19 вакансий
  • Darktrace16 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме FiberВсе вопросы
FiberSeniorОпыт

Какие production-риски есть у Fiber (Go framework): blocking code, connection pooling, config, auth, observability, deploy или graceful shutdown?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Основные риски Fiber в production: блокирующий код в хендлерах убивает пропускную способность, отсутствие пула коннектов к БД приводит к исчерпанию соединений, небрежная работа с ctx вызывает гонки данных, а graceful shutdown без отдельного сигнального цикла роняет in-flight запросы.

Connection pooling

Fiber не управляет пулом соединений — это обязанность драйвера. Для PostgreSQL с pgx:

package main

import (
	"context"
	"time"

	"github.com/jackc/pgx/v5/pgxpool"
)

func newPool(dsn string) (*pgxpool.Pool, error) {
	cfg, err := pgxpool.ParseConfig(dsn)
	if err != nil {
		return nil, err
	}
	cfg.MaxConns = 20
	cfg.MinConns = 5
	cfg.MaxConnLifetime = 30 * time.Minute
	cfg.MaxConnIdleTime = 5 * time.Minute
	return pgxpool.NewWithConfig(context.Background(), cfg)
}

Без явных лимитов каждый хендлер открывает новое соединение — БД падает под нагрузкой.

Blocking code в хендлерах

Fiber использует fasthttp, который работает на goroutine-per-request с повторным использованием буферов. Блокирующие вызовы (os.ReadFile, тяжёлые SQL без таймаутов, внешние HTTP без дедлайнов) блокируют горутину и снижают concurrency. Всегда передавайте context.WithTimeout в запросы к БД и HTTP-клиентам.

Гонки с ctx (fasthttp.RequestCtx)

Fiber передаёт *fiber.Ctx, который ссылается на fasthttp.RequestCtx. После завершения хендлера этот контекст возвращается в пул и перезаписывается. Если вы передаёте ctx в горутину, данные окажутся невалидными:

// НЕПРАВИЛЬНО — гонка данных
app.Get("/async", func(c *fiber.Ctx) error {
	go process(c.Body()) // c.Body() невалиден после return
	return c.SendStatus(202)
})

// ПРАВИЛЬНО — копируем данные до запуска горутины
app.Get("/async", func(c *fiber.Ctx) error {
	body := make([]byte, len(c.Body()))
	copy(body, c.Body())
	go process(body)
	return c.SendStatus(202)
})

Аутентификация и конфигурация

Fiber предоставляет middleware github.com/gofiber/contrib/jwt для JWT. Типичная ошибка — хранить секрет в коде вместо переменных окружения. Используйте os.Getenv("JWT_SECRET") и проверяйте при старте.

Observability

Встроенного трейсинга нет. Подключайте github.com/gofiber/contrib/otelfiber для OpenTelemetry и github.com/ansrivas/fiberprometheus для метрик:

import (
	"github.com/ansrivas/fiberprometheus/v2"
	"github.com/gofiber/contrib/otelfiber"
)

app.Use(otelfiber.Middleware())

prometheus := fiberprometheus.New("my_service")
prometheus.RegisterAt(app, "/metrics")
app.Use(prometheus.Middleware)

Graceful shutdown

Без graceful shutdown in-flight запросы обрываются при деплое:

package main

import (
	"os"
	"os/signal"
	"syscall"

	"github.com/gofiber/fiber/v2"
)

func main() {
	app := fiber.New(fiber.Config{
		IdleTimeout: 5 * time.Second,
	})

	quit := make(chan os.Signal, 1)
	signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)

	go func() {
		<-quit
		_ = app.Shutdown() // ждёт завершения активных запросов
	}()

	if err := app.Listen(":3000"); err != nil {
		panic(err)
	}
}

Подводные камни

  • Использование ctx после возврата хендлера — fasthttp переиспользует RequestCtx; любое чтение в отложенной горутине даёт мусорные данные.
  • Отсутствие таймаутов на исходящие запросы — зависший upstream блокирует горутину навсегда и исчерпывает пул.
  • Не настроен ReadTimeout / WriteTimeout — slow-client атака держит соединение открытым.
  • Передача стандартного net/http middleware — Fiber не совместим с http.Handler; для адаптации нужен adaptor.HTTPHandler().
  • Отсутствие rate limiting — используйте github.com/gofiber/fiber/v2/middleware/limiter или внешний Nginx.
  • Логгирование без структуры — fmt.Println в хендлерах не поддаётся парсингу в ELK/Loki; подключайте zerolog или zap.
  • Паника без recover — один хендлер с nil pointer кладёт весь сервер; используйте middleware/recover.
  • Игнорирование GOMAXPROCS — в Docker без uber-go/automaxprocs Go может видеть только 1 CPU.

Частые вопросы на собеседовании

  • В каких backend-проектах Fiber (Go framework) является сильным выбором, а где лучше выбрать более простой или другой стек?
  • Как понять, что проблема в сервисе связана с Fiber (Go framework), а не с базой, сетью, инфраструктурой или бизнес-логикой?
  • Проект на Fiber (Go framework) вырос из MVP в большой production-сервис. Какие проблемы архитектуры и сопровождения вы ожидаете увидеть?
  • Представьте, endpoint на Fiber (Go framework) иногда отвечает за секунды вместо миллисекунд. Как вы будете искать причину?

Что портит ответ

  • Говорить только о запуске Fiber (Go framework), но не об эксплуатации
  • Не упоминать observability, обновления, безопасность и rollback
  • Описывать риски абстрактно, без способов их снижать

Что слушает интервьюер

  • Видит production-риски Fiber (Go framework)
  • Говорит про monitoring, rollout, rollback и безопасность
  • Умеет ранжировать риски по вероятности и влиянию

Как вы знаете этот вопрос?

Проверить себя по теме Fiber →
←Предыдущий вопросПредставьте, endpoint на Fiber (Go framework) иногда отвечает за секунды вместо миллисекунд. Как вы будете искать причину?Следующий вопрос→Как сравнить Fiber (Go framework) с ближайшими backend-альтернативами по скорости разработки, производительности, экосистеме и эксплуатации?

Связанные темы

FiberFiber (Go framework)production-readinesstechnical-communicationtechnology-selectiontrade-off-analysis