# [[Production Monitoring and Observability]] ## πŸ“Œ Brief Summary **Production Monitoring and Observability(ν”„λ‘œλ•μ…˜ λͺ¨λ‹ˆν„°λ§ 및 κ΄€μΈ‘μ„±)**λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ‹€μ œ 운영 ν™˜κ²½μ—μ„œ μž‘λ™ν•˜λŠ” 방식과 μ„±λŠ₯, μ—λŸ¬λ₯Ό μΆ”μ ν•˜κ³  μ΄ν•΄ν•˜λŠ” 과정을 μ˜λ―Έν•©λ‹ˆλ‹€ [1-3]. μ΄λŠ” λ‹¨μˆœν•œ 였λ₯˜ λ‘œκΉ…μ„ λ„˜μ–΄, 둜그(Logs), λ©”νŠΈλ¦­(Metrics), 트레이슀(Traces)λ₯Ό ν†΅ν•©ν•˜μ—¬ λ³΅μž‘ν•œ μ‹œμŠ€ν…œμ˜ 병λͺ© ν˜„μƒκ³Ό λ²„κ·Έμ˜ κ·Όλ³Έ 원인을 νŒŒμ•…ν•˜λŠ” 것을 ν¬ν•¨ν•©λ‹ˆλ‹€ [4]. κ°œλ°œμžλŠ” 이λ₯Ό 톡해 μ‚¬μš©μž κ²½ν—˜μ„ μ €ν•΄ν•˜λŠ” 문제λ₯Ό 사전에 λ°œκ²¬ν•˜κ³ , 데이터λ₯Ό 기반으둜 μ„±λŠ₯ μ΅œμ ν™”μ™€ μ•ˆμ •μ„±μ„ 보μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [3, 5, 6]. ## πŸ“– Core Content * **Real User Monitoring (RUM) 및 μ„±λŠ₯ 좔적:** μ‹€μ œ μ‚¬μš©μžμ˜ λ””λ°”μ΄μŠ€μ™€ λ„€νŠΈμ›Œν¬ ν™˜κ²½μ—μ„œ λ°œμƒν•˜λŠ” μ„±λŠ₯ 데이터λ₯Ό μˆ˜μ§‘ν•˜λŠ” κΈ°λŠ₯μž…λ‹ˆλ‹€ [6, 7]. 쒅합적인 ν…ŒμŠ€νŠΈ ν™˜κ²½μ—μ„œλŠ” λ†“μΉ˜κΈ° μ‰¬μš΄ μ‹€μ œ μ„±λŠ₯ 문제(예: First Contentful Paint(FCP), Interaction to Next Paint(INP) λ“±μ˜ Core Web Vitals μ§€ν‘œ)λ₯Ό μΆ”μ ν•˜μ—¬ μ΅œμ ν™” λŒ€μƒμ„ μ‹λ³„ν•©λ‹ˆλ‹€ [6, 7]. * **μ§€λŠ₯ν˜• μ—λŸ¬ 좔적 및 λ‘œκΉ…:** ν”„λ‘ νŠΈμ—”λ“œ ν™˜κ²½μ€ 맀우 λ‹€μ–‘ν•œ λΈŒλΌμš°μ €μ™€ λ””λ°”μ΄μŠ€ μ‘°κ±΄μ—μ„œ μ‹€ν–‰λ˜λ―€λ‘œ `console.log`μ—λ§Œ μ˜μ‘΄ν•˜λŠ” 것은 ν•œκ³„κ°€ μžˆμŠ΅λ‹ˆλ‹€ [8]. Sentry와 같은 λ„κ΅¬λŠ” **μ§€λŠ₯ν˜• μ—λŸ¬ κ·Έλ£Ήν™”(Intelligent Error Grouping)**λ₯Ό 톡해 μ€‘λ³΅λœ μ—λŸ¬μ˜ λ…Έμ΄μ¦ˆλ₯Ό 쀄여주며, μ½˜μ†” 둜그, λ„€νŠΈμ›Œν¬ μš”μ²­, μ‚¬μš©μž μƒν˜Έμž‘μš© λ“±μ˜ Breadcrumbλ₯Ό μ œκ³΅ν•˜μ—¬ μ—λŸ¬μ˜ κ·Όλ³Έ 원인 νŒŒμ•…μ„ λ•μŠ΅λ‹ˆλ‹€ [2, 9]. React μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 경우 **Error Boundaries**λ₯Ό κ΅¬μ„±ν•˜μ—¬ UI μΆ©λŒμ„ 방지함과 λ™μ‹œμ— Sentry, LogRocket λ“±μ˜ νˆ΄μ— μ—λŸ¬μ˜ 상세 정보λ₯Ό λ‘œκΉ…ν•©λ‹ˆλ‹€ [10, 11]. * **톡합 κ΄€μΈ‘μ„±(Unified Observability)κ³Ό λΆ„μ‚° 좔적(Distributed Tracing):** Datadog RUMμ΄λ‚˜ New Relic, SigNoz 같은 도ꡬ듀은 ν”„λ‘ νŠΈμ—”λ“œ μ—λŸ¬μ™€ λ°±μ—”λ“œ μ„œλΉ„μŠ€ 트레이슀(Trace)λ₯Ό μ—°κ²°ν•˜μ—¬ λ³΅μž‘ν•œ λΆ„μ‚° μ‹œμŠ€ν…œμ—μ„œμ˜ End-to-End 디버깅을 κ°€λŠ₯ν•˜κ²Œ ν•©λ‹ˆλ‹€ [4, 12, 13]. 특히 **OpenTelemetry** ν‘œμ€€μ„ 기반으둜 κ΅¬μΆ•λœ 도ꡬ듀은 νŠΉμ • 벀더 쒅속(Vendor lock-in) 없이 트레이슀, λ©”νŠΈλ¦­, 둜그λ₯Ό ν•œ κ³³μ—μ„œ 상관 뢄석(Correlate)ν•  수 μžˆλ„λ‘ μ§€μ›ν•©λ‹ˆλ‹€ [4, 14, 15]. * **μ„Έμ…˜ λ¦¬ν”Œλ ˆμ΄ (Session Replay):** LogRocketκ³Ό 같은 λ„κ΅¬λŠ” μ‚¬μš©μžμ˜ μ„Έμ…˜μ„ λΉ„λ””μ˜€μ²˜λŸΌ λ…Ήν™”ν•  뿐만 μ•„λ‹ˆλΌ, DOM λ³€κ²½, Redux/Zustand μƒνƒœ λ³€ν™”, λ„€νŠΈμ›Œν¬ μš”μ²­ 및 응닡 등을 ν•¨κ»˜ κΈ°λ‘ν•©λ‹ˆλ‹€ [2, 16, 17]. μ΄λŠ” μž¬ν˜„ν•˜κΈ° μ–΄λ €μš΄ λ³΅μž‘ν•œ μƒν˜Έμž‘μš© 버그λ₯Ό ν•΄κ²°ν•  λ•Œ 맀우 κ°•λ ₯ν•œ 디버깅 μ»¨ν…μŠ€νŠΈλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€ [2, 17]. ## βš–οΈ Trade-offs & Caveats * **μ„±λŠ₯ μ €ν•˜ (Performance Impact):** λͺ¨λ‹ˆν„°λ§ λ„κ΅¬μ˜ μ—μ΄μ „νŠΈλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ²ˆλ“€ 크기λ₯Ό μƒλ‹Ήνžˆ μ¦κ°€μ‹œν‚¬ 수 있으며, 일뢀 λ„κ΅¬λŠ” νŽ˜μ΄μ§€ λ‘œλ“œ μ‹œκ°„μ„ μ΅œλŒ€ 120msκΉŒμ§€ μ§€μ—°μ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€ [5, 18, 19]. λ”°λΌμ„œ μ„±λŠ₯이 μ€‘μš”ν•œ μ„œλΉ„μŠ€(예: 이컀머슀)μ—μ„œλŠ” κ°€λ²Όμš΄ μ˜΅μ…˜μ„ μ„ νƒν•˜κ±°λ‚˜ μ‹ μ€‘ν•˜κ²Œ λ„μž…ν•΄μ•Ό ν•©λ‹ˆλ‹€ [5]. * **데이터 μŠ€μΌ€μΌλ§μ— λ”°λ₯Έ λΉ„μš© 문제 (Cost at Scale):** SaaS 기반 λͺ¨λ‹ˆν„°λ§ νˆ΄μ€ νŠΈλž˜ν”½κ³Ό 둜그 λ³Όλ₯¨μ— 따라 λΉ„μš©μ΄ κΈ°ν•˜κΈ‰μˆ˜μ μœΌλ‘œ 증가할 수 μžˆμŠ΅λ‹ˆλ‹€ [18-20]. 예λ₯Ό λ“€μ–΄, Datadog은 데이터 μˆ˜μ§‘(Ingest)κ³Ό 검색을 μœ„ν•œ 인덱싱(Index) μš”κΈˆμ„ λΆ„λ¦¬ν•˜μ—¬ λΆ€κ³Όν•˜λ―€λ‘œ, λΉ„μš© μ ˆκ°μ„ μœ„ν•΄ μ£Όμš” 둜그의 80%λ₯Ό μΈλ±μ‹±ν•˜μ§€ λͺ»ν•΄ μ€‘μš”ν•œ 디버깅 데이터λ₯Ό λ†“μΉ˜λŠ” λ”œλ ˆλ§ˆκ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€ [21, 22]. * **κ°œμΈμ •λ³΄ 보호 μœ„ν—˜ (Privacy Concerns):** Session Replay λ“± ν™”λ©΄ 및 둜그λ₯Ό κΈ°λ‘ν•˜λŠ” 도ꡬ듀은 섀정이 잘λͺ»λ  경우 λΉ„λ°€λ²ˆν˜Έ, κ°œμΈμ •λ³΄ λ“± λ―Όκ°ν•œ 데이터λ₯Ό μˆ˜μ§‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [17, 19, 23]. 세계적인 κ°œμΈμ •λ³΄ 보호 κ·œμ • 강화에 맞좰 λ―Όκ°ν•œ 데이터λ₯Ό μžλ™μœΌλ‘œ λ§ˆμŠ€ν‚Ήν•˜λŠ” 도ꡬλ₯Ό μ„ νƒν•˜κ±°λ‚˜ κΌΌκΌΌν•˜κ²Œ ν”„λΌμ΄λ²„μ‹œ 섀정을 ꡬ성해야 ν•©λ‹ˆλ‹€ [17, 24]. * **λ„μž… λ³΅μž‘μ„± (Setup Complexity):** OpenTelemetryλ₯Ό 기반으둜 ν•˜λŠ” Grafanaλ‚˜ SigNoz와 같은 λ„κ΅¬λŠ” κ°•λ ₯ν•œ μœ μ—°μ„±μ„ μ œκ³΅ν•˜κ³  벀더 쒅속을 ν”Όν•  수 μžˆμ§€λ§Œ, λͺ©μ μ— 맞게 인프라λ₯Ό 직접 κ΅¬μ„±ν•˜κ³  λŒ€μ‹œλ³΄λ“œλ₯Ό ꡬ좕해야 ν•˜λ―€λ‘œ SaaS 도ꡬ에 λΉ„ν•΄ 높은 ν•™μŠ΅ 곑선과 DevOps μ „λ¬Έ 지식을 μš”κ΅¬ν•©λ‹ˆλ‹€ [14, 24-26]. ## πŸ”— Knowledge Connections ### Related Concepts #### [μ•„ν‚€ν…μ²˜ 및 기반 기술] * [[OpenTelemetry]] * μ—°κ²° 이유: μΈ‘μ • 데이터(Log, Metric, Trace) μˆ˜μ§‘ 및 계츑을 μœ„ν•œ μ˜€ν”ˆμ†ŒμŠ€ ν‘œμ€€ ν”„λ ˆμž„μ›Œν¬μž…λ‹ˆλ‹€ [4, 14]. * 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: νŠΉμ • λͺ¨λ‹ˆν„°λ§ κ³΅κΈ‰μž(SaaS)에 μ’…μ†λ˜μ§€ μ•Šκ³  μœ μ—°ν•œ 톡합 κ΄€μΈ‘μ„± μƒνƒœκ³„λ₯Ό κ΅¬μΆ•ν•˜λŠ” 방법과 원리λ₯Ό νŒŒμ•…ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [4, 14, 15, 24]. * [[Real User Monitoring (RUM)]] * μ—°κ²° 이유: μ‹€μ œ μ‚¬μš©μžκ°€ κ²½ν—˜ν•˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ν™˜κ²½μ˜ ν”„λ‘ νŠΈμ—”λ“œ λ‘œλ“œ μ‹œκ°„κ³Ό μƒν˜Έμž‘μš© μ§€μ—° 등을 μΈ‘μ •ν•˜λŠ” κ΄€μΈ‘ μ‹œμŠ€ν…œμž…λ‹ˆλ‹€ [3, 6, 12]. * 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: μ‹€ν—˜μ‹€ ν™˜κ²½(Synthetic Testing)μ—μ„œ λ°œκ²¬ν•˜κΈ° μ–΄λ €μš΄ λ‹€μ–‘ν•œ λ””λ°”μ΄μŠ€ 및 λ„€νŠΈμ›Œν¬ ν™˜κ²½μ—μ„œμ˜ μ„±λŠ₯ 병λͺ©(Core Web Vitals)을 μ‹λ³„ν•˜κ³  κ°œμ„ ν•˜λŠ” 과정을 이해할 수 μžˆμŠ΅λ‹ˆλ‹€ [6, 7]. #### [κ΅¬ν˜„ 및 ν™œμš© 도ꡬ] * [[Error Boundaries]] * μ—°κ²° 이유: React μ»΄ν¬λ„ŒνŠΈ 트리 ν•˜μœ„μ—μ„œ λ°œμƒν•œ λŸ°νƒ€μž„ μžλ°”μŠ€ν¬λ¦½νŠΈ 였λ₯˜λ₯Ό ν¬μ°©ν•˜λŠ” λ©”μ»€λ‹ˆμ¦˜μž…λ‹ˆλ‹€ [10, 27]. * 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: μ•± 전체가 ν¬λž˜μ‹œλ˜λŠ” 것을 λ§‰λŠ” λ™μ‹œμ—, 포착된 μ—λŸ¬λ₯Ό Sentryλ‚˜ LogRocketκ³Ό 같은 ν”„λ‘œλ•μ…˜ λͺ¨λ‹ˆν„°λ§ μ‹œμŠ€ν…œμœΌλ‘œ μ „μ†‘ν•˜μ—¬ μ•ˆμ •μ μΈ μž₯μ•  좔적 μ‹œμŠ€ν…œμ„ κ΅¬μΆ•ν•˜λŠ” 방법을 이해할 수 μžˆμŠ΅λ‹ˆλ‹€ [10, 11]. * [[Session Replay]] * μ—°κ²° 이유: μ‚¬μš©μžκ°€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ ν–‰λ™ν•œ μ •ν™•ν•œ μˆœμ„œμ™€ ν™”λ©΄ μƒνƒœλ₯Ό λ‹€μ‹œ μž¬μƒν•  수 μžˆλŠ” κΈ°λŠ₯μž…λ‹ˆλ‹€ [16, 23]. * 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: λ‹¨μˆœνžˆ μŠ€νƒ 트레이슀λ₯Ό λ³΄λŠ” 것을 λ„˜μ–΄ Redux/Zustand λ“±μ˜ μƒνƒœ λ³€ν™” 흐름과 DOM μƒν˜Έμž‘μš© 전체 μ»¨ν…μŠ€νŠΈλ₯Ό ν™œμš©ν•œ κ°•λ ₯ν•œ 디버깅 기법을 ν•™μŠ΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [2, 17]. ### Deeper Research Questions * λͺ¨λ‹ˆν„°λ§ SDKλ₯Ό λ²ˆλ“€μ— 포함할 λ•Œ λ°œμƒν•˜λŠ” μ„±λŠ₯ μ˜€λ²„ν—€λ“œ(λ‘œλ”© νƒ€μž„, λ²ˆλ“€ 크기 증가)λ₯Ό μ΅œμ†Œν™”ν•˜κΈ° μœ„ν•΄ Code Splittingμ΄λ‚˜ Web Workerλ₯Ό ν™œμš©ν•΄ μ΅œμ ν™”ν•˜λŠ” 방법은 무엇인가? * Datadogμ΄λ‚˜ Sentry의 λΉ„μš©(Pricing) 급증 문제λ₯Ό μ™„ν™”ν•˜κΈ° μœ„ν•΄, λΆˆν•„μš”ν•œ 둜그 생성을 μ€„μ΄κ±°λ‚˜ ν”„λ‘ νŠΈμ—”λ“œ ν™˜κ²½μ—μ„œ 둜그λ₯Ό λ™μ μœΌλ‘œ μƒ˜ν”Œλ§(Sampling)ν•˜λŠ” μ „λž΅μ€ 무엇인가? * Session Replay 도ꡬλ₯Ό μ μš©ν•  λ•Œ κΈ€λ‘œλ²Œ μ»΄ν”ŒλΌμ΄μ–ΈμŠ€(GDPR λ“±)λ₯Ό μ€€μˆ˜ν•˜κΈ° μœ„ν•˜μ—¬, DOM의 ν…μŠ€νŠΈμ™€ Input 값을 μ–΄λ–€ λ©”μ»€λ‹ˆμ¦˜μœΌλ‘œ μžλ™ μ‹λ³„ν•˜κ³  λ§ˆμŠ€ν‚Ή(Redaction) μ²˜λ¦¬ν•΄μ•Ό ν•˜λŠ”κ°€? * ν”„λ‘ νŠΈμ—”λ“œ ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ λ°œμƒν•œ API 호좜 μ—λŸ¬λ₯Ό λ°±μ—”λ“œ MSA(Microservices Architecture) ν™˜κ²½μ˜ Distributed Trace ID와 μ–΄λ–»κ²Œ κ²°ν•©ν•˜μ—¬ End-to-End κ°€μ‹œμ„±μ„ 달성할 수 μžˆλŠ”κ°€? * OpenTelemetry ν‘œμ€€μ„ λ„μž…ν•˜μ—¬ ν”„λ‘ νŠΈμ—”λ“œ λ‘œκΉ… 인프라λ₯Ό μžκ°€ ν˜ΈμŠ€νŒ…(Self-hosted)ν•˜λŠ” κ²½μš°μ™€ SaaSλ₯Ό μ‚¬μš©ν•˜λŠ” 경우, μ‹€μ œ 운영 λ³΅μž‘λ„ 및 TCO(μ΄μ†Œμœ λΉ„μš©) μΈ‘λ©΄μ—μ„œ μ–΄λ–€ 차이가 λ°œμƒν•˜λŠ”κ°€? ### Practical Application Contexts * **Implementation:** React μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 개발 μ‹œ Error Boundaries μ»΄ν¬λ„ŒνŠΈλ₯Ό κ΅¬ν˜„ν•˜κ³ , 이 μ•ˆμ—μ„œ Sentry API λ˜λŠ” LogRocket μ΄ˆκΈ°ν™” μ½”λ“œλ₯Ό μ—°κ²°ν•˜μ—¬ 미처 μž‘μ§€ λͺ»ν•œ λŸ°νƒ€μž„ μ˜ˆμ™Έκ°€ ν΄λΌμš°λ“œ λ‘œκΉ… λ„κ΅¬λ‘œ μžλ™ μ „μ†‘λ˜λ„λ‘ κ΅¬ν˜„ν•©λ‹ˆλ‹€ [9, 11]. * **System Design:** μ‹œμŠ€ν…œ 섀계 초기 λ‹¨κ³„μ—μ„œ κ΄€μΈ‘μ„±(Observability) μ „λž΅μ„ μˆ˜λ¦½ν•  λ•Œ, 벀더 쒅속성을 ν”Όν•˜κΈ° μœ„ν•΄ ν”„λ‘ νŠΈμ—”λ“œμ™€ λ°±μ—”λ“œμ˜ λ‘œκΉ…/좔적 κ·œκ²©μ„ OpenTelemetry 기반으둜 ν†΅μΌν•˜κ³ , Trace IDλ₯Ό HTTP ν—€λ”λ‘œ μ „νŒŒν•˜λŠ” ꡬ쑰λ₯Ό μ„€κ³„ν•©λ‹ˆλ‹€ [4, 14, 15]. * **Operation / Maintenance:** ν”„λ‘œλ•μ…˜ 배포 이후 Vercel Analytics, Sentry λ“±μ˜ RUM λŒ€μ‹œλ³΄λ“œλ₯Ό 톡해 LCP, INP, FCP λ“± Core Web Vitals λ©”νŠΈλ¦­μ„ 주기적으둜 λͺ¨λ‹ˆν„°λ§ν•˜λ©°, λ©”λͺ¨λ¦¬ λˆ„μˆ˜λ‚˜ λ¬΄ν•œ λ¦¬λ Œλ”λ§ 같은 λŸ°νƒ€μž„ μ„±λŠ₯ μ €ν•˜ μš”μΈμ„ λ°œκ²¬ν•˜κ³  κ°œμ„ ν•©λ‹ˆλ‹€ [7, 28]. * **Learning Path:** 둜컬 ν™˜κ²½μ—μ„œ React DevTools와 Chrome Task Managerλ₯Ό μ΄μš©ν•΄ 병λͺ© 및 λ©”λͺ¨λ¦¬λ₯Ό λΆ„μ„ν•˜λŠ” 방법을 읡힌 λ’€ [29-31], Sentryλ₯Ό ν™œμš©ν•œ μ—λŸ¬ νŠΈλž˜ν‚Ή, μ΅œμ’…μ μœΌλ‘œ OpenTelemetry 기반의 ν’€μŠ€νƒ νŠΈλ ˆμ΄μ‹± μƒνƒœκ³„λ₯Ό ν•™μŠ΅ν•˜λŠ” 순으둜 ν™•μž₯ν•©λ‹ˆλ‹€. * **My Project Relevance:** ν˜„μž¬ ν”„λ‘ νŠΈμ—”λ“œ ν”„λ‘œμ νŠΈλ₯Ό μŠ€μΌ€μΌλ§ν•˜κ±°λ‚˜ μƒμš© 배포λ₯Ό μ€€λΉ„ 쀑이라면, κΈ°λŠ₯ 고도화와 ν•¨κ»˜ Sentry 같은 도ꡬλ₯Ό ν†΅ν•©ν•˜μ—¬ μ—λŸ¬ λŒ€μ‘ 속도λ₯Ό 높이고, κ°œμΈμ •λ³΄ λ§ˆμŠ€ν‚Ή 섀정을 λ°˜λ“œμ‹œ κ²€ν† ν•˜μ—¬ ν”„λ‘œλ•μ…˜ μ€€λΉ„λ₯Ό μ™„λ£Œν•˜λŠ” 데 μ§μ ‘μ μœΌλ‘œ μ μš©λ©λ‹ˆλ‹€ [11, 23, 24]. ### Adjacent Topics * [[Core Web Vitals]] * ν™•μž₯ λ°©ν–₯: ν”„λ‘œλ•μ…˜ μ„±λŠ₯ λͺ¨λ‹ˆν„°λ§μ˜ 척도가 λ˜λŠ” μ£Όμš” μ‚¬μš©μž 쀑심 μ„±λŠ₯ μ§€ν‘œ(LCP, INP, CLS λ“±)의 μ •μ˜μ™€ μΈ‘μ • 방식, 이λ₯Ό μ΅œμ ν™”ν•˜κΈ° μœ„ν•œ λ°©λ²•λ‘ μœΌλ‘œ 이해λ₯Ό ν™•μž₯ν•©λ‹ˆλ‹€ [7, 32]. * [[Frontend Performance Optimization]] * ν™•μž₯ λ°©ν–₯: RUM 및 λͺ¨λ‹ˆν„°λ§μœΌλ‘œ 발견된 μ„±λŠ₯ 문제λ₯Ό μ‹€μ œ μ½”λ“œλ‘œ ν•΄κ²°ν•˜κΈ° μœ„ν•œ React 컴파일러 ν™œμš©, Code Splitting, Lazy Loading 및 λ©”λͺ¨μ΄μ œμ΄μ…˜ μ „λž΅(useMemo, useCallback λ“±)으둜 μ—°κ²°ν•©λ‹ˆλ‹€ [33-35]. --- *Last updated: 2026-04-30*