{"componentChunkName":"component---src-templates-blog-post-js","path":"/springboot/Spring-Observability와-AI-서비스-SLO-관리/","result":{"data":{"site":{"siteMetadata":{"title":"Bottlehs Tech Blog","description":"웹·앱·AI 개발자 전병훈(bottlehs)의 기술 블로그. AI·LLM, JavaScript·Vue, Spring Boot, 알고리즘, 블록체인 실무 가이드를 다룹니다","siteUrl":"https://www.bottlehs.dev","author":{"name":"Jeon Byung Hun","summary":"개발을 즐기는 bottlehs - Engineer, MS, AI, FE, BE, OS, IOT, Blockchain, 설계, 테스트"},"social":{"github":"bottlehs","codepen":"bottlehs"}}},"markdownRemark":{"id":"27f496e3-80f8-58a9-a66b-a597d64860f8","excerpt":"생성형 AI 서비스를 운영하다 보면 모델 응답 시간, 성공률, 비용까지 다양한 지표를 동시에 관리해야 한다. Spring Boot 3+는 Observability 스택을 내장해, Micrometer와 OpenTelemetry…","html":"<p>생성형 AI 서비스를 운영하다 보면 모델 응답 시간, 성공률, 비용까지 다양한 지표를 동시에 관리해야 한다. Spring Boot 3+는 Observability 스택을 내장해, Micrometer와 OpenTelemetry로 메트릭·로그·트레이스를 통합 수집할 수 있다. 이 글은 Spring Observability를 활용해 AI 서비스 전용 SLO(Service Level Objective)를 설계하고 운영 자동화를 구축하는 방법을 소개한다.</p>\n<h2 id=\"1-spring-observability-개요\" style=\"position:relative;\"><a href=\"#1-spring-observability-%EA%B0%9C%EC%9A%94\" aria-label=\"1 spring observability 개요 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1. Spring Observability 개요</h2>\n<ul>\n<li><strong>자동 계측</strong>: Spring Boot Actuator, Micrometer가 HTTP, R2DBC, gRPC, Kafka 등 주요 컴포넌트를 자동 계측한다.</li>\n<li><strong>OpenTelemetry 통합</strong>: Micrometer Tracing을 통해 OTel SDK와 연동할 수 있다.</li>\n<li><strong>컨벤션 기반 설정</strong>: <code class=\"language-text\">management.observations.*</code>, <code class=\"language-text\">management.tracing.*</code> 속성으로 간단히 설정 가능.</li>\n</ul>\n<h2 id=\"2-ai-서비스에서-관측해야-할-핵심-지표\" style=\"position:relative;\"><a href=\"#2-ai-%EC%84%9C%EB%B9%84%EC%8A%A4%EC%97%90%EC%84%9C-%EA%B4%80%EC%B8%A1%ED%95%B4%EC%95%BC-%ED%95%A0-%ED%95%B5%EC%8B%AC-%EC%A7%80%ED%91%9C\" aria-label=\"2 ai 서비스에서 관측해야 할 핵심 지표 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2. AI 서비스에서 관측해야 할 핵심 지표</h2>\n<table>\n<thead>\n<tr>\n<th>범주</th>\n<th>지표</th>\n<th>설명</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>품질</td>\n<td><code class=\"language-text\">ai.response.success</code></td>\n<td>정상 응답 비율</td>\n</tr>\n<tr>\n<td>지연</td>\n<td><code class=\"language-text\">ai.response.latency</code></td>\n<td>P50/95/99 응답 시간</td>\n</tr>\n<tr>\n<td>비용</td>\n<td><code class=\"language-text\">ai.inference.tokens</code>, <code class=\"language-text\">ai.inference.cost</code></td>\n<td>토큰 사용량·비용</td>\n</tr>\n<tr>\n<td>안정성</td>\n<td><code class=\"language-text\">ai.rag.cache.hit</code>, <code class=\"language-text\">ai.prompt.filter.blocked</code></td>\n<td>캐시 히트율, 정책 차단 수</td>\n</tr>\n<tr>\n<td>인프라</td>\n<td><code class=\"language-text\">jvm.memory.used</code>, <code class=\"language-text\">http.server.requests</code></td>\n<td>기본 운영 지표</td>\n</tr>\n</tbody>\n</table>\n<p>Micrometer <code class=\"language-text\">MeterRegistry</code>에 커스텀 지표를 등록하면, 기존 인프라 지표와 함께 대시보드를 구성할 수 있다.</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token annotation punctuation\">@Component</span>\n<span class=\"token keyword\">public</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">InferenceMetrics</span> <span class=\"token punctuation\">{</span>\n\n    <span class=\"token keyword\">private</span> <span class=\"token keyword\">final</span> <span class=\"token class-name\">Counter</span> successCounter<span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">private</span> <span class=\"token keyword\">final</span> <span class=\"token class-name\">DistributionSummary</span> latencySummary<span class=\"token punctuation\">;</span>\n\n    <span class=\"token keyword\">public</span> <span class=\"token class-name\">InferenceMetrics</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">MeterRegistry</span> registry<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>successCounter <span class=\"token operator\">=</span> <span class=\"token class-name\">Counter</span>\n            <span class=\"token punctuation\">.</span><span class=\"token function\">builder</span><span class=\"token punctuation\">(</span>\\\"ai<span class=\"token punctuation\">.</span>response<span class=\"token punctuation\">.</span>success\\\"<span class=\"token punctuation\">)</span>\n            <span class=\"token punctuation\">.</span><span class=\"token function\">description</span><span class=\"token punctuation\">(</span>\\\"<span class=\"token constant\">AI</span> inference success count\\\"<span class=\"token punctuation\">)</span>\n            <span class=\"token punctuation\">.</span><span class=\"token function\">register</span><span class=\"token punctuation\">(</span>registry<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n        <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>latencySummary <span class=\"token operator\">=</span> <span class=\"token class-name\">DistributionSummary</span>\n            <span class=\"token punctuation\">.</span><span class=\"token function\">builder</span><span class=\"token punctuation\">(</span>\\\"ai<span class=\"token punctuation\">.</span>response<span class=\"token punctuation\">.</span>latency\\\"<span class=\"token punctuation\">)</span>\n            <span class=\"token punctuation\">.</span><span class=\"token function\">baseUnit</span><span class=\"token punctuation\">(</span>\\\"milliseconds\\\"<span class=\"token punctuation\">)</span>\n            <span class=\"token punctuation\">.</span><span class=\"token function\">publishPercentileHistogram</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n            <span class=\"token punctuation\">.</span><span class=\"token function\">register</span><span class=\"token punctuation\">(</span>registry<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token keyword\">public</span> <span class=\"token keyword\">void</span> <span class=\"token function\">recordSuccess</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">double</span> latencyMs<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        successCounter<span class=\"token punctuation\">.</span><span class=\"token function\">increment</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        latencySummary<span class=\"token punctuation\">.</span><span class=\"token function\">record</span><span class=\"token punctuation\">(</span>latencyMs<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h2 id=\"3-slo-설계-방법\" style=\"position:relative;\"><a href=\"#3-slo-%EC%84%A4%EA%B3%84-%EB%B0%A9%EB%B2%95\" aria-label=\"3 slo 설계 방법 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3. SLO 설계 방법</h2>\n<h3 id=\"3-1-목표-정의\" style=\"position:relative;\"><a href=\"#3-1-%EB%AA%A9%ED%91%9C-%EC%A0%95%EC%9D%98\" aria-label=\"3 1 목표 정의 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3-1. 목표 정의</h3>\n<ul>\n<li><strong>가용성 SLO</strong>: 성공률 99.5% 이상</li>\n<li><strong>지연 SLO</strong>: 95% 요청이 1.2초 이내</li>\n<li><strong>비용 SLO</strong>: 월별 인퍼런스 비용이 예산의 90% 이하</li>\n</ul>\n<p>각 SLO마다 Service Level Indicator(SLI) 계산 공식을 명확히 하고, 데이터 소스를 지정해야 한다.</p>\n<h3 id=\"3-2-error-budget\" style=\"position:relative;\"><a href=\"#3-2-error-budget\" aria-label=\"3 2 error budget permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3-2. Error Budget</h3>\n<ul>\n<li>성공률 SLO 99.5% → 월간 에러 버짓 0.5%</li>\n<li>버짓이 소진되면 배포 동결, 롤백, 대체 모델 전환 등 대응 프로세스를 가동한다.</li>\n<li>SLO 상태와 버짓 잔여량을 Grafana, Opsgenie 등으로 공유한다.</li>\n</ul>\n<h2 id=\"4-수집-파이프라인-구성\" style=\"position:relative;\"><a href=\"#4-%EC%88%98%EC%A7%91-%ED%8C%8C%EC%9D%B4%ED%94%84%EB%9D%BC%EC%9D%B8-%EA%B5%AC%EC%84%B1\" aria-label=\"4 수집 파이프라인 구성 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>4. 수집 파이프라인 구성</h2>\n<ol>\n<li>Spring Boot 서비스가 Micrometer를 통해 지표를 수집한다.</li>\n<li>OpenTelemetry Collector가 지표·로그·트레이스를 수집하여 Prometheus, Tempo, Loki 등으로 전송한다.</li>\n<li>대시보드와 알람을 설정해 SLO 위반 조짐을 조기에 감지한다.</li>\n</ol>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">Spring Boot (Micrometer) → OpenTelemetry Collector → Prometheus / Grafana Cloud\n                                             → Alertmanager / PagerDuty</code></pre></div>\n<h2 id=\"5-알림과-자동화\" style=\"position:relative;\"><a href=\"#5-%EC%95%8C%EB%A6%BC%EA%B3%BC-%EC%9E%90%EB%8F%99%ED%99%94\" aria-label=\"5 알림과 자동화 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>5. 알림과 자동화</h2>\n<ul>\n<li><strong>Alerting</strong>: SLO 위반 임계치, 에러 버짓 소진율을 기반으로 알림을 설정한다.</li>\n<li><strong>런북 자동화</strong>: 알림과 함께 실행할 스크립트(모델 리스타트, 캐시 플러시, 트래픽 전환)를 정의한다.</li>\n<li><strong>혼잡 제어</strong>: 토큰 사용량 급증 시, Spring WebFlux rate limiter나 Adaptive Concurrency를 적용한다.</li>\n<li><strong>릴리즈 게이트</strong>: CI/CD에서 SLO 추이와 버짓 상태를 체크해 배포 승인 조건으로 활용한다.</li>\n</ul>\n<h2 id=\"6-비용-모니터링\" style=\"position:relative;\"><a href=\"#6-%EB%B9%84%EC%9A%A9-%EB%AA%A8%EB%8B%88%ED%84%B0%EB%A7%81\" aria-label=\"6 비용 모니터링 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>6. 비용 모니터링</h2>\n<ul>\n<li>OpenAI, Azure, Vertex AI 등 외부 API 비용을 별도 지표로 수집한다.</li>\n<li>사용량이 임계값에 가까워지면 대체 모델, 오프피크 스케줄링, 캐시 강화 등을 자동 제안한다.</li>\n<li>Cost Explorer 대시보드와 연동해 예산 대비 사용률을 추적한다.</li>\n</ul>\n<h2 id=\"7-운영-체크리스트\" style=\"position:relative;\"><a href=\"#7-%EC%9A%B4%EC%98%81-%EC%B2%B4%ED%81%AC%EB%A6%AC%EC%8A%A4%ED%8A%B8\" aria-label=\"7 운영 체크리스트 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>7. 운영 체크리스트</h2>\n<ul>\n<li class=\"task-list-item\"><input type=\"checkbox\" disabled> AI SLO가 문서화되고 경영진·운영팀과 합의되었는가?</li>\n<li class=\"task-list-item\"><input type=\"checkbox\" disabled> 성공률·지연·비용 지표가 실시간 수집되고 있는가?</li>\n<li class=\"task-list-item\"><input type=\"checkbox\" disabled> Error Budget 초과 시 대응 프로세스가 자동화되어 있는가?</li>\n<li class=\"task-list-item\"><input type=\"checkbox\" disabled> 관측 데이터가 보안·개인정보 정책을 준수하는가?</li>\n<li class=\"task-list-item\"><input type=\"checkbox\" disabled> 주기적 리뷰를 통해 SLO 기준을 갱신하고 있는가?</li>\n</ul>\n<hr>\n<p>AI 서비스는 모델 품질, 인프라 성능, 비용을 균형 있게 관리해야 한다. Spring Observability는 스프링 개발자에게 익숙한 방식으로 관측성을 구축하도록 도와준다. 명확한 SLO와 자동화된 모니터링 체계를 갖추면, 서비스 품질 저하나 비용 폭증을 미리 감지하고 안정적인 운영을 유지할 수 있다.</p>","tableOfContents":"<ul>\n<li><a href=\"/springboot/Spring-Observability%EC%99%80-AI-%EC%84%9C%EB%B9%84%EC%8A%A4-SLO-%EA%B4%80%EB%A6%AC/#1-spring-observability-%EA%B0%9C%EC%9A%94\">1. Spring Observability 개요</a></li>\n<li><a href=\"/springboot/Spring-Observability%EC%99%80-AI-%EC%84%9C%EB%B9%84%EC%8A%A4-SLO-%EA%B4%80%EB%A6%AC/#2-ai-%EC%84%9C%EB%B9%84%EC%8A%A4%EC%97%90%EC%84%9C-%EA%B4%80%EC%B8%A1%ED%95%B4%EC%95%BC-%ED%95%A0-%ED%95%B5%EC%8B%AC-%EC%A7%80%ED%91%9C\">2. AI 서비스에서 관측해야 할 핵심 지표</a></li>\n<li>\n<p><a href=\"/springboot/Spring-Observability%EC%99%80-AI-%EC%84%9C%EB%B9%84%EC%8A%A4-SLO-%EA%B4%80%EB%A6%AC/#3-slo-%EC%84%A4%EA%B3%84-%EB%B0%A9%EB%B2%95\">3. SLO 설계 방법</a></p>\n<ul>\n<li><a href=\"/springboot/Spring-Observability%EC%99%80-AI-%EC%84%9C%EB%B9%84%EC%8A%A4-SLO-%EA%B4%80%EB%A6%AC/#3-1-%EB%AA%A9%ED%91%9C-%EC%A0%95%EC%9D%98\">3-1. 목표 정의</a></li>\n<li><a href=\"/springboot/Spring-Observability%EC%99%80-AI-%EC%84%9C%EB%B9%84%EC%8A%A4-SLO-%EA%B4%80%EB%A6%AC/#3-2-error-budget\">3-2. Error Budget</a></li>\n</ul>\n</li>\n<li><a href=\"/springboot/Spring-Observability%EC%99%80-AI-%EC%84%9C%EB%B9%84%EC%8A%A4-SLO-%EA%B4%80%EB%A6%AC/#4-%EC%88%98%EC%A7%91-%ED%8C%8C%EC%9D%B4%ED%94%84%EB%9D%BC%EC%9D%B8-%EA%B5%AC%EC%84%B1\">4. 수집 파이프라인 구성</a></li>\n<li><a href=\"/springboot/Spring-Observability%EC%99%80-AI-%EC%84%9C%EB%B9%84%EC%8A%A4-SLO-%EA%B4%80%EB%A6%AC/#5-%EC%95%8C%EB%A6%BC%EA%B3%BC-%EC%9E%90%EB%8F%99%ED%99%94\">5. 알림과 자동화</a></li>\n<li><a href=\"/springboot/Spring-Observability%EC%99%80-AI-%EC%84%9C%EB%B9%84%EC%8A%A4-SLO-%EA%B4%80%EB%A6%AC/#6-%EB%B9%84%EC%9A%A9-%EB%AA%A8%EB%8B%88%ED%84%B0%EB%A7%81\">6. 비용 모니터링</a></li>\n<li><a href=\"/springboot/Spring-Observability%EC%99%80-AI-%EC%84%9C%EB%B9%84%EC%8A%A4-SLO-%EA%B4%80%EB%A6%AC/#7-%EC%9A%B4%EC%98%81-%EC%B2%B4%ED%81%AC%EB%A6%AC%EC%8A%A4%ED%8A%B8\">7. 운영 체크리스트</a></li>\n</ul>","wordCount":{"words":360},"fields":{"slug":"/springboot/Spring-Observability와-AI-서비스-SLO-관리/","image":null,"faq":[]},"frontmatter":{"title":"Spring Observability와 AI 서비스 SLO 관리","date":"2025년 11월 12일","dateISO":"2025-11-12T00:00:00.000Z","updatedISO":null,"category":"springboot","description":"Spring Observability, Micrometer, OpenTelemetry를 활용해 LLM·AI 마이크로서비스의 SLO를 설계하고 운영 지표를 수집·자동화하는 방법을 다룹니다.","tags":["Spring Observability","Micrometer","OpenTelemetry","SLO","AI 서비스","Error Budget"]}}},"pageContext":{"slug":"/springboot/Spring-Observability와-AI-서비스-SLO-관리/","previous":{"fields":{"slug":"/ai/AI-레드팀과-모델-평가-생성형-AI-안전성-테스트-실전-가이드/"},"frontmatter":{"title":"AI 레드팀과 모델 평가 생성형 AI 안전성 테스트 실전 가이드","tags":["AI 레드팀","모델 평가","안전성 테스트","LLM","AI 보안","Prompt Injection"]}},"next":{"fields":{"slug":"/blockchain/RWA-토큰화-후속-아키텍처-실물-결제와-커스터디-연동-전략/"},"frontmatter":{"title":"RWA 토큰화 후속 아키텍처 실물 결제와 커스터디 연동 전략","tags":["RWA","실물자산 토큰화","커스터디","결제 인프라","블록체인 아키텍처","규제 준수"]}}}},"staticQueryHashes":["213619243","3262363727"]}