λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
IT

PM2: Node.js ν”„λ‘œμ„ΈμŠ€ κ΄€λ¦¬μž

by πŸ’²πŸŽ΅βœ–οΈβœ”οΈβ˜Ό 2024. 2. 14.
728x90

PM2: Node.js μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ 효과적으둜 κ΄€λ¦¬ν•˜μž

1. PM2 μ†Œκ°œ

1.1 PM2의 κ°œλ…

PM2(Processing Manager 2)λŠ” Node.js μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ΄€λ¦¬ν•˜κ³  λͺ¨λ‹ˆν„°λ§ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€ κ΄€λ¦¬μžμž…λ‹ˆλ‹€. Node.js μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μš΄μ˜μ— ν•„μš”ν•œ λ‹€μ–‘ν•œ κΈ°λŠ₯을 μ œκ³΅ν•˜μ—¬ κ°œλ°œμžκ°€ 효과적으둜 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ 관리할 수 μžˆλ„λ‘ λ„μ™€μ€λ‹ˆλ‹€.

1.2 PM2의 μ£Όμš” κΈ°λŠ₯

  • ν”„λ‘œμ„ΈμŠ€ 관리: Node.js μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ°±κ·ΈλΌμš΄λ“œμ—μ„œ μ‹€ν–‰ν•˜κ³  κ΄€λ¦¬ν•©λ‹ˆλ‹€.
  • μžλ™ λ¦¬μŠ€νƒ€νŠΈ: ν”„λ‘œμ„ΈμŠ€κ°€ λΉ„μ •μƒμ μœΌλ‘œ μ’…λ£Œλ  경우 μžλ™μœΌλ‘œ λ‹€μ‹œ μ‹œμž‘ν•©λ‹ˆλ‹€.
  • λ‘œκΉ… 및 λͺ¨λ‹ˆν„°λ§: μ‹€ν–‰ 쀑인 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 둜그λ₯Ό μˆ˜μ§‘ν•˜κ³  λͺ¨λ‹ˆν„°λ§ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • 무쀑단 배포: μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ—…λ°μ΄νŠΈ μ‹œ downtime 없이 배포할 수 μžˆμŠ΅λ‹ˆλ‹€.

2. PM2 μ‚¬μš© 예제

2.1 PM2 μ„€μΉ˜

npm install -g pm2

2.2 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ‹€ν–‰

pm2 start app.js --name my-app

2.3 ν”„λ‘œμ„ΈμŠ€ λͺ©λ‘ 확인

pm2 list

2.4 둜그 확인

pm2 logs my-app

2.5 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 쀑지

pm2 stop my-app

3. PM2의 μž₯점

3.1 μ•ˆμ •μ„±κ³Ό μ‹ λ’°μ„±

PM2λŠ” ν”„λ‘œμ„ΈμŠ€λ₯Ό λͺ¨λ‹ˆν„°λ§ν•˜κ³ , 비정상 μ’…λ£Œ μ‹œ μžλ™μœΌλ‘œ μž¬μ‹œμž‘ν•˜μ—¬ μ‹œμŠ€ν…œμ˜ μ•ˆμ •μ„±κ³Ό 신뒰성을 λ†’μž…λ‹ˆλ‹€.

3.2 생산성 ν–₯상

PM2λ₯Ό μ‚¬μš©ν•˜λ©΄ ν”„λ‘œμ„ΈμŠ€ 관리, λ‘œκΉ…, λͺ¨λ‹ˆν„°λ§ λ“±μ˜ κΈ°λŠ₯을 ν™œμš©ν•˜μ—¬ κ°œλ°œμžλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 핡심 λ‘œμ§μ— 더 집쀑할 수 μžˆμŠ΅λ‹ˆλ‹€.

3.3 무쀑단 배포

PM2λŠ” 무쀑단 배포λ₯Ό μ§€μ›ν•˜μ—¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ—…λ°μ΄νŠΈλ₯Ό 보닀 μ•ˆμ „ν•˜κ²Œ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

4. PM2의 ν™œμš©

4.1 ν΄λŸ¬μŠ€ν„° λͺ¨λ“œ

pm2 start app.js -i max

ν΄λŸ¬μŠ€ν„° λͺ¨λ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ—¬λŸ¬ ν”„λ‘œμ„ΈμŠ€κ°€ λ³‘λ ¬λ‘œ μ‹€ν–‰λ˜μ–΄ μ„±λŠ₯을 ν–₯μƒμ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.

4.2 ν™˜κ²½ λ³€μˆ˜ μ„€μ •

pm2 start app.js --env production

ν™˜κ²½ λ³€μˆ˜λ₯Ό μ„€μ •ν•˜μ—¬ 각각의 ν”„λ‘œμ„ΈμŠ€κ°€ λ‹€λ₯Έ ν™˜κ²½μ—μ„œ μ‹€ν–‰λ˜λ„λ‘ ꡬ성할 수 μžˆμŠ΅λ‹ˆλ‹€.

4.3 PM2의 μΆ”κ°€ κΈ°λŠ₯

  • PM2 λͺ¨λ‹ˆν„°: pm2 monit λͺ…λ Ήμ–΄λ₯Ό 톡해 CPU, λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰ 등을 μ‹€μ‹œκ°„μœΌλ‘œ λͺ¨λ‹ˆν„°λ§ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ„€μ • 파일 ν™œμš©: ecosystem.config.js νŒŒμΌμ„ 톡해 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 섀정을 관리할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • 둜그 관리: pm2 logs λͺ…λ Ήμ–΄λ‘œ 둜그λ₯Ό μ‰½κ²Œ ν™•μΈν•˜κ³  ν•„μš”μ— 따라 둜그 λ ˆλ²¨μ„ μ‘°μ ˆν•  수 μžˆμŠ΅λ‹ˆλ‹€.

5. 마무리

PM2λŠ” Node.js μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ 효과적으둜 κ΄€λ¦¬ν•˜κ³  μš΄μ˜ν•  수 μžˆλŠ” κ°•λ ₯ν•œ λ„κ΅¬μž…λ‹ˆλ‹€. μ•ˆμ •μ„±, 생산성, 무쀑단 배포 λ“± λ‹€μ–‘ν•œ μž₯점을 μ œκ³΅ν•˜λ―€λ‘œ Node.js κ°œλ°œμžλ“€μ—κ²Œ ꢌμž₯λ˜λŠ” ν”„λ‘œμ„ΈμŠ€ 관리 도ꡬ 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€. PM2λ₯Ό 적절히 ν™œμš©ν•˜μ—¬ Node.js μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μš΄μ˜μ„ 보닀 효율적으둜 μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 μ•ˆμ •μ μ΄κ³  μ„±λŠ₯ νƒμ›”ν•œ μ„œλΉ„μŠ€λ₯Ό μ œκ³΅ν•˜μ„Έμš”.

λŒ“κΈ€