κΈλ‘λ² μ¬μ©μλ₯Ό μν μμ μ μΈ μΉ μ ν리μΌμ΄μ ꡬμΆμ μν νλ‘ νΈμλ μ€λ₯ μΆμ , νλ‘λμ μ€λ₯ λͺ¨λν°λ§ λ° λ³΅κ΅¬ μ λ΅μ λν μ’ ν© κ°μ΄λμ λλ€.
νλ‘ νΈμλ μ€λ₯ μΆμ : κΈλ‘λ² μ ν리μΌμ΄μ μ μν νλ‘λμ μ€λ₯ λͺ¨λν°λ§ λ° λ³΅κ΅¬
μ€λλ λΉ λ₯΄κ² λ³ννλ λμ§νΈ μΈκ³μμ μ¬μ©μλ μννκ³ μμ μ μΈ μΉ κ²½νμ κΈ°λν©λλ€. μμ νλ‘ νΈμλ μ€λ₯λΌλ μ¬μ©μ λ§μ‘±λμ ν° μν₯μ λ―ΈμΉκ³ λΈλλ ννμ μμμν€λ©° κΆκ·Ήμ μΌλ‘ μμ΅μ μν₯μ μ€ μ μμ΅λλ€. μ΄λ νΉν λ€νΈμν¬ μν, λΈλΌμ°μ νΈνμ± λ° μ§μ λ°μ΄ν° λ³λμΌλ‘ μΈν΄ μμμΉ λͺ»ν λ¬Έμ κ° λ°μν μ μλ κΈλ‘λ² μ¬μ©μλ₯Ό λμμΌλ‘ νλ μ ν리μΌμ΄μ μ κ²½μ°μ λμ± κ·Έλ μ΅λλ€. κ°λ ₯ν νλ‘ νΈμλ μ€λ₯ μΆμ μ λ΅μ ꡬννλ κ²μ λ μ΄μ μ¬μΉκ° μλλΌ μ±κ³΅μ μΈ μΉ μ ν리μΌμ΄μ μ ꡬμΆνκ³ μ μ§ κ΄λ¦¬νλ λ° νμμ μ λλ€. μ΄ μ’ ν© κ°μ΄λλ νλ‘ νΈμλ μ€λ₯ μΆμ μ μΈκ³λ₯Ό νꡬνμ¬ νλ‘λμ μ€λ₯ λͺ¨λν°λ§, 볡ꡬ μ λ΅ λ° μ μΈκ³μ μΌλ‘ μλ²½ν μ¬μ©μ κ²½νμ 보μ₯νκΈ° μν λͺ¨λ² μ¬λ‘λ₯Ό λ€λ£Ήλλ€.
κΈλ‘λ² μ ν리μΌμ΄μ μμ νλ‘ νΈμλ μ€λ₯ μΆμ μ΄ μ€μν μ΄μ
νλ‘ νΈμλ μ€λ₯λ JavaScript μμΈ λ° κΉ¨μ§ μ΄λ―Έμ§μμ UI κ²°ν¨ λ° API μμ² μ€ν¨μ μ΄λ₯΄κΈ°κΉμ§ λ€μν ννλ‘ λνλ μ μμ΅λλ€. μ΄λ¬ν μ€λ₯λ λ€μκ³Ό κ°μ λ€μν μμ€μμ λ°μν μ μμ΅λλ€.
- λΈλΌμ°μ λΉνΈνμ±: λ€λ₯Έ λΈλΌμ°μ λ μΉ νμ€μ λ€λ₯΄κ² ν΄μνμ¬ λ λλ§ λΆμΌμΉ λ° JavaScript μ€ν μ€λ₯κ° λ°μν μ μμ΅λλ€. νΉν μ΄μ λΈλΌμ°μ λ²μ μ΄ λ¬Έμ κ° λ©λλ€.
- λ€νΈμν¬ λ¬Έμ : λ리거λ λΆμμ ν λ€νΈμν¬ μ°κ²°λ‘ μΈν΄ μμ° λ‘λ μ€ν¨, API μμ² μκ° μ΄κ³Ό λ° JavaScript μ½λ μ€ν μ€λ₯κ° λ°μν μ μμ΅λλ€. μ΄λ μΈν°λ· μΈνλΌκ° λ λ°λ¬λ μ§μμμ νΉν κ΄λ ¨μ΄ μμ΅λλ€.
- νμ¬ λΌμ΄λΈλ¬λ¦¬ λ° API: νμ¬ λΌμ΄λΈλ¬λ¦¬ λλ APIμ λ²κ·Έλ‘ μΈν΄ μμμΉ λͺ»ν μ€λ₯κ° μ ν리μΌμ΄μ μ λ°μν μ μμ΅λλ€.
- μ¬μ©μ μ λ ₯: μλͺ»λμκ±°λ μμμΉ λͺ»ν μ¬μ©μ μ λ ₯μΌλ‘ μΈν΄ νΌ μ ν¨μ± κ²μ¬ λ° λ°μ΄ν° μ²λ¦¬μμ μ€λ₯κ° λ°μν μ μμ΅λλ€.
- μ½λ κ²°ν¨: μ€ν λλ μλͺ»λ λ Όλ¦¬μ κ°μ κ°λ¨ν νλ‘κ·Έλλ° μ€λ₯λ‘ μΈν΄ λ°νμ μμΈκ° λ°μν μ μμ΅λλ€.
- μ₯μΉλ³ λ¬Έμ : λ€μν νλ©΄ ν¬κΈ°, μ²λ¦¬ λ₯λ ₯ λ° μ΄μ 체μ λ₯Ό κ°μ§ λͺ¨λ°μΌ μ₯μΉλ κ³ μ ν λ¬Έμ λ₯Ό μ μν μ μμ΅λλ€.
- μ§μν λ° κ΅μ ν(i18n) λ¬Έμ : μλͺ» μ§μνλ μ½ν μΈ , λ μ§/μκ° νμ μ€λ₯ λλ λ¬Έμ μΈμ½λ© λ¬Έμ λ‘ μΈν΄ UIκ° κΉ¨μ§κ³ λΆλ§μ΄ λ°μν μ μμ΅λλ€.
κΈλ‘λ² μ¬μ©μλ₯Ό λμμΌλ‘ νλ μ ν리μΌμ΄μ μ κ²½μ° μ΄λ¬ν λ¬Έμ κ° μ¦νλ©λλ€. λ€νΈμν¬ μλ, μ₯μΉ μ ν λ° μ§μν μꡬ μ¬νμ λ³νλ μ μ¬μ μΈ μ€λ₯μ 볡μ‘ν νκ²½μ λ§λ€ μ μμ΅λλ€. μ μ ν μ€λ₯ μΆμ μ΄ μμΌλ©΄ μ¬μ©μ κΈ°λ°μ μλΉ λΆλΆμ κΉ¨μ§κ±°λ μΌκ΄μ± μλ κ²½νμ μ 곡ν μνμ΄ μμ΅λλ€. λ―Έκ΅ μ€μ¬μ λ μ§ κ΅¬λ¬Έ λΆμ κΈ°λ₯μΌλ‘ μΈν΄ μΌλ³Έ μ¬μ©μκ° κΉ¨μ§ λ μ§ νμμ κ²½ννκ±°λ μ΅μ νλμ§ μμ μ΄λ―Έμ§λ‘ μΈν΄ λΈλΌμ§ μ¬μ©μκ° λλ¦° λ‘λ© μκ°μ κ²ͺλλ€κ³ μμν΄ λ³΄μμμ€. μ΄λ¬ν μ¬μν λ¬Έμ λ ν΄κ²°νμ§ μμΌλ©΄ ν° λ¬Έμ λ‘ μ΄μ΄μ§ μ μμ΅λλ€.
ν¨κ³Όμ μΈ νλ‘ νΈμλ μ€λ₯ μΆμ μ λ€μκ³Ό κ°μ λ° λμμ΄ λ©λλ€.
- λ¬Έμ μλ³ λ° μ°μ μμ μ§μ : μ€λ₯λ₯Ό μλμΌλ‘ κ°μ§νκ³ κΈ°λ‘νμ¬ κ° λ¬Έμ μ λΉλ, μν₯ λ° κ·Όλ³Έ μμΈμ λν μ€μν ν΅μ°°λ ₯μ μ 곡ν©λλ€.
- ν΄κ²° μκ° λ¨μΆ: λΈλΌμ°μ λ²μ , μ΄μ 체μ λ° μ¬μ©μ μμ κ³Ό κ°μ 컨ν μ€νΈ μ 보λ₯Ό μμ§νμ¬ μ€λ₯λ₯Ό μ μνκ² μ§λ¨νκ³ μμ ν©λλ€.
- μ¬μ©μ κ²½ν κ°μ : μ¬μ©μμκ² ν° μν₯μ λ―ΈμΉκΈ° μ μ λ¬Έμ λ₯Ό μ¬μ μ ν΄κ²°νμ¬ λ λΆλλ½κ³ μμ μ μΈ κ²½νμ μ 곡ν©λλ€.
- μ νμ¨ μ¦κ°: λ²κ·Έ μλ μ ν리μΌμ΄μ μ μ¬μ©μ μ λ’°λ μ¦κ°μ λ λμ μ νμ¨λ‘ μ΄μ΄μ§λλ€.
- λ°μ΄ν° κΈ°λ° μμ¬ κ²°μ : μ€λ₯ λ°μ΄ν°λ₯Ό μ¬μ©νμ¬ μ½λλ² μ΄μ€ λ° κ°λ° νλ‘μΈμ€μμ κ°μ ν μμμ μλ³ν©λλ€.
- κΈλ‘λ² μ±λ₯ λͺ¨λν°λ§: λ€μν μ§μμμ μ±λ₯ μ§νλ₯Ό μΆμ νμ¬ μ§μνλ λ¬Έμ λ₯Ό μλ³νκ³ ν΄κ²°ν©λλ€.
νλ‘ νΈμλ μ€λ₯ μΆμ μμ€ν μ μ£Όμ κ΅¬μ± μμ
μ’ ν©μ μΈ νλ‘ νΈμλ μ€λ₯ μΆμ μμ€ν μ μΌλ°μ μΌλ‘ λ€μκ³Ό κ°μ κ΅¬μ± μμλ₯Ό ν¬ν¨ν©λλ€.
1. μ€λ₯ μΊ‘μ²
μ€λ₯ μΆμ μμ€ν μ μ£Όμ κΈ°λ₯μ νλ‘ νΈμλ μ ν리μΌμ΄μ μμ λ°μνλ μ€λ₯λ₯Ό μΊ‘μ²νλ κ²μ λλ€. μ΄λ λ€μκ³Ό κ°μ λ€μν κΈ°μ μ ν΅ν΄ λ¬μ±ν μ μμ΅λλ€.
- μ μ μ€λ₯ μ²λ¦¬: μ‘νμ§ μμ μμΈλ₯Ό ν¬μ°©νμ¬ μ€λ₯ μΆμ μμ€ν μ κΈ°λ‘νλ μ μ μ€λ₯ μ²λ¦¬κΈ°λ₯Ό ꡬνν©λλ€.
- Try-Catch λΈλ‘: μ μ¬μ μΌλ‘ μ€λ₯κ° λ°μνκΈ° μ¬μ΄ μ½λ λΈλ‘μ try-catch λ¬ΈμΌλ‘ λννμ¬ μμΈλ₯Ό μ μμ μΌλ‘ μ²λ¦¬ν©λλ€.
- Promise κ±°λΆ μ²λ¦¬: μ²λ¦¬λμ§ μμ promise κ±°λΆλ₯Ό μΊ‘μ²νμ¬ μλ μ€ν¨λ₯Ό λ°©μ§ν©λλ€.
- μ΄λ²€νΈ 리μ€λ μ€λ₯ μ²λ¦¬: μ΄λ²€νΈ 리μ€λμμ μ€λ₯λ₯Ό λͺ¨λν°λ§νκ³ κ·Έμ λ°λΌ κΈ°λ‘ν©λλ€.
- λ€νΈμν¬ μ€λ₯ μ²λ¦¬: μ€ν¨ν API μμ² λ° κΈ°ν λ€νΈμν¬ κ΄λ ¨ μ€λ₯λ₯Ό μΆμ ν©λλ€.
μ€λ₯λ₯Ό μΊ‘μ²ν λλ κ°λ₯ν ν λ§μ 컨ν μ€νΈ μ 보λ₯Ό μμ§νλ κ²μ΄ μ€μν©λλ€. μ¬κΈ°μλ λ€μμ΄ ν¬ν¨λ©λλ€.
- μ€λ₯ λ©μμ§: λ°μν μ€μ μ€λ₯ λ©μμ§μ λλ€.
- μ€ν μΆμ : μ€λ₯λ‘ μ΄μ΄μ§ νΈμΆ μ€νμΌλ‘, λλ²κΉ μ λν μ€μν λ¨μλ₯Ό μ 곡ν©λλ€.
- λΈλΌμ°μ λ° OS μ 보: μ¬μ©μμ λΈλΌμ°μ λ²μ , μ΄μ 체μ λ° μ₯μΉ μ νμ λλ€.
- μ¬μ©μ ID: μ€λ₯λ₯Ό κ²½νν μ¬μ©μμ ID(μ¬μ© κ°λ₯ν κ²½μ°)μ λλ€.
- URL: μ€λ₯κ° λ°μν νμ΄μ§μ URLμ λλ€.
- νμμ€ν¬ν: μ€λ₯κ° λ°μν μκ°μ λλ€.
- μμ² νμ΄λ‘λ: API μμ² μ€μ μ€λ₯κ° λ°μν κ²½μ° μμ² νμ΄λ‘λλ₯Ό μΊ‘μ²ν©λλ€.
- μΏ ν€: μ€λ₯μ κΈ°μ¬ν μ μλ κ΄λ ¨ μΏ ν€μ λλ€.
- μΈμ λ°μ΄ν°: μ¬μ©μ μΈμ μ λν μ 보μ λλ€.
κΈλ‘λ² μ ν리μΌμ΄μ μ κ²½μ° μ¬μ©μ λ‘μΊ λ° μκ°λλ₯Ό μΊ‘μ²νλ κ²λ μ€μν©λλ€. μ΄λ μ§μν κ΄λ ¨ λ¬Έμ λ₯Ό μλ³νλ λ° λμμ΄ λ μ μμ΅λλ€.
μ:
```javascript
window.onerror = function(message, source, lineno, colno, error) {
// Send error information to your error tracking service
trackError({
message: message,
source: source,
lineno: lineno,
colno: colno,
error: error,
browser: navigator.userAgent,
url: window.location.href
});
return true; // Prevent default browser error handling
};
```
2. μ€λ₯ 보κ³
μ€λ₯κ° μΊ‘μ²λλ©΄ μ€μ μ€λ₯ μΆμ μμ€ν μ λ³΄κ³ ν΄μΌ ν©λλ€. μ΄λ λ€μκ³Ό κ°μ λ€μν λ°©λ²μ μ¬μ©νμ¬ μνν μ μμ΅λλ€.
- HTTP μμ²: HTTP μμ²(μ: POST μμ²)μ μ¬μ©νμ¬ μ€λ₯ λ°μ΄ν°λ₯Ό μ μ© μλν¬μΈνΈλ‘ 보λ λλ€.
- λΈλΌμ°μ API: `navigator.sendBeacon`κ³Ό κ°μ λΈλΌμ°μ APIλ₯Ό νμ©νμ¬ μ¬μ©μ μΈν°νμ΄μ€λ₯Ό μ°¨λ¨νμ§ μκ³ λ°±κ·ΈλΌμ΄λμμ μ€λ₯ λ°μ΄ν°λ₯Ό 보λ λλ€.
- μΉ μμΌ: μΉ μμΌ μ°κ²°μ μ€μ νμ¬ μ€λ₯ λ°μ΄ν°λ₯Ό μ€μκ°μΌλ‘ μ€νΈλ¦¬λ°ν©λλ€.
μ€λ₯λ₯Ό λ³΄κ³ ν λλ λ€μ μμλ₯Ό κ³ λ €νλ κ²μ΄ μ€μν©λλ€.
- λ°μ΄ν° 보μ: μ¬μ©μ λΉλ°λ²νΈ λλ API ν€μ κ°μ λ―Όκ°ν λ°μ΄ν°κ° μ€λ₯ λ³΄κ³ μμ ν¬ν¨λμ§ μλλ‘ ν©λλ€.
- λ°μ΄ν° μμΆ: λ€νΈμν¬ λμν μ¬μ©λμ μ€μ΄κΈ° μν΄ μ€λ₯ λ°μ΄ν°λ₯Ό μμΆν©λλ€.
- μλ μ ν: κ³Όλν μ€λ₯ λ³΄κ³ μλ‘ μΈν΄ μ€λ₯ μΆμ μμ€ν μ΄ μλλλ κ²μ λ°©μ§νκΈ° μν΄ μλ μ νμ ꡬνν©λλ€.
- λΉλκΈ° λ³΄κ³ : μ¬μ©μ μΈν°νμ΄μ€λ₯Ό μ°¨λ¨νμ§ μλλ‘ μ€λ₯λ₯Ό λΉλκΈ°μ μΌλ‘ λ³΄κ³ ν©λλ€.
3. μ€λ₯ μ§κ³ λ° μ€λ³΅ μ κ±°
νλ‘λμ νκ²½μμλ λμΌν μ€λ₯κ° μ¬λ¬ λ² λ°μν μ μμ΅λλ€. μ€λ³΅λ λ³΄κ³ μλ‘ μ€λ₯ μΆμ μμ€ν μ΄ λ³΅μ‘ν΄μ§λ κ²μ λ°©μ§νλ €λ©΄ μ€λ₯λ₯Ό μ§κ³νκ³ μ€λ³΅ μ κ±°νλ κ²μ΄ μ€μν©λλ€. μ΄λ μ€λ₯ λ©μμ§, μ€ν μΆμ λ° κΈ°ν κ΄λ ¨ μμ±μ κΈ°λ°μΌλ‘ μ€λ₯λ₯Ό κ·Έλ£Ήννμ¬ μνν μ μμ΅λλ€.
ν¨κ³Όμ μΈ μ§κ³ λ° μ€λ³΅ μ κ±°λ λ€μκ³Ό κ°μ λ° λμμ΄ λ©λλ€.
- λ Έμ΄μ¦ κ°μ: μ€λ³΅λ λ³΄κ³ μμ μλλμ§ μκ³ κ³ μ ν μ€λ₯μ μ§μ€ν©λλ€.
- κ·Όλ³Έ μμΈ μλ³: κ΄λ ¨λ μ€λ₯λ₯Ό κ·Έλ£Ήννμ¬ κΈ°λ³Έ ν¨ν΄ λ° κ·Όλ³Έ μμΈμ λ°νλλ€.
- λ¬Έμ μ°μ μμ μ§μ : μ¬μ©μμκ² κ°μ₯ ν° μν₯μ λ―ΈμΉλ κ°μ₯ μμ£Ό λ°μνλ μ€λ₯μ μ§μ€ν©λλ€.
4. μ€λ₯ λΆμ λ° μκ°ν
μ€λ₯ μΆμ μμ€ν μ μ€λ₯ λ°μ΄ν°λ₯Ό λΆμνκ³ μκ°ννκΈ° μν λꡬλ₯Ό μ 곡ν΄μΌ ν©λλ€. μ¬κΈ°μλ λ€μμ΄ ν¬ν¨λ©λλ€.
- μ€λ₯ λμ보λ: μ€λ₯μ¨, μν₯μ λ°μ μ¬μ©μ λ° μμ μ€λ₯ μ νκ³Ό κ°μ μ£Όμ μ€λ₯ μ§νλ₯Ό μκ°νν©λλ€.
- μ€λ₯ νν°λ§ λ° κ²μ: μ€λ₯ λ©μμ§, λΈλΌμ°μ , OS, URL λ° μ¬μ©μ IDμ κ°μ λ€μν κΈ°μ€μ λ°λΌ μ€λ₯λ₯Ό νν°λ§νκ³ κ²μν©λλ€.
- μ€ν μΆμ λΆμ: μ€ν μΆμ μ λΆμνμ¬ μ½λλ² μ΄μ€μμ μ€λ₯μ μ νν μμΉλ₯Ό μ°Ύμλ λλ€.
- μ¬μ©μ μΈμ μΆμ : μ€λ₯κ° λ°μν 컨ν μ€νΈλ₯Ό μ΄ν΄νκΈ° μν΄ μ¬μ©μ μΈμ μ μΆμ ν©λλ€.
- κ²½κ³ λ° μλ¦Ό: μ μ€λ₯κ° λ°μνκ±°λ μ€λ₯μ¨μ΄ νΉμ μκ³κ°μ μ΄κ³Όν λ μλ¦Όμ 보λ΄λλ‘ κ²½κ³ λ₯Ό ꡬμ±ν©λλ€.
κΈλ‘λ² μ ν리μΌμ΄μ μ κ²½μ° μ€λ₯ μΆμ μμ€ν μ μ§μ λ° λ‘μΊλ³λ‘ μ€λ₯ λ°μ΄ν°λ₯Ό λΆμνκΈ° μν λꡬλ μ 곡ν΄μΌ ν©λλ€. μ΄λ νΉμ μ§μμ μ¬μ©μμκ² μν₯μ λ―ΈμΉ μ μλ μ§μνλ λ¬Έμ λ₯Ό μλ³νλ λ° λμμ΄ λ μ μμ΅λλ€.
5. μ€λ₯ 볡ꡬ
μ€λ₯λ₯Ό μΆμ νκ³ λΆμνλ κ² μΈμλ μ€λ₯κ° μ¬μ©μμκ² λ―ΈμΉλ μν₯μ μ΅μννκΈ° μν΄ μ€λ₯ 볡ꡬ λ©μ»€λμ¦μ ꡬννλ κ²λ μ€μν©λλ€. μ¬κΈ°μλ λ€μμ΄ ν¬ν¨λ μ μμ΅λλ€.
- λ체 λ©μ»€λμ¦: μ€ν¨ν API μμ² λλ κΉ¨μ§ κ΅¬μ± μμμ λν λ체 λ©μ»€λμ¦μ μ 곡ν©λλ€. μλ₯Ό λ€μ΄ λ°μ΄ν°μ μΊμλ λ²μ μ νμνκ±°λ μ¬μ©μλ₯Ό λ€λ₯Έ νμ΄μ§λ‘ 리λλ μ ν μ μμ΅λλ€.
- μ μμ μΈ μ±λ₯ μ ν: μ€λ₯κ° λ°μν κ²½μ° μ ν리μΌμ΄μ μ΄ μ μμ μΌλ‘ μ±λ₯ μ νλλλ‘ μ€κ³ν©λλ€. μλ₯Ό λ€μ΄ νΉμ κΈ°λ₯μ λΉνμ±ννκ±°λ UIμ λ¨μνλ λ²μ μ νμν μ μμ΅λλ€.
- μ¬μλ λ‘μ§: μΌμμ μΈ λ€νΈμν¬ λ¬Έμ λ‘ μΈν΄ λ°μν μ μλ μ€ν¨ν API μμ² λλ κΈ°ν μμ μ λν μ¬μλ λ‘μ§μ ꡬνν©λλ€.
- μ€λ₯ κ²½κ³: μ€λ₯ κ²½κ³λ₯Ό μ¬μ©νμ¬ κ΅¬μ± μμλ₯Ό 격리νκ³ μ€λ₯κ° μ ν리μΌμ΄μ μ 체μ νμ°λλ κ²μ λ°©μ§ν©λλ€. μ΄λ React λ° Vue.jsμ κ°μ κ΅¬μ± μμ κΈ°λ° νλ μμν¬μμ νΉν μ€μν©λλ€.
- μ¬μ©μ μΉνμ μΈ μ€λ₯ λ©μμ§: μ¬μ©μμκ² μ μ©ν μ 보μ μ§μΉ¨μ μ 곡νλ μ¬μ©μ μΉνμ μΈ μ€λ₯ λ©μμ§λ₯Ό νμν©λλ€. κΈ°μ μ©μ΄λ μ€ν μΆμ μ νμνμ§ λ§μμμ€.
μ(React μ€λ₯ κ²½κ³):
```javascript
class ErrorBoundary extends React.Component {
constructor(props) {
super(props);
this.state = { hasError: false };
}
static getDerivedStateFromError(error) {
// Update state so the next render will show the fallback UI.
return { hasError: true };
}
componentDidCatch(error, errorInfo) {
// You can also log the error to an error reporting service
logErrorToMyService(error, errorInfo);
}
render() {
if (this.state.hasError) {
// You can render any custom fallback UI
return Something went wrong.
;
}
return this.props.children;
}
}
// Usage:
```
μ μ ν μ€λ₯ μΆμ λꡬ μ ν
λͺ κ°μ§ νλ₯ν νλ‘ νΈμλ μ€λ₯ μΆμ λꡬλ₯Ό μ¬μ©ν μ μμΌλ©° κ° λꡬμλ κ³ μ ν κ°μ κ³Ό μ½μ μ΄ μμ΅λλ€. λͺ κ°μ§ μΈκΈ° μλ μ΅μ μ λ€μκ³Ό κ°μ΅λλ€.
- Sentry: μ€λ₯ μΊ‘μ², λ³΄κ³ , μ§κ³ λ° λΆμμ μν ν¬κ΄μ μΈ κΈ°λ₯μ μ 곡νλ λ리 μ¬μ©λλ μ€λ₯ μΆμ νλ«νΌμ λλ€. Sentryλ κ΄λ²μν νλ‘κ·Έλλ° μΈμ΄ λ° νλ μμν¬λ₯Ό μ§μνλ©° μΈκΈ° μλ κ°λ° λꡬμ μννκ² ν΅ν©λ©λλ€.
- Rollbar: Sentryμ μ μ¬ν κΈ°λ₯μ μ 곡νλ λ λ€λ₯Έ μΈκΈ° μλ μ€λ₯ μΆμ νλ«νΌμ λλ€. Rollbarλ μ¬μ©μ μΉνμ μΈ μΈν°νμ΄μ€μ κ°λ ₯ν μ€λ₯ κ·Έλ£Ήν λ° μ€λ³΅ μ κ±° κΈ°λ₯μΌλ‘ μ λͺ ν©λλ€.
- Bugsnag: λλ²κΉ λ° κ·Όλ³Έ μμΈ λΆμμ μν κ³ κΈ κΈ°λ₯μ μ 곡νλ κ°λ ₯ν μ€λ₯ μΆμ νλ«νΌμ λλ€. Bugsnagλ μμΈν μ€λ₯ λ³΄κ³ μ, μ€ν μΆμ λ° μ¬μ©μ μΈμ μΆμ μ μ 곡ν©λλ€.
- Raygun: μ±λ₯ λ° μ¬μ©μ μν₯μ μ€μ μ λκ³ μ€μ μ¬μ©μ λͺ¨λν°λ§κ³Ό μ€λ₯ μΆμ μ ν κ³³μμ μ 곡ν©λλ€.
- trackjs: μ€μκ° μΆμ λ° ν¬κ΄μ μΈ μ§λ¨μ μ 곡νλ JavaScript μ€λ₯ λͺ¨λν°λ§ λꡬμ λλ€.
- LogRocket: μλ°ν λ§νλ©΄ μ€λ₯ μΆμ λꡬλ μλμ§λ§ LogRocketμ νλ‘ νΈμλ μ€λ₯λ₯Ό λλ²κΉ νλ λ° λ§€μ° μ μ©ν μΈμ μ¬μ κΈ°λ₯μ μ 곡ν©λλ€. LogRocketμ μ¬μ©μ μΈμ μ κΈ°λ‘νμ¬ μ¬μνκ³ μ€λ₯κ° λ°μνμ λ μ¬μ©μκ° κ²½νν λ΄μ©μ μ ννκ² νμΈν μ μλλ‘ ν©λλ€.
μ€λ₯ μΆμ λꡬλ₯Ό μ νν λλ λ€μ μμλ₯Ό κ³ λ €νμμμ€.
- κΈ°λ₯: λκ΅¬κ° μ€λ₯ μΊ‘μ², λ³΄κ³ , μ§κ³, λΆμ λ° λ³΅κ΅¬μ νμν λͺ¨λ κΈ°λ₯μ μ 곡ν©λκΉ?
- ν΅ν©: λκ΅¬κ° κΈ°μ‘΄ κ°λ° λꡬ λ° μν¬νλ‘μ μννκ² ν΅ν©λ©λκΉ?
- κ°κ²©: λκ΅¬κ° μμ°μ λ§λ κ°κ²© κ³νμ μ 곡ν©λκΉ?
- νμ₯μ±: λκ΅¬κ° μ ν리μΌμ΄μ μμ μμ±λ μ€λ₯ λ°μ΄ν°μ μμ μ²λ¦¬ν μ μμ΅λκΉ?
- μ§μ: λκ΅¬κ° μ μ ν μ§μ λ° λ¬Έμλ₯Ό μ 곡ν©λκΉ?
- κ·μ μ€μ: λκ΅¬κ° κ·μ μ€μ μꡬ μ¬ν(μ: GDPR, HIPAA)μ μΆ©μ‘±ν©λκΉ?
κΈλ‘λ² μ ν리μΌμ΄μ μμ νλ‘ νΈμλ μ€λ₯ μΆμ μ μν λͺ¨λ² μ¬λ‘
λ€μμ κΈλ‘λ² μ ν리μΌμ΄μ μμ νλ‘ νΈμλ μ€λ₯ μΆμ μ ꡬννκΈ° μν λͺ κ°μ§ λͺ¨λ² μ¬λ‘μ λλ€.
- μ’ ν©μ μΈ μ€λ₯ μΆμ μ λ΅ κ΅¬ν: μ μ μ€λ₯ μ²λ¦¬κΈ°μλ§ μμ‘΄νμ§ λ§μμμ€. try-catch λΈλ‘, promise κ±°λΆ μ²λ¦¬ λ° κΈ°ν κΈ°μ μ μ¬μ©νμ¬ μ€λ₯λ₯Ό μ¬μ μ μΊ‘μ²νμμμ€.
- μμΈν 컨ν μ€νΈ μ 보 μμ§: λΈλΌμ°μ λ²μ , μ΄μ 체μ , μ¬μ©μ ID, URL λ° νμμ€ν¬νλ₯Ό ν¬ν¨νμ¬ κ°λ₯ν ν λ§μ 컨ν μ€νΈ μ 보λ₯Ό μΊ‘μ²νμμμ€.
- μ€λ₯ μ§κ³ λ° μ€λ³΅ μ κ±°: κ΄λ ¨λ μ€λ₯λ₯Ό κ·Έλ£Ήννμ¬ κΈ°λ³Έ ν¨ν΄ λ° κ·Όλ³Έ μμΈμ λ°νλ΄μμμ€.
- μ§μ λ° λ‘μΊλ³λ‘ μ€λ₯ λ°μ΄ν° λΆμ: νΉμ μ§μμ μ¬μ©μμκ² μν₯μ λ―ΈμΉ μ μλ μ§μνλ λ¬Έμ λ₯Ό μλ³νμμμ€.
- μ€λ₯ 볡ꡬ λ©μ»€λμ¦ κ΅¬ν: λ체 λ©μ»€λμ¦, μ μμ μΈ μ±λ₯ μ ν λ° μ¬μλ λ‘μ§μ μ 곡νμ¬ μ€λ₯κ° μ¬μ©μμκ² λ―ΈμΉλ μν₯μ μ΅μννμμμ€.
- μ¬μ©μ μΉνμ μΈ μ€λ₯ λ©μμ§ νμ: μ¬μ©μμκ² κΈ°μ μ©μ΄λ μ€ν μΆμ μ νμνμ§ λ§μμμ€.
- μ€λ₯ μΆμ μμ€ν ν μ€νΈ: μ€λ₯ μΆμ μμ€ν μ΄ μ€λ₯λ₯Ό μ¬λ°λ₯΄κ² μΊ‘μ²νκ³ λ³΄κ³ νλμ§ νμΈνκΈ° μν΄ μ κΈ°μ μΌλ‘ ν μ€νΈνμμμ€.
- μ€λ₯μ¨ λͺ¨λν°λ§: μκ° κ²½κ³Όμ λ°λ₯Έ μ€λ₯μ¨μ λͺ¨λν°λ§νμ¬ μΆμΈμ μ μ¬μ μΈ λ¬Έμ λ₯Ό μλ³νμμμ€.
- μ€λ₯ ν΄κ²° μλν: μ€ν¬λ¦½νΈ λλ μν¬νλ‘λ₯Ό μ¬μ©νμ¬ μΌλ°μ μΈ μ€λ₯ ν΄κ²° νλ‘μΈμ€λ₯Ό μλννμμμ€.
- ν κ΅μ‘: νλ‘ νΈμλ μ€λ₯ μΆμ μ μ€μμ±κ³Ό μ€λ₯ μΆμ λꡬλ₯Ό ν¨κ³Όμ μΌλ‘ μ¬μ©νλ λ°©λ²μ λν΄ κ°λ° νμ κ΅μ‘νμμμ€.
- μ€λ₯ λ³΄κ³ μ μ κΈ°μ μΌλ‘ κ²ν : νμ΄ μ€λ₯ λ³΄κ³ μλ₯Ό μ κΈ°μ μΌλ‘ κ²ν νκ³ κΈ°λ³Έ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν μ‘°μΉλ₯Ό μ·¨νλμ§ νμΈνμμμ€.
- μν₯μ λ°λΌ μ€λ₯ μ°μ μμ μ§μ : μ¬μ©μ λ° λΉμ¦λμ€μ κ°μ₯ ν° μν₯μ λ―ΈμΉλ μ€λ₯ ν΄κ²°μ μ§μ€νμμμ€.
- μμ€ λ§΅ μ¬μ©: μμ€ λ§΅μ ꡬννμ¬ μΆμλ μ½λλ₯Ό μλ μμ€ μ½λλ‘ λ€μ λ§€ννμ¬ νλ‘λμ μμ μ€λ₯λ₯Ό λ μ½κ² λλ²κΉ ν μ μλλ‘ νμμμ€.
- νμ¬ λΌμ΄λΈλ¬λ¦¬ λͺ¨λν°λ§: νμ¬ λΌμ΄λΈλ¬λ¦¬ λ° APIμ λν μ λ°μ΄νΈλ₯Ό μΆμ νκ³ νλ‘λμ μ λ°°ν¬νκΈ° μ μ μ² μ ν ν μ€νΈνμμμ€.
- κΈ°λ₯ νλκ·Έ ꡬν: κΈ°λ₯ νλκ·Έλ₯Ό μ¬μ©νμ¬ μλ‘μ΄ κΈ°λ₯μ μ μ§μ μΌλ‘ μΆμνκ³ μ€λ₯μ¨μ λ―ΈμΉλ μν₯μ λͺ¨λν°λ§νμμμ€.
- μ¬μ©μ κ°μΈ μ 보 λ³΄νΈ κ³ λ €: μ€λ₯ λ°μ΄ν°λ₯Ό μμ§ν λ μ¬μ©μ κ°μΈ μ 보λ₯Ό μΌλμ λκ³ κ΄λ ¨ λ°μ΄ν° κ°μΈ μ 보 λ³΄νΈ κ·μ (μ: GDPR, CCPA)μ μ€μνκ³ μλμ§ νμΈνμμμ€. μ€λ₯ μΆμ μμ€ν μΌλ‘ 보λ΄κΈ° μ μ λ―Όκ°ν λ°μ΄ν°λ₯Ό μ΅λͺ ννκ±°λ μμ νμμμ€.
- μ±λ₯ λͺ¨λν°λ§: μ€λ₯μ κΈ°μ¬ν μ μλ μ±λ₯ λ³λͺ© νμμ μλ³νκΈ° μν΄ μ±λ₯ λͺ¨λν°λ§ λꡬλ₯Ό μ¬μ©νμμμ€.
- CI/CD ν΅ν© ꡬν: CI/CD νμ΄νλΌμΈμ μ€λ₯ μΆμ μμ€ν μ ν΅ν©νμ¬ λΉλ λ° λ°°ν¬ νλ‘μΈμ€ μ€μ μ€λ₯λ₯Ό μλμΌλ‘ κ°μ§νκ³ λ³΄κ³ νμμμ€.
- κ²½κ³ μ€μ : μ μ€λ₯κ° λ°μνκ±°λ μ€λ₯μ¨μ΄ νΉμ μκ³κ°μ μ΄κ³Όν λ μλ¦Όμ 보λ΄λλ‘ κ²½κ³ λ₯Ό ꡬμ±νμμμ€. μ΄λ©μΌ, Slack λλ PagerDutyμ κ°μ λ€μν κ²½κ³ μ λ΅μ κ³ λ €νμμμ€.
- μ€λ₯ λ°μ΄ν° μ κΈ°μ μΌλ‘ κ²ν : μ€λ₯ λ°μ΄ν°λ₯Ό κ²ν νκ³ μΆμΈλ₯Ό λ Όμνκ³ λ²κ·Έ μμ μ μ°μ μμλ‘ μ§μ νκΈ° μν΄ μ κΈ°μ μΈ νμλ₯Ό μμ½νμμμ€.
κ²°λ‘
νλ‘ νΈμλ μ€λ₯ μΆμ μ νΉν κΈλ‘λ² μ¬μ©μλ₯Ό λμμΌλ‘ νλ μ¬μ©μλ₯Ό μν΄ κ°λ ₯νκ³ μμ μ μΈ μΉ μ ν리μΌμ΄μ μ ꡬμΆνλ λ° νμμ μΈ λΆλΆμ λλ€. ν¬κ΄μ μΈ μ€λ₯ μΆμ μ λ΅μ ꡬννλ©΄ λ¬Έμ λ₯Ό μ¬μ μ μλ³νκ³ ν΄κ²°νκ³ μ¬μ©μ κ²½νμ κ°μ νκ³ κΆκ·Ήμ μΌλ‘ λΉμ¦λμ€ μ±κ³΅μ μ΄λ μ μμ΅λλ€. μ¬λ°λ₯Έ μ€λ₯ μΆμ λꡬμ ν¬μνκ³ λͺ¨λ² μ¬λ‘λ₯Ό λ°λ₯΄λ©΄ νμ΄ μ μΈκ³ μ¬μ©μμκ² μλ²½ν λμ§νΈ κ²½νμ μ 곡ν μ μμ΅λλ€. λ°μ΄ν° κΈ°λ° λλ²κΉ μ νμ λ°μλ€μ΄κ³ μ ν리μΌμ΄μ μ μμ μ±μ΄ κΈμ¦νλ κ²μ μ§μΌλ³΄μμμ€.