Хватит писать try-catch в контроллерах: как я причесал ошибки в Express и перестал бояться деплоя

Знаете это чувство, когда открываешь контроллер в Express проекте, чтобы поправить одну строчку логики, и видишь ЭТО ? Бесконечная вложенность, проверки на существование полей, ручной парсинг ошибок от базы данных и, конечно же, его величество try-catch , который занимает 80% файла. Я тоже через это проходил. В каждом новом микросервисе я копипастил одни и те же функции обработки ошибок. В одном проекте я ловил ошибки Mongoose через err.name === 'ValidationError' , в другом — через instanceof . Где-то мы отдавали { error: "message" } , где-то { status: "fail", msg: "..." } . В какой-то момент мне это надоело. Мне захотелось инструмент, который я могу просто подключить одной строкой, и он сам поймет, что "E11000" от Mongo — это 409 Conflict, а ошибка Zod — это 400 Bad Request. При этом я не хотел тянуть в проект тяжелые зависимости. Так родилась библиотека ds-express-errors . Сегодня я расскажу, зачем я ее написал и почему она может сэкономить вам кучу нервов.

https://habr.com/ru/articles/981456/

#error_handling #express #graceful_shutdown #javascript #nodejs #opensourse #middleware #custom_config_parameters

Хватит писать try-catch в контроллерах: как я причесал ошибки в Express и перестал бояться деплоя

Знаете это чувство, когда открываешь контроллер в Express проекте, чтобы поправить одну строчку логики, и видишь ЭТО ? Бесконечная вложенность, проверки на су��ествование полей, ручной парсинг ошибок...

Хабр

Чистим main.go: предсказуемый старт и надежный Graceful Shutdown

Сталкивались ли вы с болью при управлении порядком запуска и остановки зависимостей в вашем Go-сервисе? Разработка больших сервисов неизбежно приводит к необходимости управлять множеством зависимостей. В этом контексте мы говорим о долгоживущих компонентах , чья работа обеспечивается отдельными горутинами: как правило, это блокирующий метод (например, Start ), внутри которого крутится цикл обработки. Примерный сценарий жизненного цикла сервиса выглядит так: При запуске критически важно, чтобы пул соединений с БД, кэш и очереди были полностью готовы до того, как HTTP-сервер откроет порт и начнет принимать входящий трафик. С graceful shutdown ситуация обратная: порядок должен быть строго зеркальным. Сначала нужно перестать принимать новые запросы, дождаться завершения текущих, остановить воркеры, и только потом разрывать соединения с инфраструктурой. Иначе мы получаем неприятные ошибки подключения и даже потерянные транзакции в момент деплоя. Если эти проблемы вам не знакомы, смело закрывайте вкладку. Скорее всего, эта статья не принесет вам пользы. Но если вы ищете способ автоматизировать эту рутину, сохранив код чистым - добро пожаловать под кат.

https://habr.com/ru/articles/976800/

#go #golang #graceful_shutdown #dag #Dependency_Injection #Uber_Fx #Микросервисы #Open_Source #Архитектура #lifecycle

Чистим main.go: предсказуемый старт и надежный Graceful Shutdown

Сталкивались ли вы с болью при управлении порядком запуска и остановки зависимостей в вашем Go-сервисе? Разработка больших сервисов неизбежно приводит к необходимости управлять множеством...

Хабр

[Перевод] Graceful Shutdown в Go на практике

Разберемся с сигналами от ОС, поработаем с таймаутами и контекстом в нашем HTTP сервере и шаг за шагом сделаем Graceful Shutdown в Go приложении.

https://habr.com/ru/articles/908344/

#golang #go #graceful_shutdown #practice

Graceful Shutdown в Go на практике

Graceful Shutdown в Go на практике Корректное завершение любого приложения обычно делает три вещи: Закрывает точку входа для новых запросов или сообщений из HTTP, pub/sub источников и т.д. При этом...

Хабр

До свидания, Kafka, или graceful shutdown на Spring Boot для Kafka

В этой статье я немного объясню важность graceful shutdown и расскажу как сделать плавное завершение работы твоего Spring Boot приложения, которое взаимодействует с Kafka.

https://habr.com/ru/articles/908022/

#java #springboot #kafka #graceful_shutdown

До свидания, Kafka, или graceful shutdown на Spring Boot для Kafka

Привет! В этой статье я немного объясню важность graceful shutdown и расскажу как сделать плавное завершение работы твоего Spring Boot приложения, которое взаимодействует с Kafka. Представь, что ты...

Хабр

[Перевод] Корректное завершение работы подов в Kubernetes

Перевели статью и наглядную инфографику управляющего директора Learnk8s Daniele Polencic о корректном завершении работы подов в Kubernetes. В тексте много примеров и иллюстраций, которые помогут начинающим разобраться, как предотвратить разрыв соединений при запуске или остановке пода. В том числе для долгоживущих соединений и задач.

https://habr.com/ru/companies/flant/articles/853210/

#kubernetes #pod #graceful_shutdown #поды #завершение_работы #контейнеризация #деплоймент #deployment #k8s

Корректное завершение работы подов в Kubernetes

Примечание переводчика : это не первый наш перевод материалов Learnk8s и её управляющего директора Daniele Polencic. В благодарность за интересную статью мы оставляем здесь ссылку на страницу компании...

Хабр