JWT, лимиты, таймауты, shutdown — чтобы API не развалился под нагрузкой.
Лекции
Graceful shutdown: SIGTERM, preStop, in-flight
SIGTERM — не рубить accept сразу. Сначала снять под с балансировки, перестать принимать новое, дождаться in-flight, закрыть пулы и только потом выйти. Иначе клиент ретраит оборванный ответ и может удвоить POST.
Rate limiting: token bucket и где ставить лимит
Token bucket дозирует среднюю скорость и разрешает короткий всплеск до ёмкости ведра. Лимит на gateway режет дёшево по IP или ключу. В приложении — по пользователю после auth. Без общего счётчика N реплик дают N-кратную квоту.
JWT vs сессия, refresh, HS256/RS256, где хранить
Сессия держит состояние на сервере: отозвать её проще — удалили ключ в store. JWT access самодостаточен после подписи; отзыв сложнее. HS256 делит секрет с каждым, кто проверяет. RS256 оставляет подпись у issuer. Где хранить токен — развилка XSS против CSRF.
Таймауты HTTP: connect, request, idle, slowloris
Нужны разные таймауты: connect на handshake, чтение заголовков и тела, запись ответа, idle keep-alive. Нулевой таймаут часто значит «ждать вечно». Context отменяет работу, когда клиент ушёл. Slowloris держит слоты капельной подачей заголовков.