Observability - 100-hours-a-week/KTB4-10th-Cloud GitHub Wiki

[ 1. ๋„์ž… ๋ชฉ์  ]

  • E2E / ๋ถ€ํ•˜ํ…Œ์ŠคํŠธ ์ง„ํ–‰ ์ „ Observability ํ™˜๊ฒฝ ๊ตฌ์„ฑ ํ•„์š”
  • ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋งŒ์œผ๋กœ๋Š” ์žฅ์•  ๋ฐ ์„ฑ๋Šฅ ์ €ํ•˜์˜ ์›์ธ ํ™•์ธ์ด ์–ด๋ ค์›€
    • E2E
      • ์š”์ฒญ ์‹คํŒจ ์‹œ ์–ด๋А ๊ตฌ๊ฐ„์—์„œ ์‹คํŒจํ–ˆ๋Š”์ง€ ํ™•์ธ ํ•„์š”
    • ๋ถ€ํ•˜ํ…Œ์ŠคํŠธ
      • P95 ์ฆ๊ฐ€, Error ์ฆ๊ฐ€ ์‹œ ์–ด๋–ค ์ž์›์˜ ๋ณ‘๋ชฉ์œผ๋กœ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ํ™•์ธ ํ•„์š”
  • Metric / Log๋ฅผ ์ˆ˜์ง‘ํ•˜์—ฌ ์„œ๋น„์Šค ๋‚ด๋ถ€ ์ƒํƒœ ํ™•์ธ
  • E2E์™€ ๋ถ€ํ•˜ํ…Œ์ŠคํŠธ์—์„œ ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉ
### **์ง„ํ–‰ ์ˆœ์„œ**

1. Observability ๊ตฌ์„ฑ
2. E2E ํ…Œ์ŠคํŠธ
3. Fake LLM ๊ตฌ์„ฑ
4. ๋ถ€ํ•˜ํ…Œ์ŠคํŠธ
5. ๋ณ‘๋ชฉ ๋ถ„์„
6. ๊ฐœ์„ 
7. ์žฌํ…Œ์ŠคํŠธ

[ 2. Observability ๊ตฌ์„ฑ ]

2.1. ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ

  • Metric
    • ์‹œ์Šคํ…œ์˜ ์ƒํƒœ ๋ฐ ๋ณ€ํ™” ํ™•์ธ
    • CPU / Memory
    • JVM
    • HTTP
    • DB Connection
    • AI ์ฒ˜๋ฆฌ์‹œ๊ฐ„ ๋“ฑ
  • Log
    • ์‹ค์ œ ์˜ค๋ฅ˜ ๋‚ด์šฉ ํ™•์ธ
    • Exception
    • Timeout
    • Connection Error ๋“ฑ
  • AWS Resource Metric
    • AWS Resource ์ž์ฒด์˜ ์ƒํƒœ ํ™•์ธ

2.2. ๋„๊ตฌ ๊ตฌ์„ฑ

๋Œ€์ƒ ๋„๊ตฌ ์—ญํ• 
Application / System Metric Prometheus Backend / AI / DB ์ƒํƒœ ํ™•์ธ
Application Log CloudWatch Logs Backend / AI Error ํ™•์ธ
AWS Resource Metric CloudWatch Metrics EC2 / CloudFront ์ƒํƒœ ํ™•์ธ
  • Prometheus
    • Application / System Metric ์ˆ˜์ง‘ ๋ฐ ์กฐํšŒ
  • CloudWatch Logs
    • Application Log ์ˆ˜์ง‘ ๋ฐ ์กฐํšŒ
  • CloudWatch Metrics
    • AWS Resource Metric ํ™•์ธ

[ 3. Prometheus ]

3.1. ๊ณ ๋ ค์‚ฌํ•ญ

  • ํ˜„์žฌ ๋ชฉ์ ์€ ์ง€์†์ ์ธ Dashboard ์šด์˜๋ณด๋‹ค ํ…Œ์ŠคํŠธ ์ค‘ ํŠน์ • ์‹œ๊ฐ„๋Œ€์˜ Metric ํ™•์ธ ๋ฐ ๋ณ‘๋ชฉ ๋ถ„์„
  • V1์—์„œ๋Š” ๋น ๋ฅธ ๊ตฌ์ถ• ๋ฐ ์šด์˜ ๋‹จ์ˆœํ™” ์šฐ์„ 

3.2. ํŠน์ง•

  • Backend / AI Server / DB์˜ Metric์„ ํ•œ ๊ณณ์—์„œ ์ˆ˜์ง‘ ๊ฐ€๋Šฅ
    • ํ•œ ์š”์ฒญ์ด ์—ฌ๋Ÿฌ ์‹œ์Šคํ…œ์„ ๊ฑฐ์น˜๋Š” ์šฐ๋ฆฌ ์„œ๋น„์Šค์— ์–ด๋А ๊ตฌ๊ฐ„์ด ๋ณ‘๋ชฉ์ธ์ง€ ๋น„๊ตํ•˜๊ธฐ ์‰ฌ์›Œ์ง
  • ์ž์ฒด Web UI ์ œ๊ณต

3.3. ๊ฒฐ๋ก 

  • ๋”ฐ๋ผ์„œ V1์—์„œ๋Š” ๋ณ„๋„์˜ Grafana ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜์ง€ ์•Š๊ณ  Prometheus๋ฅผ ์‚ฌ์šฉ
  • ์ถ”ํ›„ ์ง€์†์ ์ธ Metric ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ํ†ตํ•ฉ Dashboard ํ•„์š”์„ฑ์ด ์ปค์งˆ ๊ฒฝ์šฐ Grafana ๋„์ž… ๊ณ ๋ ค

[ 4. CloudWatch ]

4.1. ๊ณ ๋ ค์‚ฌํ•ญ

  • ํ˜„์žฌ AWS ํ™˜๊ฒฝ์—์„œ ์„œ๋น„์Šค ์šด์˜
  • ๋ณ„๋„์˜ Logging Stack ๊ตฌ์ถ• ์‹œ ์ถ”๊ฐ€์ ์ธ ๊ตฌ์ถ• ๋ฐ ์šด์˜ ํ•„์š”
  • CloudWatch Logs๋ฅผ ์ด์šฉํ•˜์—ฌ Backend / AI Server์˜ Log ํ™•์ธ ๊ฐ€๋Šฅ

โ‡’ ๊ธฐ์กด์˜ ํ™˜๊ฒฝ ํ™œ์šฉํ•˜๋ฉฐ ๊ตฌ์ถ• ๋ฒ”์œ„๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๊ธฐ์— ํ˜„ ์ƒํ™ฉ๊ณผ ์ž˜ ๋งž๋Š”๋‹ค ํŒ๋‹จ

  • V1์—์„œ๋Š” ๋ณ„๋„์˜ PLG Stack์„ ๊ตฌ์„ฑํ•˜์ง€ ์•Š๊ณ  CloudWatch Logs ์‚ฌ์šฉ

PLG Stack ?

  • Promtail
    • Log ์ˆ˜์ง‘
  • Loki
    • Log ์ €์žฅ ๋ฐ ์กฐํšŒ
  • Grafana
    • ์‹œ๊ฐํ™”

โ‡’ ํ˜„์žฌ V1์—์„œ๋Š” ํ•ด๋‹น ํ™˜๊ฒฝ์„ ๋ณ„๋„๋กœ ์šด์˜ํ•  ํ•„์š”์„ฑ์ด ๋‚ฎ๋‹ค๊ณ  ํŒ๋‹จ

โ‡’ ์ƒ์‹œ ๋ชจ๋‹ˆํ„ฐ๋ง ํ”Œ๋žซํผ์ด ๋ชฉํ‘œ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฌธ์ œ ๋ฐœ์ƒ ์ง€์ ๊ณผ ์›์ธ์„ ์ฐพ๋Š”๊ฒƒ์ด ๋ชฉํ‘œ์ด๊ธฐ์—

4.2. AWS Resource Metric

  • EC2 / CloudFront ๋“ฑ AWS Resource ์ž์ฒด์˜ ์ƒํƒœ ํ™•์ธ
  • AWS์—์„œ ๊ธฐ๋ณธ ์ œ๊ณต๋˜๋Š” CloudWatch Metrics ํ™œ์šฉ
  • ๋ณ„๋„์˜ Metric ์ˆ˜์ง‘ ํ™˜๊ฒฝ์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๊ณ  ๊ธฐ์กด AWS ํ™˜๊ฒฝ ํ™œ์šฉ

[ 5. ์ „์ฒด ๊ตฌ์„ฑ ]

Metric

  • Application / System Metric ํ™•์ธ โ‡’ ์–ด๋А ์‹œ์Šคํ…œ์—์„œ ์ด์ƒ์ด ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ํ™•์ธ
  • Prometheus โ‡’ BE, AI server, MySQL

Application Log

  • ์‹ค์ œ Exception / Timeout ๋“ฑ์˜ ์˜ค๋ฅ˜ ํ™•์ธ โ‡’ Metric ์ด์ƒ ๋ฐœ์ƒ ์‹œ ๋™์ผ ์‹œ๊ฐ„๋Œ€์˜ Log ํ™•์ธ
  • CloudWatch Logs โ‡’ BE, AI Server

AWS Resource

  • AWS Resource ์ƒํƒœ ํ™•์ธ
  • CloudWatch Metrics โ‡’ EC2, CloudFront

[ 6. Backend Metric ]

6.1. ๊ณ ๋ ค์‚ฌํ•ญ

  • Backend๋Š” ๋ชจ๋“  ์ผ๋ฐ˜ API ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ , ๊ฐ€์ด๋“œ๋ถ ์ƒ์„ฑ์—์„œ๋„ AI Server์™€ DB ์‚ฌ์ด์˜ ์ค‘์‹ฌ ์—ญํ• ์„ ํ•จ.

    โ‡’ ๋”ฐ๋ผ์„œ Backend์˜ ์ƒํƒœ๊ฐ€ ๋‚˜๋น ์ง€๋ฉด ๋„ค ๊ฐ€์ง€ SLI ๋ชจ๋‘์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Œ.

  • Spring Boot์˜ JVM, HTTP, HikariCP ๋“ฑ์˜ Application Metric์„ Micrometer๋กœ ์ˆ˜์ง‘ํ•˜๊ณ , Actuator์˜ /actuator/prometheus Endpoint๋ฅผ ํ†ตํ•ด Prometheus๊ฐ€ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œ๊ณต

6.2. Metric

  • System
    • โ‡’ CPU, Memory, Thread
    • EC2/Backend ์ž์ฒด์˜ ์ฒ˜๋ฆฌ ์ž์›์ด ํ•œ๊ณ„์— ๋„๋‹ฌํ–ˆ๋Š”์ง€ ํ™•์ธ
  • JVM
    • โ‡’ Heap, Non-Heap ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰, GC ํšŸ์ˆ˜, Thread(JVM ๋‚ด๋ถ€ ์Šค๋ ˆ๋“œ)
  • HTTP
    • Request Count, Request Duration, Status Code, Error
  • HikariCP(ํžˆ์นด๋ฆฌ ์ปค๋„ฅ์…˜ํ’€)
    • ๋ฐฑ์—”๋“œ์—์„œ mySQL์— ์ ‘๊ทผํ• ๋•Œ ์ปค๋„ฅ์…˜ํ’€์„ ์‚ฌ์šฉํ•จ

    • ๋ถ€ํ•˜๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉด ๋™์‹œ์— DB์ปค๋„ฅ์…˜ ์š”๊ตฌํ•˜๋Š” ์š”์ฒญ๋„ ์ฆ๊ฐ€

    • ๋ถ€ํ•˜ ์ฆ๊ฐ€ ์‹œ API Latency์™€ ํ•จ๊ป˜ HikariCP / JVM / System Metric ํ™•์ธ

      • API P95 ์ฆ๊ฐ€
      • Hikari Active๊ฐ€ Max์— ๊ทผ์ ‘
      • Hikari Pending ์ฆ๊ฐ€
      • ๋™์ผ ์‹œ๊ฐ„๋Œ€ DB Connection ์ฆ๊ฐ€

      โ‡’ Connection Pool ๋˜๋Š” DB ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์„ ๋ณ‘๋ชฉ ํ›„๋ณด๋กœ ํ™•์ธ

      (DB์—ฐ๊ฒฐ์„ ๋งŒ๋“ค๊ณ  ๋Š๋Š” ๋น„์šฉ ๋ฐœ์ƒ ์ค„์ด๊ธฐ ์œ„ํ•ด ์ปค๋„ฅ์…˜์„ ๋งŒ๋“ค์–ด๋†“๊ณ  ํ•„์š”ํ• ๋•Œ ์“ฐ๋Š”๊ฒŒ CP)

[ 7. AI Server Metric ]

7.1. ๊ณ ๋ ค์‚ฌํ•ญ

  • AI Server๋Š” ์ผ๋ฐ˜ API๋ณด๋‹ค ํŠนํžˆ ๊ฐ€์ด๋“œ๋ถ ์ƒ์„ฑ ์„ฑ๊ณต๋ฅ ๊ณผ ์ƒ์„ฑ์‹œ๊ฐ„์— ์ง์ ‘์ ์œผ๋กœ ์—ฐ๊ฒฐ๋จ.
  • ๊ฐ€์ด๋“œ๋ถ ์ƒ์„ฑ์ด ๋А๋ ค์กŒ๋‹ค๊ณ  ํ•ด์„œ ๋ฌด์กฐ๊ฑด LLM์ด ๋А๋ฆฐ ๊ฒƒ์€ ์•„๋‹˜ (BE๊ฐ€ ๋ฌธ์ œ์ผ ์ˆ˜๋„)

7.2. Metric

  • System

    • โ‡’ CPU, Memory, Thread
    • EC2/Backend ์ž์ฒด์˜ ์ฒ˜๋ฆฌ ์ž์›์ด ํ•œ๊ณ„์— ๋„๋‹ฌํ–ˆ๋Š”์ง€ ํ™•์ธ
  • HTTP

    • Request Count, Request Duration, Active Request(๋™์‹œํ™œ์„ฑ), Error
    • duration : ์ƒ์„ฑ์‹œ๊ฐ„ / Error : ์ƒ์„ฑ ์„ฑ๊ณต๋ฅ ๊ณผ ์—ฐ๊ด€

    7.2.1. ์ฃผ์˜ํ• ์ 

    • duration์€ ์ „์ฒด ์ƒ์„ฑ์‹œ๊ฐ„์„ ์ฒดํฌํ•˜๋ฏ€๋กœ ์„ธ๋ถ„ํ™” ํ•ด์•ผํ•จ( Req, llm call, post process)

[ 8. DB Metric ]

8.1. ๊ณ ๋ ค์‚ฌํ•ญ

  • Backend Metric๊ณผ ํ•จ๊ป˜ ํ™•์ธ
    • API P95 ์ฆ๊ฐ€
    • Hikari Active Max ๋„๋‹ฌ
    • Hikari Pending ์ฆ๊ฐ€
    • DB Connection ์ฆ๊ฐ€
    • Query ์ฒ˜๋ฆฌ ์ง€์—ฐ
  • latency๊ฐ€ DB๋•Œ๋ฌธ์ธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ

8.2. ํ™•์ธ

  • Connection / Active Connection
  • Query์ฒ˜๋ฆฌ๋Ÿ‰, ์ฒ˜๋ฆฌ ์ƒํƒœ
  • DB์ปจํ…Œ์ด๋„ˆ ๋ฆฌ์†Œ์Šค

[ 9. CloudWatch Logs ]

  • Prometheus๊ฐ€ ์–ด๋””๊ฐ€ ์ด์ƒํ•œ๊ฐ€ ๋ฅผ ์ฐพ๋Š” ์—ญํ• 

    โ‡’ CloudWatch Logs๋Š” ๊ทธ๋ž˜์„œ ์‹ค์ œ๋กœ ๋ฌด์Šจ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”๊ฐ€ ๋ฅผ ํ™•์ธํ•˜๋Š” ์—ญํ• 

    ex)

    1. ๊ฐ€์ด๋“œ๋ถ ์ƒ์„ฑ ์„ฑ๊ณต๋ฅ  ๊ฐ์†Œ
    2. AI Error Count ์ฆ๊ฐ€ (prometheus)
    3. LLM Timeout(CloudWatch Logs)
โš ๏ธ **GitHub.com Fallback** โš ๏ธ