diff --git a/backend-node/src/app.ts b/backend-node/src/app.ts index e928f96c..b3d84ecb 100644 --- a/backend-node/src/app.ts +++ b/backend-node/src/app.ts @@ -280,12 +280,20 @@ app.use(errorHandler); const PORT = config.port; const HOST = config.host; -app.listen(PORT, HOST, async () => { +const server = app.listen(PORT, HOST, async () => { logger.info(`πŸš€ Server is running on ${HOST}:${PORT}`); logger.info(`πŸ“Š Environment: ${config.nodeEnv}`); logger.info(`πŸ”— Health check: http://${HOST}:${PORT}/health`); logger.info(`🌐 External access: http://39.117.244.52:${PORT}/health`); + // 비동기 μ΄ˆκΈ°ν™” μž‘μ—… (μ—λŸ¬κ°€ λ°œμƒν•΄λ„ μ„œλ²„λŠ” μœ μ§€) + initializeServices().catch(err => { + logger.error('❌ μ„œλΉ„μŠ€ μ΄ˆκΈ°ν™” 쀑 치λͺ…적 μ—λŸ¬ λ°œμƒ:', err); + }); +}); + +// μ„œλΉ„μŠ€ μ΄ˆκΈ°ν™” ν•¨μˆ˜ 뢄리 +async function initializeServices() { // λ°μ΄ν„°λ² μ΄μŠ€ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ μ‹€ν–‰ try { const { @@ -343,6 +351,15 @@ app.listen(PORT, HOST, async () => { } catch (error) { logger.error(`❌ 메일 μžλ™ μ‚­μ œ μŠ€μΌ€μ€„λŸ¬ μ‹œμž‘ μ‹€νŒ¨:`, error); } +} + +// μš°μ•„ν•œ μ’…λ£Œ 처리 +process.on('SIGTERM', () => { + logger.info('SIGTERM signal received: closing HTTP server'); + server.close(() => { + logger.info('HTTP server closed'); + process.exit(0); + }); }); export default app;