<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>기술 블로그 (Tech) | kt cloud</title>
    <link>https://tech.ktcloud.com/</link>
    <description>AX Platform Company
</description>
    <language>ko</language>
    <pubDate>Mon, 6 Jul 2026 06:01:20 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>kt cloud 기술 블로그</managingEditor>
    <image>
      <title>기술 블로그 (Tech) | kt cloud</title>
      <url>https://tistory1.daumcdn.net/tistory/4226485/attach/e91f460a7db54862ba91b4a1d1dc362a</url>
      <link>https://tech.ktcloud.com</link>
    </image>
    <item>
      <title>[기술분석] AI 데이터센터 고조파 원인과 전력 품질 대책</title>
      <link>https://tech.ktcloud.com/entry/2026-07-ktcloud-ai-datacenter-harmonics-quality-mitigation</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 티스토리용 시맨틱 HTML 기술 블로그 템플릿 (개선된 UI) --&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;article style=&quot;font-family: 'Noto Sans KR', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; max-width: 100%; margin: 0 auto; line-height: 1.7; color: #2c3e50; background: #ffffff;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 메타데이터 섹션 --&gt; &lt;/span&gt;&lt;header style=&quot;background: linear-gradient(135deg, #009a87 0%, #00b39f 100%); color: white; padding: 20px 25px; text-align: right; font-weight: 600; border-radius: 15px; margin-bottom: 35px; box-shadow: 0 8px 25px rgba(0, 154, 135, 0.15); position: relative; overflow: hidden;&quot;&gt;
&lt;div style=&quot;position: absolute; top: -50%; right: -10%; width: 200px; height: 200px; background: rgba(255,255,255,0.1); border-radius: 50%; transform: rotate(45deg);&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;position: relative; z-index: 2;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;b&gt; &lt;span style=&quot;font-size: 1.1rem; text-shadow: rgba(0, 0, 0, 0.1) 0px 2px 4px;&quot;&gt; [ kt cloud DC서부운용센터 서동진 님 ] &lt;/span&gt; &lt;/b&gt; &lt;/span&gt;&lt;/div&gt;
&lt;/header&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 콘텐츠 구조 및 메타데이터 표준화 적용 --&gt; &lt;/span&gt;
&lt;article&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 작성자 정보 (시맨틱 헤더) --&gt; &lt;/span&gt;&lt;header style=&quot;margin: 20px 0;&quot;&gt;
&lt;section style=&quot;margin: 25px 0;&quot;&gt;&lt;header&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 요약 섹션 헤더 - 초미니멀 디자인 --&gt; &lt;/span&gt;
&lt;h4 style=&quot;margin: 15px 0 10px 0;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87; background: #f0fffe; padding: 4px 10px; border-radius: 12px; border: 1px solid #d4eeeb; display: inline-flex; align-items: center; gap: 5px; font-weight: bold; font-size: 0.9em;&quot;&gt; &lt;span style=&quot;font-size: 0.8em;&quot;&gt; &lt;/span&gt; 요약 &lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;이 글에서는 AI 데이터센터에서 발생하는 고조파의 원인과 전력 품질 대책을 다룹니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;안정적인 전력 운영과 설비 장애 예방을 위한 실무적 판단 기준을 정리합니다.&lt;/span&gt;&lt;/p&gt;
&lt;/header&gt;&lt;/section&gt;
&lt;/header&gt;&lt;/article&gt;
&lt;/article&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;#AI데이터센터&amp;nbsp;#고조파&amp;nbsp;#전력품질&amp;nbsp;#SMPS&amp;nbsp;#능동필터&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;먼저 짚고 넘어갈 부분이 있습니다. 고조파와 고주파는 서로 다른 개념입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;고주파는 수십 kHz 이상의 고속 스위칭 노이즈로 EMI 문제에 해당하고, 고조파는 기본파 60Hz의 정수배 주파수 성분이 전력 계통에 섞이는 현상입니다. 같은 SMPS에서 두 가지가 동시에 발생할 수 있지만, 영향도 다르고 대책도 다릅니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이 글에서는 고조파만 다룹니다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot; -개요-&amp;mdash;-왜-AIDC에서-고조파가-심각한가&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;1316&quot; data-local-id=&quot;452538780dba&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot; data-text-custom-color=&quot;#ffffff&quot; data-renderer-mark=&quot;true&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;왜 AIDC에서 고조파가 심각한가&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;AI 데이터센터(AIDC)에 집적된 서버 장비는 거의 예외 없이 SMPS(Switching Mode Power Supply)를 사용합니다. SMPS, UPS, VVF 인버터, 정류기 등은 모두 비선형 부하(Nonlinear Load)에 해당하며, 전원 전압이 정현파임에도 비정현파 전류를 흡입합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이를 푸리에 급수로 분해하면 기본파 60Hz에 더해 5&amp;middot;7&amp;middot;11&amp;middot;13차 고조파와 3차 고조파가 발생합니다. 이 중 5&amp;middot;7&amp;middot;11&amp;middot;13차는 주로 상전선에 영향을 주고, 3차 고조파는 중성선에 집중됩니다. 두 고조파 군은 전력계통에 미치는 영향과 대책이 근본적으로 다릅니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[기술분석] AI 데이터센터 고조파 원인과 전력 품질 대책 (6).png&quot; data-origin-width=&quot;1409&quot; data-origin-height=&quot;545&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mQdQX/dJMcadvKika/fLhKzrAF4bujhzfG5X4U60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mQdQX/dJMcadvKika/fLhKzrAF4bujhzfG5X4U60/img.png&quot; data-alt=&quot;생성형 AI를 통해 이미지 생성&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mQdQX/dJMcadvKika/fLhKzrAF4bujhzfG5X4U60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmQdQX%2FdJMcadvKika%2FfLhKzrAF4bujhzfG5X4U60%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1409&quot; height=&quot;545&quot; data-filename=&quot;[기술분석] AI 데이터센터 고조파 원인과 전력 품질 대책 (6).png&quot; data-origin-width=&quot;1409&quot; data-origin-height=&quot;545&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;생성형 AI를 통해 이미지 생성&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  핵심 포인트: 고조파 차수 n = 6k&amp;plusmn;1(k=1,2,3&amp;hellip;)인 5&amp;middot;7&amp;middot;11&amp;middot;13차는 주로 상전선에 흐르지만, n = 3k인 3&amp;middot;9&amp;middot;15차 영상 고조파는 3상에서 합산되어 중성선에 집중됩니다. 따라서 영향과 대책을 분리해서 접근해야 합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;Part.1---5&amp;middot;7&amp;middot;11&amp;middot;13차-&amp;mdash;-역상&amp;middot;정상-고조파의-케이블&amp;middot;변압기&amp;middot;역률-영향&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;1784&quot; data-local-id=&quot;eaf4e180f29a&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;Part.1 - 5&amp;middot;7&amp;middot;11&amp;middot;13차 &amp;mdash; 역상&amp;middot;정상 고조파의 케이블&amp;middot;변압기&amp;middot;역률 영향&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span&gt;⚡ 발생 원인&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;① 철심 자기포화에 따른 여자전류의 비정현파화&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;변압기 철심의 B-H 특성은 비선형입니다. 정현파 자속에 대해 여자전류가 비정현파로 왜형되며, 이때 3&amp;middot;5&amp;middot;7차 고조파 전류가 발생합니다. 특히 포화 정도가 심할수록 고차 고조파 성분이 증가합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;② 비선형 부하(Nonlinear Load)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;AIDC에서 가장 큰 비중을 차지하는 고조파 발생원입니다. 다이오드&amp;middot;SCR&amp;middot;IGBT 등의 전력반도체를 이용한 정류회로는 교류 전압의 일부 구간에서만 전류를 흡입하므로, 전류파형이 충격파(pulse) 형태로 왜형됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[기술분석] AI 데이터센터 고조파 원인과 전력 품질 대책 (5).png&quot; data-origin-width=&quot;1406&quot; data-origin-height=&quot;518&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0FogT/dJMcab5RSp5/udiKT9jIs9mxhAk5k4g6g1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0FogT/dJMcab5RSp5/udiKT9jIs9mxhAk5k4g6g1/img.png&quot; data-alt=&quot;생성형 AI를 통해 이미지 생성&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0FogT/dJMcab5RSp5/udiKT9jIs9mxhAk5k4g6g1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0FogT%2FdJMcab5RSp5%2FudiKT9jIs9mxhAk5k4g6g1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1406&quot; height=&quot;518&quot; data-filename=&quot;[기술분석] AI 데이터센터 고조파 원인과 전력 품질 대책 (5).png&quot; data-origin-width=&quot;1406&quot; data-origin-height=&quot;518&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;생성형 AI를 통해 이미지 생성&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-testid=&quot;table-container&quot; data-layout=&quot;custom&quot;&gt;
&lt;div data-vc=&quot;table-node-wrapper&quot; data-table-width=&quot;1800&quot; data-table-local-id=&quot;cf24bb7f-bf0f-480b-965f-a71e9d0d5e1c&quot; data-autosize=&quot;false&quot; data-layout=&quot;default&quot; data-number-column=&quot;false&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-layout=&quot;default&quot; data-table-width=&quot;1800&quot; data-number-column=&quot;false&quot; data-testid=&quot;renderer-table&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style13&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;주요&amp;nbsp;기기&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;발생&amp;nbsp;고조파&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-cell-background=&quot;#ffffff&quot;&gt;&lt;span&gt;비선형 부하&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-cell-background=&quot;#ffffff&quot;&gt;&lt;span&gt;UPS, VVF 인버터, 조상용 정류기, 아크 용접기, SMPS&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-cell-background=&quot;#ffffff&quot;&gt;&lt;span&gt;5차7차11차13차&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&lt;span&gt;철심 자기포화&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&lt;span&gt;변압기, 전동기&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&lt;span&gt;3차5차7차&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 id=&quot; -영향&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;2287&quot; data-local-id=&quot;91a72386a934&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ffffff;&quot; data-text-custom-color=&quot;#ffffff&quot; data-renderer-mark=&quot;true&quot;&gt; &lt;/span&gt; 영향&lt;/b&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p id=&quot;①-실효저항-증가에-의한-케이블-열화&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;2294&quot; data-local-id=&quot;332799ff8f16&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;① 실효저항 증가에 의한 케이블 열화&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;교류 도체의 실효저항은 직류저항에 표피효과 계수 &amp;lambda;s와 근접효과 계수 &amp;lambda;p를 더해 산출됩니다. 고조파 전류는 주파수를 높이는 효과가 있어 두 계수를 모두 증가시킵니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1783066560297&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;실효저항 산출식r = r₀ &amp;times; k₁ &amp;times; kₐ = r₀ &amp;times; k₁ &amp;times; (1 + &amp;lambda;s + &amp;lambda;p)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[기술분석] AI 데이터센터 고조파 원인과 전력 품질 대책 (4).png&quot; data-origin-width=&quot;1404&quot; data-origin-height=&quot;517&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcGGVR/dJMcabkyaq1/wNEcS41NrMLodDktohWUCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcGGVR/dJMcabkyaq1/wNEcS41NrMLodDktohWUCk/img.png&quot; data-alt=&quot;생성형 AI를 통해 이미지 생성&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcGGVR/dJMcabkyaq1/wNEcS41NrMLodDktohWUCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcGGVR%2FdJMcabkyaq1%2FwNEcS41NrMLodDktohWUCk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1404&quot; height=&quot;517&quot; data-filename=&quot;[기술분석] AI 데이터센터 고조파 원인과 전력 품질 대책 (4).png&quot; data-origin-width=&quot;1404&quot; data-origin-height=&quot;517&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;생성형 AI를 통해 이미지 생성&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;② 변압기 손실 증가&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;고조파 전류는 변압기 철심의 손실을 크게 증가시킵니다. 주파수에 비례하거나 주파수의 제곱에 비례하는 손실식을 보면 그 심각성을 확인할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock floatRight&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[기술분석] AI 데이터센터 고조파 원인과 전력 품질 대책 (7).png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c337r2/dJMcacjlXhK/Tv6ljrg9mrVZZQx78NIGS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c337r2/dJMcacjlXhK/Tv6ljrg9mrVZZQx78NIGS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c337r2/dJMcacjlXhK/Tv6ljrg9mrVZZQx78NIGS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc337r2%2FdJMcacjlXhK%2FTv6ljrg9mrVZZQx78NIGS0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;350&quot; height=&quot;350&quot; data-filename=&quot;[기술분석] AI 데이터센터 고조파 원인과 전력 품질 대책 (7).png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;  히스테리시스손(Hysteresis Loss)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1783066626573&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Ph = kh &amp;middot; f &amp;middot; Bm1.6 [W/m&amp;sup3;]
주파수에 비례하여 증가합니다.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;⚡ 와류손(Eddy Current Loss)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1783066646629&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Pe = ke(t &amp;middot; f &amp;middot; kf &amp;middot; Bm)&amp;sup2; [W/m&amp;sup3;]
주파수의 제곱에 비례하여 증가합니다.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;⚠️ 와류손은 주파수의 제곱에 비례하므로, 5차 고조파 300Hz에서는 기본파 대비 25배, 7차 고조파 420Hz에서는 49배로 급증합니다. 따라서 변압기 용량 산정 시 고조파 부하율, 즉 K-factor를 반드시 고려해야 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;③ 역률 저하 &amp;mdash; 변위역률 vs 왜형역률&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;일반적으로 인식하는 역률은 위상각에 의한 변위역률입니다. 하지만 고조파에 의한 역률 저하는 전류 파형의 왜형, 즉 THD에서 비롯됩니다. 이 둘은 원인이 다르므로 콘덴서로 보상할 수 없습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1783066680041&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;종합 역률(True Power Factor)
cos&amp;theta;' = 1 / &amp;radic;(1 + THDi&amp;sup2;) &amp;times; cos&amp;theta;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[기술분석] AI 데이터센터 고조파 원인과 전력 품질 대책 (3).png&quot; data-origin-width=&quot;1406&quot; data-origin-height=&quot;795&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GeEiO/dJMcahyf3II/Hvowxik1io64SszwzIPndk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GeEiO/dJMcahyf3II/Hvowxik1io64SszwzIPndk/img.png&quot; data-alt=&quot;생성형 AI를 통해 이미지 생성&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GeEiO/dJMcahyf3II/Hvowxik1io64SszwzIPndk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGeEiO%2FdJMcahyf3II%2FHvowxik1io64SszwzIPndk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1406&quot; height=&quot;795&quot; data-filename=&quot;[기술분석] AI 데이터센터 고조파 원인과 전력 품질 대책 (3).png&quot; data-origin-width=&quot;1406&quot; data-origin-height=&quot;795&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;생성형 AI를 통해 이미지 생성&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span&gt; ️ 대책&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;① 수동필터(Passive Filter)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;L-C 직렬 회로를 특정 고조파 주파수에 공진시켜 해당 고조파를 단락&amp;middot;흡수하는 방식입니다. 단일동조필터(Single-tuned Filter)는 구조가 단순하지만 특정 차수 하나만 제거할 수 있고, 고차필터(High-pass Filter)는 특정 차수 이상의 고조파를 광대역으로 감쇠시킬 수 있습니다. 설비비가 낮다는 장점이 있지만, 계통 임피던스와 공진 위험을 고려해야 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;② 능동필터(Active Power Filter, APF)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;부하 전류를 실시간으로 측정하여 고조파 성분과 역상의 보상 전류를 인버터로 주입하는 방식입니다. 부하 변동에 추종할 수 있고 광대역 고조파를 유연하게 제거할 수 있어, AIDC처럼 부하 변동이 큰 환경에 적합합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;③ 다펄스 정류기(Multi-pulse Rectifier)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;다펄스 정류기는 정류기의 펄스 수 p를 늘려 발생 고조파 차수를 높이는 방법입니다. 고조파 차수가 높아질수록 고조파에 의한 영향은 상대적으로 줄어듭니다. 발생 고조파는 n = mp &amp;plusmn; 1(m=1,2,3&amp;hellip;)의 법칙을 따릅니다.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #ffffff; color: #292a2e; text-align: start; border-collapse: collapse; width: 100%; height: 101px;&quot; border=&quot;1&quot; data-layout=&quot;default&quot; data-table-width=&quot;1800&quot; data-number-column=&quot;false&quot; data-testid=&quot;renderer-table&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style13&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;정류기&amp;nbsp;형식&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;발생&amp;nbsp;고조파&amp;nbsp;차수&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;최저&amp;nbsp;차수&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; height: 21px;&quot; data-cell-background=&quot;#ffffff&quot;&gt;&lt;span&gt;6펄스 (표준)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; height: 21px;&quot; data-cell-background=&quot;#ffffff&quot;&gt;&lt;span&gt;5,7,11,13,17...&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; height: 21px;&quot; data-cell-background=&quot;#ffffff&quot;&gt;&lt;span&gt;5차 (300 Hz)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; height: 21px;&quot; data-cell-background=&quot;#ffffff&quot;&gt;&lt;span&gt;12펄스&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; height: 21px;&quot; data-cell-background=&quot;#ffffff&quot;&gt;&lt;span&gt;11,13,23,25...&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; height: 21px;&quot; data-cell-background=&quot;#ffffff&quot;&gt;&lt;span&gt;11차 (660 Hz)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; height: 21px;&quot; data-cell-background=&quot;#ffffff&quot;&gt;&lt;span&gt;24펄스&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; height: 21px;&quot; data-cell-background=&quot;#ffffff&quot;&gt;&lt;span&gt;23,25...&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; height: 21px;&quot; data-cell-background=&quot;#ffffff&quot;&gt;&lt;span&gt;23차 (1380 Hz)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;④ ACL / DCL 적용&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;ACL(AC Line Reactor)은 컨버터 교류 입력 측에, DCL(DC Link Reactor)은 컨버터와 인버터 사이 DC 링크에 직렬로 삽입하는 리액터입니다. 전류 상승률(di/dt)을 제한하여 펄스성 고조파 전류를 평활하게 만들며, 구조가 단순하고 신뢰성이 높습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[기술분석] AI 데이터센터 고조파 원인과 전력 품질 대책 (2).png&quot; data-origin-width=&quot;1402&quot; data-origin-height=&quot;392&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tvsjv/dJMcaiqmPPT/a5n5fCamDOZeza3QhJDZo0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tvsjv/dJMcaiqmPPT/a5n5fCamDOZeza3QhJDZo0/img.png&quot; data-alt=&quot;생성형 AI를 통해 이미지 생성&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tvsjv/dJMcaiqmPPT/a5n5fCamDOZeza3QhJDZo0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ftvsjv%2FdJMcaiqmPPT%2Fa5n5fCamDOZeza3QhJDZo0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1402&quot; height=&quot;392&quot; data-filename=&quot;[기술분석] AI 데이터센터 고조파 원인과 전력 품질 대책 (2).png&quot; data-origin-width=&quot;1402&quot; data-origin-height=&quot;392&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;생성형 AI를 통해 이미지 생성&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;⑤ UPS 내장 고조파 저감 기능&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;  현대 UPS에는 다음과 같은 고조파 대책 기능이 내장되어 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;PFC(Power Factor Correction) 회로 &amp;mdash; 입력 전류를 전압과 동위상으로 유지하여 THD를 5% 이하로 억제합니다.&lt;/li&gt;
&lt;li&gt;DSP 기반 능동 필터 내장형 UPS &amp;mdash; APF 기능을 통합하여 별도 장치 없이 고조파를 저감할 수 있습니다.&lt;/li&gt;
&lt;li&gt;12&amp;middot;18펄스 입력 정류기 채용 &amp;mdash; 6펄스 대비 입력 THD를 약 3~5% 수준으로 대폭 저감합니다.&lt;/li&gt;
&lt;li&gt;IGBT 고속 스위칭 컨버터 &amp;mdash; 고주파 PWM으로 전류파형을 정형화합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;Part.2 - 제3고조파 &amp;mdash; 영상 전류의 중첩과 중성선 과전류 대책&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span&gt;  발생 원인 &amp;mdash; 제3고조파의 영상 합산&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;3상 평형 계통에서 기본파 1차와 5&amp;middot;7차 역상&amp;middot;정상 고조파는 각 상의 성분이 벡터적으로 서로 상쇄되어 중성선에는 흐르지 않습니다. 그러나 3차 고조파와 9&amp;middot;15차 등 3의 배수 고조파는 영상분(零相分)으로서 A&amp;middot;B&amp;middot;C 3상이 모두 동위상(同位相)입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;따라서 중성선에서는 3상이 상쇄되지 않고 오히려 합산됩니다. 이론상으로는 상전류의 최대 3배 크기의 3고조파 전류가 중성선에 흐를 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[기술분석] AI 데이터센터 고조파 원인과 전력 품질 대책 (1).png&quot; data-origin-width=&quot;1404&quot; data-origin-height=&quot;741&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cg9ZEv/dJMcac4KBwk/5GVW1ZUJQv5nweOY2VlTo1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cg9ZEv/dJMcac4KBwk/5GVW1ZUJQv5nweOY2VlTo1/img.png&quot; data-alt=&quot;생성형 AI를 통해 이미지 생성&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cg9ZEv/dJMcac4KBwk/5GVW1ZUJQv5nweOY2VlTo1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcg9ZEv%2FdJMcac4KBwk%2F5GVW1ZUJQv5nweOY2VlTo1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1404&quot; height=&quot;741&quot; data-filename=&quot;[기술분석] AI 데이터센터 고조파 원인과 전력 품질 대책 (1).png&quot; data-origin-width=&quot;1404&quot; data-origin-height=&quot;741&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;생성형 AI를 통해 이미지 생성&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span&gt;⚠️ 영향&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;① 중성선 전류 확대 및 과전류&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;단상 전력변환장치, 예를 들어 SMPS나 충전기 등이 다수 설치된 AIDC 분전반에서는 중성선 전류가 상전선 전류를 초과하는 사례가 자주 발생합니다. 이는 중성선 과열, CB 트립, 중성선 소손으로 이어질 수 있으며, 같은 경로로 포설된 통신선에도 유도장해를 일으킬 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;② 중성점 전위 상승&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;중성선에 고조파 전류가 흐르면 중성선 임피던스 XL과의 전압강하에 의해 중성점 전위가 대지전위에서 벗어납니다.&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1783067552575&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;중성점 전위 상승
VN = n &amp;times; XL &amp;times; IN&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;중성점 전위 상승은 부하의 전압 불평형, 기기 오동작, 절연 열화를 유발할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span&gt; ️ 대책&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;① Zig-Zag 결선 변압기&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;지그재그 변압기는 각 철심 다리에 두 권선을 서로 역방향으로 감아 결선한 특수 변압기입니다. 영상전류, 즉 3차 고조파에 대해서는 두 권선의 기자력(MMF)이 서로 상쇄되어 임피던스가 매우 낮아지므로, 3고조파 전류를 변압기 내부에서 순환시켜 계통으로 유출되는 것을 막을 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;기존 변압기와 함께 하이브리드 결선으로 구성할 수도 있으며, 영상고조파를 최대 90% 이상 저감할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[기술분석] AI 데이터센터 고조파 원인과 전력 품질 대책 (9).png&quot; data-origin-width=&quot;1407&quot; data-origin-height=&quot;817&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cF8sPm/dJMb991jN5r/PyireOarMa101Rcicjxn6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cF8sPm/dJMb991jN5r/PyireOarMa101Rcicjxn6k/img.png&quot; data-alt=&quot;생성형 AI를 통해 이미지 생성&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cF8sPm/dJMb991jN5r/PyireOarMa101Rcicjxn6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcF8sPm%2FdJMb991jN5r%2FPyireOarMa101Rcicjxn6k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1407&quot; height=&quot;817&quot; data-filename=&quot;[기술분석] AI 데이터센터 고조파 원인과 전력 품질 대책 (9).png&quot; data-origin-width=&quot;1407&quot; data-origin-height=&quot;817&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;생성형 AI를 통해 이미지 생성&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;② NCE(영상전류제거장치, Neutral Current Eliminator)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;NCE는 부하에서 발생한 3고조파 영상전류를 계통에 흘리지 않고 장치 내부에서 순환&amp;middot;소멸시키는 능동형 장치입니다. 고조파 발생 부하에 가장 근접하여 설치하는 것이 효과적이며, 용량은 중성선 전류의 2배로 선정합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[기술분석] AI 데이터센터 고조파 원인과 전력 품질 대책 (8).png&quot; data-origin-width=&quot;1398&quot; data-origin-height=&quot;516&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bD3wmi/dJMcaglL3yM/SnaGEZ6J4wSMaYuczfhaMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bD3wmi/dJMcaglL3yM/SnaGEZ6J4wSMaYuczfhaMK/img.png&quot; data-alt=&quot;생성형 AI를 통해 이미지 생성&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bD3wmi/dJMcaglL3yM/SnaGEZ6J4wSMaYuczfhaMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbD3wmi%2FdJMcaglL3yM%2FSnaGEZ6J4wSMaYuczfhaMK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1398&quot; height=&quot;516&quot; data-filename=&quot;[기술분석] AI 데이터센터 고조파 원인과 전력 품질 대책 (8).png&quot; data-origin-width=&quot;1398&quot; data-origin-height=&quot;516&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;생성형 AI를 통해 이미지 생성&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;③ 중성선 굵기 증대&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;3고조파 전류가 상당한 경우 중성선의 단면적을 상도체보다 크게 해야 합니다. IEC 및 국내 기준에서는 중성선 보정계수를 규정하고 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #ffffff; color: #292a2e; text-align: start; border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-layout=&quot;default&quot; data-table-width=&quot;1800&quot; data-number-column=&quot;false&quot; data-testid=&quot;renderer-table&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style13&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;3고조파&amp;nbsp;전류&amp;nbsp;비율&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;중성선&amp;nbsp;보정계수&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;조치&amp;nbsp;사항&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-cell-background=&quot;#ffffff&quot;&gt;&lt;span&gt;33% ~ 45%&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-cell-background=&quot;#ffffff&quot;&gt;&lt;span&gt;0.86&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-cell-background=&quot;#ffffff&quot;&gt;&lt;span&gt;상도체 단면적을 보정계수로 나누어 증대 선정&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-cell-background=&quot;#ffffff&quot;&gt;&lt;span&gt;45% 이상&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-cell-background=&quot;#ffffff&quot;&gt;&lt;span&gt;1.0&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-cell-background=&quot;#ffffff&quot;&gt;&lt;span&gt;중성선 단면적 = 상도체 단면적 이상으로 선정&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  실무 팁: AIDC 서버룸 분전반의 경우 단상 SMPS 부하가 밀집되어 3고조파 비율이 45%를 초과하는 사례가 흔합니다. 이 경우 중성선은 상도체와 동일하거나 그 이상의 굵기로 포설해야 하며, 4요소 차단기 대신 3요소 차단기 사용도 고려해야 합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;종합-정리&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;5680&quot; data-local-id=&quot;be3cbcea1fec&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;종합 정리&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;table style=&quot;background-color: #ffffff; color: #292a2e; text-align: start; border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-layout=&quot;default&quot; data-table-width=&quot;1800&quot; data-number-column=&quot;false&quot; data-testid=&quot;renderer-table&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style13&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;상전선 고조파 (5&amp;middot;7&amp;middot;11&amp;middot;13차)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;중성선 고조파 (3차)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-cell-background=&quot;#ffffff&quot;&gt;&lt;span&gt;&lt;b&gt;발생원&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-cell-background=&quot;#ffffff&quot;&gt;&lt;span&gt;UPS, 인버터, SMPS, 아크 용접기 등 비선형 부하&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-cell-background=&quot;#ffffff&quot;&gt;&lt;span&gt;단상 SMPS 부하 (3상 동위상 합산)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-cell-background=&quot;#ffffff&quot;&gt;&lt;span&gt;&lt;b&gt;주요 영향&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-cell-background=&quot;#ffffff&quot;&gt;&lt;span&gt;케이블 실효저항&amp;uarr;, 변압기 손실&amp;uarr;, 역률저하&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-cell-background=&quot;#ffffff&quot;&gt;&lt;span&gt;중성선 과전류, 중성점 전위상승, 통신 유도장해&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-cell-background=&quot;#ffffff&quot;&gt;&lt;span&gt;&lt;b&gt;대책&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-cell-background=&quot;#ffffff&quot;&gt;&lt;span&gt;수동&amp;middot;능동 필터, 다펄스 정류기, ACL/DCL, UPS PFC&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-cell-background=&quot;#ffffff&quot;&gt;&lt;span&gt;Zig-Zag 변압기, NCE, 중성선 굵기 증대&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-cell-background=&quot;#ffffff&quot;&gt;&lt;span&gt;&lt;b&gt;역률 관계&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-cell-background=&quot;#ffffff&quot;&gt;&lt;span&gt;왜형 무효분(D) 발생 &amp;mdash; 콘덴서 보상 불가&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-cell-background=&quot;#ffffff&quot;&gt;&lt;span&gt;중성선 임피던스에 의한 전압변동&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- CTA (블루 버전, GA4 공통 스크립트용 figure + data-event) --&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; style=&quot;max-width: 600px; margin: 0 auto 40px auto;&quot; data-event=&quot;go_cloud_banner_click&quot; data-name=&quot;cta_platform_banner&quot; data-loc=&quot;body_mid&quot;&gt;&lt;a href=&quot;https://cloud.kt.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 100%; height: auto; border-radius: 8px; display: block;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt%20cloud%20platform.png&quot; alt=&quot;kt cloud 플랫폼 바로가기&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- ================= FAQ 섹션 (그린 버전, 블루 스타일을 그린 톤으로) ================= --&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #009a87; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;b&gt;❓ 자주 묻는 질문 (FAQ)&lt;/b&gt; &lt;/span&gt;&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #E6F8F4; border-bottom: 1px solid #CDEDE7;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87;&quot;&gt; &lt;b&gt;Q. 왜&amp;nbsp;중성선&amp;nbsp;전류가&amp;nbsp;상전선보다&amp;nbsp;커질&amp;nbsp;수&amp;nbsp;있나요?&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #ffffff;&quot;&gt;A. 3차 고조파는 영상분으로 A&amp;middot;B&amp;middot;C 3상이 동위상이어서 중성선에서 상쇄되지 않고 합산됩니다. 이론상 최대 상전류의 3배까지 흐를 수 있습니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #E6F8F4; border-bottom: 1px solid #CDEDE7;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87;&quot;&gt;&lt;b&gt;Q. AIDC에서&amp;nbsp;가장&amp;nbsp;효과적인&amp;nbsp;고조파&amp;nbsp;대책은?&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #ffffff;&quot;&gt;A. &lt;span style=&quot;background-color: #ffffff; color: #292a2e; text-align: left;&quot;&gt;상전선: APF(능동필터) 또는 12펄스 이상 정류기. 중성선: NCE 또는 Zig-Zag 변압기. UPS 선정 시 PFC 내장 모델을 우선 검토합니다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- ================= 관련/출처 섹션 (그린 박스 버전) ================= --&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 15px; font-weight: bold; color: #000000; font-family: 'Noto Sans KR', sans-serif;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;   관련/출처 &lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 12px 14px; background: #ffffff;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;국제 표준&lt;b&gt;IEEE Std 519-2022&lt;/b&gt; &amp;mdash; Recommended Practice for Harmonic Control in Electric Power Systems국제 표준&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;IEC 61000-3-2&lt;/b&gt; &amp;mdash; Limits for harmonic current emissions국제 표준&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;IEC 60364-5-52&lt;/b&gt; &amp;mdash; Wiring systems (중성선 단면적 보정계수 기준)국내 기준&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;KEC(한국전기설비규정)&lt;/b&gt; &amp;mdash; 전선 단면적 및 고조파 관련 조항기술 문헌&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;J. Arrillaga, N.R. Watson&lt;/b&gt; &amp;mdash; Power System Harmonics (2nd ed.), Wiley, 2003기술 문헌&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;Alexander Kusko, Marc Thompson&lt;/b&gt; &amp;mdash; Power Quality in Electrical Systems, McGraw-Hill, 2007시험 기준&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;IEC 61000-4-7&lt;/b&gt; &amp;mdash; Measurement techniques of harmonics and interharmonics&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- 포스터 이미지 3개 한 줄 배치 (가운데 정렬 + 링크 추가) --&gt;&lt;/p&gt;
&lt;div&gt;
&lt;style&gt;  /* 모바일에서 포스터 크기 줄이기 */  @media (max-width: 480px) {    .poster-figure {      max-width: 30% !important;  /* 한 줄에 3개 들어오도록 */      flex: 0 0 30% !important;    }    .poster-figure img {      width: 100% !important;      height: auto !important;    }  }&lt;/style&gt;
&lt;/div&gt;
&lt;div style=&quot;display: flex; justify-content: center; align-items: flex-start; gap: 15px; margin: 30px auto; flex-wrap: wrap; text-align: center;&quot;&gt;&lt;!-- 1번 배너: 클라우드 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;cloud_industry_poster_click&quot; data-name=&quot;cloud_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://cloud.kt.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud1.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;!-- 2번 배너: 데이터센터 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;datacenter_industry_poster_click&quot; data-name=&quot;datacenter_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://www.kt-idc.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud2.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;!-- 3번 배너: AI 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;ai_industry_poster_click&quot; data-name=&quot;ai_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://cloud.kt.com/category/?ctgryId=C000000001&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud3.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;/div&gt;</description>
      <category>Tech Story/Data Center &amp;amp; Security</category>
      <category>aidc</category>
      <category>AI데이터센터</category>
      <category>KTCloud</category>
      <category>SMPS</category>
      <category>ups</category>
      <category>고조파</category>
      <category>능동필터</category>
      <category>데이터센터인프라</category>
      <category>전력인프라</category>
      <category>전력품질</category>
      <author>kt cloud 기술 블로그</author>
      <guid isPermaLink="true">https://tech.ktcloud.com/462</guid>
      <comments>https://tech.ktcloud.com/entry/2026-07-ktcloud-ai-datacenter-harmonics-quality-mitigation#entry462comment</comments>
      <pubDate>Fri, 3 Jul 2026 17:38:33 +0900</pubDate>
    </item>
    <item>
      <title>[AI활용] AI 에이전트의 안전벨트, 하네스 엔지니어링: Claude Code와 Terraform 사례</title>
      <link>https://tech.ktcloud.com/entry/2026-07-ktcloud-ai-agent-terraform-safety-automation</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 티스토리용 시맨틱 HTML 기술 블로그 템플릿 (개선된 UI) --&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;article style=&quot;font-family: 'Noto Sans KR', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; max-width: 100%; margin: 0 auto; line-height: 1.7; color: #2c3e50; background: #ffffff;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 메타데이터 섹션 --&gt; &lt;/span&gt;&lt;header style=&quot;background: linear-gradient(135deg, #009a87 0%, #00b39f 100%); color: white; padding: 20px 25px; text-align: right; font-weight: 600; border-radius: 15px; margin-bottom: 35px; box-shadow: 0 8px 25px rgba(0, 154, 135, 0.15); position: relative; overflow: hidden;&quot;&gt;
&lt;div style=&quot;position: absolute; top: -50%; right: -10%; width: 200px; height: 200px; background: rgba(255,255,255,0.1); border-radius: 50%; transform: rotate(45deg);&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;position: relative; z-index: 2;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;b&gt; &lt;span style=&quot;font-size: 1.1rem; text-shadow: rgba(0, 0, 0, 0.1) 0px 2px 4px;&quot;&gt; [ kt cloud Azure전환팀 이영호 님 ] &lt;/span&gt; &lt;/b&gt; &lt;/span&gt;&lt;/div&gt;
&lt;/header&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 콘텐츠 구조 및 메타데이터 표준화 적용 --&gt; &lt;/span&gt;
&lt;article&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 작성자 정보 (시맨틱 헤더) --&gt; &lt;/span&gt;&lt;header style=&quot;margin: 20px 0;&quot;&gt;
&lt;section style=&quot;margin: 25px 0;&quot;&gt;&lt;header&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 요약 섹션 헤더 - 초미니멀 디자인 --&gt; &lt;/span&gt;
&lt;h4 style=&quot;margin: 15px 0 10px 0;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87; background: #f0fffe; padding: 4px 10px; border-radius: 12px; border: 1px solid #d4eeeb; display: inline-flex; align-items: center; gap: 5px; font-weight: bold; font-size: 0.9em;&quot;&gt; &lt;span style=&quot;font-size: 0.8em;&quot;&gt; &lt;/span&gt; 요약 &lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;이 글에서는 AI 에이전트를 안전하게 운영하기 위한 하네스 엔지니어링과 Terraform 워크플로우 적용 방식을 다룹니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;자동화의 생산성과 통제 사이에서 필요한 운영 안전장치를 정리합니다.&lt;/span&gt;&lt;/p&gt;
&lt;/header&gt;&lt;/section&gt;
&lt;/header&gt;&lt;/article&gt;
&lt;/article&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;#하네스엔지니어링&amp;nbsp;#AI에이전트&amp;nbsp;#ClaudeCode&amp;nbsp;#Terraform&amp;nbsp;#HumanInTheLoop&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;d781ff19d109&quot; data-renderer-start-pos=&quot;1355&quot; data-ke-size=&quot;size16&quot;&gt;최근 &lt;b&gt;Claude Code&lt;/b&gt;를 메인 AI 에이전트로 도입해 Azure 인프라를 구축하면서, AI의 폭발적인 생산성을 극대화함과 동시에 그 이면에 숨겨진 통제 불가능성을 관리하는 '하네스 엔지니어링(Harness Engineering)'의 중요성을 실감했습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;d781ff19d109&quot; data-renderer-start-pos=&quot;1355&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;b32a312ebb18&quot; data-renderer-start-pos=&quot;1501&quot; data-ke-size=&quot;size16&quot;&gt;이번 포스팅에서는 하네스 엔지니어링이 왜 AGI로 가는 과도기의 필수 방법론인지, 그리고 이를 실제 Terraform 워크플로우에 어떻게 녹여냈는지 공유합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;1.-하네스(Harness):-AGI-과도기를-위한-안전벨트&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;1593&quot; data-local-id=&quot;808d6ef92655&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;1. 하네스(Harness): AGI 과도기를 위한 안전벨트&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;e3ea1db3a0cd&quot; data-renderer-start-pos=&quot;1628&quot; data-ke-size=&quot;size16&quot;&gt;하네스는 완벽한 인공일반지능(AGI)이 도래하기 전, 현재 모델들의 한계를 시스템적으로 보완하는 방법론입니다. Anthropic의 엔지니어링 블로그(&lt;a style=&quot;color: #1868db;&quot; href=&quot;https://www.anthropic.com/engineering/harness-design-long-running-apps&quot; data-testid=&quot;link-with-safety&quot; data-is-router-link=&quot;false&quot; data-renderer-mark=&quot;true&quot;&gt;&lt;u data-renderer-mark=&quot;true&quot;&gt;Harness Design for Long-Running Apps&lt;/u&gt;&lt;/a&gt;)에서는 에이전트를 감싸는 오케스트레이션 코드를 'harness'라고 표현합니다. 본 글에서는 이 개념을 확장하여, 에이전트의 작업 범위&amp;middot;권한&amp;middot;상태 전이를 체계적으로 설계하는 실무 접근법을 '하네스 엔지니어링'으로 정의합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;e3ea1db3a0cd&quot; data-renderer-start-pos=&quot;1628&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;ea0d3fe51d4d&quot; data-renderer-start-pos=&quot;1875&quot; data-ke-size=&quot;size16&quot;&gt;에이전트를 장기간 실행(Long-running)할 때 주로 두 가지 치명적인 문제가 발생합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;f46d3da9-d3c1-420f-b42f-504f50c7f043&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;일관성 상실 (Loss of Context):&lt;/b&gt; 작업이 길어질수록 초기에 설정한 아키텍처 의도를 잊고 탈선합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;긍정적인 자기 평가 (Positive Self-Assessment):&lt;/b&gt; 보안이나 규정을 엄밀히 검토하지 않고 스스로 &quot;완벽하다&quot;고 착각해 작업을 종료합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;19d1503005cd&quot; data-renderer-start-pos=&quot;2088&quot; data-ke-size=&quot;size16&quot;&gt;이러한 결함을 제어하기 위해 에이전트에게 무한한 자유를 주는 대신, 상태 기계(State Machine) 형태의 엄격한 루프를 설계하여 AI가 사고를 칠 수 있는 범위를 제한하는 것이 하네스의 핵심입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[AI활용] AI 에이전트의 안전벨트, 하네스 엔지니어링 Claude Code와 Terraform 사례 (2).png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;559&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cTRvkv/dJMcaaeQbMB/LIKHTbpPfCuEJTKi91C9r1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cTRvkv/dJMcaaeQbMB/LIKHTbpPfCuEJTKi91C9r1/img.png&quot; data-alt=&quot;Image: AI-Generated Content&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cTRvkv/dJMcaaeQbMB/LIKHTbpPfCuEJTKi91C9r1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcTRvkv%2FdJMcaaeQbMB%2FLIKHTbpPfCuEJTKi91C9r1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[AI활용] AI 에이전트의 안전벨트, 하네스 엔지니어링: Claude Code와 Terraform 사례&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;355&quot; data-filename=&quot;[AI활용] AI 에이전트의 안전벨트, 하네스 엔지니어링 Claude Code와 Terraform 사례 (2).png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;559&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Image: AI-Generated Content&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;2.-효율-극대화-전략:-English,-MCP,-그리고-상태-기반-에이전트&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;2210&quot; data-local-id=&quot;b8ccff2bf261&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;2. 효율 극대화 전략: English, MCP, 그리고 상태 기반 에이전트&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock floatRight&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[AI활용] AI 에이전트의 안전벨트, 하네스 엔지니어링 Claude Code와 Terraform 사례 (1).png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dBtV7L/dJMcafmV2UA/JkxXn0F6kILmCqUkCJ39lk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dBtV7L/dJMcafmV2UA/JkxXn0F6kILmCqUkCJ39lk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dBtV7L/dJMcafmV2UA/JkxXn0F6kILmCqUkCJ39lk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdBtV7L%2FdJMcafmV2UA%2FJkxXn0F6kILmCqUkCJ39lk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[AI활용] AI 에이전트의 안전벨트, 하네스 엔지니어링: Claude Code와 Terraform 사례&quot; loading=&quot;lazy&quot; width=&quot;350&quot; height=&quot;1080&quot; data-filename=&quot;[AI활용] AI 에이전트의 안전벨트, 하네스 엔지니어링 Claude Code와 Terraform 사례 (1).png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;0b486ed21f1e&quot; data-renderer-start-pos=&quot;2254&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;특히 Claude Code 환경에서 Opus 모델을 사용할 때 마주하는 토큰 고갈(Starvation) 문제를 해결하고 에이전트의 완성도를 높이기 위해 다음과 같은 전략을 세웠습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;73590813-5b35-44f4-a191-6e4d566d4a7f&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;영어 기반 소통 (Token Diet)의 트레이드오프:&lt;/b&gt; 한국어 대비 토큰 소모가 적은 영어를 기본 언어로 채택했습니다. 시스템 지시문과 내부 문서화를 영어로 통일하여 컨텍스트 윈도우를 효율적으로 유지했습니다. 다만 팀원 전원이 한국어 화자인 환경을 고려하여, 온보딩 가이드나 유지보수가 빈번한 운영 문서는 한국어로 작성해 가독성과 효율 사이의 균형을 맞추었습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Terraform MCP(Model Context Protocol) 도입:&lt;/b&gt; 방대한 Azure 가이드나 Terraform 문서를 프롬프트에 밀어 넣는 대신, Terraform MCP를 활용했습니다. 구체적으로 두 가지 용도로 사용했습니다.
&lt;ol style=&quot;list-style-type: decimal;&quot; data-indent-level=&quot;2&quot; data-local-id=&quot;d2a1aa8d-0447-4659-a7df-5a8a1c5121fb&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;환각(Hallucination) 방지:&lt;/b&gt; Terraform 공식 문서를 동적으로 조회하여 리소스 Argument의 정확성을 검증했습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;코드 일관성 확보:&lt;/b&gt; Terraform Argument의 정렬(Ordering)을 MCP를 통해 표준화했습니다. 이를 통해 토큰 낭비를 막으면서도 높은 수준의 코드 품질을 유지할 수 있었습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;상태(State)에 따른 도구 격리와 Sub-agent 활용:&lt;/b&gt; 모든 권한(SKILL)을 한 번에 주지 않고 기획(Plan)과 실행(Execute) 단계에 따라 권한을 분리하여 엉뚱한 시점의 인프라 수정을 차단했습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;3.-[사례]-SKILL과-Human-in-the-loop를-통한-하네스-구현&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;3020&quot; data-local-id=&quot;39063143eb70&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;3. [사례] SKILL과 Human-in-the-loop를 통한 하네스 구현&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;1d7ee519f611&quot; data-renderer-start-pos=&quot;3065&quot; data-ke-size=&quot;size16&quot;&gt;Azure 리소스(Resource Group, VNet, AKS 등)를 생성하는 과정에서 에이전트에게 부여한 구체적인 &lt;b&gt;SKILL&lt;/b&gt; 사례는 다음과 같습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;1d7ee519f611&quot; data-renderer-start-pos=&quot;3065&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;53c381b20be1&quot; data-renderer-start-pos=&quot;3152&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;① Root 모듈 생성 SKILL (The Blueprint)&lt;/b&gt; 작업의 기초가 되는 Root 모듈을 자동으로 구성합니다. 팀 내 표준화된 백엔드 설정(Azure Blob Storage)과 변수 구조를 강제하여, 일관된 프로젝트 구조를 갖추도록 하네스를 채웠습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;5ebbbac57d3f&quot; data-renderer-start-pos=&quot;3300&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;② 인프라 거버넌스 체크 SKILL (The Guardrail)&lt;/b&gt; 명명 규칙(Naming Convention)이나 필수 태그 누락 여부를 시스템적으로 체크하여 에이전트가 사내 가이드라인을 이탈하지 않도록 통제합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;ed1f1351d4cd&quot; data-renderer-start-pos=&quot;3421&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;③ PR(Pull Request) 준비 및 Human-in-the-loop (The Checkpoint)&lt;/b&gt; &lt;b&gt;작성된 코드를 프로덕션 환경까지 완전 자동화하여 배포하는 것은 에이전트에게 허용하지 않았습니다. 에이전트의 역할은 코드 생성까지로 한정했으며, 생성된 코드를 사람이 직접 확인한 뒤 Push 및 PR 생성을 수행하는 구조를 채택했습니다.&lt;/b&gt; 최종 검토와 병합(Merge)은 반드시 인간 엔지니어가 수행하는 &lt;b&gt;Human-in-the-loop(HITL)&lt;/b&gt; 구조를 유지했습니다. 이는 Anthropic이 강조하는 '치명적인 실수를 막기 위한 필수적인 안전장치'입니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;4.-환각-타파:-'보안책임자-페르소나'-하네스와-그-한계&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;3735&quot; data-local-id=&quot;f653e5cd75b7&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;4. 환각 타파: '보안책임자 페르소나' 하네스와 그 한계&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;3920bb307ec8&quot; data-renderer-start-pos=&quot;3769&quot; data-ke-size=&quot;size16&quot;&gt;보안 사고 방지를 위해 단순한 린터 도구를 넘어서, '사내 보안책임자 페르소나'를 활용했습니다. 에이전트가 작업을 마쳤다고 주장할 때, 역할을 'Security Officer'로 강제 전환(Persona Switching)시켜 스스로를 리뷰하게 합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;3920bb307ec8&quot; data-renderer-start-pos=&quot;3769&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;780db5f21635&quot; data-renderer-start-pos=&quot;3912&quot; data-ke-size=&quot;size16&quot;&gt;보안책임자가 된 에이전트는 작성된 코드에서 인증 정보 하드코딩 여부나 네트워크 노출 위험을 편집증적으로 검사합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;780db5f21635&quot; data-renderer-start-pos=&quot;3912&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;c81625498382&quot; data-renderer-start-pos=&quot;3978&quot; data-ke-size=&quot;size16&quot;&gt;다만, 동일한 모델이 역할만 전환하여 자기 코드를 리뷰하는 구조이므로 이것만으로 보안을 완전히 담보할 수는 없습니다. 이 글에서 소개하는 파이프라인은 tfsec, checkov 등 정적 분석 도구와 병행할 때 가장 견고한 체계를 갖출 수 있습니다. 따라서 이 페르소나 전환은 정적 분석의 대체재가 아닌 보완재로서, AI 특유의 '긍정적인 자기 평가' 문제를 1차적으로 걸러내는 역할을 수행합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[AI활용] AI 에이전트의 안전벨트, 하네스 엔지니어링 Claude Code와 Terraform 사례 (3).png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;572&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ps7EU/dJMcadvJJYx/AX5C6FLdvo54vmYlAR7XPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ps7EU/dJMcadvJJYx/AX5C6FLdvo54vmYlAR7XPk/img.png&quot; data-alt=&quot;Image: AI-Generated Content&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ps7EU/dJMcadvJJYx/AX5C6FLdvo54vmYlAR7XPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fps7EU%2FdJMcadvJJYx%2FAX5C6FLdvo54vmYlAR7XPk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[AI활용] AI 에이전트의 안전벨트, 하네스 엔지니어링: Claude Code와 Terraform 사례&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;363&quot; data-filename=&quot;[AI활용] AI 에이전트의 안전벨트, 하네스 엔지니어링 Claude Code와 Terraform 사례 (3).png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;572&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Image: AI-Generated Content&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;5.-마무리하며:-시스템-설계자로의-진화&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;4208&quot; data-local-id=&quot;c91716cb963a&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;5. 마무리하며: 시스템 설계자로의 진화&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;6d5c5c179af6&quot; data-renderer-start-pos=&quot;4232&quot; data-ke-size=&quot;size16&quot;&gt;하네스 엔지니어링을 통해 Claude Code는 놀라운 자율성을 보이면서도 사내 기준을 준수하는 믿음직한 파트너가 되었습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;6d5c5c179af6&quot; data-renderer-start-pos=&quot;4232&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;4db64041e35e&quot; data-renderer-start-pos=&quot;4304&quot; data-ke-size=&quot;size16&quot;&gt;앞으로 엔지니어의 핵심 역량은 코드를 직접 타이핑하는 기술이 아니라, 수많은 AI 에이전트가 안전하게 활동할 수 있도록 정교한 '작업의 레일(Harness)'을 설계하는 시스템 아키텍처로 이동할 것입니다. 프롬프트를 넘어, AI가 사고를 치지 않고 최고 효율을 낼 수 있는 거버넌스 시스템을 구축하는 이 과도기적 생존법을 실무에 꼭 도입해 보시길 바랍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- CTA (블루 버전, GA4 공통 스크립트용 figure + data-event) --&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; style=&quot;max-width: 600px; margin: 0 auto 40px auto;&quot; data-event=&quot;go_cloud_banner_click&quot; data-name=&quot;cta_platform_banner&quot; data-loc=&quot;body_mid&quot;&gt;&lt;a href=&quot;https://cloud.kt.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 100%; height: auto; border-radius: 8px; display: block;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt%20cloud%20platform.png&quot; alt=&quot;kt cloud 플랫폼 바로가기&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- ================= FAQ 섹션 (그린 버전, 블루 스타일을 그린 톤으로) ================= --&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #009a87; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;b&gt;❓ 자주 묻는 질문 (FAQ)&lt;/b&gt; &lt;/span&gt;&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #E6F8F4; border-bottom: 1px solid #CDEDE7;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87;&quot;&gt; &lt;b&gt;Q. '보안책임자&amp;nbsp;페르소나'&amp;nbsp;전환만으로&amp;nbsp;인프라&amp;nbsp;보안을&amp;nbsp;완벽히&amp;nbsp;보장할&amp;nbsp;수&amp;nbsp;있나요?&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #ffffff;&quot;&gt;A. 아닙니다. 동일한 AI 모델이 역할만 변경하여 스스로 작성한 코드를 리뷰하는 구조이기 때문에 완벽한 보안을 담보하기는 어렵습니다. 페르소나&amp;nbsp;전환은&amp;nbsp;AI&amp;nbsp;특유의&amp;nbsp;'긍정적&amp;nbsp;자기&amp;nbsp;평가'&amp;nbsp;문제를&amp;nbsp;1차적으로&amp;nbsp;걸러내기&amp;nbsp;위한&amp;nbsp;보완재&amp;nbsp;역할을&amp;nbsp;합니다.&amp;nbsp;궁극적으로는&amp;nbsp;이&amp;nbsp;하네스&amp;nbsp;위에&amp;nbsp;tfsec,&amp;nbsp;checkov&amp;nbsp;등&amp;nbsp;전문적인&amp;nbsp;정적&amp;nbsp;분석(SAST)&amp;nbsp;도구를&amp;nbsp;파이프라인에&amp;nbsp;병행해야&amp;nbsp;가장&amp;nbsp;견고한&amp;nbsp;보안&amp;nbsp;체계를&amp;nbsp;갖출&amp;nbsp;수&amp;nbsp;있습니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #E6F8F4; border-bottom: 1px solid #CDEDE7;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87;&quot;&gt;&lt;b&gt;Q. 에이전트가&amp;nbsp;인프라&amp;nbsp;코드&amp;nbsp;생성부터&amp;nbsp;배포까지&amp;nbsp;완전&amp;nbsp;자동화하여&amp;nbsp;처리하나요?&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #ffffff;&quot;&gt;A.&amp;nbsp;그렇지&amp;nbsp;않습니다.&amp;nbsp;치명적인&amp;nbsp;인프라&amp;nbsp;사고를&amp;nbsp;방지하기&amp;nbsp;위해&amp;nbsp;에이전트의&amp;nbsp;역할은&amp;nbsp;'코드&amp;nbsp;생성&amp;nbsp;및&amp;nbsp;PR(Pull&amp;nbsp;Request)&amp;nbsp;준비'&amp;nbsp;단계까지만&amp;nbsp;허용하도록&amp;nbsp;제한했습니다.&amp;nbsp;생성된&amp;nbsp;코드를&amp;nbsp;실제&amp;nbsp;환경에&amp;nbsp;반영하기&amp;nbsp;위한&amp;nbsp;Push&amp;nbsp;및&amp;nbsp;Merge&amp;nbsp;과정은&amp;nbsp;반드시&amp;nbsp;인간&amp;nbsp;엔지니어가&amp;nbsp;직접&amp;nbsp;코드를&amp;nbsp;확인하고&amp;nbsp;승인하는&amp;nbsp;'Human-in-the-loop&amp;nbsp;(HITL)'&amp;nbsp;구조로&amp;nbsp;설계하여&amp;nbsp;최종적인&amp;nbsp;시스템&amp;nbsp;안전성을&amp;nbsp;확보했습니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- ================= 관련/출처 섹션 (그린 박스 버전) ================= --&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 15px; font-weight: bold; color: #000000; font-family: 'Noto Sans KR', sans-serif;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;   관련/출처 &lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 12px 14px; background: #ffffff;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc; color: #292a2e; text-align: left;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;04c9678a-03a0-44fb-bd95-884709151c67&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a style=&quot;color: #1868db;&quot; href=&quot;https://www.anthropic.com/engineering/harness-design-long-running-apps&quot; data-testid=&quot;link-with-safety&quot; data-is-router-link=&quot;false&quot; data-renderer-mark=&quot;true&quot;&gt;&lt;b&gt;Anthropic Engineering: Harness Design for Long-Running Apps&lt;/b&gt;&lt;/a&gt; : 장기 실행 AI 에이전트의 한계점과 이를 통제하기 위한 하네스(Harness) 아키텍처 설계 원론&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- 포스터 이미지 3개 한 줄 배치 (가운데 정렬 + 링크 추가) --&gt;&lt;/p&gt;
&lt;div&gt;
&lt;style&gt;  /* 모바일에서 포스터 크기 줄이기 */  @media (max-width: 480px) {    .poster-figure {      max-width: 30% !important;  /* 한 줄에 3개 들어오도록 */      flex: 0 0 30% !important;    }    .poster-figure img {      width: 100% !important;      height: auto !important;    }  }&lt;/style&gt;
&lt;/div&gt;
&lt;div style=&quot;display: flex; justify-content: center; align-items: flex-start; gap: 15px; margin: 30px auto; flex-wrap: wrap; text-align: center;&quot;&gt;&lt;!-- 1번 배너: 클라우드 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;cloud_industry_poster_click&quot; data-name=&quot;cloud_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://cloud.kt.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud1.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;!-- 2번 배너: 데이터센터 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;datacenter_industry_poster_click&quot; data-name=&quot;datacenter_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://www.kt-idc.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud2.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;!-- 3번 배너: AI 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;ai_industry_poster_click&quot; data-name=&quot;ai_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://cloud.kt.com/category/?ctgryId=C000000001&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud3.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;/div&gt;</description>
      <category>Tech Story/etc.</category>
      <category>ai에이전트</category>
      <category>Azure</category>
      <category>claudecode</category>
      <category>DevOps</category>
      <category>HumanInTheLoop</category>
      <category>InfrastructureAsCode</category>
      <category>KTCloud</category>
      <category>terraform</category>
      <category>클라우드보안</category>
      <category>하네스엔지니어링</category>
      <author>kt cloud 기술 블로그</author>
      <guid isPermaLink="true">https://tech.ktcloud.com/460</guid>
      <comments>https://tech.ktcloud.com/entry/2026-07-ktcloud-ai-agent-terraform-safety-automation#entry460comment</comments>
      <pubDate>Fri, 3 Jul 2026 11:06:25 +0900</pubDate>
    </item>
    <item>
      <title>케클s피드 6월호｜AI 시대, 인프라 운영 역량이 더 중요해진 이유</title>
      <link>https://tech.ktcloud.com/entry/%EC%BC%80%ED%81%B4s%ED%94%BC%EB%93%9C-6%EC%9B%94%ED%98%B8%EF%BD%9CAI-%EC%8B%9C%EB%8C%80-%EC%9D%B8%ED%94%84%EB%9D%BC-%EC%9A%B4%EC%98%81-%EC%97%AD%EB%9F%89%EC%9D%B4-%EB%8D%94-%EC%A4%91%EC%9A%94%ED%95%B4%EC%A7%84-%EC%9D%B4%EC%9C%A0</link>
      <description>&lt;div style=&quot;-webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; padding: 20px 0px; margin: 0 auto;&quot; role=&quot;article&quot; aria-roledescription=&quot;email&quot;&gt;
&lt;table id=&quot;stb-container&quot; style=&quot;width: 100%;&quot; role=&quot;presentation&quot; border=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;&lt;!-- [if mso]&gt;          &lt;table role=&quot;presentation&quot; align=&quot;center&quot; style=&quot;width:630px;background:#ffffff;&quot;&gt;          &lt;tr&gt;          &lt;td&gt;            &lt;div class=&quot;outer&quot;&gt;          &lt;![endif]--&gt;&lt;!-- [if !mso]&gt;&lt;!--&gt;
&lt;div class=&quot;outer&quot; style=&quot;width: 100%; max-width: 630px; background: #ffffff; margin: 0px auto;&quot;&gt;&lt;!--&lt;![endif]--&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: justify; font-size: 0; box-sizing: border-box; padding: 15px 15px 15px 15px;&quot;&gt;&lt;img class=&quot;stb-justify&quot; style=&quot;width: 100%; display: inline; vertical-align: bottom; text-align: justify; max-width: 100% !important; height: auto; border: 0;&quot; src=&quot;https://img2.stibee.com/123485_3456835_1782206323551456510.png&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;word-break: break-word; text-align: left; margin: 0px; ;line-height: 1.7; font-size: 16px; font-family: noto sans kr, noto sans cjk kr, noto sans cjk, Malgun Gothic, apple sd gothic neo,     nanum gothic, malgun gothic, dotum, arial, helvetica, Meiryo, MS Gothic, sans-serif!important; ;-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #000000; padding: 15px 15px 15px 15px;&quot;&gt;
&lt;div data-node-type=&quot;expand&quot; data-title=&quot;인사&quot; data-expanded=&quot;true&quot; data-local-id=&quot;cb55c470-69b2-4721-8aa3-3639e484bdbd&quot; data-prosemirror-content-type=&quot;node&quot; data-prosemirror-node-name=&quot;expand&quot; data-prosemirror-node-block=&quot;true&quot; data-pm-slice=&quot;2 2 [&amp;quot;layoutSection&amp;quot;,{&amp;quot;columnRuleStyle&amp;quot;:null,&amp;quot;localId&amp;quot;:&amp;quot;757c6a21b7d7&amp;quot;},&amp;quot;layoutColumn&amp;quot;,{&amp;quot;width&amp;quot;:50,&amp;quot;localId&amp;quot;:&amp;quot;ae84629af214&amp;quot;}]&quot;&gt;&lt;span&gt;&lt;span data-metadata=&quot;&quot;&gt;&lt;/span&gt;&lt;span data-metadata=&quot;&quot;&gt;&lt;/span&gt;&lt;span data-buffer=&quot;&quot;&gt;&lt;/span&gt;&lt;span&gt;AI 비즈니스의 진짜 승부는 도입 이후부터 시작됩니다. 이제 기업 경쟁력은 AI 모델을 안정적으로 실행하고, 실제 서비스로 지속 운영할 수 있는 인프라 기반에서 결정되고 있습니다.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;이번 호는 2026년 상반기 Data Center&amp;middot;AI&amp;middot;Cloud 시장의 주요 흐름을 짚어보는 트렌드 리포트로 시작합니다. 또한 개발자의 반복 업무를 줄이고 클라우드 네이티브 서비스 개발 속도를 높여가는 플랫폼 엔지니어링팀의 인터뷰도 확인하실 수 있습니다. 이와 함께 중단 없는 클라우드 아키텍처 구현 전략을 다루는 웨비나와 kt cloud의 공공 전용 NPU Server 출시 소식까지 살펴봅니다.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: justify; font-size: 0; box-sizing: border-box; padding: 5px 0px 15px 0px;&quot;&gt;&lt;img class=&quot;stb-justify&quot; style=&quot;width: 100%; display: inline; vertical-align: bottom; text-align: justify; max-width: 100% !important; height: auto; border: 0;&quot; src=&quot;https://img2.stibee.com/123485_3456835_1782206369889144711.png&quot; alt=&quot;&quot; width=&quot;630&quot; /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border: 0; background: none;&quot; width=&quot;100%&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class=&quot;stb-text-box&quot; style=&quot;height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; background: #F6FAE3; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; font-size: 0; box-sizing: border-box; padding: 25px 15px 15px 15px;&quot;&gt;&lt;img class=&quot;stb-center&quot; style=&quot;width: 334px; display: inline; vertical-align: bottom; text-align: center; max-width: 100% !important; height: auto; border: 0;&quot; src=&quot;https://img2.stibee.com/123485_3456835_1782206407069034152.png&quot; alt=&quot;&quot; width=&quot;334&quot; /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; background: #F6FAE3; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; font-size: 0; box-sizing: border-box; padding: 0px 15px 15px 15px;&quot;&gt;&lt;img class=&quot;stb-center&quot; style=&quot;width: 460px; display: inline; vertical-align: bottom; text-align: center; max-width: 100% !important; height: auto; border: 0;&quot; src=&quot;https://img2.stibee.com/123485_3456835_1782206416633668012.png&quot; alt=&quot;&quot; width=&quot;460&quot; /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; background: #F6FAE3; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: justify; font-size: 0; box-sizing: border-box; padding: 15px 15px 15px 15px;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: #0000ff;&quot; href=&quot;https://tech.ktcloud.com/entry/2026-07-ktcloud-trendreport&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;img class=&quot;stb-justify&quot; style=&quot;width: 100%; display: inline; vertical-align: bottom; text-align: justify; max-width: 100% !important; height: auto; border: 0;&quot; src=&quot;https://img2.stibee.com/123485_3456835_1782206431975832809.png&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; background: #F6FAE3; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;word-break: break-word; text-align: left; margin: 0px; ;line-height: 1.7; font-size: 16px; font-family: noto sans kr, noto sans cjk kr, noto sans cjk, Malgun Gothic, apple sd gothic neo,     nanum gothic, malgun gothic, dotum, arial, helvetica, Meiryo, MS Gothic, sans-serif!important; ;-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #000000; padding: 15px 15px 15px 15px;&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span data-metadata=&quot;&quot;&gt;&lt;/span&gt;&lt;span data-metadata=&quot;&quot;&gt;&lt;/span&gt;&lt;span data-buffer=&quot;&quot;&gt;&lt;/span&gt;&lt;span&gt;2026년 상반기, AI 시장의 화두는 빠른 도입보다 안정적인 운영으로 이동하고 있습니다. 기업들은 AI를 실제 업무와 고객 서비스에 적용하는 과정에서 GPU 자원, 전력&amp;middot;냉각, 데이터 보안, 운영 비용까지 함께 관리해야 하는 단계에 들어섰습니다. 클라우드와 데이터센터는 이러한 변화 속에서 AI 서비스를 지속적으로 운영하기 위한 핵심 기반으로 다시 주목받고 있습니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;이번 리포트에서는 2026년 상반기 시장의 주요 변화를 Data Center, AI, Cloud 관점에서 살펴봅니다. GPU 고집적화에 따른 전력&amp;middot;냉각 기술의 변화, 스스로 판단하고 실행하는 에이전트형 AI로의 진화, 데이터 통제권 확보를 위한 클라우드 보안 전략까지 주요 이슈를 한눈에 확인할 수 있습니다.&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; background: #F6FAE3; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; font-size: 0; box-sizing: border-box; padding: 5px 15px 15px 15px;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: #0000ff;&quot; href=&quot;https://tech.ktcloud.com/entry/2026-07-ktcloud-trendreport&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;img class=&quot;stb-center&quot; style=&quot;width: 226px; display: inline; vertical-align: bottom; text-align: center; max-width: 100% !important; height: auto; border: 0;&quot; src=&quot;https://img2.stibee.com/123485_3456835_1782206477893326381.png&quot; alt=&quot;&quot; width=&quot;226&quot; /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border: 0; background: #F6FAE3;&quot; width=&quot;100%&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class=&quot;stb-text-box&quot; style=&quot;height: 15px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; font-size: 0; box-sizing: border-box; padding: 25px 15px 15px 15px;&quot;&gt;&lt;img class=&quot;stb-center&quot; style=&quot;width: 330px; display: inline; vertical-align: bottom; text-align: center; max-width: 100% !important; height: auto; border: 0;&quot; src=&quot;https://img2.stibee.com/123485_3456835_1782206553339931564.png&quot; alt=&quot;&quot; width=&quot;330&quot; /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; font-size: 0; box-sizing: border-box; padding: 5px 15px 15px 15px;&quot;&gt;&lt;img class=&quot;stb-center&quot; style=&quot;width: 542px; display: inline; vertical-align: bottom; text-align: center; max-width: 100% !important; height: auto; border: 0;&quot; src=&quot;https://img2.stibee.com/123485_3456835_1782206607945139322.png&quot; alt=&quot;&quot; width=&quot;542&quot; /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: justify; font-size: 0; box-sizing: border-box; padding: 15px 15px 15px 15px;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: #0000ff;&quot; href=&quot;https://tech.ktcloud.com/entry/2026-06-ktcloud-%ED%94%8C%EB%9E%AB%ED%8F%BC-%EC%97%94%EC%A7%80%EB%8B%88%EC%96%B4%EB%A7%81&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;img class=&quot;stb-justify&quot; style=&quot;width: 100%; display: inline; vertical-align: bottom; text-align: justify; max-width: 100% !important; height: auto; border: 0;&quot; src=&quot;https://img2.stibee.com/123485_3456835_1782206616282432971.png&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;word-break: break-word; text-align: left; margin: 0px; ;line-height: 1.7; font-size: 16px; font-family: noto sans kr, noto sans cjk kr, noto sans cjk, Malgun Gothic, apple sd gothic neo,     nanum gothic, malgun gothic, dotum, arial, helvetica, Meiryo, MS Gothic, sans-serif!important; ;-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #000000; padding: 15px 15px 15px 15px;&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span data-metadata=&quot;&quot;&gt;&lt;/span&gt;&lt;span data-metadata=&quot;&quot;&gt;&lt;/span&gt;&lt;span data-buffer=&quot;&quot;&gt;&lt;/span&gt;&lt;span&gt;클라우드 네이티브 서비스를 만드는 조직이 흔히 겪는 모순이 있습니다. 고객에게는 최신 클라우드 환경을 제공하면서, 막상 내부 개발자들은 인프라 세팅과 복잡한 배포 파이프라인 구성 등 수동 반복 업무에 많은 리소스를 낭비하고 있다는 점입니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;kt cloud는 이러한 개발 프로세스의 장벽을 허물고 생산성을 극대화하기 위해 'Self-Service' 기반의 플랫폼 엔지니어링 체계를 도입했습니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;인프라 지식이 부족해도 손쉽게 활용할 수 있는 표준화된 CI/CD 환경부터, 자유롭게 테스트하고 검증할 수 있는 Sandbox 개발 환경까지. 개발자가 본질적인 개발 업무에 더 집중할 수 있는 환경을 어떻게 만들어가고 있는지 자세히 소개합니다.&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; font-size: 0; box-sizing: border-box; padding: 5px 15px 15px 15px;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: #0000ff;&quot; href=&quot;https://tech.ktcloud.com/entry/2026-06-ktcloud-%ED%94%8C%EB%9E%AB%ED%8F%BC-%EC%97%94%EC%A7%80%EB%8B%88%EC%96%B4%EB%A7%81&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;img class=&quot;stb-center&quot; style=&quot;width: 268px; display: inline; vertical-align: bottom; text-align: center; max-width: 100% !important; height: auto; border: 0;&quot; src=&quot;https://img2.stibee.com/123485_3456835_1782206666963916289.png&quot; alt=&quot;&quot; width=&quot;268&quot; /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border: 0; background: #ffffff;&quot; width=&quot;100%&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class=&quot;stb-text-box&quot; style=&quot;height: 15px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; background: #F6FAE3; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; font-size: 0; box-sizing: border-box; padding: 25px 15px 15px 15px;&quot;&gt;&lt;img class=&quot;stb-center&quot; style=&quot;width: 280px; display: inline; vertical-align: bottom; text-align: center; max-width: 100% !important; height: auto; border: 0;&quot; src=&quot;https://img2.stibee.com/123485_3456835_1782206716125259434.png?3fvu33xy&quot; alt=&quot;&quot; width=&quot;280&quot; /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; background: #F6FAE3; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; font-size: 0; box-sizing: border-box; padding: 5px 15px 15px 15px;&quot;&gt;&lt;img class=&quot;stb-center&quot; style=&quot;width: 370px; display: inline; vertical-align: bottom; text-align: center; max-width: 100% !important; height: auto; border: 0;&quot; src=&quot;https://img2.stibee.com/123485_3456835_1782206747258054125.png&quot; alt=&quot;&quot; width=&quot;370&quot; /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; background: #F6FAE3; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; font-size: 0; box-sizing: border-box; padding: 15px 15px 15px 15px;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: #0000ff;&quot; href=&quot;https://tech.ktcloud.com/entry/2026-07-ktcloud-webinar&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;img class=&quot;stb-center&quot; style=&quot;width: auto; display: inline; vertical-align: bottom; text-align: center; max-width: 100% !important; height: auto; border: 0;&quot; src=&quot;https://img2.stibee.com/123485_3456835_1782206807764998865.png&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; background: #F6FAE3; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;word-break: break-word; text-align: left; margin: 0px; ;line-height: 1.7; font-size: 16px; font-family: noto sans kr, noto sans cjk kr, noto sans cjk, Malgun Gothic, apple sd gothic neo,     nanum gothic, malgun gothic, dotum, arial, helvetica, Meiryo, MS Gothic, sans-serif!important; ;-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #000000; padding: 15px 15px 15px 15px;&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span data-metadata=&quot;&quot;&gt;&lt;/span&gt;&lt;span data-metadata=&quot;&quot;&gt;&lt;/span&gt;&lt;span data-buffer=&quot;&quot;&gt;&lt;/span&gt;&lt;span&gt;이번 kt cloud 웨비나에서는 복잡해진 인프라 환경에서 예기치 못한 장애와 운영 리스크에 대응하기 위한 차세대 클라우드 아키텍처를 소개합니다. 공공과 엔터프라이즈 환경의 실제 운영 사례를 바탕으로, 플랫폼 차원에서 서비스 가용성을 확보하는 인프라 설계 방안을 살펴봅니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;수도권 멀티 리전 기반 Active-Active 구조를 통해 상시 가용성을 높이고, 고가용성(HA)과 재해 복구(DR)를 고려한 운영 체계를 제시합니다. 시스템 고도화와 안정적인 운영을 동시에 고민하는 기업이라면, 지속 가능한 클라우드 운영 표준을 확인해 보세요.&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; background: #F6FAE3; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; font-size: 0; box-sizing: border-box; padding: 5px 15px 15px 15px;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: #0000ff;&quot; href=&quot;https://tech.ktcloud.com/entry/2026-07-ktcloud-webinar&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;img class=&quot;stb-center&quot; style=&quot;width: 238px; display: inline; vertical-align: bottom; text-align: center; max-width: 100% !important; height: auto; border: 0;&quot; src=&quot;https://img2.stibee.com/123485_3456835_1782206836258104492.png&quot; alt=&quot;&quot; width=&quot;238&quot; /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border: 0; background: #F6FAE3;&quot; width=&quot;100%&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class=&quot;stb-text-box&quot; style=&quot;height: 15px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; font-size: 0; box-sizing: border-box; padding: 25px 15px 15px 15px;&quot;&gt;&lt;img class=&quot;stb-center&quot; style=&quot;width: 270px; display: inline; vertical-align: bottom; text-align: center; max-width: 100% !important; height: auto; border: 0;&quot; src=&quot;https://img2.stibee.com/123485_3456835_1782206925215051649.png&quot; alt=&quot;&quot; width=&quot;270&quot; /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; font-size: 0; box-sizing: border-box; padding: 5px 15px 15px 15px;&quot;&gt;&lt;img class=&quot;stb-center&quot; style=&quot;width: 374px; display: inline; vertical-align: bottom; text-align: center; max-width: 100% !important; height: auto; border: 0;&quot; src=&quot;https://img2.stibee.com/123485_3456835_1782206939268310331.png&quot; alt=&quot;&quot; width=&quot;374&quot; /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; font-size: 0; box-sizing: border-box; padding: 5px 15px 15px 15px;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: #0000ff;&quot; href=&quot;https://www.ktcloud.com/media/press/20260604093554164?lan=kor&amp;amp;source=&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;img class=&quot;stb-center&quot; style=&quot;width: auto; display: inline; vertical-align: bottom; text-align: center; max-width: 100% !important; height: auto; border: 0;&quot; src=&quot;https://img2.stibee.com/123485_3456835_1782206967707232017.png&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; background: #ffffff; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;word-break: break-word; text-align: left; margin: 0px; ;line-height: 1.7; font-size: 16px; font-family: noto sans kr, noto sans cjk kr, noto sans cjk, Malgun Gothic, apple sd gothic neo,     nanum gothic, malgun gothic, dotum, arial, helvetica, Meiryo, MS Gothic, sans-serif!important; ;-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #000000; padding: 15px 15px 15px 15px;&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span data-metadata=&quot;&quot;&gt;&lt;/span&gt;&lt;span data-metadata=&quot;&quot;&gt;&lt;/span&gt;&lt;span data-buffer=&quot;&quot;&gt;&lt;/span&gt;&lt;span&gt;공공기관도 이제 보안 요건을 충족한 환경에서 국산 NPU 기반 AI 인프라를 활용할 수 있습니다. kt cloud는 리벨리온과 협력해 국내 최초로 공공 전용 &amp;lsquo;NPU Server&amp;rsquo;를 출시했습니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;이번 NPU Server는 VM 기반 인프라 상품으로, 공공기관과 공공 AX 사업자가 보안 규제를 준수하면서 국산 AI 반도체를 안정적으로 활용할 수 있도록 지원합니다. 또한 모델 서빙 기능을 강화해 복잡한 배포 과정 없이 AI 모델을 추론 환경에 적용할 수 있습니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;민원 상담, 행정 업무 지원, 문서 검색 등 공공 분야 AI 서비스 구현을 위한 kt cloud의 안전하고 효율적인 AI 인프라 환경을 확인해보세요.&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; background: #ffffff; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; font-size: 0; box-sizing: border-box; padding: 5px 15px 15px 15px;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: #0000ff;&quot; href=&quot;https://www.ktcloud.com/media/press/20260604093554164?lan=kor&amp;amp;source=&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;img class=&quot;stb-center&quot; style=&quot;width: 240px; display: inline; vertical-align: bottom; text-align: center; max-width: 100% !important; height: auto; border: 0;&quot; src=&quot;https://img2.stibee.com/123485_3456835_1782207075860748824.png?xby7vgqp&quot; alt=&quot;&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border: 0; background: none;&quot; width=&quot;100%&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class=&quot;stb-text-box&quot; style=&quot;height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; background: #F6FAE3; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; font-size: 0; box-sizing: border-box; padding: 15px 15px 15px 15px;&quot;&gt;&lt;img class=&quot;stb-center&quot; style=&quot;width: 184px; display: inline; vertical-align: bottom; text-align: center; max-width: 100% !important; height: auto; border: 0;&quot; src=&quot;https://img2.stibee.com/123485_3456835_1782207166369239276.png&quot; alt=&quot;&quot; width=&quot;184&quot; /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; background: #F6FAE3; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; font-size: 0; box-sizing: border-box; padding: 5px 15px 15px 15px;&quot;&gt;&lt;img class=&quot;stb-center&quot; style=&quot;width: 478px; display: inline; vertical-align: bottom; text-align: center; max-width: 100% !important; height: auto; border: 0;&quot; src=&quot;https://img2.stibee.com/123485_3456835_1782207191596004957.png&quot; alt=&quot;&quot; width=&quot;478&quot; /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; background: #F6FAE3; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; font-size: 0; box-sizing: border-box; padding: 5px 15px 15px 15px;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: #0000ff;&quot; href=&quot;https://tech.ktcloud.com/entry/2026-06-ktcloud-git-vault-secrets-%EB%B3%B4%EC%95%88-%EA%B0%95%ED%99%94&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;img class=&quot;stb-center&quot; style=&quot;width: 100%; display: inline; vertical-align: bottom; text-align: center; max-width: 100% !important; height: auto; border: 0;&quot; src=&quot;https://img2.stibee.com/123485_3456835_1782207205700919452.png&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; background: #F6FAE3; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;word-break: break-word; text-align: left; margin: 0px; ;line-height: 1.7; font-size: 16px; font-family: noto sans kr, noto sans cjk kr, noto sans cjk, Malgun Gothic, apple sd gothic neo,     nanum gothic, malgun gothic, dotum, arial, helvetica, Meiryo, MS Gothic, sans-serif!important; ;-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #000000; padding: 15px 15px 15px 15px;&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span data-metadata=&quot;&quot;&gt;&lt;/span&gt;&lt;span data-metadata=&quot;&quot;&gt;&lt;/span&gt;&lt;span data-buffer=&quot;&quot;&gt;&lt;/span&gt;&lt;span&gt;API Key, DB 비밀번호, 인증 토큰과 같은 민감정보가 Git에 평문으로 남거나 Kubernetes Secret에 그대로 저장되면 보안 위험이 커질 수 있습니다. 특히 클라우드 네이티브 환경에서는 서비스와 배포 파이프라인이 복잡해질수록 시크릿을 체계적으로 관리하는 것이 중요합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;이번 콘텐츠에서는 Vault를 활용해 시크릿을 더 안전하게 관리하고, 클라우드 네이티브 환경의 보안 수준을 높이는 방법을 소개합니다. Git 평문 노출을 줄이는 방법부터 Vault 기반 시크릿 관리 구조, 운영 시 고려해야 할 보안 포인트까지 쉽게 정리했습니다.&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; background: #F6FAE3; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; font-size: 0; box-sizing: border-box; padding: 5px 15px 15px 15px;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: #0000ff;&quot; href=&quot;https://tech.ktcloud.com/entry/2026-06-ktcloud-git-vault-secrets-%EB%B3%B4%EC%95%88-%EA%B0%95%ED%99%94&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;img class=&quot;stb-center&quot; style=&quot;width: 256px; display: inline; vertical-align: bottom; text-align: center; max-width: 100% !important; height: auto; border: 0;&quot; src=&quot;https://img2.stibee.com/123485_3456835_1782207279271251729.png&quot; alt=&quot;&quot; width=&quot;256&quot; /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border: 0; background: #F6FAE3;&quot; width=&quot;100%&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class=&quot;stb-text-box&quot; style=&quot;height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; font-size: 0; box-sizing: border-box; padding: 0px 15px 15px 15px;&quot;&gt;&lt;img class=&quot;stb-center&quot; style=&quot;width: 204px; display: inline; vertical-align: bottom; text-align: center; max-width: 100% !important; height: auto; border: 0;&quot; src=&quot;https://img2.stibee.com/123485_3456835_1782207357771297747.png&quot; alt=&quot;&quot; width=&quot;204&quot; /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; font-size: 0; box-sizing: border-box; padding: 5px 15px 15px 15px;&quot;&gt;&lt;img class=&quot;stb-center&quot; style=&quot;width: 514px; display: inline; vertical-align: bottom; text-align: center; max-width: 100% !important; height: auto; border: 0;&quot; src=&quot;https://img2.stibee.com/123485_3456835_1782207373859973817.png&quot; alt=&quot;&quot; width=&quot;514&quot; /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; font-size: 0; box-sizing: border-box; padding: 5px 15px 15px 15px;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: #0000ff;&quot; href=&quot;https://tech.ktcloud.com/entry/2026-06-ktcloud-openstack-git-sandbox-%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%B6%95&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;img class=&quot;stb-center&quot; style=&quot;width: 100%; display: inline; vertical-align: bottom; text-align: center; max-width: 100% !important; height: auto; border: 0;&quot; src=&quot;https://img2.stibee.com/123485_3456835_1782208427396191822.png&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;word-break: break-word; text-align: left; margin: 0px; ;line-height: 1.7; font-size: 16px; font-family: noto sans kr, noto sans cjk kr, noto sans cjk, Malgun Gothic, apple sd gothic neo,     nanum gothic, malgun gothic, dotum, arial, helvetica, Meiryo, MS Gothic, sans-serif!important; ;-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #000000; padding: 15px 15px 15px 15px;&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span data-metadata=&quot;&quot;&gt;&lt;/span&gt;&lt;span data-metadata=&quot;&quot;&gt;&lt;/span&gt;&lt;span data-buffer=&quot;&quot;&gt;&lt;/span&gt;&lt;span&gt;클라우드 서비스를 개발하다 보면 개인별로 자유롭게 실험할 수 있는 독립적인 개발 환경이 필요합니다. 하지만 운영 환경과 유사한 구조를 갖추면서도 개발자 로컬에서 간편하게 실행할 수 있는 환경을 만드는 일은 생각보다 쉽지 않습니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;이번 콘텐츠에서는 kt cloud가 OpenStack 기반 개발환경을 단일 VM 이미지로 구성하고, ArgoCD&amp;middot;Flux를 통해 Git 변경 사항이 자동 반영되도록 설계한 과정을 다룹니다. 표준화된 샌드박스 환경을 만들기 위한 첫 번째 실험 기록을 확인해보세요.&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; background: #ffffff; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; font-size: 0; box-sizing: border-box; padding: 5px 15px 15px 15px;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: #0000ff;&quot; href=&quot;https://tech.ktcloud.com/entry/2026-06-ktcloud-openstack-git-sandbox-%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%B6%95&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;img class=&quot;stb-center&quot; style=&quot;width: 270px; display: inline; vertical-align: bottom; text-align: center; max-width: 100% !important; height: auto; border: 0;&quot; src=&quot;https://img2.stibee.com/123485_3456835_1782207453493166718.png&quot; alt=&quot;&quot; width=&quot;270&quot; /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border: 0; background: none;&quot; width=&quot;100%&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class=&quot;stb-text-box&quot; style=&quot;height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; background: #F6FAE3; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; font-size: 0; box-sizing: border-box; padding: 25px 5px 5px 5px;&quot;&gt;&lt;img class=&quot;stb-center&quot; style=&quot;width: 176px; display: inline; vertical-align: bottom; text-align: center; max-width: 100% !important; height: auto; border: 0;&quot; src=&quot;https://img2.stibee.com/123485_3456835_1782207516784631486.png&quot; alt=&quot;&quot; width=&quot;176&quot; /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; background: #F6FAE3; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; font-size: 0; box-sizing: border-box; padding: 15px 0px 15px 0px;&quot;&gt;&lt;img class=&quot;stb-center&quot; style=&quot;width: 594px; display: inline; vertical-align: bottom; text-align: center; max-width: 100% !important; height: auto; border: 0;&quot; src=&quot;https://img2.stibee.com/123485_3456835_1782207574132684452.png&quot; alt=&quot;&quot; width=&quot;594&quot; /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; background: #F6FAE3; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;word-break: break-word; text-align: left; margin: 0px; ;line-height: 1.7; font-size: 16px; font-family: noto sans kr, noto sans cjk kr, noto sans cjk, Malgun Gothic, apple sd gothic neo,     nanum gothic, malgun gothic, dotum, arial, helvetica, Meiryo, MS Gothic, sans-serif!important; ;-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #000000; padding: 15px 15px 0px 15px;&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot; class=&quot;stb-bold&quot;&gt;&lt;span&gt;  &lt;span style=&quot;background-color: #a6e676;&quot; class=&quot;stb-hilitecolor-colored&quot;&gt;개념/프레임워크&lt;/span&gt; GPU 5만장 시대, AI 인프라 비즈니스의 성공 조건&lt;/span&gt;&lt;/span&gt;&lt;span data-metadata=&quot;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span data-metadata=&quot;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;span&gt;AI 인프라 경쟁에서 중요한 것은 GPU 보유량이 아니라, GPU&amp;middot;네트워크&amp;middot;스토리지&amp;middot;클러스터 운영을 하나의 구조로 최적화하는 Full Stack 역량입니다. AI에 최적화된 인프라를 제공하는 Neoclouds의 등장과 AI-Native Cloud 시장에서 지속적인 경쟁 우위를 만들기 위한 인프라 최적화 전략을 살펴봅니다. &lt;span style=&quot;text-decoration: underline;&quot; class=&quot;stb-underline&quot;&gt;&lt;span style=&quot;color: #53c344; text-decoration: underline;&quot; class=&quot;stb-fore-colored stb-underline&quot;&gt;&lt;a class=&quot;stb-fore-colored stb-underline&quot; style=&quot;color: #53c344; text-decoration: none;&quot; href=&quot;https://tech.ktcloud.com/entry/2026-06-ktcloud-gpu-ai-infrastructure-%EB%B9%84%EC%A6%88%EB%8B%88%EC%8A%A4-%EC%84%B1%EA%B3%B5&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot; class=&quot;stb-bold&quot;&gt;자세히 보기&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border: 0; background: #F6FAE3;&quot; width=&quot;100%&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;height: 15px;&quot; colspan=&quot;3&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;height: 15px; background: none; padding: 0px; border-top-width: 1px; border-top-style: solid; border-top-color: #999999; margin: 0 0;&quot;&gt;&lt;!-- &lt;div style='background: none;padding: 0px;border-top-width:1px;border-top-style:solid;border-top-color:#999999;margin:0 0;'&gt;&lt;/div&gt; --&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; background: #F6FAE3; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;word-break: break-word; text-align: left; margin: 0px; ;line-height: 1.7; font-size: 16px; font-family: noto sans kr, noto sans cjk kr, noto sans cjk, Malgun Gothic, apple sd gothic neo,     nanum gothic, malgun gothic, dotum, arial, helvetica, Meiryo, MS Gothic, sans-serif!important; ;-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #000000; padding: 15px 15px 0px 15px;&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span data-metadata=&quot;&quot;&gt;&lt;/span&gt;&lt;span data-buffer=&quot;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot; class=&quot;stb-bold&quot;&gt; &amp;nbsp;&lt;span data-metadata=&quot;&quot;&gt;&lt;/span&gt;&lt;span data-buffer=&quot;&quot;&gt;&lt;/span&gt;&lt;span&gt; &lt;span style=&quot;background-color: #a6e676;&quot; class=&quot;stb-hilitecolor-colored&quot;&gt;클러스터 제어&lt;/span&gt; Kubernetes를 활용한 신뢰할 수 있는 Fault-Tolerant GPU&lt;/span&gt;&lt;br /&gt;&lt;span&gt;클러스터 유지 관리&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span data-metadata=&quot;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;span&gt;대규모 GPU 클러스터의 단일 장애점(SPOF)을 방지하기 위해 쿠버네티스 기반의 자동 복구 아키텍처를 구축하고, 실시간 위협 인텔리전스를 연계해 보안 일관성과 서비스 연속성을 보장하는 방안을 다룹니다. &amp;nbsp;&lt;span style=&quot;text-decoration: underline;&quot; class=&quot;stb-underline&quot;&gt;&lt;span style=&quot;color: #53c344; text-decoration: underline;&quot; class=&quot;stb-fore-colored stb-underline&quot;&gt;&lt;a class=&quot;stb-fore-colored stb-underline&quot; style=&quot;color: #53c344; text-decoration: none;&quot; href=&quot;https://tech.ktcloud.com/entry/2026-06-ktcloud-kubernetes-gpu-cluster-%EC%9E%A5%EC%95%A0-%EA%B4%80%EB%A6%AC&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot; class=&quot;stb-bold&quot;&gt;자세히 보기&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border: 0; background: #F6FAE3;&quot; width=&quot;100%&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;height: 15px;&quot; colspan=&quot;3&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;height: 15px; background: none; padding: 0px; border-top-width: 1px; border-top-style: solid; border-top-color: #999999; margin: 0 0;&quot;&gt;&lt;!-- &lt;div style='background: none;padding: 0px;border-top-width:1px;border-top-style:solid;border-top-color:#999999;margin:0 0;'&gt;&lt;/div&gt; --&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; background: #F6FAE3; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;word-break: break-word; text-align: left; margin: 0px; ;line-height: 1.7; font-size: 16px; font-family: noto sans kr, noto sans cjk kr, noto sans cjk, Malgun Gothic, apple sd gothic neo,     nanum gothic, malgun gothic, dotum, arial, helvetica, Meiryo, MS Gothic, sans-serif!important; ;-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #000000; padding: 15px 15px 15px 15px;&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span data-metadata=&quot;&quot;&gt;&lt;/span&gt;&lt;span data-metadata=&quot;&quot;&gt;&lt;/span&gt;&lt;span data-buffer=&quot;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot; class=&quot;stb-bold&quot;&gt; &amp;nbsp;&lt;span data-metadata=&quot;&quot;&gt;&lt;/span&gt;&lt;span data-buffer=&quot;&quot;&gt;&lt;/span&gt;&lt;span&gt; &lt;span style=&quot;background-color: #a6e676;&quot; class=&quot;stb-hilitecolor-colored&quot;&gt;스토리지 실무&lt;/span&gt; StatefulSet 스토리지, 중단 없이 확장하기&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: 14px;&quot; data-metadata=&quot;&quot;&gt;StatefulSet 환경에서는volumeClaimTemplates의 Immutable 제약으로 인해 스토리지 확장이 쉽지 않습니다. PVC 선확장과 Non-cascade 삭제 전략을 활용해 Pod 가용성을 유지하면서 스토리지를 안전하게 확장하는 방법을 소개합니다.&lt;span&gt;&lt;span style=&quot;font-size: 14px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-decoration: underline;&quot; class=&quot;stb-underline&quot;&gt;&lt;span style=&quot;color: #53c344; text-decoration: underline;&quot; class=&quot;stb-fore-colored stb-underline&quot;&gt;&lt;a class=&quot;stb-fore-colored stb-underline&quot; style=&quot;color: #53c344; text-decoration: none;&quot; href=&quot;https://tech.ktcloud.com/entry/2026-04-ktcloud-kubernetes-statefulset-storage-%EC%8A%A4%ED%86%A0%EB%A6%AC%EC%A7%80-%ED%99%95%EC%9E%A5&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot; class=&quot;stb-bold&quot;&gt;자세히 보기&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border: 0; background: #F6FAE3;&quot; width=&quot;100%&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class=&quot;stb-text-box&quot; style=&quot;height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: justify; font-size: 0; box-sizing: border-box;&quot;&gt;&lt;img class=&quot;stb-justify&quot; style=&quot;width: 100%; display: inline; vertical-align: bottom; text-align: justify; max-width: 100% !important; height: auto; border: 0; border-radius: 16px;&quot; src=&quot;https://img2.stibee.com/123485_3456835_1782207757465122392.png&quot; alt=&quot;&quot; width=&quot;630&quot; /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; font-size: 0; box-sizing: border-box;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: #0000ff;&quot; href=&quot;https://www.ktcloud.com/media/news/20260527124227795?lan=kor&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;img class=&quot;stb-center&quot; style=&quot;width: 100%; display: inline; vertical-align: bottom; text-align: center; max-width: 100% !important; height: auto; border: 0; border-radius: 16px;&quot; src=&quot;https://img2.stibee.com/123485_3456835_1782207765546794200.png&quot; alt=&quot;&quot; width=&quot;630&quot; /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class=&quot;stb-one-col&quot; style=&quot;width: 100%; border: 0;&quot; role=&quot;presentation&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: justify; font-size: 0; box-sizing: border-box;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: #0000ff;&quot; href=&quot;https://page.stibee.com/subscriptions/400282&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;img class=&quot;stb-justify&quot; style=&quot;width: 100%; display: inline; vertical-align: bottom; text-align: justify; max-width: 100% !important; height: auto; border: 0; border-radius: 16px;&quot; src=&quot;https://img2.stibee.com/123485_3456835_1782207793850673906.png&quot; alt=&quot;&quot; width=&quot;630&quot; /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;!-- [if mso]&gt;          &lt;/td&gt;          &lt;/tr&gt;          &lt;/table&gt;          &lt;![endif]--&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;padding: 10pt 0cm 10pt 0cm;&quot;&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot; align=&quot;center&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>kt cloud Story/Newsletter</category>
      <author>kt cloud 기술 블로그</author>
      <guid isPermaLink="true">https://tech.ktcloud.com/459</guid>
      <comments>https://tech.ktcloud.com/entry/%EC%BC%80%ED%81%B4s%ED%94%BC%EB%93%9C-6%EC%9B%94%ED%98%B8%EF%BD%9CAI-%EC%8B%9C%EB%8C%80-%EC%9D%B8%ED%94%84%EB%9D%BC-%EC%9A%B4%EC%98%81-%EC%97%AD%EB%9F%89%EC%9D%B4-%EB%8D%94-%EC%A4%91%EC%9A%94%ED%95%B4%EC%A7%84-%EC%9D%B4%EC%9C%A0#entry459comment</comments>
      <pubDate>Wed, 24 Jun 2026 13:31:14 +0900</pubDate>
    </item>
    <item>
      <title>[케클러 인터뷰 시리즈] #3 개발자가 본질에 집중하도록: kt cloud 플랫폼 엔지니어링 이야기</title>
      <link>https://tech.ktcloud.com/entry/2026-06-ktcloud-%ED%94%8C%EB%9E%AB%ED%8F%BC-%EC%97%94%EC%A7%80%EB%8B%88%EC%96%B4%EB%A7%81</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 티스토리용 시맨틱 HTML 기술 블로그 템플릿 (개선된 UI) --&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;article style=&quot;font-family: 'Noto Sans KR', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; max-width: 100%; margin: 0 auto; line-height: 1.7; color: #2c3e50; background: #ffffff;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 메타데이터 섹션 --&gt; &lt;/span&gt;&lt;header style=&quot;background: linear-gradient(135deg, #009a87 0%, #00b39f 100%); color: white; padding: 20px 25px; text-align: right; font-weight: 600; border-radius: 15px; margin-bottom: 35px; box-shadow: 0 8px 25px rgba(0, 154, 135, 0.15); position: relative; overflow: hidden;&quot;&gt;
&lt;div style=&quot;position: absolute; top: -50%; right: -10%; width: 200px; height: 200px; background: rgba(255,255,255,0.1); border-radius: 50%; transform: rotate(45deg);&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;position: relative; z-index: 2;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;b&gt; &lt;span style=&quot;font-size: 1.1rem; text-shadow: rgba(0, 0, 0, 0.1) 0px 2px 4px;&quot;&gt; [ kt cloud 마케팅커뮤니케이션팀] &lt;/span&gt; &lt;/b&gt; &lt;/span&gt;&lt;/div&gt;
&lt;/header&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 콘텐츠 구조 및 메타데이터 표준화 적용 --&gt; &lt;/span&gt;
&lt;article&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 작성자 정보 (시맨틱 헤더) --&gt; &lt;/span&gt;&lt;header style=&quot;margin: 20px 0;&quot;&gt;
&lt;section style=&quot;margin: 25px 0;&quot;&gt;&lt;header&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 요약 섹션 헤더 - 초미니멀 디자인 --&gt; &lt;/span&gt;
&lt;h4 style=&quot;margin: 15px 0 10px 0;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87; background: #f0fffe; padding: 4px 10px; border-radius: 12px; border: 1px solid #d4eeeb; display: inline-flex; align-items: center; gap: 5px; font-weight: bold; font-size: 0.9em;&quot;&gt; &lt;span style=&quot;font-size: 0.8em;&quot;&gt; &lt;/span&gt; 요약 &lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;lsquo;기술이 장르가 되는 곳, kt cloud의 케클러 인터뷰 시리즈&amp;rsquo;는 케클러들의 목소리를 통해 고객의 다음 문제를 먼저 고민하는 kt cloud의 기술적 지향점과 해법을 전합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;세 번째 호에서는 개발자가 본질에 집중할 수 있도록, 인프라와 운영의 복잡성을 줄여가는 김정남 팀장의 Self-Service 기반 플랫폼 엔지니어링 이야기를 소개합니다.&lt;/span&gt;&lt;/p&gt;
&lt;/header&gt;&lt;/section&gt;
&lt;/header&gt;&lt;/article&gt;
&lt;/article&gt;
&lt;div data-pm-slice=&quot;1 1 []&quot; data-prosemirror-mark-name=&quot;alignment&quot; data-prosemirror-content-type=&quot;mark&quot; data-align=&quot;center&quot;&gt;
&lt;p style=&quot;text-align: center;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;8ef3e05c33b3&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-prosemirror-mark-name=&quot;code&quot; data-prosemirror-content-type=&quot;mark&quot;&gt;#ktcloud&lt;/span&gt;&lt;span data-prosemirror-mark-name=&quot;textColor&quot; data-prosemirror-content-type=&quot;mark&quot; data-text-custom-color=&quot;#97a0af&quot;&gt; &lt;/span&gt;&lt;span data-prosemirror-mark-name=&quot;code&quot; data-prosemirror-content-type=&quot;mark&quot;&gt;#플랫폼엔지니어링&lt;/span&gt;&lt;span data-prosemirror-mark-name=&quot;textColor&quot; data-prosemirror-content-type=&quot;mark&quot; data-text-custom-color=&quot;#97a0af&quot;&gt; &lt;/span&gt;&lt;span data-prosemirror-mark-name=&quot;code&quot; data-prosemirror-content-type=&quot;mark&quot;&gt;#DevOps&lt;/span&gt;&lt;span data-prosemirror-mark-name=&quot;textColor&quot; data-prosemirror-content-type=&quot;mark&quot; data-text-custom-color=&quot;#97a0af&quot;&gt; &lt;/span&gt;&lt;span data-prosemirror-mark-name=&quot;code&quot; data-prosemirror-content-type=&quot;mark&quot;&gt;#개발자경험&lt;/span&gt;&lt;span data-prosemirror-mark-name=&quot;textColor&quot; data-prosemirror-content-type=&quot;mark&quot; data-text-custom-color=&quot;#97a0af&quot;&gt; &lt;/span&gt;&lt;span data-prosemirror-mark-name=&quot;code&quot; data-prosemirror-content-type=&quot;mark&quot;&gt;#인프라자동화&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kt cloud 케클러 인터뷰 시리즈_플랫폼 엔지니어링_1.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4gcPO/dJMcahkEfly/PQKmsMqU5VJzc1AkDvcHzk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4gcPO/dJMcahkEfly/PQKmsMqU5VJzc1AkDvcHzk/img.png&quot; data-alt=&quot;kt cloud Platform엔지니어링팀 김정남 팀장이 소개하는 Self-Service 기반 개발 환경 구축 이야기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4gcPO/dJMcahkEfly/PQKmsMqU5VJzc1AkDvcHzk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4gcPO%2FdJMcahkEfly%2FPQKmsMqU5VJzc1AkDvcHzk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;kt cloud Platform엔지니어링팀 김정남 팀장이 소개하는 Self-Service 기반 개발 환경 구축 이야기&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot; data-filename=&quot;kt cloud 케클러 인터뷰 시리즈_플랫폼 엔지니어링_1.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;kt cloud Platform엔지니어링팀 김정남 팀장이 소개하는 Self-Service 기반 개발 환경 구축 이야기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;678c0be0a045&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;678c0be0a045&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. kt cloud 마케팅커뮤니케이션팀입니다.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;86e6ca4e55a7&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;86e6ca4e55a7&quot; data-ke-size=&quot;size16&quot;&gt;빠르게 변화하는 클라우드 환경에서 중요한 것은 새로운 서비스를 얼마나 빠르게 개발하고, 안정적으로 배포할 수 있는가입니다. 이를 위해서는 개발자 개인의 역량뿐 아니라, 개발자가 필요한 환경을 빠르게 구성하고 반복적인 준비 과정을 줄일 수 있는 엔지니어링 체계가 함께 뒷받침되어야 합니다.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;86e6ca4e55a7&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;2a6a119c16b3&quot; data-ke-size=&quot;size16&quot;&gt;새로운 서비스를 준비할 때, 개발자는 얼마나 많은 시간을 실제 개발이 아닌 &amp;lsquo;준비 과정&amp;rsquo;에 쓰고 있을까요?&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;9c1f23c461a7&quot; data-ke-size=&quot;size16&quot;&gt;GitHub 리포지토리를 만들고, CI/CD 파이프라인을 구성하고, 권한을 요청하고, 배포 환경이 마련되기를 기다리는 과정은 많은 개발자에게 익숙한 일입니다. 때로는 서비스 로직을 구현하는 시간보다 YAML 파일을 수정하고 환경 설정을 맞추는 데 더 많은 시간이 들기도 합니다.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;9c1f23c461a7&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;841e0d88d1d2&quot; data-ke-size=&quot;size16&quot;&gt;반복적인 환경 설정과 배포 준비를 줄이고, 개발자가 필요한 환경을 스스로 구성할 수 있도록 돕는 것. 이것이 플랫폼 엔지니어링이 주목받는 이유입니다.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;841e0d88d1d2&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;7a9e439872db&quot; data-ke-size=&quot;size16&quot;&gt;이번 케클러 인터뷰에서는 kt cloud Platform엔지니어링팀 김정남 팀장을 만나 &lt;b&gt;Self-Service 기반 엔지니어링 체계가 왜 필요한지, 그리고 개발자가 본질적인 개발 업무에 더 집중할 수 있는 환경은 어떻게 만들어지고 있는지&lt;/b&gt; 들어보았습니다.&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt; &lt;span style=&quot;color: #009a87; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;이야기를 시작하며&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #E6F8F4; border-bottom: 1px solid #CDEDE7;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87;&quot;&gt;&lt;b&gt;김정남 팀장 | kt cloud Platform엔지니어링팀&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #ffffff;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;개발 시스템 아키텍처와 코드 분석을 시작으로 풀스택 및 인프라 운영 서비스 개발, InfraOps 엔지니어까지 다양한 영역을 경험했습니다. 현재 kt cloud에서 Platform엔지니어링팀을 이끌며, 개발자와 운영자가 서비스 본질에 집중할 수 있는 엔지니어링 환경을 만들어가고 있습니다. &lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #E6F8F4; border-bottom: 1px solid #CDEDE7;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87;&quot;&gt;&lt;b&gt;Platform엔지니어링팀 소개&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #ffffff;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;인프라와 플랫폼 환경을 표준화 및 자동화해 개발부터 운영까지 전 과정을 효율화하는 조직입니다. 복잡한 환경 설정은 플랫폼이 흡수하고, kt cloud의 개발자와 운영자는 서비스 개발과 운영에만 집중할 수 있도록 Self-Service 기반의 플랫폼을 구축하고 있습니다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #E6F8F4; border-bottom: 1px solid #CDEDE7;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87;&quot;&gt;&lt;b&gt;이번 인터뷰의 주인공이 꼽은 &amp;lsquo;이 글이 필요한 분들&amp;rsquo; &lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #ffffff;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;↳ 개발자가 본질적인 개발 업무에 더 집중할 수 있는 Self-Service 개발 환경을 고민하는 &lt;b&gt;기술 리더&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;↳&lt;span&gt; &lt;/span&gt;&lt;/span&gt;대규모 인프라 리소스의 표준화&amp;middot;자동화 운영 전략이 궁금한 &lt;b&gt;InfraOps&amp;middot;플랫폼 엔지니어&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;↳&lt;span&gt; &lt;/span&gt;&lt;/span&gt;DevOps를 넘어 플랫폼 엔지니어링 기반의 조직 혁신을 고민하는 &lt;b&gt;기업 IT 담당자&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-pm-slice=&quot;1 1 []&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;heading&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;7e56114b1ab5&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1a5490;&quot; data-prosemirror-mark-name=&quot;textColor&quot; data-prosemirror-content-type=&quot;mark&quot; data-text-custom-color=&quot;#0747a6&quot;&gt;Part 1. 개발자가 개발보다 환경 설정에 시간을 쓰고 있었다&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kt cloud 케클러 인터뷰 시리즈_플랫폼 엔지니어링_2_Active-Active-구조를-통해-문제-해결.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;975&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bANmrD/dJMcahEQMkR/XFBfY8SKkJTO30gDpGvoa1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bANmrD/dJMcahEQMkR/XFBfY8SKkJTO30gDpGvoa1/img.webp&quot; data-alt=&quot;복잡한 개발 환경을 표준화하는 kt cloud Platform Engineering 구조&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bANmrD/dJMcahEQMkR/XFBfY8SKkJTO30gDpGvoa1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbANmrD%2FdJMcahEQMkR%2FXFBfY8SKkJTO30gDpGvoa1%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;복잡한 개발 환경을 표준화하는 kt cloud Platform Engineering 구조&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;975&quot; data-filename=&quot;kt cloud 케클러 인터뷰 시리즈_플랫폼 엔지니어링_2_Active-Active-구조를-통해-문제-해결.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;975&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;복잡한 개발 환경을 표준화하는 kt cloud Platform Engineering 구조&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;02b255b332a3&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;02b255b332a3&quot; data-ke-size=&quot;size16&quot;&gt;Cloud Native 환경에서는 서비스 수와 배포 빈도가 빠르게 증가합니다. 문제는 서비스가 많아질수록 개발자가 이해하고 다뤄야 할 기반 시스템도 함께 늘어난다는 점입니다.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;a1cc8a5693ef&quot; data-ke-size=&quot;size16&quot;&gt;새로운 서비스를 시작하기 위해서는 GitHub, *Harbor, *ArgoCD, *Kubernetes, *Vault, *CI/CD Pipeline, 권한 체계 등 다양한 시스템을 먼저 파악해야 합니다. 각각은 안정적인 개발과 운영을 위해 꼭 필요한 기술이지만, 개발자 입장에서는 실제 기능을 구현하기 전부터 넘어야 할 진입 장벽이 되기도 합니다.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;a1cc8a5693ef&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;838e29e82721&quot; data-ke-size=&quot;size16&quot;&gt;김정남 팀장은 바로 이 지점에서 플랫폼 엔지니어링의 필요성을 발견했습니다.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;838e29e82721&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div data-prosemirror-mark-name=&quot;alignment&quot; data-prosemirror-content-type=&quot;mark&quot; data-align=&quot;center&quot;&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;heading&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;15dfebe2f328&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&amp;ldquo;&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: center;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;1512f6f36e5e&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&lt;b&gt;가장 먼저 제거하고 싶었던 복잡성은, 개발을 시작하기 전까지 개발자가 알아야 하는 것들이 너무 많다는 점이었습니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;heading&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;fd389349cba2&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&amp;rdquo;&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;0b3d673ddf46&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;0b3d673ddf46&quot; data-ke-size=&quot;size16&quot;&gt;그가 지향하는 플랫폼 엔지니어링의 목표는 명확합니다. 개발자가 인프라와 운영 절차를 모두 직접 짊어지는 것이 아니라, &lt;b&gt;플랫폼이 그 복잡성을 흡수하고 개발자가 본질적인 개발 업무에 더 집중할 수 있도록 엔지니어링 체계를 구축&lt;/b&gt;하는 것입니다.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;0b3d673ddf46&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;33a0d75c55f7&quot; data-ke-size=&quot;size16&quot;&gt;이를 위해 kt cloud Platform엔지니어링팀은 표준 아키텍처와 개발 템플릿, CI/CD 파이프라인, 운영 자동화 체계, *CMDB, 운영 포털 등을 단계적으로 구축해 나가고 있습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot; data-local-id=&quot;7e56114b1ab5&quot; data-prosemirror-content-type=&quot;node&quot; data-prosemirror-node-name=&quot;heading&quot; data-prosemirror-node-block=&quot;true&quot; data-pm-slice=&quot;1 1 []&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1a5490;&quot; data-text-custom-color=&quot;#0747a6&quot; data-prosemirror-content-type=&quot;mark&quot; data-prosemirror-mark-name=&quot;textColor&quot;&gt;Part 2.&amp;nbsp;&amp;ldquo;누군가&amp;nbsp;해줘야&amp;nbsp;시작되는&amp;nbsp;개발&amp;rdquo;에서&amp;nbsp;&amp;ldquo;스스로&amp;nbsp;시작하는&amp;nbsp;개발&amp;rdquo;로&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kt cloud 케클러 인터뷰 시리즈_플랫폼 엔지니어링_3.png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bT0wgm/dJMcadJabKW/8QBTi19TqQcrAgEJRGUzs1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bT0wgm/dJMcadJabKW/8QBTi19TqQcrAgEJRGUzs1/img.png&quot; data-alt=&quot;Self-Service 기반으로 개발자가 직접 개발 환경을 구성하는 플랫폼 구조&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bT0wgm/dJMcadJabKW/8QBTi19TqQcrAgEJRGUzs1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbT0wgm%2FdJMcadJabKW%2F8QBTi19TqQcrAgEJRGUzs1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;Self-Service 기반으로 개발자가 직접 개발 환경을 구성하는 플랫폼 구조&quot; loading=&quot;lazy&quot; width=&quot;1448&quot; height=&quot;1086&quot; data-filename=&quot;kt cloud 케클러 인터뷰 시리즈_플랫폼 엔지니어링_3.png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Self-Service 기반으로 개발자가 직접 개발 환경을 구성하는 플랫폼 구조&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;022f9eeffc6a&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;022f9eeffc6a&quot; data-ke-size=&quot;size16&quot;&gt;기존 개발 환경에서는 새로운 서비스를 만들 때 반복되는 준비 과정이 많았습니다. 개발자는 필요한 환경을 요청하고, 권한 설정과 배포 환경 구성이 끝날 때까지 기다린 뒤에야 본격적인 개발에 착수할 수 있었습니다.&lt;/p&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;022f9eeffc6a&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;814aef31cce4&quot; data-ke-size=&quot;size16&quot;&gt;Platform엔지니어링팀은 이러한&lt;b&gt; 대기 구조를 &amp;ldquo;Self-Service 기반 개발 환경&amp;rdquo;으로 바꾸는 데 집중&lt;/b&gt;하고 있습니다.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;b137b888a5c8&quot; data-ke-size=&quot;size16&quot;&gt;하지만 Self-Service는 단순히 포털 화면에 기능을 제공하는 것만으로 완성되지 않습니다. 개발자가 필요한 환경을 직접 선택하고 사용할 수 있으려면, 그 전에 아키텍처, 권한, 배포 절차, 운영 기준 등 보이지 않는 영역이 먼저 표준화되어 있어야 합니다.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;b137b888a5c8&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 15px; font-weight: bold; color: #000000; font-family: 'Noto Sans KR', sans-serif;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; 개발자가 서비스를 직접 시작하고 운영할 수 있는 Self-Service 구축 단계&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 12px 14px; background: #ffffff;&quot;&gt;1️⃣&amp;nbsp;표준&amp;nbsp;서비스&amp;nbsp;템플릿&amp;nbsp;구성 &lt;br /&gt;&lt;br /&gt;2️⃣&amp;nbsp;CI/CD&amp;nbsp;파이프라인&amp;nbsp;표준화 &lt;br /&gt;&lt;br /&gt;3️⃣&amp;nbsp;인증&amp;middot;권한&amp;nbsp;체계&amp;nbsp;정리 &lt;br /&gt;&lt;br /&gt;4️⃣&amp;nbsp;자산&amp;nbsp;및&amp;nbsp;구성&amp;nbsp;정보&amp;nbsp;통합 &lt;br /&gt;&lt;br /&gt;5️⃣&amp;nbsp;*운영&amp;nbsp;지원&amp;nbsp;시스템(OSS)&amp;nbsp;기반&amp;nbsp;Self-Service&amp;nbsp;구현&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;0b3f4b029f98&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;0b3f4b029f98&quot; data-ke-size=&quot;size16&quot;&gt;Self-Service의 핵심은 개발자가 매번 인프라 설정 방법을 찾아 헤매지 않아도 된다는 데 있습니다. 플랫폼이 미리 검증된 표준 경로를 제공하면, 개발자는 필요한 환경을 직접 선택하고 더 빠르게 서비스를 시작할 수 있습니다.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;f652a1d9e719&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;f652a1d9e719&quot; data-ke-size=&quot;size16&quot;&gt;Self-Service가 현장에서 제대로 작동하려면 표준 서비스 템플릿, CI/CD 파이프라인, 인증&amp;middot;권한 체계, 구성 정보 관리, 운영 지원 시스템이 유기적으로 연결되어야 합니다. 개발자는 검증된 표준 절차 안에서 필요한 환경을 직접 선택하고 개발과 배포를 시작할 수 있습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-pm-slice=&quot;1 1 []&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;heading&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;7e56114b1ab5&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1a5490;&quot; data-prosemirror-mark-name=&quot;textColor&quot; data-prosemirror-content-type=&quot;mark&quot; data-text-custom-color=&quot;#0747a6&quot;&gt;Part&amp;nbsp;3.&amp;nbsp;Sandbox,&amp;nbsp;개발자가&amp;nbsp;기다리지&amp;nbsp;않고&amp;nbsp;검증하는&amp;nbsp;공간&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kt cloud 케클러 인터뷰 시리즈_플랫폼 엔지니어링_4_Sandbox.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;975&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cMPz6f/dJMcajo4lcc/bjfx369kSrTuzpTT3cKXM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cMPz6f/dJMcajo4lcc/bjfx369kSrTuzpTT3cKXM1/img.png&quot; data-alt=&quot;Kubernetes와 ArgoCD 기반 개발자 Sandbox 테스트 환경&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cMPz6f/dJMcajo4lcc/bjfx369kSrTuzpTT3cKXM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcMPz6f%2FdJMcajo4lcc%2Fbjfx369kSrTuzpTT3cKXM1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;Kubernetes와 ArgoCD 기반 개발자 Sandbox 테스트 환경&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;975&quot; data-filename=&quot;kt cloud 케클러 인터뷰 시리즈_플랫폼 엔지니어링_4_Sandbox.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;975&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Kubernetes와 ArgoCD 기반 개발자 Sandbox 테스트 환경&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;69635c382e2f&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;69635c382e2f&quot; data-ke-size=&quot;size16&quot;&gt;새로운 기능을 검증하고 싶은데 인프라나 배포 환경이 준비될 때까지 기다려본 경험 있으신가요?&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;084da9b1358e&quot; data-ke-size=&quot;size16&quot;&gt;실제 개발 현장에서는 로컬 개발 환경과 운영 환경의 차이로 인해, 배포 직전에야 예상하지 못한 오류를 마주하는 경우도 있습니다. 개발자가 빠르게 시도하고 안정적으로 서비스를 준비하기 위해서는 실제 환경에 가까운 조건에서 직접 배포하고 검증할 수 있는 공간이 필요합니다.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;084da9b1358e&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;512a5610efab&quot; data-ke-size=&quot;size16&quot;&gt;이를 위해 Platform엔지니어링팀은 개발자용 *Sandbox 환경을 새롭게 제공하고 있습니다.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;d90544fe9949&quot; data-ke-size=&quot;size16&quot;&gt;Sandbox는 사전 검증된 VM 이미지와 운영 환경에 가까운 Kubernetes, ArgoCD 환경을 활용해 개발자가 직접 서비스를 배포하고 테스트할 수 있는 공간입니다.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;b28096cc81d7&quot; data-ke-size=&quot;size16&quot;&gt;이 환경에서 kt cloud 개발자들은 필요한 검증을 직접 진행할 수 있습니다.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;b28096cc81d7&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;db77d4ed449a&quot; data-ke-size=&quot;size16&quot;&gt;Platform엔지니어링팀은 Sandbox의 의미를 이렇게 설명합니다.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;db77d4ed449a&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div data-prosemirror-mark-name=&quot;alignment&quot; data-prosemirror-content-type=&quot;mark&quot; data-align=&quot;center&quot;&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;heading&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;1e0d06bfe0cb&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&amp;ldquo;&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: center;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;a082bb75284e&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&lt;b&gt;Sandbox가 해결하려는 문제는 단순 테스트 서버 제공이 아니라,&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;c41768b36fb3&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&lt;b&gt;환경이 준비될 때까지 기다리는 시간과 실제 환경 차이로 인해 발생하는 시행착오를 줄이는 데 있습니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;heading&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;cbba46b23002&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&amp;rdquo;&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot; data-local-id=&quot;7e56114b1ab5&quot; data-prosemirror-content-type=&quot;node&quot; data-prosemirror-node-name=&quot;heading&quot; data-prosemirror-node-block=&quot;true&quot; data-pm-slice=&quot;1 1 []&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1a5490;&quot; data-text-custom-color=&quot;#0747a6&quot; data-prosemirror-content-type=&quot;mark&quot; data-prosemirror-mark-name=&quot;textColor&quot;&gt;Part&amp;nbsp;4.&amp;nbsp;빠른&amp;nbsp;배포보다&amp;nbsp;중요한&amp;nbsp;것,&amp;nbsp;예측&amp;nbsp;가능한&amp;nbsp;배포&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kt cloud 케클러 인터뷰 시리즈_플랫폼 엔지니어링_5_CICD 파이프라인.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQnmd8/dJMb991bXOz/SrVh45CBMqdntqebXzQuzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQnmd8/dJMb991bXOz/SrVh45CBMqdntqebXzQuzK/img.png&quot; data-alt=&quot;CI/CD 파이프라인과 DevSecOps를 통한 안정적인 배포 자동화 과정&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQnmd8/dJMb991bXOz/SrVh45CBMqdntqebXzQuzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQnmd8%2FdJMb991bXOz%2FSrVh45CBMqdntqebXzQuzK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;CI/CD 파이프라인과 DevSecOps를 통한 안정적인 배포 자동화 과정&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot; data-filename=&quot;kt cloud 케클러 인터뷰 시리즈_플랫폼 엔지니어링_5_CICD 파이프라인.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;CI/CD 파이프라인과 DevSecOps를 통한 안정적인 배포 자동화 과정&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;4a734aaf5115&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;4a734aaf5115&quot; data-ke-size=&quot;size16&quot;&gt;CI/CD 파이프라인은 흔히 '배포 자동화 도구'라고 이해됩니다. 하지만 김정남 팀장이 바라보는 CI/CD 파이프라인의 역할은 조금 다릅니다.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;0aa063af4d76&quot; data-ke-size=&quot;size16&quot;&gt;그에게 CI/CD 파이프라인은 &lt;b&gt;개발자가 배포 과정을 예측하고 신뢰할 수 있도록 만드는 운영 기준&lt;/b&gt;에 가깝습니다.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;0aa063af4d76&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;5a7a6e9a84f0&quot; data-ke-size=&quot;size16&quot;&gt;개발자는 자신이 작성한 코드가 현재 어느 단계에 있는지, 어떤 검증을 거쳐 운영 환경으로 넘어가는지 확인할 수 있어야 합니다.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;0538f693b031&quot; data-ke-size=&quot;size16&quot;&gt;이를 위해 김정남 팀장은 배포 환경을 DEV(통합 테스트), QA(기능 검증), STG(최종 검증), PRD(실제 운영) 단계로 구분하고 각 단계의 역할을 명확히 정의했습니다.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;0538f693b031&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;7d4e1aaf38ec&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;개발 단계에서는 개발자가 빠른 피드백을 받을 수 있도록 지원&lt;/b&gt;하고, &lt;b&gt;운영 단계로 갈수록 플랫폼이 더 엄격한 품질 기준을 적용하는 방식&lt;/b&gt;인데요.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;8af516f26460&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 운영 배포 직전 단계에서는 별도의 수작업 절차에 의존하기보다, 파이프라인 안에서 DevSecOps 절차가 기본적으로 수행되도록 구성했습니다.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;8af516f26460&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 15px; font-weight: bold; color: #000000; font-family: 'Noto Sans KR', sans-serif;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;/span&gt;&lt;b&gt;DevSecOps란?&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 12px 14px; background: #ffffff;&quot;&gt;&lt;span&gt;DevSecOps는 개발과 운영 과정에 보안 검증을 함께 통합하는 방식입니다. CI/CD 파이프라인 전 단계에서 Secret 탐지, 정적 분석, 이미지 취약점 스캔, 서명 검증 등을 수행해 배포 과정에서 보안 리스크를 최소화하는 데 목적이 있습니다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-local-id=&quot;0b3f4b029f98&quot; data-prosemirror-content-type=&quot;node&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-node-block=&quot;true&quot; data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;00fecb5c5907&quot; data-ke-size=&quot;size16&quot;&gt;kt cloud가 지향하는 개발 문화는 단순히 배포 속도를 높이는 것이 아닙니다. 개발자가 &lt;b&gt;배포 과정을 예측할 수 있고, 정해진 기준 안에서 안정적으로 변경을 적용할 수 있는 구조를 만드는 것&lt;/b&gt;입니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-pm-slice=&quot;1 1 []&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;heading&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;7e56114b1ab5&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1a5490;&quot; data-prosemirror-mark-name=&quot;textColor&quot; data-prosemirror-content-type=&quot;mark&quot; data-text-custom-color=&quot;#0747a6&quot;&gt;Part 5.&amp;nbsp;좋은&amp;nbsp;코드를&amp;nbsp;만드는&amp;nbsp;좋은&amp;nbsp;개발&amp;nbsp;환경&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kt cloud 케클러 인터뷰 시리즈_플랫폼 엔지니어링_6_OSS.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QHOy0/dJMcabq9qfl/sI3KPN0fVtBqLH13zEdRuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QHOy0/dJMcabq9qfl/sI3KPN0fVtBqLH13zEdRuK/img.png&quot; data-alt=&quot;개발&amp;amp;middot;배포&amp;amp;middot;운영 프로세스를 연결하는 kt cloud 운영 지원 시스템(OSS) 구조&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QHOy0/dJMcabq9qfl/sI3KPN0fVtBqLH13zEdRuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQHOy0%2FdJMcabq9qfl%2FsI3KPN0fVtBqLH13zEdRuK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;개발&amp;middot;배포&amp;middot;운영 프로세스를 연결하는 kt cloud 운영 지원 시스템(OSS) 구조&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot; data-filename=&quot;kt cloud 케클러 인터뷰 시리즈_플랫폼 엔지니어링_6_OSS.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;개발&amp;middot;배포&amp;middot;운영 프로세스를 연결하는 kt cloud 운영 지원 시스템(OSS) 구조&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;7f07e4ae5482&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;7f07e4ae5482&quot; data-ke-size=&quot;size16&quot;&gt;플랫폼 엔지니어링에서 어려운 것은 기술 구현만이 아닙니다. 김정남 팀장은 오히려 &amp;ldquo;&lt;b&gt;일하는 방식을 바꾸는 과정&lt;/b&gt;&amp;rdquo;이 더 어려웠다고 말합니다.&lt;/p&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;7f07e4ae5482&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;8eb93e057d62&quot; data-ke-size=&quot;size16&quot;&gt;서비스마다 이미 익숙하게 사용해온 브랜치 전략, 배포 방식, 운영 프로세스가 있습니다. 이를 하나의 표준 흐름으로 맞추는 일은 기술만으로 해결하기 어렵습니다. 개발자들 입장에서도 새로운 플랫폼이나 파이프라인 도입이 편리함보다 &amp;lsquo;또 새롭게 배워야 하는 일&amp;rsquo;로 느껴질 수도 있습니다.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;8eb93e057d62&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;51d5888216da&quot; data-ke-size=&quot;size16&quot;&gt;하지만 Platform엔지니어링팀이 추진한 표준화는 모든 방식을 하나로 강제하는 것이 아니었습니다.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;5146f18e75cd&quot; data-ke-size=&quot;size16&quot;&gt;각 서비스의 특성을 이해하고, 반복되는 작업과 공통으로 필요한 영역을 찾아 개발자가 매번 같은 고민을 반복하지 않도록 만드는 데 초점을 맞췄습니다.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;5146f18e75cd&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;1c24bdffff6b&quot; data-ke-size=&quot;size16&quot;&gt;이를 위해 &lt;b&gt;개발&amp;middot;배포&amp;middot;운영 과정에 공통으로 적용되는 기준은 표준화&lt;/b&gt;하고, &lt;b&gt;서비스별 특성이 반영되어야 하는 영역은 유연하게 운영&lt;/b&gt;할 수 있도록 구조를 설계했습니다.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;1085fc8d2b9d&quot; data-ke-size=&quot;size16&quot;&gt;결국 플랫폼 엔지니어링은 개발자를 통제하기 위한 구조가 아닙니다. 복잡한 선택지를 줄이고 검증된 개발 방식을 제공해, &lt;b&gt;개발자가 더 적은 시행착오로 더 나은 결정을 할 수 있도록 돕는 하나의 시스템&lt;/b&gt;입니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot; data-local-id=&quot;7e56114b1ab5&quot; data-prosemirror-content-type=&quot;node&quot; data-prosemirror-node-name=&quot;heading&quot; data-prosemirror-node-block=&quot;true&quot; data-pm-slice=&quot;1 1 []&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1a5490;&quot; data-text-custom-color=&quot;#0747a6&quot; data-prosemirror-content-type=&quot;mark&quot; data-prosemirror-mark-name=&quot;textColor&quot;&gt;Part&lt;span&gt; 6. 개발자가 더 중요한 문제에 집중하는 환경&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kt cloud 케클러 인터뷰 시리즈_플랫폼 엔지니어링_7.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;975&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cKliEB/dJMcahkEfYI/AwC2zuj00mNdJrKLSYTAP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cKliEB/dJMcahkEfYI/AwC2zuj00mNdJrKLSYTAP0/img.png&quot; data-alt=&quot;kt cloud가 그리는 Self-Service 기반 플랫폼 엔지니어링의 미래 방향&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cKliEB/dJMcahkEfYI/AwC2zuj00mNdJrKLSYTAP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcKliEB%2FdJMcahkEfYI%2FAwC2zuj00mNdJrKLSYTAP0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;kt cloud가 그리는 Self-Service 기반 플랫폼 엔지니어링의 미래 방향&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;975&quot; data-filename=&quot;kt cloud 케클러 인터뷰 시리즈_플랫폼 엔지니어링_7.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;975&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;kt cloud가 그리는 Self-Service 기반 플랫폼 엔지니어링의 미래 방향&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;3e095af78306&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;3e095af78306&quot; data-ke-size=&quot;size16&quot;&gt;Self-Service와 자동화가 고도화될수록 개발자가 집중해야 할 영역도 달라집니다.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;8d66da8e6bff&quot; data-ke-size=&quot;size16&quot;&gt;환경을 어떻게 설정할지, 어떤 절차를 거쳐 배포해야 할지에 대한 고민이 줄어들면 개발자는 &lt;b&gt;고객 경험 개선, 아키텍처 고도화, AI 도입과 같은 더 중요한 과제&lt;/b&gt;에 시간을 쓸 수 있습니다.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;8d66da8e6bff&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;db470c3d3b72&quot; data-ke-size=&quot;size16&quot;&gt;김정남 팀장이 바라보는 플랫폼 엔지니어링의 방향은 분명합니다. 개발자가 &lt;b&gt;기다리거나 헤매지 않고 안전하게 시작&lt;/b&gt;할 수 있는 환경을 만들고, &lt;b&gt;개발&amp;middot;배포&amp;middot;운영 과정이 자연스럽게 이어지도록 만드는 것&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;24e4027c646a&quot; data-ke-size=&quot;size16&quot;&gt;이러한 변화는 내부 개발자 경험에만 머무르지 않습니다. 개발자와 운영자가 더 빠르고 안정적으로 일할 수 있는 환경은 결국 kt cloud가 제공하는 클라우드 서비스의 품질과 속도로 이어집니다.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;24e4027c646a&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;90f5a6bd4162&quot; data-ke-size=&quot;size16&quot;&gt;훌륭한 개발 방식과 안정적인 운영 체계가 개인의 역량에만 의존하지 않고, 조직의 일하는 방식으로 자리 잡는 것.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;dc79e90677fb&quot; data-ke-size=&quot;size16&quot;&gt;kt cloud Platform엔지니어링팀은 개발자가 더 쉽게 시작하고 안정적으로 운영할 수 있는 환경을 만들어가고 있습니다.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;dc79e90677fb&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- CTA (블루 버전, GA4 공통 스크립트용 figure + data-event) --&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; style=&quot;max-width: 600px; margin: 0 auto 40px auto;&quot; data-event=&quot;go_cloud_banner_click&quot; data-name=&quot;cta_platform_banner&quot; data-loc=&quot;body_mid&quot;&gt;&lt;a href=&quot;https://cloud.kt.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 100%; height: auto; border-radius: 8px; display: block;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt%20cloud%20platform.png&quot; alt=&quot;kt cloud 플랫폼 바로가기&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;margin: 0px 0px 15px; font-weight: bold; color: #000000; font-family: 'Noto Sans KR', sans-serif;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;  관련 용어 설명&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 12px 14px; background: #ffffff;&quot;&gt;&amp;middot; &lt;b&gt;플랫폼 엔지니어링(Platform Engineering)&lt;/b&gt;: 개발자가 인프라나 운영의 복잡성에 얽매이지 않고 애플리케이션 개발에만 집중할 수 있도록, 도구와 프로세스를 통합해 '셀프 서비스(Self-Service)' 기반의 내부 개발자 플랫폼을 구축하고 제공하는 기술적 접근 방식입니다.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;&amp;middot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Harbor&lt;/b&gt;:&amp;nbsp;컨테이너&amp;nbsp;이미지를&amp;nbsp;저장&amp;middot;관리하고&amp;nbsp;보안&amp;nbsp;검증&amp;nbsp;기능을&amp;nbsp;제공하는&amp;nbsp;오픈소스&amp;nbsp;이미지&amp;nbsp;저장소입니다.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;&amp;middot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;ArgoCD&lt;/b&gt;:&amp;nbsp;Git에&amp;nbsp;저장된&amp;nbsp;설정&amp;nbsp;정보를&amp;nbsp;기반으로&amp;nbsp;Kubernetes&amp;nbsp;환경의&amp;nbsp;애플리케이션&amp;nbsp;배포와&amp;nbsp;변경&amp;nbsp;관리를&amp;nbsp;자동화하는&amp;nbsp;도구입니다.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;&amp;middot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Kubernetes(쿠버네티스)&lt;/b&gt;:&amp;nbsp;컨테이너&amp;nbsp;기반&amp;nbsp;애플리케이션의&amp;nbsp;배포,&amp;nbsp;확장,&amp;nbsp;운영을&amp;nbsp;자동화하는&amp;nbsp;오픈소스&amp;nbsp;플랫폼입니다.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;&amp;middot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Vault&lt;/b&gt;:&amp;nbsp;애플리케이션에서&amp;nbsp;사용하는&amp;nbsp;비밀번호,&amp;nbsp;인증키&amp;nbsp;등&amp;nbsp;중요&amp;nbsp;정보를&amp;nbsp;안전하게&amp;nbsp;관리하는&amp;nbsp;보안&amp;nbsp;도구입니다.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;&amp;middot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;CI/CD(Continuous&amp;nbsp;Integration&amp;nbsp;/&amp;nbsp;Continuous&amp;nbsp;Deployment)&lt;/b&gt;:&amp;nbsp;지속적&amp;nbsp;통합(CI)과&amp;nbsp;지속적&amp;nbsp;배포(CD)를&amp;nbsp;의미합니다.&amp;nbsp;개발자가&amp;nbsp;작성한&amp;nbsp;코드를&amp;nbsp;자동으로&amp;nbsp;빌드,&amp;nbsp;테스트하고&amp;nbsp;운영&amp;nbsp;환경까지&amp;nbsp;배포하는&amp;nbsp;과정을&amp;nbsp;자동화한&amp;nbsp;파이프라인으로,&amp;nbsp;배포의&amp;nbsp;속도와&amp;nbsp;안정성을&amp;nbsp;동시에&amp;nbsp;높여줍니다.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;&amp;middot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;CMDB(Configuration&amp;nbsp;Management&amp;nbsp;Database,&amp;nbsp;구성&amp;nbsp;관리&amp;nbsp;데이터베이스)&lt;/b&gt;:&amp;nbsp;IT&amp;nbsp;인프라&amp;nbsp;환경을&amp;nbsp;구성하는&amp;nbsp;모든&amp;nbsp;자산(서버,&amp;nbsp;네트워크,&amp;nbsp;소프트웨어&amp;nbsp;등)의&amp;nbsp;구성&amp;nbsp;정보와&amp;nbsp;그들&amp;nbsp;간의&amp;nbsp;관계를&amp;nbsp;한곳에&amp;nbsp;저장하고&amp;nbsp;통합&amp;nbsp;관리하는&amp;nbsp;데이터베이스입니다.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;&amp;middot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;OSS(Operation&amp;nbsp;Support&amp;nbsp;System,&amp;nbsp;운영&amp;nbsp;지원&amp;nbsp;시스템)&lt;/b&gt;:&amp;nbsp;인프라와&amp;nbsp;서비스를&amp;nbsp;관리하고&amp;nbsp;제어하기&amp;nbsp;위한&amp;nbsp;시스템입니다.&amp;nbsp;kt&amp;nbsp;cloud에서는&amp;nbsp;이를&amp;nbsp;개발부터&amp;nbsp;배포,&amp;nbsp;운영까지&amp;nbsp;하나의&amp;nbsp;끊김&amp;nbsp;없는&amp;nbsp;흐름으로&amp;nbsp;연결하여,&amp;nbsp;개발자와&amp;nbsp;운영자가&amp;nbsp;서비스&amp;nbsp;상태와&amp;nbsp;변경&amp;nbsp;이력을&amp;nbsp;투명하게&amp;nbsp;관리할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;기반으로&amp;nbsp;활용합니다.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;&amp;middot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;샌드박스(Sandbox)&lt;/b&gt;:&amp;nbsp;아이들이&amp;nbsp;안전한&amp;nbsp;공간에서&amp;nbsp;자유롭게&amp;nbsp;놀&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;만든&amp;nbsp;모래놀이&amp;nbsp;공간에서&amp;nbsp;유래한&amp;nbsp;용어입니다.&amp;nbsp;실제&amp;nbsp;운영&amp;nbsp;환경과&amp;nbsp;분리된&amp;nbsp;테스트&amp;nbsp;환경을&amp;nbsp;의미하며,&amp;nbsp;개발자가&amp;nbsp;운영&amp;nbsp;서비스에&amp;nbsp;영향을&amp;nbsp;주지&amp;nbsp;않고&amp;nbsp;새로운&amp;nbsp;코드나&amp;nbsp;기능을&amp;nbsp;배포하고&amp;nbsp;검증할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;공간을&amp;nbsp;말합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin: 0px 0px 15px; font-weight: bold; color: #000000; font-family: 'Noto Sans KR', sans-serif;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- 포스터 이미지 3개 한 줄 배치 (가운데 정렬 + 링크 추가) --&gt;&lt;/p&gt;
&lt;div&gt;
&lt;style&gt;  /* 모바일에서 포스터 크기 줄이기 */  @media (max-width: 480px) {    .poster-figure {      max-width: 30% !important;  /* 한 줄에 3개 들어오도록 */      flex: 0 0 30% !important;    }    .poster-figure img {      width: 100% !important;      height: auto !important;    }  }&lt;/style&gt;
&lt;/div&gt;
&lt;div style=&quot;display: flex; justify-content: center; align-items: flex-start; gap: 15px; margin: 30px auto; flex-wrap: wrap; text-align: center;&quot;&gt;&lt;!-- 1번 배너: 클라우드 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;cloud_industry_poster_click&quot; data-name=&quot;cloud_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://cloud.kt.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud1.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;!-- 2번 배너: 데이터센터 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;datacenter_industry_poster_click&quot; data-name=&quot;datacenter_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://www.kt-idc.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud2.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;!-- 3번 배너: AI 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;ai_industry_poster_click&quot; data-name=&quot;ai_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://cloud.kt.com/category/?ctgryId=C000000001&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud3.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>kt cloud Story/Team Culture</category>
      <category>DevOps</category>
      <category>DevSecOps</category>
      <category>KTCloud</category>
      <category>PlatformEngineering</category>
      <category>기술블로그</category>
      <category>데브옵스</category>
      <category>인프라엔지니어</category>
      <category>인프라자동화</category>
      <category>클라우드네이티브</category>
      <category>플랫폼엔지니어링</category>
      <author>kt cloud 기술 블로그</author>
      <guid isPermaLink="true">https://tech.ktcloud.com/458</guid>
      <comments>https://tech.ktcloud.com/entry/2026-06-ktcloud-%ED%94%8C%EB%9E%AB%ED%8F%BC-%EC%97%94%EC%A7%80%EB%8B%88%EC%96%B4%EB%A7%81#entry458comment</comments>
      <pubDate>Wed, 24 Jun 2026 09:31:34 +0900</pubDate>
    </item>
    <item>
      <title>[사례연구] 사내 개인용 개발환경 이미지 실험기 1부: git push로 업데이트되는 OpenStack 샌드박스 만들기</title>
      <link>https://tech.ktcloud.com/entry/2026-06-ktcloud-openstack-git-sandbox-%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%B6%95</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 티스토리용 시맨틱 HTML 기술 블로그 템플릿 (개선된 UI) --&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;article style=&quot;font-family: 'Noto Sans KR', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; max-width: 100%; margin: 0 auto; line-height: 1.7; color: #2c3e50; background: #ffffff;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 메타데이터 섹션 --&gt; &lt;/span&gt;&lt;header style=&quot;background: linear-gradient(135deg, #009a87 0%, #00b39f 100%); color: white; padding: 20px 25px; text-align: right; font-weight: 600; border-radius: 15px; margin-bottom: 35px; box-shadow: 0 8px 25px rgba(0, 154, 135, 0.15); position: relative; overflow: hidden;&quot;&gt;
&lt;div style=&quot;position: absolute; top: -50%; right: -10%; width: 200px; height: 200px; background: rgba(255,255,255,0.1); border-radius: 50%; transform: rotate(45deg);&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;position: relative; z-index: 2;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;b&gt; &lt;span style=&quot;font-size: 1.1rem; text-shadow: rgba(0, 0, 0, 0.1) 0px 2px 4px;&quot;&gt; [ kt cloud Platform엔지니어링팀 이초환 님 ] &lt;/span&gt; &lt;/b&gt; &lt;/span&gt;&lt;/div&gt;
&lt;/header&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 콘텐츠 구조 및 메타데이터 표준화 적용 --&gt; &lt;/span&gt;
&lt;article&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 작성자 정보 (시맨틱 헤더) --&gt; &lt;/span&gt;&lt;header style=&quot;margin: 20px 0;&quot;&gt;
&lt;section style=&quot;margin: 25px 0;&quot;&gt;&lt;header&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 요약 섹션 헤더 - 초미니멀 디자인 --&gt; &lt;/span&gt;
&lt;h4 style=&quot;margin: 15px 0 10px 0;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87; background: #f0fffe; padding: 4px 10px; border-radius: 12px; border: 1px solid #d4eeeb; display: inline-flex; align-items: center; gap: 5px; font-weight: bold; font-size: 0.9em;&quot;&gt; &lt;span style=&quot;font-size: 0.8em;&quot;&gt; &lt;/span&gt; 요약 &lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;이 글에서는 GitOps 기반 개인용 OpenStack 샌드박스 이미지를 구축하고 업데이트하는 실험 과정을 다룹니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;개발환경 표준화와 운영 부담 완화에 주는 실무적 의미를 정리합니다.&lt;/span&gt;&lt;/p&gt;
&lt;/header&gt;&lt;/section&gt;
&lt;/header&gt;&lt;/article&gt;
&lt;/article&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;#OpenStack&amp;nbsp;#GitOps&amp;nbsp;#ArgoCD&amp;nbsp;#FluxCD&amp;nbsp;#Kubernetes&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;1.-배경-&amp;mdash;-이-프로젝트를-시작한-맥락&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;975&quot; data-local-id=&quot;8a8d9f7f2b6d&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;1. 배경 &amp;mdash; 이 프로젝트를 시작한 맥락&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock floatRight&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[사례연구] 사내 개인용 개발환경 이미지 실험기 1부 git push로 업데이트되는 OpenStack 샌드박스 만들기 (2).png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/udZrI/dJMcaaeH5r8/hqNkAPoLHILRR2tuPB4pnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/udZrI/dJMcaaeH5r8/hqNkAPoLHILRR2tuPB4pnK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/udZrI/dJMcaaeH5r8/hqNkAPoLHILRR2tuPB4pnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FudZrI%2FdJMcaaeH5r8%2FhqNkAPoLHILRR2tuPB4pnK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[사례연구] 사내 개인용 개발환경 이미지 실험기 1부: git push로 업데이트되는 OpenStack 샌드박스 만들기&quot; loading=&quot;lazy&quot; width=&quot;350&quot; height=&quot;1080&quot; data-filename=&quot;[사례연구] 사내 개인용 개발환경 이미지 실험기 1부 git push로 업데이트되는 OpenStack 샌드박스 만들기 (2).png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;6e2db8af72dc&quot; data-renderer-start-pos=&quot;999&quot; data-ke-size=&quot;size16&quot;&gt;저희 조직은 OpenStack 기반 서비스를 개발하고 있고, 여러 개발자&amp;middot;팀이 함께 쓰는 통합 개발환경이 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;6e2db8af72dc&quot; data-renderer-start-pos=&quot;999&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;75c222096b55&quot; data-renderer-start-pos=&quot;1065&quot; data-ke-size=&quot;size16&quot;&gt;통합환경은 각 서비스가 서로 상호작용하는 공유 공간이다 보니, 서비스를 단독으로 변경&amp;middot;테스트하려면 별도의 독립 환경이 필요합니다. 개인 단위 실험까지 공유 환경에서 하기엔 부담이 컸고, 그래서 개인별&amp;middot;서비스별 개발환경이 자연스럽게 필요해졌습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;75c222096b55&quot; data-renderer-start-pos=&quot;1065&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;e556ebb1720a&quot; data-renderer-start-pos=&quot;1204&quot; data-ke-size=&quot;size16&quot;&gt;이런 니즈에 대응하기 위해 저희는 &lt;b&gt;통합 개발환경과 비슷한 구조의 개인용 OpenStack 샌드박스를 표준화해 제공&lt;/b&gt;한다는 방향을 잡았습니다. 운영&amp;middot;통합 환경과 구조 성격을 최대한 유지하되 개인이 받아 쓸 수 있는 크기로 줄이는 것입니다. 제공 경로는 두 가지로 잡았습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;1f9212096a37&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;사내 클라우드에서 on-demand로 OpenStack 샌드박스 환경 제공&lt;/li&gt;
&lt;li&gt;개발자 로컬에서 바로 올려 쓸 수 있는 OpenStack 샌드박스 이미지 배포&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;1bf15551220f&quot; data-renderer-start-pos=&quot;1451&quot; data-ke-size=&quot;size16&quot;&gt;이 글은 (2) 로컬 이미지 트랙의 1차 실험 기록입니다. 운영&amp;middot;통합 환경의 구조를 단일 VM 한 대에 그대로 담기는 어려워, 이번 1차에서는 &lt;b&gt;단일 VM에 단일 클러스터&lt;/b&gt;로 접어넣는 방향으로 갔습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;2.-요건-정리&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;1565&quot; data-local-id=&quot;02b801dfb611&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;2. 요건 정리&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;8bd0b9f237d6&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;OpenStack + ArgoCD 기반 GitOps&lt;/b&gt;. 운영 환경이 이미 ArgoCD 기반이어서 샌드박스에서 실험한 매니페스트가 운영으로 자연스럽게 넘어가야 합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;누가 받아도 같은 환경&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;운영 환경과 구조 정합&lt;/b&gt;. 지금은 단일 VM이라도 멀티노드로 확장 가능한 뼈대와 동일한 배포 도구(helm, kustomize, ArgoCD)를 써야 합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;배포 이후에도 업데이트 경로&lt;/b&gt;. 컴포넌트 업데이트, 보안 패치, 설정 변경이 꾸준히 생기므로 이미지 재빌드 없이 반영되는 경로가 있어야 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;316490d7999d&quot; data-renderer-start-pos=&quot;1863&quot; data-ke-size=&quot;size16&quot;&gt;이 요건들을 종합한 선택이 &lt;b&gt;&quot;단일 VM 이미지 + GitOps 컨트롤러 선탑재 + 애플리케이션 정의는 Git 레포에서 관리&quot;&lt;/b&gt; 였습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;3.-이미지와-Git의-경계&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;1941&quot; data-local-id=&quot;529c31420582&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;3. 이미지와 Git의 경계&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;006c83fe05b2&quot; data-renderer-start-pos=&quot;1958&quot; data-ke-size=&quot;size16&quot;&gt;이미지는 qcow2로 구워 부팅 후 약 10분 안에 OpenStack 환경이 Ready에 도달하게 했습니다. 여기까지는 흔한 이미지 배포 방식입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;006c83fe05b2&quot; data-renderer-start-pos=&quot;1958&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;bb5305ca6326&quot; data-renderer-start-pos=&quot;2043&quot; data-ke-size=&quot;size16&quot;&gt;차이는 이미지 안에 &lt;b&gt;ArgoCD와 Flux를 함께 설치&lt;/b&gt;해두고, 빌드 타임에 OpenStack 컴포넌트도 한 번 배포한 뒤 그 상태 그대로 이미지로 굳혔다는 점입니다. 즉 부팅하면 OpenStack은 이미 배포된 상태로 올라옵니다. 다만 &lt;b&gt;source of truth(클러스터가 어떤 상태여야 하는지 정의하는 단일 기준점)는 이미지가 아니라 Git 레포&lt;/b&gt;에 있어, 컨트롤러들이 부팅 후 stack-deployments-sandbox 레포를 계속 watch하면서 Git에 변경이 생기면 그쪽으로 클러스터 상태를 맞춰갑니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;bb5305ca6326&quot; data-renderer-start-pos=&quot;2043&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;8782389fb9af&quot; data-renderer-start-pos=&quot;2333&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이미지에 들어간 것&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;806352435b04&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Ubuntu 24.04, containerd, Kubernetes 컨트롤 플레인(kubeadm, CNI, local-path-provisioner)&lt;/li&gt;
&lt;li&gt;ArgoCD + Flux (빌드 타임에 설치 완료)&lt;/li&gt;
&lt;li&gt;빌드 타임에 한 번 배포된 OpenStack 코어 6종 + 인프라 의존성 3종의 초기 상태&lt;/li&gt;
&lt;li&gt;OpenStack 및 의존성 컨테이너 이미지 pre-pull, 부팅 시 IP 교체 systemd 서비스&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;3615a9137d56&quot; data-renderer-start-pos=&quot;2580&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Git 레포(stack-deployments-sandbox)에 둔 정의들&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;7fb35789c3ec&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Harbor OCI HelmRepository, values ConfigMap (아키텍처별 values/arm64/, values/amd64/)&lt;/li&gt;
&lt;li&gt;OpenStack 코어 6종(keystone, glance, placement, cinder, neutron, nova)과 인프라 의존성 3종(mariadb, rabbitmq, memcached)의 HelmRelease&lt;/li&gt;
&lt;li&gt;ArgoCD Application, ExternalSecret / ClusterSecretStore (시크릿 처리 등 트러블슈팅&amp;middot;상세 설정은 2부에서 다룹니다)&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;06f6df06fcde&quot; data-renderer-start-pos=&quot;2927&quot; data-ke-size=&quot;size16&quot;&gt;이미지에 든 OpenStack 초기 상태와 Git의 정의가 일치하면 부팅 후 그대로 유지되고, Git 정의가 바뀌면 ArgoCD/Flux가 차이를 감지해 cluster를 Git 상태로 수렴시킵니다. 즉 &quot;처음 배포 한 번&quot;은 이미지가 책임지고, &lt;b&gt;그 이후의 모든 변경은 Git이 책임지는&lt;/b&gt; 구조입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;06f6df06fcde&quot; data-renderer-start-pos=&quot;2927&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;80805de7d3e6&quot; data-renderer-start-pos=&quot;3095&quot; data-ke-size=&quot;size16&quot;&gt;이 글에서 &quot;OpenStack 컴포넌트&quot;로 묶어 부를 때는 keystone&amp;middot;glance&amp;middot;placement&amp;middot;cinder&amp;middot;neutron&amp;middot;nova 6종을 의미합니다. mariadb&amp;middot;rabbitmq&amp;middot;memcached는 OpenStack을 돌리기 위한 인프라 의존성으로 별도 분류합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;80805de7d3e6&quot; data-renderer-start-pos=&quot;3095&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;ea9eeb63ed84&quot; data-renderer-start-pos=&quot;3252&quot; data-ke-size=&quot;size16&quot;&gt;경계의 기준은 &quot;얼마나 자주 바뀌는가&quot;였습니다. 이미지에는 분기별로도 거의 손대지 않는 영역(커널&amp;middot;런타임&amp;middot;컨트롤 플레인)만 두고, values&amp;middot;이미지 태그&amp;middot;probe처럼 운영 중 계속 바뀌는 영역은 Git에 뒀습니다. 배포된 샌드박스 이미지가 10대든 100대든 동일한 변경을 전파하는 비용이 이 경계에 달려 있기 때문입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;ea9eeb63ed84&quot; data-renderer-start-pos=&quot;3252&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;253021a4a84c&quot; data-renderer-start-pos=&quot;3436&quot; data-ke-size=&quot;size16&quot;&gt;이번 1차에서는 OpenStack Helm 차트는 외부 차트를 사내 Harbor OCI에 올려 그대로 사용했고, 컨테이너 이미지는 사내 이미지를 활용했습니다. 운영 환경에는 사내 노하우가 반영된 사내 차트가 따로 있어, 다음 시도에서는 그쪽으로 전환해 운영과의 구조 정합을 한 단계 더 높일 계획입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;253021a4a84c&quot; data-renderer-start-pos=&quot;3436&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;0d90f6cd0c24&quot; data-renderer-start-pos=&quot;3607&quot; data-ke-size=&quot;size16&quot;&gt;ArgoCD + Flux HelmRelease 혼합 구조 자체의 설계 철학은 &lt;a href=&quot;https://tech.ktcloud.com/entry/2026-01-ktcloud-openstack-helm-gitops-배포-전환&quot;&gt;https://tech.ktcloud.com/entry/2026-01-ktcloud-openstack-helm-gitops-배포-전환&lt;/a&gt; 에 자세히 나와 있습니다.&lt;/p&gt;
&lt;figure id=&quot;og_1782175523629&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[실전가이드] OpenStack Helm 배포를 GitOps로 전환: FluxCD+Argo CD 아키텍처 설계와 운영 전략&quot; data-og-description=&quot;[ kt cloud Foundation플랫폼팀 이지은 님 ]   요약 이 글에서는 OpenStack Helm 배포 방식을 Genestack CI 기반 렌더링에서FluxCD HelmRelease와 Argo CD를 활용한 GitOps 방식으로 전환한 과정을 다룹니다.전환 배경,&quot; data-og-host=&quot;tech.ktcloud.com&quot; data-og-source-url=&quot;https://tech.ktcloud.com/entry/2026-01-ktcloud-openstack-helm-gitops-배포-전환&quot; data-og-url=&quot;https://tech.ktcloud.com/entry/2026-01-ktcloud-openstack-helm-gitops-%EB%B0%B0%ED%8F%AC-%EC%A0%84%ED%99%98&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/F9ZWG/dJMb84X8uT8/w2k96gsQSvT8Xv4GWuFWTk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/E70z6/dJMb83kCJ6r/562wYCD4vkjJ7qM43xvKS0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/tSggw/dJMb89ynomd/vrsXzb7dd7SYNI5zP6jnQ0/img.png?width=851&amp;amp;height=1276&amp;amp;face=0_0_851_1276&quot;&gt;&lt;a href=&quot;https://tech.ktcloud.com/entry/2026-01-ktcloud-openstack-helm-gitops-배포-전환&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://tech.ktcloud.com/entry/2026-01-ktcloud-openstack-helm-gitops-배포-전환&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/F9ZWG/dJMb84X8uT8/w2k96gsQSvT8Xv4GWuFWTk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/E70z6/dJMb83kCJ6r/562wYCD4vkjJ7qM43xvKS0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/tSggw/dJMb89ynomd/vrsXzb7dd7SYNI5zP6jnQ0/img.png?width=851&amp;amp;height=1276&amp;amp;face=0_0_851_1276');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[실전가이드] OpenStack Helm 배포를 GitOps로 전환: FluxCD+Argo CD 아키텍처 설계와 운영 전략&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;[ kt cloud Foundation플랫폼팀 이지은 님 ]   요약 이 글에서는 OpenStack Helm 배포 방식을 Genestack CI 기반 렌더링에서FluxCD HelmRelease와 Argo CD를 활용한 GitOps 방식으로 전환한 과정을 다룹니다.전환 배경,&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;tech.ktcloud.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;4.-완성된-구조와-부팅-흐름&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;3742&quot; data-local-id=&quot;9258ac6e4c35&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;4. 완성된 구조와 부팅 흐름&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[사례연구] 사내 개인용 개발환경 이미지 실험기 1부 git push로 업데이트되는 OpenStack 샌드박스 만들기 (1).png&quot; data-origin-width=&quot;1621&quot; data-origin-height=&quot;485&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JJL2i/dJMcaiqeEh2/WXY1N5KHku6IBUTrIKnmSk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JJL2i/dJMcaiqeEh2/WXY1N5KHku6IBUTrIKnmSk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JJL2i/dJMcaiqeEh2/WXY1N5KHku6IBUTrIKnmSk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJJL2i%2FdJMcaiqeEh2%2FWXY1N5KHku6IBUTrIKnmSk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[사례연구] 사내 개인용 개발환경 이미지 실험기 1부: git push로 업데이트되는 OpenStack 샌드박스 만들기&quot; loading=&quot;lazy&quot; width=&quot;1621&quot; height=&quot;485&quot; data-filename=&quot;[사례연구] 사내 개인용 개발환경 이미지 실험기 1부 git push로 업데이트되는 OpenStack 샌드박스 만들기 (1).png&quot; data-origin-width=&quot;1621&quot; data-origin-height=&quot;485&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot;&gt;이미지를 UTM(macOS)&amp;middot;libvirt(Linux)에 import해 부팅하면, systemd 서비스가 현재 IP를 감지해 apiserver 인증서&amp;middot;kubeconfig를 재발급하면서 빌드 타임에 배포된 OpenStack이 새 IP 환경에 맞춰 Ready로 올라옵니다. 동시에 ArgoCD&amp;middot;Flux가 Git 레포 watch를 시작하고, Git 정의에 변경이 있으면 cluster 상태를 그쪽으로 수렴시킵니다. 전체 흐름이 약 10분 안에 끝납니다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;5.-현재-상태와-다음-스텝&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;4016&quot; data-local-id=&quot;9509fff197f0&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;5. 현재 상태와 다음 스텝&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;11120d33e8a4&quot; data-renderer-start-pos=&quot;4033&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;확인된 것&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;6347865b2417&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ARM64 단일 VM qcow2 이미지(~5.6GB). macOS UTM에서 import 후 10분 내 OpenStack 환경 Ready&lt;/li&gt;
&lt;li&gt;OpenStack 코어 6종(keystone, glance, placement, cinder, neutron, nova)과 인프라 의존성 3종(mariadb, rabbitmq, memcached) 모두 Running&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Git 레포 수정 &amp;rarr; 배포된 이미지 OTA 반영 체인 정상 동작&lt;/b&gt; (values 보정&amp;middot;컴포넌트 설정 변경 같은 작업을 git push로 전파해 검증)&lt;/li&gt;
&lt;li&gt;AMD64 이미지도 동일 구조로 1차 작성 완료&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;0480c15b3d13&quot; data-renderer-start-pos=&quot;4362&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;다음 스텝&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;4d49ba5f4e8e&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;축소 구조를 운영 환경에 더 가깝게&lt;/b&gt;: 이번 1차는 여러 요소를 단일 클러스터에 접어넣은 형태입니다. 운영 환경과의 구조 정합을 더 높이려면 여러 클러스터로 분리해 가야 하는데, 로컬 이미지 트랙은 개발자 노트북의 리소스 제약이 커서 &lt;b&gt;사내 클라우드 개인용 환경 제공 트랙&lt;/b&gt;에서 먼저 그 확장을 다룰 예정입니다&lt;/li&gt;
&lt;li&gt;&lt;b&gt;외부 차트 &amp;rarr; 사내 차트 전환&lt;/b&gt;: 1차에서는 외부 openstack-helm 차트를 그대로 사용했지만, 다음 단계에서는 운영 환경에 적용된 사내 노하우가 담긴 사내 차트로 전환할 계획입니다. 운영과의 구조 정합도 한 단계 좁혀질 것으로 보고 있습니다&lt;/li&gt;
&lt;li&gt;&lt;b&gt;nested virtualization&lt;/b&gt;: 샌드박스 안에서 실제 OpenStack 인스턴스를 띄우기 위한 검증 진행 중 (Apple Silicon + Lima)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;6.-마치며&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;4780&quot; data-local-id=&quot;cf7dd11731b7&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;6. 마치며&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;5f1754faadc3&quot; data-renderer-start-pos=&quot;4788&quot; data-ke-size=&quot;size16&quot;&gt;이미지 배포 단계까지는 기존 방식에도 있었지만, 배포 이후 개발자 각자가 환경을 손보는 방식은 조직 차원에서 관리되지 않던 영역이었습니다. GitOps 컨트롤러를 이미지에 심고 애플리케이션 정의를 Git으로 빼두자, &lt;b&gt;이미 배포된 모든 이미지가 같은 Git 레포를 바라보며 함께 따라가는 구조&lt;/b&gt;의 윤곽이 잡혔습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;5f1754faadc3&quot; data-renderer-start-pos=&quot;4788&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;f2b23dd11f2b&quot; data-renderer-start-pos=&quot;4964&quot; data-ke-size=&quot;size16&quot;&gt;여기까지가 지금 시점의 결과입니다. 멀티 클러스터 확장, 외부 차트 대신 운영 노하우가 반영된 사내 차트로의 전환, nested virt로 실제 인스턴스를 띄우는 검증 같은 큰 숙제들이 아직 남아 있어서 잘 풀릴지는 다음 단계들을 진행해보면서 확인할 부분이고, 진행되는 대로 후속 기록으로 또 공유드리겠습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;f2b23dd11f2b&quot; data-renderer-start-pos=&quot;4964&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;1fc00aabd41b&quot; data-renderer-start-pos=&quot;5139&quot; data-ke-size=&quot;size16&quot;&gt;다음 글에서는 이 구조를 세우는 과정에서 마주친 자잘한 트러블슈팅과 신경 써야 했던 상세 설정, 그리고 보안적으로 짚은 지점들을 풀어둡니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- CTA (블루 버전, GA4 공통 스크립트용 figure + data-event) --&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; style=&quot;max-width: 600px; margin: 0 auto 40px auto;&quot; data-event=&quot;go_cloud_banner_click&quot; data-name=&quot;cta_platform_banner&quot; data-loc=&quot;body_mid&quot;&gt;&lt;a href=&quot;https://cloud.kt.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 100%; height: auto; border-radius: 8px; display: block;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt%20cloud%20platform.png&quot; alt=&quot;kt cloud 플랫폼 바로가기&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- ================= FAQ 섹션 (그린 버전, 블루 스타일을 그린 톤으로) ================= --&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #009a87; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;b&gt;❓ 자주 묻는 질문 (FAQ)&lt;/b&gt; &lt;/span&gt;&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #E6F8F4; border-bottom: 1px solid #CDEDE7;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87;&quot;&gt;&lt;b&gt;Q. DevStack이나&amp;nbsp;MicroStack을&amp;nbsp;쓰면&amp;nbsp;되지&amp;nbsp;않나요?&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #ffffff;&quot;&gt;A. 운영 환경이 openstack-helm 기반이라 DevStack/MicroStack과는 구조가 달라, 운영과 동일한 openstack-helm + Kubernetes를 단일 VM에 담는 방향으로 갔습니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #E6F8F4; border-bottom: 1px solid #CDEDE7;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87;&quot;&gt;&lt;b&gt;Q. 왜&amp;nbsp;일단&amp;nbsp;단일&amp;nbsp;VM인가요?&amp;nbsp;운영은&amp;nbsp;멀티노드인데?&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #ffffff;&quot;&gt;A.&amp;nbsp;운영은&amp;nbsp;멀티노드라&amp;nbsp;이후엔&amp;nbsp;그쪽으로&amp;nbsp;확장해야&amp;nbsp;하지만,&amp;nbsp;개발자&amp;nbsp;노트북의&amp;nbsp;리소스&amp;nbsp;제약과&amp;nbsp;&quot;빌드&amp;middot;OTA&amp;nbsp;파이프라인을&amp;nbsp;먼저&amp;nbsp;안정화한&amp;nbsp;뒤&amp;nbsp;확장한다&quot;는&amp;nbsp;판단으로&amp;nbsp;1차는&amp;nbsp;단일&amp;nbsp;VM입니다.&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #E6F8F4; border-bottom: 1px solid #CDEDE7;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87;&quot;&gt; &lt;b&gt;Q. 한&amp;nbsp;번&amp;nbsp;배포된&amp;nbsp;이미지가&amp;nbsp;어떻게&amp;nbsp;자동으로&amp;nbsp;업데이트되나요?&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #ffffff;&quot;&gt;A.&amp;nbsp;이미지에는&amp;nbsp;빌드&amp;nbsp;타임에&amp;nbsp;한&amp;nbsp;번&amp;nbsp;배포된&amp;nbsp;OpenStack&amp;nbsp;초기&amp;nbsp;상태와&amp;nbsp;함께&amp;nbsp;ArgoCD&amp;middot;Flux가&amp;nbsp;들어&amp;nbsp;있습니다.&amp;nbsp;부팅&amp;nbsp;후&amp;nbsp;두&amp;nbsp;컨트롤러가&amp;nbsp;지정된&amp;nbsp;Git&amp;nbsp;레포를&amp;nbsp;watch하면서&amp;nbsp;cluster&amp;nbsp;상태를&amp;nbsp;Git&amp;nbsp;정의에&amp;nbsp;맞춰&amp;nbsp;유지하고,&amp;nbsp;이후&amp;nbsp;설정&amp;nbsp;변경은&amp;nbsp;레포에&amp;nbsp;git&amp;nbsp;push만&amp;nbsp;하면&amp;nbsp;배포된&amp;nbsp;모든&amp;nbsp;이미지에&amp;nbsp;자동&amp;nbsp;반영됩니다.&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- ================= 관련/출처 섹션 (그린 박스 버전) ================= --&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 15px; font-weight: bold; color: #000000; font-family: 'Noto Sans KR', sans-serif;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;   관련/출처 &lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 12px 14px; background: #ffffff;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc; color: #292a2e; text-align: left;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;e4c5c407-5b98-40a3-b9fa-07f9cb3685fb&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;871&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://tech.ktcloud.com/entry/2026-01-ktcloud-openstack-helm-gitops-%EB%B0%B0%ED%8F%AC-%EC%A0%84%ED%99%98&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://tech.ktcloud.com/entry/2026-01-ktcloud-openstack-helm-gitops-%EB%B0%B0%ED%8F%AC-%EC%A0%84%ED%99%98&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span&gt;[실전가이드] OpenStack Helm 배포를 GitOps로 전환: FluxCD+Argo CD 아키텍처 설계와 운영 전략&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;877&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://tech.ktcloud.com/entry/2025-11-ktcloud-umbrella-helm-%EC%84%A4%EA%B3%84-%EA%B0%80%EC%9D%B4%EB%93%9C&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://tech.ktcloud.com/entry/2025-11-ktcloud-umbrella-helm-%EC%84%A4%EA%B3%84-%EA%B0%80%EC%9D%B4%EB%93%9C&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span data-testid=&quot;icon-position-wrapper&quot;&gt;&lt;/span&gt;&lt;span&gt;[가이드] kt cloud에서 사용하는 Umbrella Helm Chart 설계 전략&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;883&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://tech.ktcloud.com/entry/2025-08-ktcloud-openstack-gitops-cicd-%EB%B0%B0%ED%8F%AC%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B5%AC%EC%B6%95&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://tech.ktcloud.com/entry/2025-08-ktcloud-openstack-gitops-cicd-%EB%B0%B0%ED%8F%AC%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B5%AC%EC%B6%95&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span data-testid=&quot;icon-position-wrapper&quot;&gt;&lt;/span&gt;&lt;span&gt;[사례연구] kt cloud OpenStack GitOps 배포 전략: Genestack 기반 CI/CD 자동화 구축 과정&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;openstack-helm&lt;/b&gt;: &lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;905&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://docs.openstack.org/openstack-helm/latest/&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://docs.openstack.org/openstack-helm/latest/&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span data-testid=&quot;icon-position-wrapper&quot;&gt;&lt;/span&gt;&lt;span&gt;Welcome to OpenStack-Helm&amp;rsquo;s documentation! &amp;mdash; openstack-helm 2026.1.1.dev71 documentation&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;FluxCD HelmController&lt;/b&gt;: &lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;934&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://fluxcd.io/flux/components/helm/&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://fluxcd.io/flux/components/helm/&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span data-testid=&quot;icon-position-wrapper&quot;&gt;&lt;/span&gt;&lt;span&gt;Helm Controller&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;ArgoCD Application&lt;/b&gt;: &lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;960&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup/&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup/&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span data-testid=&quot;icon-position-wrapper&quot;&gt;&lt;/span&gt;&lt;span&gt;Declarative Setup - Argo CD - Declarative GitOps CD for Kubernetes&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- 포스터 이미지 3개 한 줄 배치 (가운데 정렬 + 링크 추가) --&gt;&lt;/p&gt;
&lt;div&gt;
&lt;style&gt;  /* 모바일에서 포스터 크기 줄이기 */  @media (max-width: 480px) {    .poster-figure {      max-width: 30% !important;  /* 한 줄에 3개 들어오도록 */      flex: 0 0 30% !important;    }    .poster-figure img {      width: 100% !important;      height: auto !important;    }  }&lt;/style&gt;
&lt;/div&gt;
&lt;div style=&quot;display: flex; justify-content: center; align-items: flex-start; gap: 15px; margin: 30px auto; flex-wrap: wrap; text-align: center;&quot;&gt;&lt;!-- 1번 배너: 클라우드 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;cloud_industry_poster_click&quot; data-name=&quot;cloud_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://cloud.kt.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud1.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;!-- 2번 배너: 데이터센터 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;datacenter_industry_poster_click&quot; data-name=&quot;datacenter_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://www.kt-idc.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud2.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;!-- 3번 배너: AI 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;ai_industry_poster_click&quot; data-name=&quot;ai_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://cloud.kt.com/category/?ctgryId=C000000001&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud3.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;/div&gt;</description>
      <category>Tech Story/DevOps &amp;amp; Container</category>
      <category>argocd</category>
      <category>CloudInfrastructure</category>
      <category>containerization</category>
      <category>DevOps</category>
      <category>FluxCD</category>
      <category>gitops</category>
      <category>helm</category>
      <category>KTCloud</category>
      <category>Kubernetes</category>
      <category>Openstack</category>
      <author>kt cloud 기술 블로그</author>
      <guid isPermaLink="true">https://tech.ktcloud.com/457</guid>
      <comments>https://tech.ktcloud.com/entry/2026-06-ktcloud-openstack-git-sandbox-%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%B6%95#entry457comment</comments>
      <pubDate>Tue, 23 Jun 2026 09:59:35 +0900</pubDate>
    </item>
    <item>
      <title>[트렌드 리포트] 2026 상반기 트렌드 결산: AI 활용부터 인프라 전환까지</title>
      <link>https://tech.ktcloud.com/entry/2026-07-ktcloud-trendreport</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 티스토리용 시맨틱 HTML 기술 블로그 템플릿 (개선된 UI) --&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;article style=&quot;font-family: 'Noto Sans KR', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; max-width: 100%; margin: 0 auto; line-height: 1.7; color: #2c3e50; background: #ffffff;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 메타데이터 섹션 --&gt; &lt;/span&gt;&lt;header style=&quot;background: linear-gradient(135deg, #009a87 0%, #00b39f 100%); color: white; padding: 20px 25px; text-align: right; font-weight: 600; border-radius: 15px; margin-bottom: 35px; box-shadow: 0 8px 25px rgba(0, 154, 135, 0.15); position: relative; overflow: hidden;&quot;&gt;
&lt;div style=&quot;position: absolute; top: -50%; right: -10%; width: 200px; height: 200px; background: rgba(255,255,255,0.1); border-radius: 50%; transform: rotate(45deg);&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;position: relative; z-index: 2;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;b&gt; &lt;span style=&quot;font-size: 1.1rem; text-shadow: rgba(0, 0, 0, 0.1) 0px 2px 4px;&quot;&gt; [ kt cloud 마케팅커뮤니케이션팀 ] &lt;/span&gt; &lt;/b&gt; &lt;/span&gt;&lt;/div&gt;
&lt;/header&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 콘텐츠 구조 및 메타데이터 표준화 적용 --&gt; &lt;/span&gt;
&lt;article&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 작성자 정보 (시맨틱 헤더) --&gt; &lt;/span&gt;&lt;header style=&quot;margin: 20px 0;&quot;&gt;
&lt;section style=&quot;margin: 25px 0;&quot;&gt;&lt;header&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 요약 섹션 헤더 - 초미니멀 디자인 --&gt; &lt;/span&gt;
&lt;h4 style=&quot;margin: 15px 0 10px 0;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87; background: #f0fffe; padding: 4px 10px; border-radius: 12px; border: 1px solid #d4eeeb; display: inline-flex; align-items: center; gap: 5px; font-weight: bold; font-size: 0.9em;&quot;&gt; &lt;span style=&quot;font-size: 0.8em;&quot;&gt; &lt;/span&gt; 요약 &lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666; font-family: 'Noto Sans Demilight', 'Noto Sans KR'; letter-spacing: 0px;&quot;&gt;Data Center, AI ,Cloud 중심으로 &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666; font-family: 'Noto Sans Demilight', 'Noto Sans KR'; letter-spacing: 0px;&quot;&gt;2026년 상반기 업계 주요 트렌드를 살펴보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;/header&gt;&lt;/section&gt;
&lt;/header&gt;&lt;/article&gt;
&lt;/article&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;trend_06_cover.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbgEO3/dJMcagTvPFr/lGlyCwz5L3eZjG2JccjJS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbgEO3/dJMcagTvPFr/lGlyCwz5L3eZjG2JccjJS0/img.png&quot; data-alt=&quot;2026년 상반기 트렌드 결산&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbgEO3/dJMcagTvPFr/lGlyCwz5L3eZjG2JccjJS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbgEO3%2FdJMcagTvPFr%2FlGlyCwz5L3eZjG2JccjJS0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot; data-filename=&quot;trend_06_cover.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;2026년 상반기 트렌드 결산&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2026년&amp;nbsp;상반기,&amp;nbsp;업계는&amp;nbsp;AI를&amp;nbsp;중심으로&amp;nbsp;빠르게&amp;nbsp;재편되었습니다.&amp;nbsp;이런&amp;nbsp;변화는&amp;nbsp;AI&amp;nbsp;기술에만&amp;nbsp;머물러&amp;nbsp;있지&amp;nbsp;않습니다.&amp;nbsp;AI가&amp;nbsp;실제&amp;nbsp;업무에&amp;nbsp;적용되기&amp;nbsp;시작하면서,&amp;nbsp;이를&amp;nbsp;운영하기&amp;nbsp;위한&amp;nbsp;클라우드와&amp;nbsp;뒷받침하는&amp;nbsp;데이터센터까지&amp;nbsp;함께&amp;nbsp;변화하고&amp;nbsp;있습니다. &lt;br /&gt;&lt;br /&gt;이번&amp;nbsp;콘텐츠에서는&amp;nbsp;2026년&amp;nbsp;상반기&amp;nbsp;주요&amp;nbsp;흐름을&amp;nbsp;Data&amp;nbsp;Center,&amp;nbsp;AI,&amp;nbsp;Cloud&amp;nbsp;세&amp;nbsp;분야에서&amp;nbsp;살펴봅니다.&amp;nbsp;AI&amp;nbsp;워크로드를&amp;nbsp;안정적으로&amp;nbsp;수용하기&amp;nbsp;위한&amp;nbsp;데이터센터&amp;nbsp;인프라&amp;nbsp;전환,&amp;nbsp;답변하는&amp;nbsp;AI에서&amp;nbsp;일하는&amp;nbsp;AI로의&amp;nbsp;변화,&amp;nbsp;데이터와&amp;nbsp;인프라&amp;nbsp;통제권을&amp;nbsp;둘러싼&amp;nbsp;클라우드&amp;nbsp;전략까지&amp;nbsp;핵심&amp;nbsp;키워드를&amp;nbsp;중심으로&amp;nbsp;정리했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;trend_06_contents.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbvv9u/dJMcabxQYwl/KBM88ZirMqPvDRkZHvtLPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbvv9u/dJMcabxQYwl/KBM88ZirMqPvDRkZHvtLPk/img.png&quot; data-alt=&quot;상반기 주요 트렌드&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbvv9u/dJMcabxQYwl/KBM88ZirMqPvDRkZHvtLPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbbvv9u%2FdJMcabxQYwl%2FKBM88ZirMqPvDRkZHvtLPk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot; data-filename=&quot;trend_06_contents.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;상반기 주요 트렌드&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 id=&quot; AI-시대의-핵심-인프라:-AI-데이터센터&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;623&quot; data-local-id=&quot;cde1d1aa1dad&quot; data-ke-size=&quot;size20&quot;&gt; AI 시대의 핵심 인프라: AI 데이터센터&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image-20260617-083100.png&quot; data-origin-width=&quot;1719&quot; data-origin-height=&quot;967&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/E5mCV/dJMcacct4dV/1bKInpkR21LXdpC64opX11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/E5mCV/dJMcacct4dV/1bKInpkR21LXdpC64opX11/img.png&quot; data-alt=&quot;AI 데이터센터&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/E5mCV/dJMcacct4dV/1bKInpkR21LXdpC64opX11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FE5mCV%2FdJMcacct4dV%2F1bKInpkR21LXdpC64opX11%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;807&quot; height=&quot;454&quot; data-filename=&quot;image-20260617-083100.png&quot; data-origin-width=&quot;1719&quot; data-origin-height=&quot;967&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;AI 데이터센터&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;1b6c2533603c&quot; data-renderer-start-pos=&quot;663&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;1b6c2533603c&quot; data-renderer-start-pos=&quot;663&quot; data-ke-size=&quot;size16&quot;&gt;AI의 확산은 데이터센터의 정의마저 바꾸고 있습니다. 기존 데이터센터가 안정적인 서버 수용과 데이터 저장 중심이었다면, AI 시대의 데이터센터는 대규모 연산을 초고속으로 처리하는 AI 컴퓨팅 인프라로 진화하고 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;1b6c2533603c&quot; data-renderer-start-pos=&quot;663&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;913beef3d003&quot; data-renderer-start-pos=&quot;787&quot; data-ke-size=&quot;size16&quot;&gt;AI 데이터센터는 고집적 GPU 서버, 초고속&amp;middot;저지연 네트워크, 대용량 분산 스토리지, 그리고 이를 뒷받침할 고용량 전력과 냉각 설비가 유기적으로 통합 설계되어야 합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;913beef3d003&quot; data-renderer-start-pos=&quot;787&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;7cd7fd86da98&quot; data-renderer-start-pos=&quot;884&quot; data-ke-size=&quot;size16&quot;&gt;kt cloud는 지난해 차세대 AI 데이터센터 기술을 실증하는 'AI Innovation Center'를 공개하며 GPU뿐만 아니라 네트워크, 냉각 등 인프라 전반을 통합적으로 검증하는 기반을 마련했습니다. 액침냉각, 초고속 RoCEv2 등 AI 데이터센터 운영에 필수적인 기술이 실제 환경에서 어떻게 구현되고 운영되는지 확인할 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;7cd7fd86da98&quot; data-renderer-start-pos=&quot;884&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; 관련 콘텐츠 보러가기&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=NWX5Ohx-sCI&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;국내 유일, AI 시대의 데이터센터를 실증하다 - AI Innovation Center로 보는 차세대 데이터센터 인프라&lt;/a&gt;&lt;/li&gt;
&lt;li data-local-id=&quot;4552fd1d1e29&quot; data-renderer-start-pos=&quot;1100&quot;&gt;&lt;a href=&quot;https://tech.ktcloud.com/entry/2026-01-ktcloud-trendreport?utm_source=chatgpt.com&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;[트렌드 리포트] AI 인프라 전환 가이드 - 지금 준비해야 할 5가지&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot; 데이터센터-경쟁력은-전력과-냉각에서:-Power-&amp;amp;-Cooling&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;1105&quot; data-local-id=&quot;94d1804a1f74&quot; data-ke-size=&quot;size20&quot;&gt; 데이터센터 경쟁력은 전력과 냉각에서: Power &amp;amp; Cooling&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image-20260617-084715.png&quot; data-origin-width=&quot;1818&quot; data-origin-height=&quot;967&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dhtKbp/dJMcaf74qks/mOIGlidA1hiv92EYGZlFYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dhtKbp/dJMcaf74qks/mOIGlidA1hiv92EYGZlFYk/img.png&quot; data-alt=&quot;Power&amp;amp;amp;Cooling&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dhtKbp/dJMcaf74qks/mOIGlidA1hiv92EYGZlFYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdhtKbp%2FdJMcaf74qks%2FmOIGlidA1hiv92EYGZlFYk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;820&quot; height=&quot;436&quot; data-filename=&quot;image-20260617-084715.png&quot; data-origin-width=&quot;1818&quot; data-origin-height=&quot;967&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Power&amp;amp;Cooling&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;f23160bb36b4&quot; data-renderer-start-pos=&quot;1165&quot; data-ke-size=&quot;size16&quot;&gt;AI 데이터센터에서 가장 큰 변화 중 하나는 전력과 냉각입니다. 고성능 GPU 서버는 기존 서버보다 훨씬 높은 전력 밀도와 발열을 발생시키며, 데이터센터의 설계와 운영 기준을 새롭게 바꾸고 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;f23160bb36b4&quot; data-renderer-start-pos=&quot;1165&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;0c1c84da53aa&quot; data-renderer-start-pos=&quot;1278&quot; data-ke-size=&quot;size16&quot;&gt;AI 워크로드는 연산이 집중되는 순간 전력 사용량이 급격히 증가하고, 처리량에 따라 부하가 빠르게 변동하는 특성을 가집니다. 이로 인해 전력 품질 모니터링, 부하 분산, UPS 운영 전략은 AI 데이터센터 안정성을 좌우하는 핵심 요소가 되고 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;0c1c84da53aa&quot; data-renderer-start-pos=&quot;1278&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;9ba89d00d4e3&quot; data-renderer-start-pos=&quot;1420&quot; data-ke-size=&quot;size16&quot;&gt;냉각 방식도 변화하고 있습니다. 고밀도 GPU 랙이 늘어나면서 기존 공랭 방식만으로는 발열을 효율적으로 제어하기 어려워 Direct-to-Chip, Immersion Cooling 등 액체냉각 기술이 AI 데이터센터의 핵심 기술로 주목받고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; 관련 콘텐츠 보러가기&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-local-id=&quot;2ac520ea15b1&quot; data-renderer-start-pos=&quot;1580&quot;&gt;&lt;a href=&quot;https://tech.ktcloud.com/entry/2026-05-ktcloud-ai-datacenter-gpu-%EC%9D%B8%ED%94%84%EB%9D%BC-%EC%A0%84%ED%99%98?utm_source=chatgpt.com&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;[AI인프라] AI 데이터센터(AIDC)는 무엇이 다른가: GPU 전력과 운영 전환&lt;/a&gt;&lt;/li&gt;
&lt;li data-local-id=&quot;37bf1488d023&quot; data-renderer-start-pos=&quot;1584&quot;&gt;&lt;a href=&quot;https://tech.ktcloud.com/entry/2026-03-ktcloud-ai-infrastructure-power-%EC%95%88%EC%A0%95%EC%84%B1-%EA%B4%80%EB%A6%AC?utm_source=chatgpt.com&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;[인사이트] AI 인프라의 숨겨진 뇌관, 무효전력과 전압 안정성&lt;/a&gt;&lt;/li&gt;
&lt;li data-local-id=&quot;5b28c07aae26&quot; data-renderer-start-pos=&quot;1588&quot;&gt;&lt;a href=&quot;https://tech.ktcloud.com/entry/2026-05-ktcloud-ai-datacenter-gpu-%EC%9D%B8%ED%94%84%EB%9D%BC-%EC%A0%84%ED%99%98&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;[AI인프라] AI 데이터센터(AIDC)는 무엇이 다른가: GPU 전력과 운영 전환&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot; 답변하는-AI에서-일하는-AI로:-AI-Agent&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;1593&quot; data-local-id=&quot;39b93a8f3731&quot; data-ke-size=&quot;size20&quot;&gt; 답변하는 AI에서 일하는 AI로: AI Agent&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blog_trend_03_0612.png&quot; data-origin-width=&quot;1100&quot; data-origin-height=&quot;619&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zTGiG/dJMcagMMT0Y/yqXKSaOdDCTDkv196reLEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zTGiG/dJMcagMMT0Y/yqXKSaOdDCTDkv196reLEk/img.png&quot; data-alt=&quot;AI Agent&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zTGiG/dJMcagMMT0Y/yqXKSaOdDCTDkv196reLEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzTGiG%2FdJMcagMMT0Y%2FyqXKSaOdDCTDkv196reLEk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;849&quot; height=&quot;478&quot; data-filename=&quot;blog_trend_03_0612.png&quot; data-origin-width=&quot;1100&quot; data-origin-height=&quot;619&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;AI Agent&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;6fd5b3e7268b&quot; data-renderer-start-pos=&quot;1639&quot; data-ke-size=&quot;size16&quot;&gt;이제 AI는 단순히 질문에 답하는 도구를 넘어, 업무를 이해하고 실행을 지원하는 AI로 진화하고 있습니다. 사용자가 원하는 목표를 제시하면 AI가 필요한 정보를 찾고, 업무 맥락을 분석하며, 반복적인 작업을 자동화하는 방식입니다. 이러한 흐름을 보여주는 것이 AI Agent입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;6fd5b3e7268b&quot; data-renderer-start-pos=&quot;1639&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;396f33db64b0&quot; data-renderer-start-pos=&quot;1799&quot; data-ke-size=&quot;size16&quot;&gt;AI Agent는 정보 탐색, 판단 지원, 업무 자동화 등을 통해 기업의 업무 효율을 높이고, 일하는 방식의 변화를 이끌고 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;396f33db64b0&quot; data-renderer-start-pos=&quot;1799&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;f51aab6e43ba&quot; data-renderer-start-pos=&quot;1875&quot; data-ke-size=&quot;size16&quot;&gt;kt cloud 역시 AI Portal, AI 보안관제, AI 장애관제 등 다양한 사내 업무 영역에서 AI를 적용하고 있습니다. 이를 통해 흩어져 있던 사내 지식은 더 빠르게 검색하고, 보안 로그는 자연어 기반으로 분석하며, 장애 상황에는 보다 신속하고 정교하게 대응할 수 있는 업무 환경을 만들어가고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; 관련 콘텐츠 보러가기&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-local-id=&quot;8133cb8ec8d2&quot; data-renderer-start-pos=&quot;2070&quot;&gt;&lt;a href=&quot;https://tech.ktcloud.com/entry/2026-05-ktcloud-ai-portal-security-%EA%B8%B0%EC%88%A0-%EB%82%B4%EC%9E%AC%ED%99%94?utm_source=chatgpt.com&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;[AI활용] AI Portal부터 보안관제까지, kt cloud AI 내재화 3가지 사례&lt;/a&gt;&lt;/li&gt;
&lt;li data-local-id=&quot;f527849b055c&quot; data-renderer-start-pos=&quot;2074&quot;&gt;&lt;a href=&quot;https://tech.ktcloud.com/entry/%EA%B3%B5%EB%AA%A8%EC%A0%84-%ED%9B%84%EA%B8%B0-Dev-Agent-kt-cloud%EC%9D%98-%EC%97%85%EB%AC%B4-%EB%B0%A9%EC%8B%9D%EC%9D%84-%ED%98%81%EC%8B%A0%ED%95%98%EB%8B%A4&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;[공모전 후기] Dev Agent, kt cloud의 업무 방식을 혁신하다&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot; 범용-AI에서-산업-맞춤형-AI로:-Domain-Specific-AI&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;2079&quot; data-local-id=&quot;7d060d8bde89&quot; data-ke-size=&quot;size20&quot;&gt; 범용 AI에서 산업 맞춤형 AI로: Domain-Specific AI&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blog_trend_04_0612.png&quot; data-origin-width=&quot;1100&quot; data-origin-height=&quot;619&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nGQnJ/dJMcafUCzlH/xt2bEe5B8oAY9Fj6kLn1C1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nGQnJ/dJMcafUCzlH/xt2bEe5B8oAY9Fj6kLn1C1/img.png&quot; data-alt=&quot;Domain-Specific AI&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nGQnJ/dJMcafUCzlH/xt2bEe5B8oAY9Fj6kLn1C1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnGQnJ%2FdJMcafUCzlH%2Fxt2bEe5B8oAY9Fj6kLn1C1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1100&quot; height=&quot;619&quot; data-filename=&quot;blog_trend_04_0612.png&quot; data-origin-width=&quot;1100&quot; data-origin-height=&quot;619&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Domain-Specific AI&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;59ac1bdd4f05&quot; data-renderer-start-pos=&quot;2144&quot; data-ke-size=&quot;size16&quot;&gt;모든 산업에 동일한 범용 AI를 적용하는 방식에서 한계가 나타나고 있습니다. 금융, 공공, 제조, 의료 등 각 산업은 서로 다른 규제, 데이터 구조, 업무 절차를 가지고 있기 때문에 산업별 맥락을 반영한 맞춤형 AI가 중요해지고 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;59ac1bdd4f05&quot; data-renderer-start-pos=&quot;2144&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;3b7ac0d383ed&quot; data-renderer-start-pos=&quot;2279&quot; data-ke-size=&quot;size16&quot;&gt;이 흐름 속에서 Domain-Specific AI는 기업이 실제 업무에 AI를 적용하기 위한 접근 방식으로 주목받고 있습니다. 단순히 모델을 도입하는 것이 아니라 기업의 규정, 업무 프로세스, 보안 기준 등을 반영해 AI 서비스를 구축하는 것이 핵심입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;3b7ac0d383ed&quot; data-renderer-start-pos=&quot;2279&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;2a781327b67d&quot; data-renderer-start-pos=&quot;2424&quot; data-ke-size=&quot;size16&quot;&gt;kt cloud는 기업 맞춤형 AI 서비스를 구축하기 위해 요구사항 분석, 모델 선정, RAG* 파이프라인 구축, 안전장치 설정, 서비스 배포 및 운영 단계까지 지원하고 있습니다. 이를 통해 기업이 산업과 업무 환경에 적합한 AI 서비스를 안정적으로 구현할 수 있도록 돕고 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;2a781327b67d&quot; data-renderer-start-pos=&quot;2424&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;2a781327b67d&quot; data-renderer-start-pos=&quot;2424&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&lt;i&gt; *RAG(Retrieval-Augmented Generation): 검색 증강 생성, AI가 관련 문서 및 데이터를 검색하여 그 내용을 근거로 답변을 생성하는 기술&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;2a781327b67d&quot; data-renderer-start-pos=&quot;2424&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; 관련 콘텐츠 보러가기&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-local-id=&quot;cdefa8dfd478&quot; data-renderer-start-pos=&quot;2698&quot;&gt;&lt;a href=&quot;https://cloud.kt.com/category/?ctgryId=C000000001&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;kt cloud AI Cloud 서비스 보러가기&lt;/a&gt;&lt;/li&gt;
&lt;li data-local-id=&quot;5ba9a4913640&quot; data-renderer-start-pos=&quot;2747&quot;&gt;&lt;a href=&quot;https://tech.ktcloud.com/entry/2026-04-ktcloud-ai-foundry-%EC%84%9C%EB%B9%84%EC%8A%A4-%EA%B5%AC%EC%B6%95&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;[AI활용] kt cloud AI Foundry로 AI 서비스 구축 흐름 한 번에 살펴보기&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot; AI-확산의-다음-과제,-통제와-신뢰:-AI-보안-거버넌스&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;2752&quot; data-local-id=&quot;9eda0f23f9bd&quot; data-ke-size=&quot;size20&quot;&gt; AI 확산의 다음 과제, 통제와 신뢰: AI 보안 거버넌스&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;03_AI-보안-거버넌스.png&quot; data-origin-width=&quot;1100&quot; data-origin-height=&quot;619&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LMqee/dJMcahEPohQ/Ag8CR3EbIHqKl09DkHEye1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LMqee/dJMcahEPohQ/Ag8CR3EbIHqKl09DkHEye1/img.png&quot; data-alt=&quot;AI 보안 거버넌스&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LMqee/dJMcahEPohQ/Ag8CR3EbIHqKl09DkHEye1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLMqee%2FdJMcahEPohQ%2FAg8CR3EbIHqKl09DkHEye1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1100&quot; height=&quot;619&quot; data-filename=&quot;03_AI-보안-거버넌스.png&quot; data-origin-width=&quot;1100&quot; data-origin-height=&quot;619&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;AI 보안 거버넌스&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;6eead95495c8&quot; data-renderer-start-pos=&quot;2803&quot; data-ke-size=&quot;size16&quot;&gt;AI가 업무와 서비스에 깊숙이 들어올수록 중요한 것은 안전한 운영 체계입니다. AI가 어떤 데이터를 참고하는지, 어떤 권한으로 실행되는지, 잘못된 답변이나 민감정보 노출을 어떻게 방지할지에 대한 기준이 필요해지고 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;6eead95495c8&quot; data-renderer-start-pos=&quot;2803&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;3efe8bd950fc&quot; data-renderer-start-pos=&quot;2929&quot; data-ke-size=&quot;size16&quot;&gt;특히 기업 환경에서는 AI의 품질과 보안 관리도 중요합니다. RAG 기반 AI 서비스의 경우 근거 문서를 어떻게 선별하고, 민감정보를 어떻게 보호하며, 환각을 어떻게 줄일지가 실제 서비스 신뢰도를 좌우합니다. AI Agent가 외부 시스템과 연동되는 경우에는 권한 관리와 실행 이력 관리 또한 중요한 과제가 됩니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;3efe8bd950fc&quot; data-renderer-start-pos=&quot;2929&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;50042c4bf3dc&quot; data-renderer-start-pos=&quot;3107&quot; data-ke-size=&quot;size16&quot;&gt;AI 보안 거버넌스의 핵심은 AI를 더 많이 활용하는 것에 그치지 않고, 신뢰할 수 있는 기준과 통제 체계 안에서 안정적으로 운영하는 데 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; 관련 콘텐츠 보러가기&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-local-id=&quot;ccdbbd55f498&quot; data-renderer-start-pos=&quot;3210&quot;&gt;&lt;a href=&quot;https://tech.ktcloud.com/entry/2026-03-ktcloud-eu-ai-act-%EA%B1%B0%EB%B2%84%EB%84%8C%EC%8A%A4-%EB%8C%80%EC%9D%91&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;[인사이트] EU AI Act 2026년 발효, 한국 기업의 AI 거버넌스 대응 전략&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot; ️데이터와-인프라-통제권의-재부상:-Sovereign-Cloud&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;3215&quot; data-local-id=&quot;715a8377b181&quot; data-ke-size=&quot;size20&quot;&gt; ️데이터와 인프라 통제권의 재부상: Sovereign Cloud&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;04_sovereign-cloud.png&quot; data-origin-width=&quot;1100&quot; data-origin-height=&quot;619&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnNpcn/dJMcaaZ2ak9/WSf5r5UvKsQZPqRAAta0h0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnNpcn/dJMcaaZ2ak9/WSf5r5UvKsQZPqRAAta0h0/img.png&quot; data-alt=&quot;Sovereign Cloud&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnNpcn/dJMcaaZ2ak9/WSf5r5UvKsQZPqRAAta0h0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnNpcn%2FdJMcaaZ2ak9%2FWSf5r5UvKsQZPqRAAta0h0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1100&quot; height=&quot;619&quot; data-filename=&quot;04_sovereign-cloud.png&quot; data-origin-width=&quot;1100&quot; data-origin-height=&quot;619&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Sovereign Cloud&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;05edbe063d02&quot; data-renderer-start-pos=&quot;3274&quot; data-ke-size=&quot;size16&quot;&gt;AI와 클라우드가 국가와 기업의 핵심 인프라로 부상하면서 데이터와 인프라를 '누가 통제하는지'가 화두가 되었습니다. 특히 공공, 금융, 통신 등 규제 산업에서는 데이터가 어디에 저장되고, 어떤 기준으로 운영되며, 누가 접근 권한을 가지는지가 클라우드 선택의 중요한 기준이 됩니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;05edbe063d02&quot; data-renderer-start-pos=&quot;3274&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;54310032e1e1&quot; data-renderer-start-pos=&quot;3432&quot; data-ke-size=&quot;size16&quot;&gt;이러한 흐름은 Sovereign Cloud, 즉 기술 및 데이터 주권 논의와 직결됩니다. kt cloud는 E2E(End-to-End) AI 플랫폼인 AI Foundry 공공 상품과 차세대 클라우드 PLATFORM에 대해 CSAP를 획득하며 공공&amp;middot;규제 산업이 요구하는 엄격한 보안 기준을 충족했습니다. AI 서비스부터 플랫폼 단계까지 인증 기반 환경을 확대함으로써, 데이터 통제권과 국내 규제 대응 역량을 확보해가고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; 관련 콘텐츠 보러가기&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-local-id=&quot;8149dc48f9cd&quot; data-renderer-start-pos=&quot;3693&quot;&gt;&lt;a href=&quot;https://www.ktcloud.com/media/press/20260421091412559?lan=kor&amp;amp;source=undefined&amp;amp;utm_source=chatgpt.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AI Foundry 공공 CSAP 인증 획득&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li data-local-id=&quot;5b6494a701ba&quot; data-renderer-start-pos=&quot;3716&quot;&gt;&lt;a href=&quot;https://www.ktcloud.com/media/press/20260330091906363?lan=kor&amp;amp;source=&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;kt cloud PLATFORM CSAP 인증 획득&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;⚙️AI-성능을-극대화하는-인프라-체질-개선:-Cloud-Modernization-&amp;amp;-CloudOps&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;3739&quot; data-local-id=&quot;f059b66eda6f&quot; data-ke-size=&quot;size20&quot;&gt;⚙️AI 성능을 극대화하는 인프라 체질 개선: Cloud Modernization &amp;amp; CloudOps&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;div style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-media-vc-wrapper=&quot;true&quot; data-renderer-start-pos=&quot;3797&quot; data-vc=&quot;media-single&quot; data-node-type=&quot;mediaSingle&quot; data-width-type=&quot;pixel&quot; data-width=&quot;764&quot; data-layout=&quot;wide&quot;&gt;
&lt;div&gt;
&lt;div data-local-id=&quot;c218359f0f06&quot; data-renderer-start-pos=&quot;3798&quot; data-alt=&quot;05_cloud-modernization.png&quot; data-file-mime-type=&quot;&quot; data-file-size=&quot;1&quot; data-file-name=&quot;file&quot; data-collection=&quot;contentId-2076476378&quot; data-id=&quot;d432a136-6a17-491d-85ff-00ba92fd92e6&quot; data-height=&quot;619&quot; data-width=&quot;1100&quot; data-node-type=&quot;media&quot; data-type=&quot;file&quot; data-context-id=&quot;2076476378&quot;&gt;
&lt;div id=&quot;newFileExperienceWrapper&quot; data-media-vc-wrapper=&quot;true&quot; data-testid=&quot;media-card-view&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;05_cloud-modernization.png&quot; data-origin-width=&quot;1100&quot; data-origin-height=&quot;619&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c4qFzk/dJMcaiqen7M/yWHNkKHKwHjsDZwkkO2ypk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c4qFzk/dJMcaiqen7M/yWHNkKHKwHjsDZwkkO2ypk/img.png&quot; data-alt=&quot;Cloud Modernization &amp;amp;amp; CloudOps&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c4qFzk/dJMcaiqen7M/yWHNkKHKwHjsDZwkkO2ypk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc4qFzk%2FdJMcaiqen7M%2FyWHNkKHKwHjsDZwkkO2ypk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1100&quot; height=&quot;619&quot; data-filename=&quot;05_cloud-modernization.png&quot; data-origin-width=&quot;1100&quot; data-origin-height=&quot;619&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Cloud Modernization &amp;amp; CloudOps&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;efdf4ced95d7&quot; data-renderer-start-pos=&quot;3832&quot; data-ke-size=&quot;size16&quot;&gt;이제 단순히 기존 서버를 클라우드로 옮기는 리프트 앤 시프트(Lift &amp;amp; Shift)* 방식만으로는 AI 모델이 요구하는 대규모 데이터 처리와 실시간 트래픽 변화에 유연하게 대응하기 어려워지고 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;efdf4ced95d7&quot; data-renderer-start-pos=&quot;3832&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;176b7d806a42&quot; data-renderer-start-pos=&quot;3947&quot; data-ke-size=&quot;size16&quot;&gt;이러한 한계를 극복하기 위해 기업들은 기존 인프라와 애플리케이션을 컨테이너와 마이크로서비스 아키텍처(MSA)** 기반으로 완전히 전환하는 클라우드 현대화(Cloud Modernization)에 주목하고 있습니다. 동시에 대규모 트래픽 환경에서도 인프라 운영을 자동화하여 중단 없는 서비스를 제공하는 클라우드 운영 최적화(CloudOps)의 중요성도 커지고 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;176b7d806a42&quot; data-renderer-start-pos=&quot;3947&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;7d30b5d787db&quot; data-renderer-start-pos=&quot;4153&quot; data-ke-size=&quot;size16&quot;&gt;kt cloud 역시 AI 워크로드와 대규모 트래픽을 안정적으로 수용할 수 있도록, 클라우드 플랫폼 아키텍처 재설계와 고가용성 멀티 AZ(Multi-AZ) 인프라 구축을 추진해 왔습니다. 결국 잘 구축된 AI 서비스의 완성도는 이를 뒷받침하는 클라우드 아키텍처의 유연성과 안정적인 운영 체력에서 결정되기 때문입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;ed875ba346f4&quot; data-renderer-start-pos=&quot;4331&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-media-vc-wrapper=&quot;true&quot; data-testid=&quot;media-card-view&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&lt;i&gt;*리프트 앤 시프트((Lift &amp;amp; Shift): 기존 시스템 구조를 크게 변경하지 않고 클라우드 환경으로 이전하는 방식&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-media-vc-wrapper=&quot;true&quot; data-testid=&quot;media-card-view&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&lt;i&gt;**마이크로서비스 아키텍처(Microservices Architecture, MSA): 하나의 큰 시스템을 여러개 작은 서비스로 나누어 개발 및 운영하는 방식&lt;/i&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; 관련 콘텐츠 보러가기&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-local-id=&quot;21a773673e4e&quot; data-renderer-start-pos=&quot;4510&quot;&gt;&lt;a href=&quot;https://tech.ktcloud.com/entry/2026-04-ktcloud-platform-redesign-%ED%94%8C%EB%9E%AB%ED%8F%BC-%EC%9E%AC%EC%84%A4%EA%B3%84&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;[기술이 장르가 되는 곳, kt cloud] 케클러 인터뷰 시리즈 #1 kt cloud PLATFORM 재설계 이야기&lt;/a&gt;&lt;/li&gt;
&lt;li data-local-id=&quot;5071bb26bf84&quot; data-renderer-start-pos=&quot;4514&quot;&gt;&lt;a href=&quot;https://tech.ktcloud.com/entry/2026-05-ktcloud-platform-multi-az-%EB%8B%A4%EC%A4%91-%EA%B0%80%EC%9A%A9-%EC%98%81%EC%97%AD&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;[기술이 장르가 되는 곳, kt cloud] 케클러 인터뷰 시리즈 #2 장애에도 서비스가 멈추지 않는 &amp;lsquo;Multi-AZ&amp;rsquo; 엔지니어링 비하인드&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;h4 id=&quot; AI시대,-클라우드-비용을-효율적으로-관리한다:-FinOps&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;4519&quot; data-local-id=&quot;cdec7af20c1e&quot; data-ke-size=&quot;size20&quot;&gt; AI시대, 클라우드 비용을 효율적으로 관리한다: FinOps&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;06_FinOps.png&quot; data-origin-width=&quot;1100&quot; data-origin-height=&quot;619&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGx11d/dJMcaaThFgl/gkUzCGuvuf0w17CdQUPj9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGx11d/dJMcaaThFgl/gkUzCGuvuf0w17CdQUPj9k/img.png&quot; data-alt=&quot;FinOps&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGx11d/dJMcaaThFgl/gkUzCGuvuf0w17CdQUPj9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGx11d%2FdJMcaaThFgl%2FgkUzCGuvuf0w17CdQUPj9k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1100&quot; height=&quot;619&quot; data-filename=&quot;06_FinOps.png&quot; data-origin-width=&quot;1100&quot; data-origin-height=&quot;619&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;FinOps&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;8cdfaa852153&quot; data-renderer-start-pos=&quot;4567&quot; data-ke-size=&quot;size16&quot;&gt;클라우드가 보편화되면서 비용 관리(FinOps)의 범위도 빠르게 달라지고 있습니다. 과거에는 미사용 인프라를 끄거나 가상머신(VM) 사이즈를 최적화하는 수준이었다면, 이제는 GPU 인프라 비용, 토큰 비용, API 호출 비용, RAG 파이프라인 운영 비용까지 종합적으로 관리해야 하는 시대가 왔습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;8cdfaa852153&quot; data-renderer-start-pos=&quot;4567&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;bbe7f8e954d0&quot; data-renderer-start-pos=&quot;4737&quot; data-ke-size=&quot;size16&quot;&gt;비용 효율은 AI 서비스의 성패를 가르는 핵심 지표입니다. 예를 들어 RAG 기반 서비스를 운영할 때 컨텍스트 구성, 검색 결과 선별, 중복 제거, 재순위화(Rerank)* 등의 최적화가 중요합니다. 이는 답변 품질을 높이는 동시에 불필요한 토큰 사용과 연산 비용, API 호출 비용을 줄이는 데 기여할 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;bbe7f8e954d0&quot; data-renderer-start-pos=&quot;4737&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;0b86bc8699d3&quot; data-renderer-start-pos=&quot;4916&quot; data-ke-size=&quot;size16&quot;&gt;이제 FinOps는 단순한 '비용 절감'이 아닌, 기술 투자 효율성(ROI)** 개선으로 이어지고 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;c4278f347317&quot; data-renderer-start-pos=&quot;4978&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&lt;i&gt;*재순위화(Rerank): 검색 문서나 데이터를 질문과의 관련성 기준으로 다시 정렬하여 AI가 더 정확하게 답변할 수 있도록 돕는 기술&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&lt;i&gt;**기술 투자 효율성(ROI): 투자 성과로 얻은 성과/투입한 비용, 투자한 비용 대비 얼마나 효과 및 수익을 냈는지 보는 지표&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; 관련 콘텐츠 보러가기&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-local-id=&quot;1b4dc527949e&quot; data-renderer-start-pos=&quot;5149&quot;&gt;&lt;a href=&quot;https://tech.ktcloud.com/entry/2026-04-ktcloud-ai-rag-%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94?utm_source=chatgpt.com&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;[활용가이드] kt cloud AI RAG(검색 증강 생성) 활용법 &amp;ndash; 컨텍스트 최적화로 성능 높이기&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;2d1d1a931675&quot; data-renderer-start-pos=&quot;5154&quot; data-ke-size=&quot;size16&quot;&gt;AI 경쟁은 이제 모델 성능만의 문제가 아닙니다. AI를 안정적으로 구동하고, 실제 업무에 적용하며, 서비스로 확장할 수 있는 인프라 경쟁으로 이어지고 있습니다. 이에 따라 데이터센터는 대규모 AI 워크로드를 안정적으로 처리하는 기반 인프라로, 클라우드는 AI 서비스를 빠르고 유연하게 개발&amp;middot;운영하는 플랫폼으로 그 중요성이 더욱 커지고 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;2d1d1a931675&quot; data-renderer-start-pos=&quot;5154&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;00ec5a6f3a09&quot; data-renderer-start-pos=&quot;5349&quot; data-ke-size=&quot;size16&quot;&gt;앞으로 기업의 경쟁력은 AI를 얼마나 빠르게 도입하느냐만으로 결정되지 않을 것입니다. AI를 안정적으로 구동할 수 있는 데이터센터 인프라, 업무 환경에 맞게 확장할 수 있는 클라우드 아키텍처, 그리고 신뢰할 수 있는 AI 운영 체계를 함께 갖추는 것이 더 중요한 경쟁력의 기준이 될 것입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;00ec5a6f3a09&quot; data-renderer-start-pos=&quot;5349&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;3de337f7adbb&quot; data-renderer-start-pos=&quot;5514&quot; data-ke-size=&quot;size16&quot;&gt;kt cloud는 축적된 데이터센터 운영 역량과 클라우드 아키텍처 노하우를 바탕으로, 고객이 AI 시대의 인프라 변화를 비즈니스 성장의 기회로 전환할 수 있도록 함께하겠습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;3de337f7adbb&quot; data-renderer-start-pos=&quot;5514&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- CTA (블루 버전, GA4 공통 스크립트용 figure + data-event) --&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; style=&quot;max-width: 600px; margin: 0 auto 40px auto;&quot; data-event=&quot;go_cloud_banner_click&quot; data-name=&quot;cta_platform_banner&quot; data-loc=&quot;body_mid&quot;&gt;&lt;a href=&quot;https://cloud.kt.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 100%; height: auto; border-radius: 8px; display: block;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt%20cloud%20platform.png&quot; alt=&quot;kt cloud 플랫폼 바로가기&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- ================= FAQ 섹션 (그린 버전, 블루 스타일을 그린 톤으로) ================= --&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- ================= 관련/출처 섹션 (그린 박스 버전) ================= --&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 15px; font-weight: bold; color: #000000; font-family: 'Noto Sans KR', sans-serif;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- 포스터 이미지 3개 한 줄 배치 (가운데 정렬 + 링크 추가) --&gt;&lt;/p&gt;
&lt;div&gt;
&lt;style&gt;  /* 모바일에서 포스터 크기 줄이기 */  @media (max-width: 480px) {    .poster-figure {      max-width: 30% !important;  /* 한 줄에 3개 들어오도록 */      flex: 0 0 30% !important;    }    .poster-figure img {      width: 100% !important;      height: auto !important;    }  }&lt;/style&gt;
&lt;/div&gt;
&lt;div style=&quot;display: flex; justify-content: center; align-items: flex-start; gap: 15px; margin: 30px auto; flex-wrap: wrap; text-align: center;&quot;&gt;&lt;!-- 1번 배너: 클라우드 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;cloud_industry_poster_click&quot; data-name=&quot;cloud_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://cloud.kt.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud1.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;!-- 2번 배너: 데이터센터 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;datacenter_industry_poster_click&quot; data-name=&quot;datacenter_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://www.kt-idc.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud2.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;!-- 3번 배너: AI 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;ai_industry_poster_click&quot; data-name=&quot;ai_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://cloud.kt.com/category/?ctgryId=C000000001&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud3.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;/div&gt;</description>
      <category>Tech Story/etc.</category>
      <category>KTCloud</category>
      <author>kt cloud 기술 블로그</author>
      <guid isPermaLink="true">https://tech.ktcloud.com/456</guid>
      <comments>https://tech.ktcloud.com/entry/2026-07-ktcloud-trendreport#entry456comment</comments>
      <pubDate>Mon, 22 Jun 2026 18:56:47 +0900</pubDate>
    </item>
    <item>
      <title>[kt cloud 웨비나] 중단 없는 운영을 위한 클라우드</title>
      <link>https://tech.ktcloud.com/entry/2026-07-ktcloud-webinar</link>
      <description>&lt;article style=&quot;font-family: 'Noto Sans KR', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; max-width: 100%; margin: 0 auto; line-height: 1.7; color: #2c3e50; background: #ffffff;&quot;&gt;&lt;/article&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;margin: 15px 0 10px 0;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87; background: #f0fffe; padding: 4px 10px; border-radius: 12px; border: 1px solid #d4eeeb; display: inline-flex; align-items: center; gap: 5px; font-weight: bold; font-size: 0.9em;&quot;&gt;&lt;span style=&quot;font-size: 0.8em;&quot;&gt; &lt;/span&gt;요약&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이번&amp;nbsp;kt&amp;nbsp;cloud&amp;nbsp;웨비나에서는&amp;nbsp;공공&amp;middot;엔터프라이즈&amp;nbsp;환경의&amp;nbsp;실제&amp;nbsp;사례를&amp;nbsp;기반으로,&lt;br /&gt;고가용성(HA)&amp;nbsp;및&amp;nbsp;DR&amp;nbsp;구성&amp;nbsp;전략,&amp;nbsp;그리고&amp;nbsp;Multi-AZ&amp;nbsp;기반의&amp;nbsp;안정적인&amp;nbsp;플랫폼&amp;nbsp;운영&amp;nbsp;체계를&amp;nbsp;공유합니다.&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요.&amp;nbsp;kt&amp;nbsp;cloud&amp;nbsp;마케팅커뮤니케이션팀입니다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;AI&amp;middot;클라우드&amp;nbsp;환경에서는&amp;nbsp;장애&amp;nbsp;대응보다&amp;nbsp;&amp;lsquo;중단되지&amp;nbsp;않는&amp;nbsp;구조&amp;rsquo;를&amp;nbsp;설계하는&amp;nbsp;역량이&amp;nbsp;더욱&amp;nbsp;중요해지고&amp;nbsp;있습니다.&amp;nbsp;&lt;br /&gt;특히&amp;nbsp;시스템이&amp;nbsp;복잡해질수록&amp;nbsp;장애&amp;nbsp;대응에&amp;nbsp;대한&amp;nbsp;실무진의&amp;nbsp;부담은&amp;nbsp;커지고,서비스&amp;nbsp;중단에&amp;nbsp;대한&amp;nbsp;조직의&amp;nbsp;리스크&amp;nbsp;역시&amp;nbsp;높아질&amp;nbsp;수&amp;nbsp;밖에&amp;nbsp;없습니다.&lt;br /&gt;&lt;br /&gt;이러한&amp;nbsp;고민을&amp;nbsp;해결하기&amp;nbsp;위해,&amp;nbsp;kt&amp;nbsp;cloud가&amp;nbsp;오는&lt;b&gt;&amp;nbsp;7월&amp;nbsp;7일(화)&amp;nbsp;오후&amp;nbsp;2시&lt;/b&gt;부터&amp;nbsp;온라인&amp;nbsp;세미나를&amp;nbsp;통해&amp;nbsp;안정적인&amp;nbsp;서비스&amp;nbsp;운영을&amp;nbsp;위한&amp;nbsp;클라우드&amp;nbsp;아키텍처&amp;nbsp;방향을&amp;nbsp;소개합니다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;본&amp;nbsp;세미나에서는&amp;nbsp;공공&amp;middot;엔터프라이즈&amp;nbsp;환경의&amp;nbsp;실제&amp;nbsp;사례를&amp;nbsp;기반으로&amp;nbsp;고가용성(HA)&amp;nbsp;및&amp;nbsp;DR&amp;nbsp;구성&amp;nbsp;전략,&amp;nbsp;그리고&amp;nbsp;Multi-AZ&amp;nbsp;기반의&amp;nbsp;안정적인&amp;nbsp;플랫폼&amp;nbsp;운영&amp;nbsp;방안을&amp;nbsp;상세히&amp;nbsp;공유할&amp;nbsp;예정입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2879&quot; data-origin-height=&quot;1658&quot;&gt;&lt;a href=&quot;https://ktcloud.webinow.kr/always-on-cloud/registration&quot; target=&quot;_blank&quot; title=&quot;[kt cloud 웨비나] 중단 없는 운영을 위한 클라우드&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGYAq9/dJMcabEzGe2/l1Y9YyJBzuQPEJKbSJ3VaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGYAq9%2FdJMcabEzGe2%2Fl1Y9YyJBzuQPEJKbSJ3VaK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[kt cloud 웨비나] 중단 없는 운영을 위한 클라우드&quot; loading=&quot;lazy&quot; width=&quot;2879&quot; height=&quot;1658&quot; data-origin-width=&quot;2879&quot; data-origin-height=&quot;1658&quot;/&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;7월 웨비나 하이라이트 &lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1️⃣ AI&amp;middot;AX&amp;nbsp;시대,&amp;nbsp;'단순&amp;nbsp;백업'의&amp;nbsp;한계와&amp;nbsp;진짜&amp;nbsp;재해복구(DR)의&amp;nbsp;조건&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2️⃣ '정부의&amp;nbsp;'DR&amp;nbsp;의무화',&amp;nbsp;실무자를&amp;nbsp;위한&amp;nbsp;컴플라이언스&amp;nbsp;대응&amp;nbsp;가이드&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;3️⃣&amp;nbsp;'Multi-AZ&amp;nbsp;&amp;amp;&amp;nbsp;Active-Active'&amp;nbsp;무중단&amp;nbsp;아키텍처의&amp;nbsp;실체&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style6&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;이번 웨비나, 이런 분들이 들으면 좋아요  &lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1️⃣ 국내&amp;nbsp;클라우드&amp;nbsp;환경에서&amp;nbsp;글로벌&amp;nbsp;수준의&amp;nbsp;아키텍처를&amp;nbsp;구현하고&amp;nbsp;싶은&amp;nbsp;분&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2️⃣ 변화하는&amp;nbsp;DR&amp;nbsp;정책&amp;nbsp;및&amp;nbsp;기준에&amp;nbsp;대비하고&amp;nbsp;싶으신&amp;nbsp;분&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;3️⃣ 장애&amp;nbsp;모니터링부터&amp;nbsp;가용성&amp;nbsp;제어까지&amp;nbsp;수동&amp;nbsp;관제&amp;nbsp;체계의&amp;nbsp;한계를&amp;nbsp;느끼고&amp;nbsp;계신&amp;nbsp;분&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3838&quot; data-origin-height=&quot;2714&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xpmPb/dJMcaiDI0nT/lvdrIiR5yMMYHC5oDmkhyk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xpmPb/dJMcaiDI0nT/lvdrIiR5yMMYHC5oDmkhyk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xpmPb/dJMcaiDI0nT/lvdrIiR5yMMYHC5oDmkhyk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxpmPb%2FdJMcaiDI0nT%2FlvdrIiR5yMMYHC5oDmkhyk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[kt cloud 웨비나] 중단 없는 운영을 위한 클라우드&quot; loading=&quot;lazy&quot; width=&quot;3838&quot; height=&quot;2714&quot; data-origin-width=&quot;3838&quot; data-origin-height=&quot;2714&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;놓치지&amp;nbsp;마세요!&amp;nbsp;웨비나&amp;nbsp;특별&amp;nbsp;이벤트&amp;nbsp; &lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;사전등록 후 웨비나에 참석해주신 분들 중 선착순 &lt;u&gt;&lt;b&gt;50분께&lt;/b&gt;&lt;/u&gt; CU 모바일 상품권을,&lt;br /&gt;웨비나 진행 중 좋은 질문을 남겨주신 분들 중 추첨을 통해 &lt;u&gt;&lt;b&gt;10분께&lt;/b&gt;&lt;/u&gt; 배달의 민족 상품권을,&amp;nbsp;&lt;br /&gt;웨비나&amp;nbsp;종료&amp;nbsp;후&amp;nbsp;설문에&amp;nbsp;소중한&amp;nbsp;의견을&amp;nbsp;남겨주신&amp;nbsp;분들&amp;nbsp;중&amp;nbsp;추첨을&amp;nbsp;통해&amp;nbsp;&lt;u&gt;&lt;b&gt;10분께&lt;/b&gt;&lt;/u&gt;&amp;nbsp;도미노&amp;nbsp;피자&amp;nbsp;상품권을&amp;nbsp;드립니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3836&quot; data-origin-height=&quot;2092&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dBj4Ej/dJMcaiDI0nY/qB9Q7d3aS6kqwbKjwaXiZ0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dBj4Ej/dJMcaiDI0nY/qB9Q7d3aS6kqwbKjwaXiZ0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dBj4Ej/dJMcaiDI0nY/qB9Q7d3aS6kqwbKjwaXiZ0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdBj4Ej%2FdJMcaiDI0nY%2FqB9Q7d3aS6kqwbKjwaXiZ0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[kt cloud 웨비나] 중단 없는 운영을 위한 클라우드&quot; loading=&quot;lazy&quot; width=&quot;3836&quot; height=&quot;2092&quot; data-origin-width=&quot;3836&quot; data-origin-height=&quot;2092&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;지금 바로 사전등록하시고, 밤샘 대응과 긴급 장애 공지에서 자유로워지는 법을 확인해 보세요.&lt;br /&gt;서비스&amp;nbsp;연속성을&amp;nbsp;확보하는&amp;nbsp;kt&amp;nbsp;cloud의&amp;nbsp;실제&amp;nbsp;운영&amp;nbsp;구조와&amp;nbsp;DR&amp;nbsp;운영&amp;nbsp;방향을&amp;nbsp;가장&amp;nbsp;먼저&amp;nbsp;소개해&amp;nbsp;드립니다. &lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2877&quot; data-origin-height=&quot;480&quot;&gt;&lt;a href=&quot;https://ktcloud.webinow.kr/always-on-cloud/registration&quot; target=&quot;_blank&quot; title=&quot;[kt cloud 웨비나] 중단 없는 운영을 위한 클라우드&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9Wy8E/dJMcabLq2kS/dEdkpdJJjVhwDqnymQk5O0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9Wy8E%2FdJMcabLq2kS%2FdEdkpdJJjVhwDqnymQk5O0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[kt cloud 웨비나] 중단 없는 운영을 위한 클라우드&quot; loading=&quot;lazy&quot; width=&quot;2877&quot; height=&quot;480&quot; data-origin-width=&quot;2877&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- CTA (블루 버전, GA4 공통 스크립트용 figure + data-event) --&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;image&quot; data-ke-style=&quot;alignCenter&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; data-link=&quot;https://ktcloud.webinow.kr/always-on-cloud/registration&quot; data-link-islinknewwindow=&quot;true&quot;&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- ================= FAQ 섹션 (그린 버전, 블루 스타일을 그린 톤으로) ================= --&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #009a87; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;b&gt;❓ 자주 묻는 질문 (FAQ)&lt;/b&gt; &lt;/span&gt;&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #E6F8F4; border-bottom: 1px solid #CDEDE7;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87;&quot;&gt; &lt;b&gt;Q. 전통적인&amp;nbsp;인프라&amp;nbsp;백업&amp;nbsp;방식과&amp;nbsp;클라우드&amp;nbsp;네이티브&amp;nbsp;환경의&amp;nbsp;무중단&amp;nbsp;아키텍처는&amp;nbsp;무엇이&amp;nbsp;다른가요?&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #ffffff;&quot;&gt;마이크로서비스(MSA)와 AI 기술 도입으로 시스템이 고도화된 현대 IT 환경에서는 새벽에 데이터를 받아두는 전통적인 백업만으로는 실제 장애 발생 시 빠른 서비스 복구가 어렵습니다. 그렇다면&amp;nbsp;장애&amp;nbsp;상황에서도&amp;nbsp;멈추지&amp;nbsp;않는&amp;nbsp;'Always-On&amp;nbsp;아키텍처'의&amp;nbsp;실체는&amp;nbsp;무엇일까요?&amp;nbsp;이번&amp;nbsp;kt&amp;nbsp;cloud&amp;nbsp;웨비나에서&amp;nbsp;단순&amp;nbsp;백업을&amp;nbsp;넘어&amp;nbsp;플랫폼&amp;nbsp;관점에서&amp;nbsp;상시&amp;nbsp;가용성을&amp;nbsp;확보하는&amp;nbsp;핵심&amp;nbsp;설계&amp;nbsp;메커니즘을&amp;nbsp;공개합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- ================= 관련/출처 섹션 (그린 박스 버전) ================= --&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- 포스터 이미지 3개 한 줄 배치 (가운데 정렬 + 링크 추가) --&gt;&lt;/p&gt;
&lt;div&gt;
&lt;style&gt;  /* 모바일에서 포스터 크기 줄이기 */  @media (max-width: 480px) {    .poster-figure {      max-width: 30% !important;  /* 한 줄에 3개 들어오도록 */      flex: 0 0 30% !important;    }    .poster-figure img {      width: 100% !important;      height: auto !important;    }  }&lt;/style&gt;
&lt;/div&gt;
&lt;div style=&quot;display: flex; justify-content: center; align-items: flex-start; gap: 15px; margin: 30px auto; flex-wrap: wrap; text-align: center;&quot;&gt;&lt;!-- 1번 배너: 클라우드 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;cloud_industry_poster_click&quot; data-name=&quot;cloud_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://cloud.kt.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud1.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;!-- 2번 배너: 데이터센터 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;datacenter_industry_poster_click&quot; data-name=&quot;datacenter_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://www.kt-idc.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud2.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;!-- 3번 배너: AI 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;ai_industry_poster_click&quot; data-name=&quot;ai_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://cloud.kt.com/category/?ctgryId=C000000001&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud3.png&quot; alt=&quot;kt cloud&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;/div&gt;</description>
      <category>kt cloud Story/Webinar</category>
      <category>AI</category>
      <category>ai인프라</category>
      <category>ax</category>
      <category>DR</category>
      <category>KT Cloud</category>
      <category>ktcloudPLATFORM</category>
      <category>온라인세미나</category>
      <category>웨비나</category>
      <category>재해복구</category>
      <category>클라우드</category>
      <author>kt cloud 기술 블로그</author>
      <guid isPermaLink="true">https://tech.ktcloud.com/455</guid>
      <comments>https://tech.ktcloud.com/entry/2026-07-ktcloud-webinar#entry455comment</comments>
      <pubDate>Wed, 17 Jun 2026 17:07:39 +0900</pubDate>
    </item>
    <item>
      <title>[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 : 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술</title>
      <link>https://tech.ktcloud.com/entry/2026-06-ktcloud-ai-rag-reranking-%EA%B2%80%EC%83%89-%EA%B3%A0%EB%8F%84%ED%99%94</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 티스토리용 시맨틱 HTML 기술 블로그 템플릿 (개선된 UI) --&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;article style=&quot;font-family: 'Noto Sans KR', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; max-width: 100%; margin: 0 auto; line-height: 1.7; color: #2c3e50; background: #ffffff;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 메타데이터 섹션 --&gt; &lt;/span&gt;&lt;header style=&quot;background: linear-gradient(135deg, #009a87 0%, #00b39f 100%); color: white; padding: 20px 25px; text-align: right; font-weight: 600; border-radius: 15px; margin-bottom: 35px; box-shadow: 0 8px 25px rgba(0, 154, 135, 0.15); position: relative; overflow: hidden;&quot;&gt;
&lt;div style=&quot;position: absolute; top: -50%; right: -10%; width: 200px; height: 200px; background: rgba(255,255,255,0.1); border-radius: 50%; transform: rotate(45deg);&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;position: relative; z-index: 2;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;b&gt; &lt;span style=&quot;font-size: 1.1rem; text-shadow: rgba(0, 0, 0, 0.1) 0px 2px 4px;&quot;&gt; [ kt cloud 마케팅커뮤니케이션팀 김지웅 님 ] &lt;/span&gt; &lt;/b&gt; &lt;/span&gt;&lt;/div&gt;
&lt;/header&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 콘텐츠 구조 및 메타데이터 표준화 적용 --&gt; &lt;/span&gt;
&lt;article&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 작성자 정보 (시맨틱 헤더) --&gt; &lt;/span&gt;&lt;header style=&quot;margin: 20px 0;&quot;&gt;
&lt;section style=&quot;margin: 25px 0;&quot;&gt;&lt;header&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 요약 섹션 헤더 - 초미니멀 디자인 --&gt; &lt;/span&gt;
&lt;h4 style=&quot;margin: 15px 0 10px 0;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87; background: #f0fffe; padding: 4px 10px; border-radius: 12px; border: 1px solid #d4eeeb; display: inline-flex; align-items: center; gap: 5px; font-weight: bold; font-size: 0.9em;&quot;&gt; &lt;span style=&quot;font-size: 0.8em;&quot;&gt; &lt;/span&gt; 요약 &lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;이 글에서는 RAG 시스템의 검색 고도화와 리랭킹을 활용한 실무형 검색 파이프라인 설계를 다룹니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;정확한 근거 문서 확보가 답변 품질과 운영 안정성을 좌우한다는 점을 정리합니다.&lt;/span&gt;&lt;/p&gt;
&lt;/header&gt;&lt;/section&gt;
&lt;/header&gt;&lt;/article&gt;
&lt;/article&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;#RAG&amp;nbsp;#검색고도화&amp;nbsp;#하이브리드검색&amp;nbsp;#리랭킹&amp;nbsp;#AdaptiveRetrieval&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;들어가며 &quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;964&quot; data-local-id=&quot;5bd7d31447ca&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;들어가며 &lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock floatRight&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (2).png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d6K4dD/dJMcafGThim/LZXzw7klKZ6PtPwUhHKyOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d6K4dD/dJMcafGThim/LZXzw7klKZ6PtPwUhHKyOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d6K4dD/dJMcafGThim/LZXzw7klKZ6PtPwUhHKyOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd6K4dD%2FdJMcafGThim%2FLZXzw7klKZ6PtPwUhHKyOK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 : 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술&quot; loading=&quot;lazy&quot; width=&quot;350&quot; height=&quot;1080&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (2).png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;de1fddc76af0&quot; data-renderer-start-pos=&quot;975&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요! &lt;b&gt;kt cloud 테크 마케터 김지웅&lt;/b&gt;입니다.  &amp;zwj;♂️&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;de1fddc76af0&quot; data-renderer-start-pos=&quot;975&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;7271b76e7c2e&quot; data-renderer-start-pos=&quot;1013&quot; data-ke-size=&quot;size16&quot;&gt;지난 1~4편의 연재를 통해 문서를 벡터로 변환하고 빠르게 찾아내는 RAG의 기반 기술들을 차근차근 살펴봤죠. 그런데 그동안의 이야기에는 한 가지 숨은 전제가 있었어요. 바로 &lt;b&gt;&amp;lsquo;인덱싱과 검색 방식이 한 번 정해지면 변하지 않는다&amp;rsquo;는 정적인 환경&lt;/b&gt;을 가정했다는 점입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;7271b76e7c2e&quot; data-renderer-start-pos=&quot;1013&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;f27bd1a267a6&quot; data-renderer-start-pos=&quot;1165&quot; data-ke-size=&quot;size16&quot;&gt;하지만 현업에서 직접 AI 서비스를 운영해 보신 분들이라면, &lt;b&gt;실제 프로덕션 환경에서는 이 공식이 전혀 통하지 않는다&lt;/b&gt;는 걸 잘 아실 거예요. 예를 들어, 한 클라우드 엔지니어가 이런 질문을 던졌다고 가정해 볼까요?&lt;/p&gt;
&lt;blockquote data-local-id=&quot;6d165ab8d47f&quot; data-ke-style=&quot;style2&quot;&gt;
&lt;p data-local-id=&quot;53ecc479005b&quot; data-renderer-start-pos=&quot;1286&quot; data-ke-size=&quot;size16&quot;&gt;지난 3분기 멀티 리전 환경에 액침 냉각 시스템을 도입한 이후, 특정 데이터센터의 전력효율지수(PUE)가 전년 대비 악화된 원인이 뭐야?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;bb6ed5b2756c&quot; data-renderer-start-pos=&quot;1365&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;bb6ed5b2756c&quot; data-renderer-start-pos=&quot;1365&quot; data-ke-size=&quot;size16&quot;&gt;이 질문 안에는 특정 시점과 수치, 그리고 복잡한 인과 관계가 촘촘하게 얽혀 있죠. 이런 복합적인 질문은 단순히 문장의 의미만 쫓아가는 &lt;b&gt;단일 검색 방식으로는 우리가 원하는 '찰떡같은' 기술 문서를 찾아내기 어렵습니다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;bb6ed5b2756c&quot; data-renderer-start-pos=&quot;1365&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;0ada17e4e65f&quot; data-renderer-start-pos=&quot;1488&quot; data-ke-size=&quot;size16&quot;&gt;실제 RAG 성능 테스트 결과들도 이러한 획일화된 검색의 한계를 뚜렷하게 보여줍니다. 의미 기반 검색만 단독으로 사용했을 때는 원하는 정답을 찾을 확률이 절반 정도에 그쳤어요. 하지만 &lt;b&gt;키워드 검색을 적절히 섞고 문서의 순위를 다시 매기는 기법을 결합&lt;/b&gt;했더니, 그 성능이 &lt;b&gt;40% 이상&lt;/b&gt; 훌쩍 뛰었죠. 게다가 실무 기술 문서처럼 내용 업데이트가 잦은 환경에서는 &lt;b&gt;문서의 버전과 변경 이력까지 꼼꼼하게 반영했을 때 검색 정확도가 무려 90%까지 치솟았다&lt;/b&gt;는 놀라운 결과도 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;0ada17e4e65f&quot; data-renderer-start-pos=&quot;1488&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;612b4aed5500&quot; data-renderer-start-pos=&quot;1752&quot; data-ke-size=&quot;size16&quot;&gt;여기에 기업 환경 특유의 현실적인 고민도 더해집니다. 사내 문서들은 부서나 직급별로 열람 권한이 엄격하게 나뉘어 있잖아요? 검색의 첫 단계부터 이 &lt;b&gt;문서 단위의 권한 제어(Permission-aware)가 확실하게 맞물려 돌아가지 않으면&lt;/b&gt;, 기업용으로 완벽한 RAG 서비스를 도입하는 건 사실상 불가능에 가깝습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;612b4aed5500&quot; data-renderer-start-pos=&quot;1752&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;5e78720e989c&quot; data-renderer-start-pos=&quot;1928&quot; data-ke-size=&quot;size16&quot;&gt;비유하자면, 지난 연재들이 최고급 '식재료'를 정성껏 손질하는 과정이었다면, 이번 5편은 그 재료들을 복잡한 실무 환경에 맞춰 어떻게 맛있는 요리로 완성할지 보여주는 '레시피'라고 할 수 있어요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;5e78720e989c&quot; data-renderer-start-pos=&quot;1928&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;6638cec662bd&quot; data-renderer-start-pos=&quot;2039&quot; data-ke-size=&quot;size16&quot;&gt;그렇다면 시시각각 쏟아지는 까다로운 질문들, 그리고 깐깐한 기업 보안 환경 속에서 우리는 어떻게 유연하게 대처하며 검색 성능을 최고로 끌어올릴 수 있을까요?  &lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;6638cec662bd&quot; data-renderer-start-pos=&quot;2039&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;3b184ce2bd7e&quot; data-renderer-start-pos=&quot;2131&quot; data-ke-size=&quot;size16&quot;&gt;이 질문에 답하기 위해, 이번 글에서는 사용자의 질문 난이도와 권한 상태, 심지어 운영 비용까지 종합적으로 따져 최적의 길을 찾아주는 &lt;b&gt;적응형 검색(Adaptive Retrieval) 아키텍처&lt;/b&gt;를 깊이 있게 파헤쳐 보려고 해요. 질문을 알맞은 곳으로 보내는 과정부터, 여러 검색 방식을 섞고 최종 순위를 매기는 과정까지 &lt;b&gt;상황에 맞게 동적으로 엮어내는 방법&lt;/b&gt; 말이죠.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;3b184ce2bd7e&quot; data-renderer-start-pos=&quot;2131&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;e47728b7d5f3&quot; data-renderer-start-pos=&quot;2334&quot; data-ke-size=&quot;size16&quot;&gt;도대체 무엇이 우리의 RAG 검색을 실패하게 만드는지 그 진짜 원인부터 짚어보고, 내일 당장 실무에 적용해 볼 수 있는 탄탄한 검색 고도화 파이프라인 설계 여정을 지금부터 함께 출발해 보겠습니다!  &lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;1.-검색-고도화가-RAG-성능을-좌우하는-이유&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;2449&quot; data-local-id=&quot;e3ab8ecbbd57&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1. 검색 고도화가 RAG 성능을 좌우하는 이유&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id=&quot;1.1-근거-문서의-품질이-최종-답변(Generation)에-미치는-치명적-영향&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;2477&quot; data-local-id=&quot;10bd4c2416c8&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;근거 문서의 품질이 최종 답변(Generation)에 미치는 치명적 영향&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (3).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OJuWB/dJMcaaS5VHL/mjsDFs5owTte3sMAbDEetk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OJuWB/dJMcaaS5VHL/mjsDFs5owTte3sMAbDEetk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OJuWB/dJMcaaS5VHL/mjsDFs5owTte3sMAbDEetk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOJuWB%2FdJMcaaS5VHL%2FmjsDFs5owTte3sMAbDEetk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 : 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;433&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (3).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;590dd4cdb48f&quot; data-renderer-start-pos=&quot;2526&quot; data-ke-size=&quot;size16&quot;&gt;2023년에서 2024년 무렵, 우리가 초기 RAG 시스템을 구축할 때만 해도 주된 관심사는 '거대 언어 모델(LLM)이 얼마나 많은 텍스트를 한 번에 읽어낼 수 있는가'에 쏠려 있었어요. 하지만 현장에서 뼈아픈 시행착오를 겪으며 실무진들은 중요한 깨달음을 얻었죠. &lt;b&gt;생성 모델이 아무리 뛰어나더라도, 애초에 잘못된 근거 자료가 주어지면 최종 답변의 품질은 완전히 무너져 내린다&lt;/b&gt;는 사실입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;590dd4cdb48f&quot; data-renderer-start-pos=&quot;2526&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;52611dcf512b&quot; data-renderer-start-pos=&quot;2746&quot; data-ke-size=&quot;size16&quot;&gt;흔히 LLM을 실력 있는 셰프에 비유하곤 하는데요. 아무리 미슐랭 3스타 셰프라도 상한 식재료를 가지고는 절대 맛있는 요리를 만들 수 없는 것과 같은 이치예요. 즉, 검색 단계에서 찾아낸 근거 문서는 단순한 참고용 텍스트가 아니라, &lt;b&gt;RAG 시스템 전체의 '성능 한계선'을 결정짓는 가장 중요한 제약 조건&lt;/b&gt;이랍니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;52611dcf512b&quot; data-renderer-start-pos=&quot;2746&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;3407bb49517e&quot; data-renderer-start-pos=&quot;2922&quot; data-ke-size=&quot;size16&quot;&gt;현장에서 이 문제를 가장 뼈저리게 체감할 수 있는 현상이 바로 '컨텍스트 오염(Context Contamination)'이에요. 아무리 똑똑한 최신 AI라도 검색해 온 상위 5개 문서 중 2개 이상이 엉뚱한 내용일 경우, 답변 정확도가 15~30%나 뚝 떨어진다고 해요. 특히 버전이나 연도만 미세하게 다를 뿐, 겉보기엔 아주 비슷한 '오답 문서'가 섞여 들어오면 AI도 감쪽같이 속아 넘어가 버리죠.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;3407bb49517e&quot; data-renderer-start-pos=&quot;2922&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;35c616e1aca2&quot; data-renderer-start-pos=&quot;3148&quot; data-ke-size=&quot;size16&quot;&gt;더욱이 이런 검색 실패는 단순히 엉뚱한 대답을 하는 선에서 끝나지 않고, &lt;b&gt;클라우드 운영 비용의 폭증&lt;/b&gt;으로 곧장 이어져요. 처음에 쓸 만한 문서를 건지지 못해 시스템이 스스로 검색을 계속 되풀이하는 &lt;b&gt;'반복 검색(Iterative RAG)'의 늪&lt;/b&gt;에 빠지게 되면, 평소보다 데이터 처리 비용이 최대 3.5배까지 늘어날 수 있거든요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;35c616e1aca2&quot; data-renderer-start-pos=&quot;3148&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;e146504d6df8&quot; data-renderer-start-pos=&quot;3331&quot; data-ke-size=&quot;size16&quot;&gt;결국 요약하자면, &lt;b&gt;첫 검색에서 가장 정확한 문서를 단번에 찾아내는 똑똑한 파이프라인&lt;/b&gt;을 설계하는 것만이 AI의 &lt;b&gt;할루시네이션(환각 현상)을 원천적으로 막고 우리의 소중한 예산까지 지켜내는 확실한 해법&lt;/b&gt;이랍니다.  &lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h4 id=&quot;1.2-검색-실패의-유형:-못-찾는-문제와-순위가-틀린-문제&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;3451&quot; data-local-id=&quot;ed2bd22057bb&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;검색 실패의 유형: 못 찾는 문제와 순위가 틀린 문제&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (4).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/batDrm/dJMcacQR6fa/M0ayn9NWqdI9LxwNc1xHRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/batDrm/dJMcacQR6fa/M0ayn9NWqdI9LxwNc1xHRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/batDrm/dJMcacQR6fa/M0ayn9NWqdI9LxwNc1xHRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbatDrm%2FdJMcacQR6fa%2FM0ayn9NWqdI9LxwNc1xHRK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 : 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;433&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (4).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;4e0b28ef09bb&quot; data-renderer-start-pos=&quot;3489&quot; data-ke-size=&quot;size16&quot;&gt;그렇다면 완벽해야 할 우리의 첫 검색은 도대체 왜 실패하는 걸까요? RAG 시스템에서 검색이 엇나가는 이유는 크게 두 가지의 완전히 다른 층위에서 발생해요.   실무에서는 이 두 가지 실패를 정확히 진단해야만 제대로 된 치료법을 처방할 수 있죠.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;4e0b28ef09bb&quot; data-renderer-start-pos=&quot;3489&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;304135892c56&quot; data-renderer-start-pos=&quot;3629&quot; data-ke-size=&quot;size16&quot;&gt;첫 번째는 아예 '못 찾는 문제', 전문 용어로 &lt;b&gt;회수 실패(Retrieval Failure)&lt;/b&gt;입니다. 정답이 담긴 문서가 데이터베이스 안에 분명히 있는데도 AI가 가져온 상위 결과물에 끼지조차 못하는 상황이에요. 최근 테스트 결과에 따르면, 의미 기반의 단독 검색만 썼을 때는 정답이 존재하는 질문 10개 중 4개꼴로 아예 관련 문서를 찾지도 못했다고 해요. 클라우드 담당자가 '2025년 데이터센터 전력효율지수'를 물었는데, 시스템이 옛날 2024년 문서를 가져와 버리는 치명적인 오류가 바로 여기에 속합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;304135892c56&quot; data-renderer-start-pos=&quot;3629&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;ec8ab1981396&quot; data-renderer-start-pos=&quot;3916&quot; data-ke-size=&quot;size16&quot;&gt;두 번째는 '순위가 틀린 문제', 즉 &lt;b&gt;정렬 실패(Ranking Failure)&lt;/b&gt;입니다. 1차로 정답 문서를 찾아내긴 했는데, 하필 순위가 뒤로 밀려서 상위 1~3위 안에 들지 못한 경우예요. 순위가 밀려 LLM에게 전달되지 못하면 실질적으로는 첫 번째 문제와 똑같이 오답을 내게 되죠. 최근 한 연구에서는 찾아낸 문서들은 그대로 둔 채 순위만 더 정교하게 다시 매겨주는 크로스 인코더(Cross-encoder) 모델을 도입했더니, 답변 정확도가 평균 30% 이상 훌쩍 뛰었다고 해요. 단순히 문서를 잘 찾는 것 못지않게, 찾아낸 정답을 놓치지 않고 상위권으로 끌어올려 주는 작업이 얼마나 중요한지 확실히 보여주는 결과죠.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;ec8ab1981396&quot; data-renderer-start-pos=&quot;3916&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;69b6c5cf8730&quot; data-renderer-start-pos=&quot;4264&quot; data-ke-size=&quot;size16&quot;&gt;결국 이 두 가지 실패를 방치하면 앞서 말씀드린 '컨텍스트 오염'이 걷잡을 수 없이 퍼지게 됩니다. 그래서 우리는 이 두 녀석을 완전히 다른 무기로 공략해야 해요.   &lt;b&gt;'못 찾는 문제'는 질문을 다듬고 여러 검색 방식을 섞어 문서 후보군을 넓게 긁어모으는 방식&lt;/b&gt;으로, &lt;b&gt;'순위가 틀린 문제'는 족집게 같은 재정렬(Re-ranking) 모델을 투입해 불필요한 노이즈를 깎아내는 전략&lt;/b&gt;으로 각각 대응해야 한답니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h4 id=&quot;1.3-고정된-Retrieval-파이프라인의-한계&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;4494&quot; data-local-id=&quot;5fe715b40e01&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;고정된 Retrieval 파이프라인의 한계&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (5).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQ79xS/dJMcahraWCy/F3SCVKek2qYFEq9hLir8O1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQ79xS/dJMcahraWCy/F3SCVKek2qYFEq9hLir8O1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQ79xS/dJMcahraWCy/F3SCVKek2qYFEq9hLir8O1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQ79xS%2FdJMcahraWCy%2FF3SCVKek2qYFEq9hLir8O1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 : 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;433&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (5).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;9e9eb430c608&quot; data-renderer-start-pos=&quot;4526&quot; data-ke-size=&quot;size16&quot;&gt;문제를 알았으니 이제 파이프라인을 고쳐야겠죠? 초기 RAG 시스템들은 대부분 '질문을 벡터로 변환 &amp;rarr; 벡터 검색 &amp;rarr; 상위 문서 반환'이라는 획일화된 단일 직선 경로를 모든 질문에 똑같이 적용했어요. 하지만 현업의 복잡한 요구사항 앞에서는 이런 고정된 방식이 여지없이 세 가지 큰 한계에 부딪히고 맙니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;9e9eb430c608&quot; data-renderer-start-pos=&quot;4526&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;74c932fb4edc&quot; data-renderer-start-pos=&quot;4697&quot; data-ke-size=&quot;size16&quot;&gt;첫 번째 한계는 '&lt;b&gt;질문의 다양성을 무시해 발생하는 막대한 비용 낭비&lt;/b&gt;'예요. 특정 서버의 에러 코드 로그를 찾는 콕 짚은 질문과, &quot;새로운 클라우드 아키텍처 도입이 우리 팀에 미칠 장기적 영향은?&quot; 같은 열린 질문은 질적으로 완전히 다르잖아요. 단순 사실 확인용 질문에 굳이 무겁고 값비싼 복합 검색을 돌리는 건 낭비죠. 실제로 가벼운 분류기(Router)를 두어 질문 난이도에 따라 검색 길목을 동적으로 나눴더니, 93% 이상의 높은 정확도를 유지하면서도 전체 토큰 처리 비용을 30% 가까이 아낄 수 있었다는 글로벌 기업의 연구 결과도 있어요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;74c932fb4edc&quot; data-renderer-start-pos=&quot;4697&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;edd3b6a9341e&quot; data-renderer-start-pos=&quot;5004&quot; data-ke-size=&quot;size16&quot;&gt;두 번째는 '&lt;b&gt;경직된 하이브리드 결합과 속도 저하&lt;/b&gt;'입니다. 키워드 검색과 의미 검색을 섞어 쓰는 하이브리드 방식을 쓰더라도, 두 방식의 가중치를 5대 5로 고정해 버리면 질문마다 달라지는 최적의 황금비율을 놓치게 돼요. 게다가 무작정 검색 경로를 여러 개로 쪼개어 동시에 돌려버리면, 전체 응답 속도는 가장 느린 경로에 발목이 잡히고 서버 메모리는 걷잡을 수 없이 낭비됩니다. 모든 상황에 완벽하게 들어맞는 마법의 단일 세팅 같은 건 없거든요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;edd3b6a9341e&quot; data-renderer-start-pos=&quot;5004&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;3b511038bb75&quot; data-renderer-start-pos=&quot;5253&quot; data-ke-size=&quot;size16&quot;&gt;마지막 세 번째는 엔터프라이즈 환경에서 가장 치명적인 '&lt;b&gt;보안 및 권한(Permission) 컨텍스트의 부재&lt;/b&gt;'입니다. 기업의 사내 망에서 문서를 찾을 때는 내용이 얼마나 비슷한가 보다, &quot;이 질문을 한 직원이 저 문서를 볼 자격이 있는가?&quot;를 시스템이 먼저 엄격하게 통제해야 해요. 만약 일단 싹 다 검색해 온 다음 마지막에 권한 없는 문서를 빼려고 시도한다면(Post-retrieval), 그 짧은 순간에 중요한 사내 보안 데이터가 AI 모델에 노출될 수 있는 아찔한 위험이 발생합니다.   따라서 &lt;b&gt;권한 필터링은 반드시 검색 엔진이 문서를 긁어오는 그 시점(Pre-retrieval)에 톱니바퀴처럼 완벽하게 내장&lt;/b&gt;되어야만 해요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;3b511038bb75&quot; data-renderer-start-pos=&quot;5253&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;3c46447bab61&quot; data-renderer-start-pos=&quot;5606&quot; data-ke-size=&quot;size16&quot;&gt;결론적으로 2026년 현재 우리가 마주한 검색 고도화 숙제는 단순히 '성능 좋은 최신 모델 하나 더 사 오기'가 아닙니다. 하나의 고정된 길에서 과감히 벗어나, &lt;b&gt;질문의 난이도, 사용자의 보안 권한, 그리고 우리가 쓸 수 있는 비용 예산까지 종합적으로 따져서 AI가 스스로 최적의 검색 경로를 찾아내는 '동적 의사결정 파이프라인'을 조립하는 것&lt;/b&gt;, 바로 이것이 이번 5편의 진정한 핵심 과제랍니다.  &lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;2.-1차-검색의-출발점:-Sparse와-Dense-Retrieval&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;5832&quot; data-local-id=&quot;550816c2ff60&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;2. 1차 검색의 출발점: Sparse와 Dense Retrieval&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id=&quot;2.1-Sparse-Retrieval:-키워드-검색의-강점과-한계&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;5872&quot; data-local-id=&quot;c4a8d49acdd4&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Sparse Retrieval: 키워드 검색의 강점과 한계&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (6).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/diiyJ8/dJMcaaldyb4/brUbjlVhRDi41TaERpdkX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/diiyJ8/dJMcaaldyb4/brUbjlVhRDi41TaERpdkX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/diiyJ8/dJMcaaldyb4/brUbjlVhRDi41TaERpdkX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdiiyJ8%2FdJMcaaldyb4%2FbrUbjlVhRDi41TaERpdkX1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 : 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;433&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (6).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;333fec01b474&quot; data-renderer-start-pos=&quot;5913&quot; data-ke-size=&quot;size16&quot;&gt;문서를 찾는 가장 첫 번째 길목, 먼저 &lt;b&gt;스파스 검색(Sparse Retrieval)&lt;/b&gt;부터 살펴볼까요? 이 방식의 대표 주자인 BM25는 우리가 흔히 아는 단어 빈도수 기반의 검색을 한 단계 더 똑똑하게 발전시킨 기술이에요. 원본 논문에는 꽤 복잡한 계산식이 등장하지만, 핵심 원리만 아주 쉽게 풀어보면 딱 세 가지를 따집니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;6b2bddc9-2a77-45a5-915b-1726ff28a853&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;단어 빈도:&lt;/b&gt; 검색한 단어가 이 문서에 얼마나 자주 등장하는가?&lt;/li&gt;
&lt;li&gt;&lt;b&gt;단어의 희귀성:&lt;/b&gt; 그 단어가 전체 문서들 사이에서 흔한가, 아니면 특수한 용어인가?&lt;/li&gt;
&lt;li&gt;&lt;b&gt;문서 길이 정규화:&lt;/b&gt; 문서의 길이가 비정상적으로 길어서 단어가 많이 나온 것처럼 유리하게 작용한 건 아닌가?&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;42a532c38eda&quot; data-renderer-start-pos=&quot;6248&quot; data-ke-size=&quot;size16&quot;&gt;이 세 가지를 조화롭게 계산해서 가장 알맞은 문서에 높은 점수를 주는 방식이죠.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;42a532c38eda&quot; data-renderer-start-pos=&quot;6248&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;bd4ac5af34a1&quot; data-renderer-start-pos=&quot;6294&quot; data-ke-size=&quot;size16&quot;&gt;이런 BM25가 가진 가장 강력한 무기는 단연 '&lt;b&gt;정확한 용어 매칭(Exact Match)&lt;/b&gt;'이에요. 최근 진행된 한 RAG 성능 평가를 보면, 특정 산업 도메인에서 BM25 단독 검색이 정답을 찾을 확률이 약 64%를 기록하며 의미 기반 검색(약 58%)을 크게 앞질렀다는 흥미로운 결과가 있어요. 예를 들어 클라우드 인프라 환경에서 &lt;b&gt;&quot;IOPS 5000&quot;, &quot;가용성 99.99%&quot;, &quot;2025Q3&quot;처럼 고유 명사와 정확한 수치 조건이 생명인 기술 문서&lt;/b&gt;를 찾을 때 이 강점은 특히 빛을 발합니다. 의미 기반 모델이 비슷한 숫자나 맥락을 두고 헷갈려 할 때, BM25는 데이터베이스를 뒤져 정확히 그 단어가 콕 박혀 있는 문서를 확실하게 끄집어내 주거든요.  &lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;bd4ac5af34a1&quot; data-renderer-start-pos=&quot;6294&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;141c56856721&quot; data-renderer-start-pos=&quot;6663&quot; data-ke-size=&quot;size16&quot;&gt;실무 운영 관점에서도 장점이 아주 뚜렷해요. 무거운 인공지능 연산이 필요 없어서 &lt;b&gt;구축 비용이 매우 저렴하고, 문서 찾는 속도 역시 의미 기반 검색보다 10~20배나 빠릅니다.&lt;/b&gt; 대용량 트래픽을 처리해야 하는 기본 검색 경로로 탁월하죠. 게다가 철저히 단어 단위로 작동하기 때문에, 시스템 오류 발생 시 원인을 파악하고 수정하기가 훨씬 수월합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;141c56856721&quot; data-renderer-start-pos=&quot;6663&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;25867ee1d6f3&quot; data-renderer-start-pos=&quot;6857&quot; data-ke-size=&quot;size16&quot;&gt;하지만 구조적인 약점도 명확합니다. 가장 큰 한계는 &lt;b&gt;단어의 겉모습이 조금만 다르면 문서를 아예 찾지 못하는 '어휘 불일치(Vocabulary Mismatch)' 현상&lt;/b&gt;에 극도로 취약하다는 점이에요. ⚠️ 예를 들어 사용자가 &quot;서비스 해지 절차&quot;라고 검색하면, &quot;계약 종료 프로세스&quot;라고 적혀 있는 문서는 코앞에 두고도 절대 찾지 못하죠. 결국 스파스 검색은 정확한 키워드 앞에서는 한없이 강력하지만, 동의어나 문맥을 유추해야 하는 질문 앞에서는 눈을 감아버리는 맹점이 있답니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h4 id=&quot;2.2-Dense-Retrieval:-의미-기반-검색의-강점과-한계&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;7126&quot; data-local-id=&quot;00457b49537a&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Dense Retrieval: 의미 기반 검색의 강점과 한계&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (7).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ds3q1Z/dJMb99UacML/eVkbJTfxge2VvwE2MhF4uK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ds3q1Z/dJMb99UacML/eVkbJTfxge2VvwE2MhF4uK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ds3q1Z/dJMb99UacML/eVkbJTfxge2VvwE2MhF4uK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fds3q1Z%2FdJMb99UacML%2FeVkbJTfxge2VvwE2MhF4uK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 : 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;433&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (7).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;787a54baa378&quot; data-renderer-start-pos=&quot;7168&quot; data-ke-size=&quot;size16&quot;&gt;그렇다면 키워드 검색의 이런 맹점을 어떻게 보완할 수 있을까요? 여기서 바로 &lt;b&gt;의미 기반 검색(Dense Retrieval)&lt;/b&gt;이 등판합니다. 이 기술은 여러분의 질문과 저장된 문서들을 눈에 보이지 않는 다차원 공간의 한 점(벡터)으로 변환한 뒤, 두 점 사이의 거리를 계산해 '얼마나 의미가 가까운가'를 측정하는 방식이에요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;787a54baa378&quot; data-renderer-start-pos=&quot;7168&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;bf43709a1f0b&quot; data-renderer-start-pos=&quot;7349&quot; data-ke-size=&quot;size16&quot;&gt;이 방식의 가장 눈부신 강점은 단연 &lt;b&gt;'의미론적 일반화(Semantic Generalization)'&lt;/b&gt; 능력입니다. 예를 들어 &quot;데이터센터 전력 효율 악화 원인&quot;이라고 검색해 볼까요? 정작 정답 문서에는 저 단어들이 하나도 없고 &quot;멀티 리전 환경의 PUE 상승 배경&quot;이라는 전문적인 표현만 적혀 있을 수 있어요. 키워드 검색이라면 100% 놓쳤겠지만, &lt;b&gt;의미 기반 검색은 이 두 문장이 담고 있는 본질적인 맥락이 같다는 걸 이해하고 문서를 쏙 뽑아냅니다.&lt;/b&gt; 숨겨진 의도까지 파악하는 이 놀라운 능력은 앞서 본 키워드 검색이 결코 흉내 낼 수 없는 고유의 영역이에요.  &lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;bf43709a1f0b&quot; data-renderer-start-pos=&quot;7349&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;ece66c434355&quot; data-renderer-start-pos=&quot;7666&quot; data-ke-size=&quot;size16&quot;&gt;하지만 실무 환경, 특히 우리처럼 IT 인프라 같은 전문 도메인에서는 이 강력한 무기도 치명적인 한계를 드러냅니다. 긴 텍스트를 작은 점 하나로 꾹꾹 눌러 압축하다 보니, &lt;b&gt;전체적인 큰 그림은 잘 유지하지만 디테일한 세부 사항은 잃어버리는 '손실 압축'이 발생&lt;/b&gt;하거든요. 실제로 최첨단 AI 모델을 썼음에도 특정 도메인 문서 검색에서는 정답률이 고전적인 키워드 방식에 밀리는 경우가 허다합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;ece66c434355&quot; data-renderer-start-pos=&quot;7666&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;84a243b50099&quot; data-renderer-start-pos=&quot;7886&quot; data-ke-size=&quot;size16&quot;&gt;가장 뼈아픈 부작용은 바로 &lt;b&gt;'잘못된 근접성(False Proximity)'&lt;/b&gt; 문제입니다.   AI가 &quot;vCPU 4코어 인스턴스 사양&quot;과 &quot;vCPU 8코어 인스턴스 사양&quot;을 의미상 아주 비슷한 이야기라고 착각해 버리는 현상이에요. 숫자가 달라서 실제로는 정반대의 정보인데도, 그저 '사양을 설명하는 문맥'이 비슷하다는 이유만으로 엉뚱한 오답 문서를 검색 최상단으로 끌어올리는 심각한 오류를 발생시킵니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;73c54ae3398f&quot; data-renderer-start-pos=&quot;8112&quot; data-ke-size=&quot;size16&quot;&gt;이런 한계점들을 하나둘 짚어보다 보면, &quot;&lt;b&gt;아, 의미 기반 검색 하나만 믿고 가면 안 되는구나. 키워드와 의미 검색을 짝지어주는 하이브리드(Hybrid) 방식이 선택이 아닌 필수구나!&lt;/b&gt;&quot; 하는 퍼즐이 자연스럽게 맞춰지실 거예요.  &lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h4 id=&quot;2.3-Sparse-vs-Dense,-어떤-질의에서-어떻게-선택할-것인가&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;8243&quot; data-local-id=&quot;b2ebca4f5fad&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Sparse vs Dense, 어떤 질의에서 어떻게 선택할 것인가&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (8).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JkxJw/dJMb99UacNp/3a9ZQJ8R7jXaYP0rVPdT61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JkxJw/dJMb99UacNp/3a9ZQJ8R7jXaYP0rVPdT61/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JkxJw/dJMb99UacNp/3a9ZQJ8R7jXaYP0rVPdT61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJkxJw%2FdJMb99UacNp%2F3a9ZQJ8R7jXaYP0rVPdT61%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 : 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;433&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (8).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;4130f3d0e0f2&quot; data-renderer-start-pos=&quot;8288&quot; data-ke-size=&quot;size16&quot;&gt;결국 실무 현장에서 이 둘 중 무엇을 우선할지는 전적으로 &lt;b&gt;사용자가 던지는 질문의 형태와 우리가 가진 데이터의 성격&lt;/b&gt;에 달려 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;6b36c30e-87a9-4a7d-87f4-865758332a85&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;스파스(키워드) 검색이 유리한 경우:&lt;/b&gt; 에러 코드, 버전 정보, 특정 날짜가 포함되어 있거나 '보안 규정 준수'처럼 &lt;b&gt;토씨 하나 틀리지 않는 정확한 매칭이 필수적일 때&lt;/b&gt; 안전한 기본 경로가 됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;의미 기반 검색이 유리한 경우:&lt;/b&gt; &quot;이번 보안 정책 변경이 미치는 장기적인 영향은?&quot; 같은 &lt;b&gt;서술형 질문이거나, 동의어가 많고 다국어로 질문이 들어올 때&lt;/b&gt;는 문맥을 캐치하는 의미 검색을 우선시해야 하죠.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;65eac11552a8&quot; data-renderer-start-pos=&quot;8590&quot; data-ke-size=&quot;size16&quot;&gt;하지만 대부분의 기업용 데이터는 이 두 가지 특성이 무 자르듯 나뉘지 않고 복잡하게 얽혀 있어요. 실제로 인프라 보안처럼 깐깐한 분야에서는 스파스 검색에 70%, 사내 헬프데스크처럼 일반적인 질문이 많은 곳에서는 의미 기반 검색에 60%의 비중을 두었을 때 최적의 성능을 냈다는 실무 사례도 있습니다. ⚖️&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;65eac11552a8&quot; data-renderer-start-pos=&quot;8590&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;54eeb67527f0&quot; data-renderer-start-pos=&quot;8763&quot; data-ke-size=&quot;size16&quot;&gt;앞서 언급한 성능 평가에서도 어느 하나만 썼을 때는 정답률이 60%대에 머물렀지만, &lt;b&gt;두 방식을 엮은 하이브리드 검색에 문서 순위를 다시 매기는 리랭킹(Re-ranking)까지 더하자 정답률이 비약적으로 도약&lt;/b&gt;했다는 놀라운 결과가 있어요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;54eeb67527f0&quot; data-renderer-start-pos=&quot;8763&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;ec0c7cdf421c&quot; data-renderer-start-pos=&quot;8896&quot; data-ke-size=&quot;size16&quot;&gt;따라서 우리의 전략은 '어느 한쪽만 고집하지 않는 것'입니다. 질문 특성에 맞춰 기본 무기를 꺼내되, 서로의 약점을 든든하게 메워주는 유연한 결합이 필수적이죠. 예를 들어, 어느 글로벌 기업은 서술형 질문이 들어오면 AI가 관련 키워드를 풍부하게 덧붙여주는 질의 확장(Query Expansion)을 거친 뒤 스파스 검색을 돌렸더니 정확도가 크게 올랐다고 해요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;ec0c7cdf421c&quot; data-renderer-start-pos=&quot;8896&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;5b47870c76fe&quot; data-renderer-start-pos=&quot;9100&quot; data-ke-size=&quot;size16&quot;&gt;하지만 이런 복잡한 상황 판단과 결합 비율을 개발자가 일일이 수동 규칙(Rule-based)으로 하드코딩해 넣는다면 어떨까요? 나중에는 시스템이 너무 복잡해져서 유지보수 자체가 불가능해질 겁니다.  &lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;5b47870c76fe&quot; data-renderer-start-pos=&quot;9100&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;75f9f07cbc6d&quot; data-renderer-start-pos=&quot;9214&quot; data-ke-size=&quot;size16&quot;&gt;결국 우리는 이 딜레마를 스마트하게 해결하기 위해, 다음 장에서 본격적으로 다룰 '하이브리드 검색 아키텍처'와 기업 보안을 위한 '권한 인지 검색(Permission-aware Retrieval)'이라는 다음 단계로 나아가야만 하죠.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;3.-하이브리드-검색(Hybrid-Search)과-Permission-aware-Retrieval&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;9347&quot; data-local-id=&quot;cbb371ed1f17&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;3. 하이브리드 검색(Hybrid Search)과 Permission-aware Retrieval&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id=&quot;3.1-하이브리드-검색이-필요한-이유&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;9403&quot; data-local-id=&quot;5e9c1b60bf8d&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;하이브리드 검색이 필요한 이유&lt;/b&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;div style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-media-vc-wrapper=&quot;true&quot; data-renderer-start-pos=&quot;9425&quot; data-vc=&quot;media-single&quot; data-node-type=&quot;mediaSingle&quot; data-width-type=&quot;pixel&quot; data-width=&quot;507&quot; data-layout=&quot;center&quot;&gt;
&lt;div&gt;
&lt;div data-context-id=&quot;1940947018&quot; data-local-id=&quot;5aa7581344c9&quot; data-renderer-start-pos=&quot;9426&quot; data-alt=&quot;image-20260421-001258.png&quot; data-file-mime-type=&quot;image/png&quot; data-file-size=&quot;2560518&quot; data-file-name=&quot;image-20260421-001258.png&quot; data-collection=&quot;contentId-1940947018&quot; data-id=&quot;86207e0a-4639-4890-be51-d123b8de71c4&quot; data-height=&quot;1024&quot; data-width=&quot;1536&quot; data-node-type=&quot;media&quot; data-type=&quot;file&quot;&gt;
&lt;div id=&quot;newFileExperienceWrapper&quot; data-media-vc-wrapper=&quot;true&quot; data-testid=&quot;media-card-view&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (9).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/op6Qt/dJMcaip2IzX/ZHqv32ZsbxHQPsNwWGqWFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/op6Qt/dJMcaip2IzX/ZHqv32ZsbxHQPsNwWGqWFK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/op6Qt/dJMcaip2IzX/ZHqv32ZsbxHQPsNwWGqWFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fop6Qt%2FdJMcaip2IzX%2FZHqv32ZsbxHQPsNwWGqWFK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 : 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;433&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (9).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;1ec123c4b659&quot; data-renderer-start-pos=&quot;9428&quot; data-ke-size=&quot;size16&quot;&gt;앞서 2장에서 살펴본 것처럼, 키워드 검색과 의미 기반 검색은 각자의 장단점이 정말 뚜렷하죠. 그래서 이 둘은 &lt;b&gt;서로의 빈틈을 완벽하게 메워주는 훌륭한 보완 관계&lt;/b&gt;에 있어요.   어느 한쪽이 약한 사각지대에서 다른 쪽이 정답을 짚어내는 식으로 톱니바퀴처럼 맞물리거든요. 이런 찰떡궁합을 잘 활용하면 단일 방식으로는 결코 도달할 수 없는 &lt;b&gt;촘촘하고 단단한 검색망&lt;/b&gt;을 구축할 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;1ec123c4b659&quot; data-renderer-start-pos=&quot;9428&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;6c5fbb3b47b1&quot; data-renderer-start-pos=&quot;9642&quot; data-ke-size=&quot;size16&quot;&gt;실제로 글로벌 IT 실무자들의 경험을 보면, 순수 의미 기반 검색만 쓰다가 두 방식을 섞은 &lt;b&gt;하이브리드 검색(Hybrid Search)으로 전환했을 때 정답률이 평균 60%에서 85%로 비약적으로 상승&lt;/b&gt;했다고 해요. 정형 데이터와 비정형 텍스트가 섞인 실제 기업 환경에서, 한쪽이 헛바퀴를 돌더라도 다른 쪽이 안전하게 후보를 던져주기 때문에 &lt;b&gt;치명적인 검색 실패를 막아주는 든든한 최후의 보루&lt;/b&gt; 역할을 톡톡히 해냅니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;6c5fbb3b47b1&quot; data-renderer-start-pos=&quot;9642&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;cf21adca3c13&quot; data-renderer-start-pos=&quot;9874&quot; data-ke-size=&quot;size16&quot;&gt;물론 단순히 섞는다고 끝은 아니에요. 최근에는 질문의 성격에 따라 키워드와 의미 검색의 비중을 실시간으로 조절하는 &lt;b&gt;동적 가중치 조절(Dynamic Alpha Tuning)&lt;/b&gt; 기법까지 활용하며 검색의 정밀도를 한층 더 끌어올리고 있답니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h4 id=&quot;3.2-병렬-검색,-후보군-결합,-순위-융합의-기본-구조&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;10008&quot; data-local-id=&quot;1d1b451d1f81&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;병렬 검색, 후보군 결합, 순위 융합의 기본 구조&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (10).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bU4Bjx/dJMb99NmnAf/FkpWJOiuGKzGTLkkCpDr4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bU4Bjx/dJMb99NmnAf/FkpWJOiuGKzGTLkkCpDr4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bU4Bjx/dJMb99NmnAf/FkpWJOiuGKzGTLkkCpDr4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbU4Bjx%2FdJMb99NmnAf%2FFkpWJOiuGKzGTLkkCpDr4k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 : 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;433&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (10).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;ada26777c480&quot; data-renderer-start-pos=&quot;10044&quot; data-ke-size=&quot;size16&quot;&gt;그렇다면 실무에서 쓰이는 튼튼한 하이브리드 검색 시스템은 어떤 뼈대로 만들어질까요? 보통 다음의 세 가지 핵심 단계를 거칩니다.  ️&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;5d3f63cd-93a5-4a6a-81b9-67c91ab9567a&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;병렬 검색:&lt;/b&gt; 키워드 검색과 의미 기반 검색을 동시에 출발시켜, 각각 상위 50~100개 정도의 후보 문서를 뽑아냅니다. &lt;b&gt;시간은 단축하면서도 각기 다른 장점의 검색 신호를 한 번에 확보&lt;/b&gt;하는 효율적인 출발점이죠.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;후보군 결합:&lt;/b&gt; 가져온 문서들을 한 바구니에 모으고 중복을 제거합니다. 보통 50~150개 수준의 든든한 1차 후보군이 추려지는데, 여기서 &lt;b&gt;비용 최적화&lt;/b&gt;가 중요해요. 후보를 너무 많이 담으면 시스템이 느려지고 예산이 낭비되니, &lt;b&gt;'딱 적당한 수의 후보'를 걸러내는 감각&lt;/b&gt;이 필요합니다. ⚖️&lt;/li&gt;
&lt;li&gt;&lt;b&gt;순위 융합:&lt;/b&gt; 모아진 후보들의 최종 순위를 매기는 단계입니다. 단순히 등수만 합칠지, 아니면 원본 점수에 가중치를 곱해 더할지를 결정하죠.&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;a9c04b60fb73&quot; data-renderer-start-pos=&quot;10485&quot; data-ke-size=&quot;size16&quot;&gt;여기에 마지막 화룡점정으로 &lt;b&gt;상위 10개 문서만 족집게처럼 다시 평가하는 재정렬(Re-ranking) 모델&lt;/b&gt;을 덧붙이면 성능과 속도, 비용 면에서 가장 완벽한 균형을 보여준답니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h4 id=&quot;3.3-엔터프라이즈-검색의-전제:-Permission-aware-Retrieval과-메타데이터-필터링&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;10586&quot; data-local-id=&quot;2c85a051ba2b&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;엔터프라이즈 검색의 전제: Permission-aware Retrieval과 메타데이터 필터링&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (11).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNbHGi/dJMcab5wEWv/gzQM2uaUvKfdkcNNOFjQk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNbHGi/dJMcab5wEWv/gzQM2uaUvKfdkcNNOFjQk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNbHGi/dJMcab5wEWv/gzQM2uaUvKfdkcNNOFjQk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNbHGi%2FdJMcab5wEWv%2FgzQM2uaUvKfdkcNNOFjQk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 : 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;433&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (11).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;5dfc6fb180c1&quot; data-renderer-start-pos=&quot;10647&quot; data-ke-size=&quot;size16&quot;&gt;자, 이제 기업 환경에서 RAG 시스템을 도입할 때 절대 빠뜨릴 수 없는 '보안' 이야기를 해볼까요?  &lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;84acbc7f540b&quot; data-renderer-start-pos=&quot;10708&quot; data-ke-size=&quot;size16&quot;&gt;아무리 검색 품질이 뛰어나도, 요청을 보낸 사용자가 그 문서를 열람할 자격이 있는지 시스템이 통제하지 못하면 치명적인 사내 정보 유출 사고로 이어집니다. 그래서 권한 인식 검색(Permission-aware Retrieval)은 단순한 부가 기능이 아니라 서비스를 배포하기 위한 절대 조건이에요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;84acbc7f540b&quot; data-renderer-start-pos=&quot;10708&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;b8f66f0bd556&quot; data-renderer-start-pos=&quot;10875&quot; data-ke-size=&quot;size16&quot;&gt;이 권한 제어를 구현할 때 실무에서 가장 흔히 저지르는 뼈아픈 실수와 그 정답을 비교해 보겠습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;625dafaa-8620-4803-a1c9-918700e8442c&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;사후 필터(Post-filter) 방식의 함정:&lt;/b&gt; 일단 검색을 다 마친 뒤에, 상위 결과물 중에서 '이 사용자는 볼 권한이 없네?' 하고 문서를 삭제해 버리는 구식 방식이에요. 걸러내는 그 짧은 순간에 민감한 데이터가 시스템 메모리에 남을 수 있어 위험합니다. 게다가 기껏 10개를 찾았는데 권한 때문에 8개를 지워버리면, 최종 답변에 쓸 문서가 모자라는 황당한 상황이 발생하죠.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;사전 필터(Pre-filter) 방식의 해결책:&lt;/b&gt; 앞선 문제를 해결하는 최신 아키텍처의 정답입니다. ⚡ 문서를 데이터베이스에 저장할 때부터 열람 가능한 팀이나 직급 정보를 '꼬리표(메타데이터)'로 미리 붙여두는 거예요. 그리고 사용자가 질문을 던지는 그 검색 시점에 처음부터 허용된 안전한 문서망 안에서만 정답을 찾습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;7735bf719d46&quot; data-renderer-start-pos=&quot;11332&quot; data-ke-size=&quot;size16&quot;&gt;최근 연구에 따르면 이런 사전 필터 설계를 적용했을 때, 사후 필터 방식보다 저장 공간은 조금 늘어났지만 검색 속도는 무려 6배나 빨라졌다고 해요. 더 나아가 이 꼬리표 기술은 보안뿐만 아니라 &quot;2025년에 작성된 공식 정책 문서만 찾아줘&quot;처럼 탐색 범위를 아주 날카롭게 좁혀주기 때문에, 검색의 정확도를 비약적으로 끌어올리는 RAG의 핵심 무기로 작동한답니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h4 id=&quot;[한-단계-더-들어가-보기]-RRF,-score-normalization,-weighted-fusion의-차이와-선택-기준&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;11537&quot; data-local-id=&quot;8d214766e0de&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;[한 단계 더 들어가 보기] RRF, score normalization, weighted fusion의 차이와 선택 기준&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (12).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/coer8d/dJMcadoFjLo/ig4A9Y3JoqMBwwDPILoLKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/coer8d/dJMcadoFjLo/ig4A9Y3JoqMBwwDPILoLKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/coer8d/dJMcadoFjLo/ig4A9Y3JoqMBwwDPILoLKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcoer8d%2FdJMcadoFjLo%2Fig4A9Y3JoqMBwwDPILoLKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 : 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;433&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (12).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;3fe7fdd9ce6b&quot; data-renderer-start-pos=&quot;11610&quot; data-ke-size=&quot;size16&quot;&gt;앞서 세 번째 단계였던 '순위 융합' 알고리즘을 어떻게 선택하느냐는 시스템의 응답 속도와 전체 품질에 아주 큰 영향을 미쳐요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;3fe7fdd9ce6b&quot; data-renderer-start-pos=&quot;11610&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;c81798d32b89&quot; data-renderer-start-pos=&quot;11682&quot; data-ke-size=&quot;size16&quot;&gt;먼저, 실무에서 가장 널리 쓰이는 &lt;b&gt;상호 순위 융합(RRF)&lt;/b&gt; 방식은 복잡한 점수 계산을 다 버리고 오직 각 검색 엔진에서 매긴 '등수(Rank)'만을 기준으로 최종 점수를 매깁니다. 1등 문서에는 높은 고정 점수를, 10등 문서에는 낮은 고정 점수를 주는 식이죠. 키워드 검색 점수와 의미 검색 점수는 기준점 자체가 달라서 섞기가 무척 까다로운데, RRF는 오직 등수만 쳐다보기 때문에 계산이 매우 빠르고 단순해요. 지연 시간이 짧아 트래픽이 몰리는 대용량 처리에 아주 적합하죠. 하지만 치명적인 약점도 있습니다. 1위 문서가 2위보다 내용이 압도적으로 훌륭하더라도 그 미세한 점수 차이를 무시해 버리거든요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;c81798d32b89&quot; data-renderer-start-pos=&quot;11682&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;00c64877de78&quot; data-renderer-start-pos=&quot;12023&quot; data-ke-size=&quot;size16&quot;&gt;반면, &lt;b&gt;가중 융합(Weighted Fusion)&lt;/b&gt; 방식은 두 검색 결과의 실제 점수 크기를 끝까지 살리는 섬세한 접근법이에요. ⚖️ 100점 만점, 1000점 만점 등 제각각인 두 엔진의 점수를 0점에서 1점 사이로 예쁘게 맞춘 뒤(정규화), 우리가 중요하다고 생각하는 쪽에 가중치를 곱해서 하나로 엮어줍니다. 이 방식은 압도적인 1위 문서가 보내는 강력한 신호를 놓치지 않기 때문에, 세밀하게 튜닝만 잘하면 RRF보다 훨씬 높은 검색 품질을 얻을 수 있어요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;00c64877de78&quot; data-renderer-start-pos=&quot;12023&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;3637fc05f0e4&quot; data-renderer-start-pos=&quot;12281&quot; data-ke-size=&quot;size16&quot;&gt;그렇다면 우리 팀은 어떤 방식을 골라야 할까요?&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;94cc00d0-3050-4eef-ba9d-1d05807faea2&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;RRF로 가볍게 시작하기:&lt;/b&gt; 빠른 배포와 안정성이 최우선이라면 가장 단순하고 빠른 RRF로 출발하는 것이 안전합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;가중 융합으로 점진적 고도화:&lt;/b&gt; 이후 운영 데이터가 쌓이면, 가중 융합 방식으로 전환하여 검색 품질의 고점을 최대한 높이는 방향을 권장해요.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;리랭커에 힘 싣기:&lt;/b&gt; 만약 우리 데이터 특성상 RRF가 오히려 엉뚱한 문서를 위로 올려 품질을 갉아먹는다면, 융합 단계는 대충 넘기고 그 뒤에 무거운 리랭커(Re-ranker) 모델을 배치해 순위를 완전히 새로 매기는 파이프라인으로 선회하는 것이 현명합니다.  &lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;4.-Adaptive-Retrieval:-Query-Routing과-Query-Transformation&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;12611&quot; data-local-id=&quot;677b665c73cf&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;4. Adaptive Retrieval: Query Routing과 Query Transformation&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id=&quot;4.1-질의-복잡도에-따른-동적-경로-설정:-Query-Routing&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;12671&quot; data-local-id=&quot;6056da05299c&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;질의 복잡도에 따른 동적 경로 설정: Query Routing&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (13).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/690lB/dJMcadPKgNi/MvlP10rSaoGjuIDYdS5xz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/690lB/dJMcadPKgNi/MvlP10rSaoGjuIDYdS5xz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/690lB/dJMcadPKgNi/MvlP10rSaoGjuIDYdS5xz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F690lB%2FdJMcadPKgNi%2FMvlP10rSaoGjuIDYdS5xz1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 : 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;433&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (13).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;e7b904a28eee&quot; data-renderer-start-pos=&quot;12714&quot; data-ke-size=&quot;size16&quot;&gt;앞서 3장에서는 여러 검색 방식을 섞어 쓰는 법을 알아봤죠. 그런데 모든 질문에 무조건 가장 무겁고 비싼 복합 검색을 돌려야 할까요? 이런 고정형 파이프라인의 낭비를 막아주는 핵심 기술이 바로 '&lt;b&gt;질의 라우팅(Query Routing)&lt;/b&gt;'입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;e7b904a28eee&quot; data-renderer-start-pos=&quot;12714&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;317883029372&quot; data-renderer-start-pos=&quot;12851&quot; data-ke-size=&quot;size16&quot;&gt;쉽게 말해 병원 응급실의 환자 분류소(Triage)와 같아요.   가벼운 찰과상 환자와 위급한 중증 환자를 가장 먼저 분류해서 처방을 달리하듯, 시스템에 들어온 질문을 꼼꼼히 분석해 &lt;b&gt;'이 질문은 어떤 검색 전략이 맞을지', '리랭커는 몇 번이나 써야 할지'를 동적으로 결정해 주는 똑똑한 관제탑 역할&lt;/b&gt;을 하죠. 덕분에 단순한 질문은 빠르고 저렴한 길로, 복잡한 질문은 고품질의 꼼꼼한 길로 안내하여 품질과 예산이라는 두 마리 토끼를 잡을 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;317883029372&quot; data-renderer-start-pos=&quot;12851&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;cb7876bd5e0f&quot; data-renderer-start-pos=&quot;13105&quot; data-ke-size=&quot;size16&quot;&gt;실제로 대규모 평가 결과를 보면 이 관제탑의 위력이 엄청납니다. 무거운 딥러닝 모델 대신 &lt;b&gt;가벼운 기계학습 모델로 라우팅만 잘해줘도 90% 이상의 높은 분류 정확도를 달성&lt;/b&gt;했어요. 게다가 무조건 최고 비용의 경로를 태울 때보다 데이터 처리 비용을 30% 가까이 획기적으로 아꼈죠.  &lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;cb7876bd5e0f&quot; data-renderer-start-pos=&quot;13105&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;65d5336bbe35&quot; data-renderer-start-pos=&quot;13264&quot; data-ke-size=&quot;size16&quot;&gt;이런 라우팅 기술을 실제 클라우드 인프라에 올릴 때는 &lt;b&gt;'2단계 구조'로 설계하는 것이 가장 안전&lt;/b&gt;합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;dbbc5906-f68e-44bf-9e36-51d7f9ff4acc&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;1단계 (규칙 및 캐시 기반):&lt;/b&gt; 질문의 길이나 특정 숫자, 권한 정보 같은 가벼운 특징을 보고 빠르게 길을 정해줍니다. 과거 판단 기록을 캐시에 저장해 두면 0.03초 만에 길을 찾을 수 있어요.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;2단계 (예외적 AI 호출):&lt;/b&gt; 1차 판단만으로는 도저히 어디로 보내야 할지 모호한 아주 소수의 질문에 한해서만, 예외적으로 무거운 AI를 호출하는 고비용 경로로 넘깁니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;b9f83c9ceff9&quot; data-renderer-start-pos=&quot;13537&quot; data-ke-size=&quot;size16&quot;&gt;이것이 전체 시스템의 비용과 속도를 지켜주는 든든한 방어막이 됩니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h4 id=&quot;4.2-Query-rewriting과-expansion:-질문을-더-검색-가능하게-바꾸기&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;13578&quot; data-local-id=&quot;d56b3aa62122&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Query rewriting과 expansion: 질문을 더 검색 가능하게 바꾸기&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (14).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQIAvb/dJMcaijhgjl/pLCv95koJk83bhngkl9oi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQIAvb/dJMcaijhgjl/pLCv95koJk83bhngkl9oi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQIAvb/dJMcaijhgjl/pLCv95koJk83bhngkl9oi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQIAvb%2FdJMcaijhgjl%2FpLCv95koJk83bhngkl9oi0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 : 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;433&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (14).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;508508a47e9d&quot; data-renderer-start-pos=&quot;13632&quot; data-ke-size=&quot;size16&quot;&gt;자, 이제 질문이 알맞은 길을 찾았다고 해볼게요. 그런데 정작 사용자가 검색창에 무심코 던진 질문 자체가 불완전하다면 어떨까요? 예를 들어 사내 챗봇에게 &quot;그 프로젝트가 왜 실패했나요?&quot;라고 묻는다면, AI는 도대체 '그 프로젝트'가 무엇인지 알 길이 없어 꿀 먹은 벙어리가 됩니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;508508a47e9d&quot; data-renderer-start-pos=&quot;13632&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;87b96b41111b&quot; data-renderer-start-pos=&quot;13792&quot; data-ke-size=&quot;size16&quot;&gt;이걸 영리하게 해결해 주는 기법이 바로 '질의 재작성(Query Rewriting)'이에요.   AI가 이전 대화의 맥락을 쓱 훑어보고 모호한 대명사를 명확한 고유 명사로 바꿔주는 거죠. 여기에 동의어나 상위 개념을 덧붙여 정답 후보군을 넓히는 '질의 확장(Query Expansion)'까지 곁들이면, 스파스(키워드) 검색의 치명적 약점인 어휘 불일치 문제를 완벽하게 방어할 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;87b96b41111b&quot; data-renderer-start-pos=&quot;13792&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;ac4ff2e81100&quot; data-renderer-start-pos=&quot;14013&quot; data-ke-size=&quot;size16&quot;&gt;하지만 실무에서 이 변환 작업을 AI에게 무작정 맡겨두면, 단순한 질문에 노이즈를 키우거나 복잡한 질문의 핵심을 놓치는 늪에 빠질 수 있어요. 그래서 최근 실무에서는 '&lt;b&gt;질문의 복잡도에 따라 변환 강도를 조절하는 방식&lt;/b&gt;'으로 이 딜레마를 해결하고 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;ac4ff2e81100&quot; data-renderer-start-pos=&quot;14013&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;b2acfb69dd66&quot; data-renderer-start-pos=&quot;14156&quot; data-ke-size=&quot;size16&quot;&gt;당장 우리 시스템에 이 기법을 적용할 때 지켜야 할 철칙은 무엇일까요? 바로 '원본 질문을 함부로 버리지 않고 가중치 추가 용도로만 활용하기'입니다. ⚖️ AI가 화려하게 다듬은 문장으로 원본을 완전히 덮어씌우는 것보다, &lt;b&gt;원래 질문을 꽉 쥐고 있으면서 새롭게 추가된 확장 단어들에는 가산점(가중치)만 살짝 얹었을 때&lt;/b&gt; 검색이 가장 안정적으로 작동했다고 해요.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h4 id=&quot;4.3-Multi-query와-query-decomposition:-복합-질의-대응-전략&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;14358&quot; data-local-id=&quot;ac6b47990f9a&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Multi-query와 query decomposition: 복합 질의 대응 전략&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (15).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/r49Ci/dJMcahkqrkA/Wp9Vlxyj81FABPJrisit9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/r49Ci/dJMcahkqrkA/Wp9Vlxyj81FABPJrisit9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/r49Ci/dJMcahkqrkA/Wp9Vlxyj81FABPJrisit9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fr49Ci%2FdJMcahkqrkA%2FWp9Vlxyj81FABPJrisit9K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 : 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;433&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (15).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;3f702db4da85&quot; data-renderer-start-pos=&quot;14412&quot; data-ke-size=&quot;size16&quot;&gt;질문도 예쁘게 다듬었으니 한 번만 싹 검색하면 끝날까요? 사실 &quot;정답이 어딘가 한 문서에 예쁘게 다 모여 있을 것&quot;이라는 생각은 실무에서 통하지 않는 아주 순진한 가정이에요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;3f702db4da85&quot; data-renderer-start-pos=&quot;14412&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;6012d51a7751&quot; data-renderer-start-pos=&quot;14511&quot; data-ke-size=&quot;size16&quot;&gt;이를 극복하기 위해 등장한 방법이 '&lt;b&gt;멀티 쿼리(Multi-query)&lt;/b&gt;'입니다. 질문 하나만 던지는 게 아니라, AI가 다양한 관점의 파생 질문 3~5개를 새롭게 만들어 동시에 그물을 넓게 던지는 거죠.  ️&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;6012d51a7751&quot; data-renderer-start-pos=&quot;14511&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;cab77c0eb8ad&quot; data-renderer-start-pos=&quot;14629&quot; data-ke-size=&quot;size16&quot;&gt;더 나아가 정답이 여러 문서에 흩어져 있는 환경이라면, 질문을 잘게 쪼개는 &lt;b&gt;'질의 분해(Query Decomposition)'&lt;/b&gt; 기법이 훨씬 더 강력합니다. &quot;A사와 B사의 2025년 영업이익률 차이 원인&quot;을 묻는다면, AI가 ① A사 이익률 검색 ② B사 이익률 검색 ③ 차이 원인 검색으로 잘게 쪼개어 탐색하는 식이에요. 실제로 이 기법은 복잡한 질문 앞에서의 최종 답변 정확도를 두 자릿수 이상 끌어올립니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;cab77c0eb8ad&quot; data-renderer-start-pos=&quot;14629&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;fee0ff3efc1b&quot; data-renderer-start-pos=&quot;14861&quot; data-ke-size=&quot;size16&quot;&gt;하지만 이 멋진 기법들을 무턱대고 적용했다가는 다음 달 클라우드 청구서에 '비용 폭탄'을 맞게 됩니다.   이를 방지하기 위한 엔터프라이즈 환경의 설계 원칙은 아주 명확해요.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;13d6224c-36e2-447e-9eaa-c681d2eed32f&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;하위 질문 개수 제한:&lt;/b&gt; 토큰 비용 폭증을 막기 위해 AI가 만들어내는 파생/분해 질문의 개수를 엄격히 통제해야 합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;탐색 후보군 최소화:&lt;/b&gt; 쪼개진 질문들이 가져오는 1차 문서 후보군의 수를 평소보다 훨씬 깐깐하게 줄여야 합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;최종 문서 깎아내기(리랭킹):&lt;/b&gt; 여러 검색에서 모인 문서들을 리랭커 모델로 가차 없이 깎아내어, 최종 답변 생성 AI에게 넘길 텍스트 양을 최소한으로 압축해야 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;e90718e80512&quot; data-renderer-start-pos=&quot;15194&quot; data-ke-size=&quot;size16&quot;&gt;결국 &lt;b&gt;&quot;검색망을 넓게 펼쳐 후보를 모으고, 리랭커로 노이즈를 정밀하게 깎아내는&quot; 이 정교한 줄다리기&lt;/b&gt;야말로 실무 RAG 시스템의 성패를 가르는 진짜 핵심이랍니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h4 id=&quot;[한-단계-더-들어가-보기]-HyDE(가상-문서-기반-검색-보조)란?&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;15286&quot; data-local-id=&quot;0306e0ad1a73&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;[한 단계 더 들어가 보기] HyDE(가상 문서 기반 검색 보조)란?&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (16).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o4vFh/dJMcadhZJ6x/JI75nVJp1Hf0ciK61eLuTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o4vFh/dJMcadhZJ6x/JI75nVJp1Hf0ciK61eLuTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o4vFh/dJMcadhZJ6x/JI75nVJp1Hf0ciK61eLuTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo4vFh%2FdJMcadhZJ6x%2FJI75nVJp1Hf0ciK61eLuTk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 : 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;433&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (16).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;7c1b60f94155&quot; data-renderer-start-pos=&quot;15329&quot; data-ke-size=&quot;size16&quot;&gt;실무 블로그에서 자주 언급되는 &amp;lsquo;가상 문서 기반 검색 보조(HyDE, Hypothetical Document Embeddings)&amp;rsquo;는, 사용자의 질문을 곧바로 검색에 던지는 대신 먼저 AI에게 &amp;lsquo;이 질문에 대한 이상적인 정답 문서&amp;rsquo;를 가상으로 써보게 한 뒤, 그 문서의 의미를 기준으로 실제 문서를 찾는 방식이에요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;7c1b60f94155&quot; data-renderer-start-pos=&quot;15329&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;88f131502a60&quot; data-renderer-start-pos=&quot;15507&quot; data-ke-size=&quot;size16&quot;&gt;쉽게 말하면, 짧고 모호한 질문과 길고 전문적인 실무 문서 사이에 &amp;lsquo;중간 다리&amp;rsquo;를 놓아주는 기법이라고 보면 돼요. 질문이 조금 애매하더라도, HyDE가 그 의도를 좀 더 완성된 문서 형태로 풀어주면 관련 문서를 훨씬 잘 찾아낼 수 있죠.  &amp;zwj;♂️ 결국 질문과 실제 문서 사이의 의미 간극을 메워서 검색 가능성을 높여주는 역할을 해요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;88f131502a60&quot; data-renderer-start-pos=&quot;15507&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;fe852592a18e&quot; data-renderer-start-pos=&quot;15696&quot; data-ke-size=&quot;size16&quot;&gt;다만 이 기술을 운영 환경에서 항상 켜두는 건 부담이 꽤 커요. &amp;lsquo;가상 문서 생성 &amp;rarr; 벡터 변환 &amp;rarr; 검색&amp;rsquo; 단계를 한 번 더 거쳐야 해서 &lt;b&gt;응답 속도와 비용이 함께 늘어날 수 있거든요.&lt;/b&gt; 게다가 &lt;b&gt;AI가 질문 의도를 잘못 해석하면 검색 전체가 엉뚱한 방향으로 흘러갈 수도 있어요.&lt;/b&gt; 특히 수치, 버전, 고유명사처럼 정밀한 정보가 중요한 질문에서는 작은 팩트 오류 하나만으로도 정답 문서를 놓칠 위험이 커지죠. ⚠️&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;fe852592a18e&quot; data-renderer-start-pos=&quot;15696&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;b972de945ecb&quot; data-renderer-start-pos=&quot;15925&quot; data-ke-size=&quot;size16&quot;&gt;그래서 HyDE는 만능 기본 기능이라기보다, 필요할 때만 꺼내 쓰는 &amp;lsquo;선택적 호출&amp;rsquo;에 더 가까워요. 수치나 고유명사가 분명한 질문에는 기본적으로 꺼두고, 라우터가 &amp;ldquo;이 질문은 너무 모호해서 일반 검색만으로는 어렵겠는데?&amp;rdquo;라고 판단할 때만 비상용으로 호출하는 쪽이 더 좋은 설계예요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;b972de945ecb&quot; data-renderer-start-pos=&quot;15925&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;1b719f90fcc0&quot; data-renderer-start-pos=&quot;16084&quot; data-ke-size=&quot;size16&quot;&gt;결국 HyDE는 늘 앞에 세워두는 주력 선수라기보다, 정말 필요할 때 투입하는 구원투수에 가까워요. 의미를 보강해주는 힘은 분명 강력하지만, 속도 저하와 환각, 팩트 왜곡의 위험도 함께 안고 있어서, 실무에서는 &amp;lsquo;기본 OFF, 필요할 때만 ON&amp;rsquo;이 가장 현실적인 답이라고 볼 수 있어요.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;5.-Re-ranking의-진화:-Cross-Encoder에서-LLM-Re-ranker,-Ranking-Free-Selection까지&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;16247&quot; data-local-id=&quot;db9e4aefb2ae&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;5. Re-ranking의 진화: Cross-Encoder에서 LLM Re-ranker, Ranking-Free Selection까지&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id=&quot;5.1-Retriever와-Re-ranker의-역할-차이&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;16323&quot; data-local-id=&quot;d29359806a2e&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Retriever와 Re-ranker의 역할 차이&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (17).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cMkGhH/dJMcahYXoNd/aIk53lLHhKoMZgjMvkC011/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cMkGhH/dJMcahYXoNd/aIk53lLHhKoMZgjMvkC011/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cMkGhH/dJMcahYXoNd/aIk53lLHhKoMZgjMvkC011/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcMkGhH%2FdJMcahYXoNd%2FaIk53lLHhKoMZgjMvkC011%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 : 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;433&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (17).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;bc0d26fe5e4c&quot; data-renderer-start-pos=&quot;16359&quot; data-ke-size=&quot;size16&quot;&gt;검색 파이프라인에는 이름은 비슷해 보여도 맡은 임무가 완전히 다른 두 명의 선수가 있습니다. 바로 1차 검색을 담당하는 리트리버(Retriever)와 2차로 순위를 매기는 리랭커(Re-ranker)예요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;bc0d26fe5e4c&quot; data-renderer-start-pos=&quot;16359&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;8f6772a00de8&quot; data-renderer-start-pos=&quot;16474&quot; data-ke-size=&quot;size16&quot;&gt;먼저 &lt;b&gt;리트리버의 핵심 임무는 수억 개의 문서 바다에서 정답이 있을 만한 후보들을 최대한 빠르고 넓게 걷어 올리는 '회수율' 확보&lt;/b&gt;입니다. 짧은 시간 안에 초고속 탐색을 해내야 하죠. 반면, &lt;b&gt;리랭커의 목표는 그렇게 좁혀진 50~100개 남짓한 후보군 안에서 진짜 정답을 1위로 끌어올리는 '정밀도' 확보&lt;/b&gt;에 있어요. 리랭커는 질문과 문서를 1대 1로 깐깐하게 묶어서 단어들 사이의 깊은 맥락을 파악하는 &lt;b&gt;크로스 인코더(Cross-encoder)&lt;/b&gt; 구조를 쓰기 때문에, 연산은 조금 무겁지만 의미 관계를 완벽하게 짚어냅니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;8f6772a00de8&quot; data-renderer-start-pos=&quot;16474&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;7908b69e088d&quot; data-renderer-start-pos=&quot;16763&quot; data-ke-size=&quot;size16&quot;&gt;왜 굳이 이 두 단계를 번거롭게 나눠야 할까요? 앞서 배운 하이브리드 검색이나 질의 분해 기술로 검색망을 넓히면 정답을 건질 확률은 높아지지만, 그만큼 쓸모없는 노이즈 문서도 덩달아 쏟아져 들어오기 때문이에요. 심지어 단순하게 순위표만 보고 점수를 합치면, 엉뚱한 노이즈 문서가 운 좋게 상위권으로 올라와 전체 성능을 깎아먹기도 하죠.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;7908b69e088d&quot; data-renderer-start-pos=&quot;16763&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;5e46c796749a&quot; data-renderer-start-pos=&quot;16952&quot; data-ke-size=&quot;size16&quot;&gt;이때 구원투수처럼 등판하는 것이 바로 리랭커입니다. 1차 검색 모델은 &quot;쿠버네티스 파드 축출&quot; 같은 전문 용어의 미묘한 뉘앙스를 가끔 헷갈리지만, 리랭커는 문서와 질문을 직접 대조하기 때문에 이런 한계를 훌륭하게 바로잡아 줍니다. 최근 실험에서도 아주 가벼운 소형 리랭커 하나를 추가했을 뿐인데, 엉뚱한 답을 내놓던 AI의 오류가 대거 수정되면서 최종 정확도가 7.6%p나 수직 상승했다고 해요.  &lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;5e46c796749a&quot; data-renderer-start-pos=&quot;16952&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;73bcbfb3c4d8&quot; data-renderer-start-pos=&quot;17178&quot; data-ke-size=&quot;size16&quot;&gt;비유하자면 리트리버는 넓은 바다에 무작정 던지는 '그물'이고, 리랭커는 건져 올린 물고기 중 진짜만 핀셋으로 골라내는 '체'와 같습니다.  ️ 상위 문서들을 다시 줄 세우는 데 시간이 1~2초 정도 추가되긴 하지만, 이는 무서운 할루시네이션(환각)을 원천 차단하고 검색 품질을 최상으로 끌어올리는 가장 가성비 좋은 실무 전략이랍니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h4 id=&quot;5.2-Cross-encoder,-LLM-Re-ranker,-Ranking-Free-Selection의-진화&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;17368&quot; data-local-id=&quot;0bb880dbd069&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Cross-encoder, LLM Re-ranker, Ranking-Free Selection의 진화&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (18).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wWJwr/dJMcai4AaU1/0g4Q7qBTWNMiTz70111iP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wWJwr/dJMcai4AaU1/0g4Q7qBTWNMiTz70111iP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wWJwr/dJMcai4AaU1/0g4Q7qBTWNMiTz70111iP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwWJwr%2FdJMcai4AaU1%2F0g4Q7qBTWNMiTz70111iP1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 : 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;433&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (18).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;1bc06996ea25&quot; data-renderer-start-pos=&quot;17433&quot; data-ke-size=&quot;size16&quot;&gt;이 훌륭한 리랭킹 기술은 실제 서비스 환경의 깐깐한 요구사항인 '비용'과 '속도'를 만족시키기 위해 크게 세 가지 형태로 숨 가쁘게 진화하고 있어요. ⚙️&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;2ea814c9-4261-4975-b9de-a35b97f15e04&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;가속화된 크로스 인코더:&lt;/b&gt; 현재 실무에서 가장 널리 쓰이는 주류 방식이에요. 연산 비용이 저렴하면서도 환각을 35%나 줄여주죠. 최근에는 계산 중간에 '관련 없는 문서'라고 판단되면 연산을 일찍 끝내버리는 &lt;b&gt;조기 종료(Early Exit)&lt;/b&gt; 꼼수를 써서 속도를 4배 가까이 끌어올린 모델들도 등장하고 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;무거운 LLM의 경량화:&lt;/b&gt; 똑똑한 거대 언어 모델(LLM)을 리랭커로 쓰면 성능은 압도적이지만, 문서마다 일일이 점수를 매기려다 보니 시간과 비용이 너무 많이 들었어요. 이를 극복하기 위해 최근에는 텍스트를 무겁게 생성하는 대신 내부의 &lt;b&gt;'집중도 점수'만 살짝 빼오거나, 100개의 후보 문서를 한 번에 쓱 훑어보는(One-pass)&lt;/b&gt; 방식으로 효율성을 극대화하고 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;순위 없는 선택(Ranking-Free Selection):&lt;/b&gt; 최근 등장한 가장 파괴적인 패러다임 변화예요. 한 번에 책 한 권 분량을 읽어내는 최신 AI 시대가 오면서, 문서를 1위부터 예쁘게 줄 세우는 것보다 꼭 필요한 문서만 쏙쏙 골라 '바구니에 빠짐없이 담아주는 것(Coverage)'이 훨씬 중요해졌거든요. 특히 여러 문서를 엮어야 하는 복잡한 질문에서는 순위에 집착하기보다 이 선택형 모델을 쓰는 게 정답률을 크게 올려준다는 흥미로운 연구 결과가 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;cca942d3cf13&quot; data-renderer-start-pos=&quot;18171&quot; data-ke-size=&quot;size16&quot;&gt;나아가 최신 아키텍처들은 문서 관련성이 헷갈리는 어려운 질문에만 이런 리랭킹 연산을 몰아주는 방향으로 발전하며 완벽한 균형을 찾아가고 있답니다.  &lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h4 id=&quot;5.3-어떤-상황에서-어떤-재정렬-방식이-유리한가&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;18257&quot; data-local-id=&quot;578283a24921&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;어떤 상황에서 어떤 재정렬 방식이 유리한가&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (19).png&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;941&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Dbqta/dJMcacDpmC6/GLyEvMSJJNTNa4YCAOJrsk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Dbqta/dJMcacDpmC6/GLyEvMSJJNTNa4YCAOJrsk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Dbqta/dJMcacDpmC6/GLyEvMSJJNTNa4YCAOJrsk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDbqta%2FdJMcacDpmC6%2FGLyEvMSJJNTNa4YCAOJrsk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 : 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;366&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (19).png&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;941&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;6f9084c7dc5e&quot; data-renderer-start-pos=&quot;18289&quot; data-ke-size=&quot;size16&quot;&gt;그렇다면 우리는 어떤 방식을 골라야 할까요? 언제나 '정확도 요구 수준, 허용되는 지연 시간, 단위 비용'이라는 세 가지 축을 깐깐하게 저울질해 봐야 해요. ⚖️&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;6f9084c7dc5e&quot; data-renderer-start-pos=&quot;18289&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;b55b39508a66&quot; data-renderer-start-pos=&quot;18381&quot; data-ke-size=&quot;size16&quot;&gt;만약 고객 트래픽이 쏟아져서 1초의 지연도 허용할 수 없는 빡빡한 환경이라면, 아무리 가성비 좋은 1.5초짜리 크로스 인코더도 부담스럽습니다. 이럴 땐 앞서 말씀드린 연산을 중간에 끊어버리는 &lt;b&gt;'조기 종료(Early Exit)' 기법 등 가벼운 리랭킹 전략&lt;/b&gt;이 필수적이에요. ⏱️&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;b55b39508a66&quot; data-renderer-start-pos=&quot;18381&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;62102678c7c7&quot; data-renderer-start-pos=&quot;18537&quot; data-ke-size=&quot;size16&quot;&gt;반면 단순 사실 확인이 아니라 여러 문서를 엮어 종합해야 하는 복잡한 상황이라면 초점이 달라집니다. 이럴 땐 문서의 등수를 매기는 것보다, 필요한 정보 조각들을 빠짐없이 모아주는 &lt;b&gt;'순위 없는 선택'&lt;/b&gt; 방식이 최종 답변의 품질을 훨씬 높여줍니다. 또한 법률이나 의학처럼 미세한 뉘앙스가 목숨 같은 도메인이라면, 비용을 조금 더 감수하더라도 압도적인 성능을 자랑하는 무거운 &lt;b&gt;LLM 기반 리랭커&lt;/b&gt; 도입을 긍정적으로 검토해 봐야 하죠.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;62102678c7c7&quot; data-renderer-start-pos=&quot;18537&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;b6ade1402b42&quot; data-renderer-start-pos=&quot;18776&quot; data-ke-size=&quot;size16&quot;&gt;나아가 엔터프라이즈 환경에서 비용 제어가 최우선이라면 쪼개지 않고 문서를 한 번에 읽어내는 장문 리랭킹(One-pass) 기술을 곁들이는 것이 좋습니다. 결국 최근 실무 현장에서 가장 주목받는 궁극의 트렌드는 바로 '적응형 계산 배분'이에요. 정답이 뚜렷한 쉬운 질문에는 과감히 연산을 아끼고, 헷갈리는 어려운 질문에만 리랭킹 예산을 쏟아부어 정확도와 비용의 최적 곡선을 시스템이 스스로 찾아가게 만드는 것이죠!&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h4 id=&quot;[한-단계-더-들어가-보기]-다국어&amp;middot;장문&amp;middot;반정형-데이터(JSON)-환경에서-리랭커와-Selection-모델-선택-기준&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;19009&quot; data-local-id=&quot;8c151b186412&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;[한 단계 더 들어가 보기] 다국어&amp;middot;장문&amp;middot;반정형 데이터(JSON) 환경에서 리랭커와 Selection 모델 선택 기준&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (20).png&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;941&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ciLpMc/dJMcajoRzFJ/PMF3baWsSdw42quBRfOJc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ciLpMc/dJMcajoRzFJ/PMF3baWsSdw42quBRfOJc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ciLpMc/dJMcajoRzFJ/PMF3baWsSdw42quBRfOJc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FciLpMc%2FdJMcajoRzFJ%2FPMF3baWsSdw42quBRfOJc1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 : 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;366&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (20).png&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;941&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;09498066c232&quot; data-renderer-start-pos=&quot;19079&quot; data-ke-size=&quot;size16&quot;&gt;글로벌 서비스나 다양한 형태의 문서가 섞인 까다로운 실무 환경에서는 리랭커를 고르는 기준도 한층 더 정교해져야 해요.  &lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;0ef6a202-d1e3-4ce2-8445-be79d5984816&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;다국어 환경:&lt;/b&gt; 비영어권 문서가 섞인 곳에 영어 위주로 학습된 모델을 쓰면 한국어 특유의 복잡한 조사나 어미 변화를 놓쳐버립니다. 반드시 다국어 전용 모델을 써야 하죠. 또한, 언어에 따라 키워드 검색과 의미 검색 중 유리한 쪽이 계속 바뀌기 때문에 &lt;b&gt;동적 가중치 조절(Dynamic Alpha Tuning) 기법으로 결합 비율을 유연하게 맞추는 것&lt;/b&gt;이 필수적입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;장문 문서 환경:&lt;/b&gt; 수만 자가 넘어가는 기술 매뉴얼에 짧은 글만 읽는 리랭커를 태우면 뒷부분의 핵심 정보가 통째로 날아갑니다. 따라서 1차 검색 단계부터 &lt;b&gt;문서를 '문단이나 섹션' 단위로 촘촘히 쪼개서 찾아오고, 이를 모아 장문 전용 모델로 한 번에 훑어내는 정교한 파이프라인 설계&lt;/b&gt;가 병행되어야 해요.  &lt;/li&gt;
&lt;li&gt;&lt;b&gt;반정형 데이터(JSON) 환경:&lt;/b&gt; 서버의 에러 로그나 제품 카탈로그 같은 JSON 데이터를 일반 글처럼 붙여버리면 구조적인 의미가 완전히 망가집니다. 실무에서는 이를 막기 위해 &lt;b&gt;키워드 검색에는 정확한 '아이디(Key)'를, 의미 검색에는 '설명(Value)'을 나누어 매핑하는 분리형 전략&lt;/b&gt;을 권장해요. 이후 JSON 구조를 이해하는 특화 리랭커를 쓰거나 데이터를 보기 좋은 '표(Markdown)' 형태로 전처리해 주어야만 의미 손실 없이 진짜 정답을 깎아낼 수 있답니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;6.-실무형-Retrieval-파이프라인-설계&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;19798&quot; data-local-id=&quot;6d0652ddcc8c&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;6. 실무형 Retrieval 파이프라인 설계&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id=&quot;6.1-Routing-&amp;rarr;-Hybrid-Search-&amp;rarr;-Re-ranking/Selection의-기본-파이프라인&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;19825&quot; data-local-id=&quot;e9520714bc8c&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Routing &amp;rarr; Hybrid Search &amp;rarr; Re-ranking/Selection의 기본 파이프라인&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (21).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnfLQ6/dJMcada73Z4/JUzfL2NX5laNb0GMvLYwi1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnfLQ6/dJMcada73Z4/JUzfL2NX5laNb0GMvLYwi1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnfLQ6/dJMcada73Z4/JUzfL2NX5laNb0GMvLYwi1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnfLQ6%2FdJMcada73Z4%2FJUzfL2NX5laNb0GMvLYwi1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 : 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;433&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (21).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;2097b8c7a3dd&quot; data-renderer-start-pos=&quot;19890&quot; data-ke-size=&quot;size16&quot;&gt;자, 이제 지금까지 다루었던 모든 조각들을 하나로 예쁘게 조립해 볼 시간이에요!  &lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;2097b8c7a3dd&quot; data-renderer-start-pos=&quot;19890&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;3d4066ffd974&quot; data-renderer-start-pos=&quot;19939&quot; data-ke-size=&quot;size16&quot;&gt;현대의 엔터프라이즈 RAG 파이프라인은 과거의 단순한 단일 검색 방식에서 완전히 벗어나, &lt;b&gt;[라우팅 &amp;rarr; 하이브리드 검색 &amp;rarr; 재정렬]이라는 탄탄한 3단계 계층 구조&lt;/b&gt;로 설계할 수 있어요. 각 단계는 톱니바퀴처럼 완벽하게 맞물려 돌아가며 불필요한 노이즈를 깎아내죠. 전체 시스템의 성능은 이 세 단계 중 가장 헐거운 고리에 의해 한계가 정해져 버리므로, 단계별로 명확한 임무를 주고 꼼꼼하게 최적화하는 것이 필수적입니다. ⚙️&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;e68e6157-d572-4ba6-9760-157cb47e5bc2&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;1단계: 라우팅 (관제탑)&lt;/b&gt; 가장 먼저 만나는 첫 관문으로, 들어온 질문을 분석해 알맞은 길과 예산을 정해줍니다. &quot;쿠버네티스 파드 축출&quot;처럼 전문 용어가 잔뜩 있다면 키워드 검색 비중을 팍 높여주고, &quot;2026년 최신 보안 정책&quot;을 묻는다면 날짜 필터를 강하게 걸어주는 식이죠. 무거운 AI 대신 &lt;b&gt;가벼운 기계학습 모델만 달아 두어도 90% 이상의 높은 정확도로 트래픽을 똑똑하게 분배&lt;/b&gt;합니다. 첫 단추를 잘못 끼우면 뒤이은 단계들이 줄줄이 무너지기 때문에 아주 엄격한 모니터링이 필요해요.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;2단계: 하이브리드 검색 (그물 던지기)&lt;/b&gt; 라우터의 지시를 받아 넓고 촘촘하게 그물을 던지는 단계입니다. 키워드 검색과 의미 검색을 동시에 돌린 다음 결과를 합쳐주죠. 이때 주의할 점은 &lt;b&gt;'사용자 열람 권한'이나 '특정 날짜' 같은 조건 필터링을 검색이 시작되는 순간 엔진 깊숙한 곳(Pre-filter)에서 같이 처리&lt;/b&gt;해야 한다는 거예요. 이 단계만 잘 설계해도 정답 후보군 확보 능력이 40% 가까이 훌쩍 뜁니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;3단계: 재정렬 및 선택 (족집게 필터링)&lt;/b&gt; 건져 올린 50~100개의 넉넉한 후보군 중에서, 진짜 핵심 정답 3~5개만 날카롭게 솎아내는 최종 수비수 역할이에요. 쉬운 질문은 가벼운 리랭커로 빠르게 넘기고, 까다로운 복합 질문에는 컴퓨팅 파워를 집중해 꼼꼼하게 재평가합니다. 이 마지막 단계 덕분에 &lt;b&gt;검색 정확도의 고점이 수직 상승하며, AI의 할루시네이션을 원천 차단&lt;/b&gt;해 냅니다.  ️&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h4 id=&quot;6.2-기술-문서-RAG에-적합한-검색-아키텍처&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;20907&quot; data-local-id=&quot;2f28768fb7b4&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;기술 문서 RAG에 적합한 검색 아키텍처&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (22).png&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;941&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHyAas/dJMcajbkiSS/wsN07kPmnOYnhMtEi6C4Lk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHyAas/dJMcajbkiSS/wsN07kPmnOYnhMtEi6C4Lk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHyAas/dJMcajbkiSS/wsN07kPmnOYnhMtEi6C4Lk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHyAas%2FdJMcajbkiSS%2FwsN07kPmnOYnhMtEi6C4Lk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 : 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;366&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (22).png&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;941&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;9f7a39b81d47&quot; data-renderer-start-pos=&quot;20938&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 훌륭한 기본 파이프라인을 짰다면, 우리가 주로 다루는 &lt;b&gt;'기술 문서(API 레퍼런스나 인프라 매뉴얼)' 환경&lt;/b&gt;에는 어떻게 적용해야 할까요? 기술 문서는 1) 문서끼리 촘촘하게 얽혀 있고, 2) 버전마다 내용이 휙휙 바뀌며, 3) 자연어와 복잡한 코드가 뒤섞여 있다는 깐깐한 특징이 있어요. 게다가 사내 보안을 위한 철저한 '권한 제어'가 필수죠.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;9f7a39b81d47&quot; data-renderer-start-pos=&quot;20938&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;1a18265b69cd&quot; data-renderer-start-pos=&quot;21135&quot; data-ke-size=&quot;size16&quot;&gt;앞서 3장에서 강조했듯, 기술 문서 RAG의 제1원칙은 검색 후 문서를 지우는 게 아니라, &lt;b&gt;저장할 때부터 권한을 내장해 두는 사전 필터(Pre-filter) 설계&lt;/b&gt;라는 점 잊지 않으셨죠?  &lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;1a18265b69cd&quot; data-renderer-start-pos=&quot;21135&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;d8890b4fe546&quot; data-renderer-start-pos=&quot;21243&quot; data-ke-size=&quot;size16&quot;&gt;이런 특유의 복잡성을 영리하게 풀어내는 핵심 열쇠는 바로 '계층적 청킹(Hierarchical Chunking)과 부모-자식(Parent-Child) 전략'이에요. 기술 문서를 기계처럼 똑같은 길이로 싹둑 자르면 문맥이 완전히 끊어집니다. 실무에서는 &lt;b&gt;문서를 아주 잘게 쪼갠 '자식' 조각으로 정밀하게 검색을 하고, 정답을 찾으면 그 조각을 품고 있는 커다란 '부모' 섹션 전체를 AI에게 전달&lt;/b&gt;하여 풍부한 문맥을 통째로 쥐여주는 방식을 즐겨 씁니다. (이때 코드 예제와 자연어 설명은 별도의 조각으로 떼어 두어야 검색 품질 하락을 막을 수 있어요!)&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;d8890b4fe546&quot; data-renderer-start-pos=&quot;21243&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;24c9f3849d46&quot; data-renderer-start-pos=&quot;21551&quot; data-ke-size=&quot;size16&quot;&gt;마지막으로 가장 이상적인 기술 문서 아키텍처는 의미 검색, 키워드 검색, 그리고 메타데이터 필터를 동시에 굴리는 &lt;b&gt;'트리플 인덱스(Triple Index)' 구조&lt;/b&gt;입니다. 특히 낡은 문서가 치명적인 장애를 부를 수 있는 IT 인프라 환경에서는 &quot;v1.2&quot; 같은 버전을 정확히 짚어내는 &lt;b&gt;'버전 인식(Version-aware)' 기능&lt;/b&gt;이 선택이 아닌 필수랍니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h4 id=&quot;6.3-정확도,-지연시간,-비용-사이의-트레이드오프&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;21751&quot; data-local-id=&quot;f6c8383fc389&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;정확도, 지연시간, 비용 사이의 트레이드오프&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (23).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/64IjW/dJMcahYXo6J/FBILkgk9zpwiiB2Snb2iNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/64IjW/dJMcahYXo6J/FBILkgk9zpwiiB2Snb2iNk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/64IjW/dJMcahYXo6J/FBILkgk9zpwiiB2Snb2iNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F64IjW%2FdJMcahYXo6J%2FFBILkgk9zpwiiB2Snb2iNk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 : 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;433&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (23).png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;bb6426c3fdfb&quot; data-renderer-start-pos=&quot;21784&quot; data-ke-size=&quot;size16&quot;&gt;하지만 이 멋진 시스템을 무턱대고 도입할 수는 없어요. RAG 파이프라인 설계는 마치 &lt;b&gt;정확도, 응답 지연 시간, 운영 비용이라는 세 개의 꼭짓점을 팽팽하게 당기는 제로섬 게임&lt;/b&gt;과 같거든요.   서비스 성격에 맞는 '현실적인 타협점'을 명확히 설정해야 합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;96a9555e-f20c-4c82-9b00-729aab940c2d&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;정확도 vs. 지연 시간:&lt;/b&gt; 검색망을 넓혀 후보를 많이 모으면 정답 확률은 당연히 올라갑니다. 하지만 리랭커가 검토할 문서가 산더미처럼 쌓여 응답 시간이 걷잡을 수 없이 길어지죠. 따라서 실시간 챗봇이라면 문서를 50개 이하로 타이트하게 묶고, 백그라운드 요약 작업이라면 100개까지 넉넉하게 푸는 &lt;b&gt;투트랙 설계&lt;/b&gt;가 필요합니다. ⏳&lt;/li&gt;
&lt;li&gt;&lt;b&gt;정확도 vs. 비용:&lt;/b&gt; 최고의 정확도를 내는 무거운 LLM 기반 리랭커는 일반 모델보다 많게는 100배 이상 비쌉니다. 일상적인 질문에 매번 쓰면 다음 달 클라우드 예산은 파탄 나고 말 거예요.  &lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;39b5bebf2d86&quot; data-renderer-start-pos=&quot;22232&quot; data-ke-size=&quot;size16&quot;&gt;요즘 실무 현장에서는 이 타협점을 똑똑하게 찾아주는 &lt;b&gt;'적응형 예산 통제(Adaptive Control)' 기법&lt;/b&gt;이 대세입니다. 질문 난이도를 스스로 판단해, 1차 검색 결과가 충분히 좋다면 비싼 2차 리랭킹은 과감히 건너뛰는 식이죠. 불확실한 어려운 질문에만 남은 예산을 몰아주면, &lt;b&gt;전체 운영 비용을 30~40% 줄이면서도 정확도의 고점은 끝까지 유지&lt;/b&gt;할 수 있다고 해요.  &lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;마치며:-검색-고도화의-완성,-그리고-다음-과제-'Generation'&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;22444&quot; data-local-id=&quot;faffc9d70f80&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;검색 고도화의 완성, 그리고 다음 과제 'Generation'&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (24).png&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;941&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Mwg46/dJMb997HJmk/WZklnp8jQxAm33uVaKTtvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Mwg46/dJMb997HJmk/WZklnp8jQxAm33uVaKTtvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Mwg46/dJMb997HJmk/WZklnp8jQxAm33uVaKTtvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMwg46%2FdJMb997HJmk%2FWZklnp8jQxAm33uVaKTtvK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 : 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;366&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (24).png&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;941&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;9ef865d478b4&quot; data-renderer-start-pos=&quot;22488&quot; data-ke-size=&quot;size16&quot;&gt;지금까지 kt cloud AI 검색 증강 생성(RAG) 시리즈 5편을 통해, 한 번 정해지면 바뀌지 않는 고정된 방식에서 벗어나 상황에 맞게 유연하게 움직이는 '동적 적응형 검색(Adaptive Retrieval)'으로의 눈부신 진화 과정을 깊이 있게 살펴보았습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;9ef865d478b4&quot; data-renderer-start-pos=&quot;22488&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;38168cc5f1ba&quot; data-renderer-start-pos=&quot;22639&quot; data-ke-size=&quot;size16&quot;&gt;2026년 현재 우리가 마주한 검색 고도화는 단순히 '성능 좋은 AI 모델' 하나를 덜렁 도입한다고 끝나는 문제가 아니에요. 질문의 난이도와 한정된 예산을 꼼꼼히 계산해 최적의 길을 찾아주고(&lt;b&gt;라우팅&lt;/b&gt;), 서로 다른 검색 방식으로 그물을 넓히며(&lt;b&gt;하이브리드 검색&lt;/b&gt;), 날카로운 족집게로 노이즈를 솎아내는(&lt;b&gt;리랭킹&lt;/b&gt;) &lt;b&gt;'지능형 의사결정 파이프라인'을 조립하는 것&lt;/b&gt;이 이번 5편의 진짜 핵심이었습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;38168cc5f1ba&quot; data-renderer-start-pos=&quot;22639&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;fad3857c1f09&quot; data-renderer-start-pos=&quot;22856&quot; data-ke-size=&quot;size16&quot;&gt;특히 기업의 핏줄과도 같은 내부 기술 문서를 다룰 때는, 철저한 권한 제어와 예민한 문서 버전 추적까지 하나의 파이프라인 위에서 톱니바퀴처럼 완벽하게 맞물려야만 하죠. 이렇게 깐깐하고 복잡한 최신 RAG 아키텍처를 우리 팀 실무에 가장 빠르고 안정적으로 안착시키는 최적의 해답, 그게 바로 &lt;b&gt;kt cloud AI Foundry&lt;/b&gt;랍니다.  &lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock floatRight&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (1).png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kWfxm/dJMcac4pFR8/6LHA2fsuWjDNgrKgtTrVZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kWfxm/dJMcac4pFR8/6LHA2fsuWjDNgrKgtTrVZk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kWfxm/dJMcac4pFR8/6LHA2fsuWjDNgrKgtTrVZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkWfxm%2FdJMcac4pFR8%2F6LHA2fsuWjDNgrKgtTrVZk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 : 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술&quot; loading=&quot;lazy&quot; width=&quot;350&quot; height=&quot;1080&quot; data-filename=&quot;[Tech Series] kt cloud AI 검색 증강 생성(RAG) #5 검색 고도화(Retrieval Optimization)와 리랭킹(Re-ranking) 기술 (1).png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;87720b01fbe0&quot; data-renderer-start-pos=&quot;23046&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;AI Foundry가 제공하는 'RAG Suite'는 AI 모델 배포부터 파싱, 임베딩, 그리고 벡터 데이터베이스까지 시스템 구축에 필요한 모든 과정을 표준화된 블록처럼 제공해서 기업의 기술적 진입 장벽을 확 낮춰줍니다. 나아가 다양한 AI 선도 기업들과의 탄탄한 파트너십을 바탕으로, 단순한 검색 봇을 넘어 스스로 생각하고 행동하는 '에이전틱 RAG(Agentic RAG)'로 시스템을 확장해 나가는 데 가장 든든한 심장이 되어줄 거예요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;87720b01fbe0&quot; data-renderer-start-pos=&quot;23046&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;07a11d80a52b&quot; data-renderer-start-pos=&quot;23294&quot; data-ke-size=&quot;size16&quot;&gt;자, 이로써 우리는 환상적인 요리를 만들기 위한 최고급 '식재료(정확한 근거 문서)'를 완벽하게 손질해서 주방으로 넘길 준비를 모두 마쳤습니다!  &amp;zwj; &lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;07a11d80a52b&quot; data-renderer-start-pos=&quot;23294&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;2399a5860a11&quot; data-renderer-start-pos=&quot;23382&quot; data-ke-size=&quot;size16&quot;&gt;다음 6편에서는 드디어 이 훌륭한 식재료들을 불에 올리는 셰프의 영역, 즉 &quot;검색된 문서를 어떻게 요리조리 조립하여 LLM에 전달하고, 찰떡같은 최종 답변을 만들어 낼 것인가&quot;에 대해 본격적으로 다뤄보려 합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;fa387c6acc38&quot; data-renderer-start-pos=&quot;23503&quot; data-ke-size=&quot;size16&quot;&gt;긴 여정, 끝까지 함께해 주셔서 진심으로 감사합니다!&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;03d9346541f7&quot; data-renderer-start-pos=&quot;23534&quot; data-ke-size=&quot;size16&quot;&gt;다음 편에서 뵈어요.  &amp;zwj;♂️&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- CTA (블루 버전, GA4 공통 스크립트용 figure + data-event) --&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; style=&quot;max-width: 600px; margin: 0 auto 40px auto;&quot; data-event=&quot;go_cloud_banner_click&quot; data-name=&quot;cta_platform_banner&quot; data-loc=&quot;body_mid&quot;&gt;&lt;a href=&quot;https://cloud.kt.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 100%; height: auto; border-radius: 8px; display: block;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt%20cloud%20platform.png&quot; alt=&quot;kt cloud 플랫폼 바로가기&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- ================= FAQ 섹션 (그린 버전, 블루 스타일을 그린 톤으로) ================= --&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #009a87; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;b&gt;❓ 자주 묻는 질문 (FAQ)&lt;/b&gt; &lt;/span&gt;&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #E6F8F4; border-bottom: 1px solid #CDEDE7;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87;&quot;&gt; &lt;b&gt;Q. 왜&amp;nbsp;RAG&amp;nbsp;시스템에서&amp;nbsp;하이브리드&amp;nbsp;검색과&amp;nbsp;리랭킹을&amp;nbsp;함께&amp;nbsp;사용하나요?&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #ffffff;&quot;&gt;A.&amp;nbsp;하이브리드&amp;nbsp;검색은&amp;nbsp;키워드&amp;nbsp;기반&amp;nbsp;검색의&amp;nbsp;정확한&amp;nbsp;용어&amp;nbsp;매칭과&amp;nbsp;의미&amp;nbsp;기반&amp;nbsp;검색의&amp;nbsp;문맥&amp;nbsp;이해&amp;nbsp;능력을&amp;nbsp;함께&amp;nbsp;활용하기&amp;nbsp;위해&amp;nbsp;사용됩니다.&amp;nbsp;단일&amp;nbsp;검색&amp;nbsp;방식만&amp;nbsp;사용할&amp;nbsp;경우&amp;nbsp;에러&amp;nbsp;코드,&amp;nbsp;버전,&amp;nbsp;수치처럼&amp;nbsp;정확한&amp;nbsp;표현이&amp;nbsp;중요한&amp;nbsp;질의나&amp;nbsp;동의어&amp;middot;서술형&amp;nbsp;질의에서&amp;nbsp;각각&amp;nbsp;한계가&amp;nbsp;발생할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;리랭킹은&amp;nbsp;하이브리드&amp;nbsp;검색으로&amp;nbsp;확보한&amp;nbsp;후보&amp;nbsp;문서&amp;nbsp;중&amp;nbsp;질문과&amp;nbsp;가장&amp;nbsp;관련성이&amp;nbsp;높은&amp;nbsp;문서를&amp;nbsp;다시&amp;nbsp;정렬해&amp;nbsp;상위에&amp;nbsp;배치하는&amp;nbsp;역할을&amp;nbsp;합니다.&amp;nbsp;이를&amp;nbsp;통해&amp;nbsp;정답&amp;nbsp;문서가&amp;nbsp;누락되거나&amp;nbsp;낮은&amp;nbsp;순위에&amp;nbsp;밀리는&amp;nbsp;문제를&amp;nbsp;줄이고,&amp;nbsp;최종&amp;nbsp;답변에&amp;nbsp;사용되는&amp;nbsp;근거&amp;nbsp;문서의&amp;nbsp;품질을&amp;nbsp;높일&amp;nbsp;수&amp;nbsp;있습니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- ================= 관련/출처 섹션 (그린 박스 버전) ================= --&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 15px; font-weight: bold; color: #000000; font-family: 'Noto Sans KR', sans-serif;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;   관련/출처 &lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 12px 14px; background: #ffffff;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc; color: #292a2e; text-align: left;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;e4c5c407-5b98-40a3-b9fa-07f9cb3685fb&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;797&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://aclanthology.org/2026.eacl-long.8/&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://aclanthology.org/2026.eacl-long.8/&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span&gt;T2-RAGBench: Text-and-Table Benchmark for Evaluating Retrieval-Augmented Generation&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;803&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://arxiv.org/abs/2604.03455&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://arxiv.org/abs/2604.03455&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span data-testid=&quot;icon-position-wrapper&quot;&gt;&lt;/span&gt;&lt;span&gt;Lightweight Query Routing for Adaptive RAG: A Baseline Study on...&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;809&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://arxiv.org/abs/2602.12192&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://arxiv.org/abs/2602.12192&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span data-testid=&quot;icon-position-wrapper&quot;&gt;&lt;/span&gt;&lt;span&gt;Query-focused and Memory-aware Reranker for Long Context Processing&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;815&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://arxiv.org/abs/2510.08109&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://arxiv.org/abs/2510.08109&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span data-testid=&quot;icon-position-wrapper&quot;&gt;&lt;/span&gt;&lt;span&gt;VersionRAG: Version-Aware Retrieval-Augmented Generation for...&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;821&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://arxiv.org/abs/2402.07867&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://arxiv.org/abs/2402.07867&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span data-testid=&quot;icon-position-wrapper&quot;&gt;&lt;/span&gt;&lt;span&gt;PoisonedRAG: Knowledge Corruption Attacks to Retrieval-Augmented...&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;827&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://opensearch.org/blog/introducing-reciprocal-rank-fusion-hybrid-search/&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://opensearch.org/blog/introducing-reciprocal-rank-fusion-hybrid-search/&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span data-testid=&quot;icon-position-wrapper&quot;&gt;&lt;/span&gt;&lt;span&gt;Introducing reciprocal rank fusion for hybrid search&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;833&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://zeroentropy.dev/articles/ultimate-guide-to-choosing-the-best-reranking-model-in-2025/&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://zeroentropy.dev/articles/ultimate-guide-to-choosing-the-best-reranking-model-in-2025/&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span data-testid=&quot;icon-position-wrapper&quot;&gt;&lt;/span&gt;&lt;span&gt;Ultimate Guide to Choosing the Best Reranking Model in 2026 &amp;mdash; ZeroEntropy Blog&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;839&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://app.ailog.fr/en/blog/news/reranking-cross-encoders-study&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://app.ailog.fr/en/blog/news/reranking-cross-encoders-study&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span data-testid=&quot;icon-position-wrapper&quot;&gt;&lt;/span&gt;&lt;span&gt;New Research: Cross-Encoder Reranking Improves RAG Accuracy by 40%&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;845&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://www.emergentmind.com/topics/hypothetical-document-embeddings-hyde&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://www.emergentmind.com/topics/hypothetical-document-embeddings-hyde&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span data-testid=&quot;icon-position-wrapper&quot;&gt;&lt;/span&gt;&lt;span&gt;HyDE: Hypothetical Document Embeddings&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;851&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://www.emergentmind.com/topics/routerag&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://www.emergentmind.com/topics/routerag&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span data-testid=&quot;icon-position-wrapper&quot;&gt;&lt;/span&gt;&lt;span&gt;RouteRAG: Adaptive Routing in RAG Systems&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- 포스터 이미지 3개 한 줄 배치 (가운데 정렬 + 링크 추가) --&gt;&lt;/p&gt;
&lt;div&gt;
&lt;style&gt;  /* 모바일에서 포스터 크기 줄이기 */  @media (max-width: 480px) {    .poster-figure {      max-width: 30% !important;  /* 한 줄에 3개 들어오도록 */      flex: 0 0 30% !important;    }    .poster-figure img {      width: 100% !important;      height: auto !important;    }  }&lt;/style&gt;
&lt;/div&gt;
&lt;div style=&quot;display: flex; justify-content: center; align-items: flex-start; gap: 15px; margin: 30px auto; flex-wrap: wrap; text-align: center;&quot;&gt;&lt;!-- 1번 배너: 클라우드 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;cloud_industry_poster_click&quot; data-name=&quot;cloud_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://cloud.kt.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud1.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;!-- 2번 배너: 데이터센터 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;datacenter_industry_poster_click&quot; data-name=&quot;datacenter_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://www.kt-idc.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud2.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;!-- 3번 배너: AI 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;ai_industry_poster_click&quot; data-name=&quot;ai_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://cloud.kt.com/category/?ctgryId=C000000001&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud3.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;/div&gt;</description>
      <category>Tech Story/Tech Inside</category>
      <category>AdaptiveRetrieva</category>
      <category>AI검색</category>
      <category>KTCloud</category>
      <category>LLM</category>
      <category>Rag</category>
      <category>retrievalaugmentedgeneration</category>
      <category>VectorSearch</category>
      <category>검색최적화</category>
      <category>리랭킹</category>
      <category>하이브리드검색</category>
      <author>kt cloud 기술 블로그</author>
      <guid isPermaLink="true">https://tech.ktcloud.com/454</guid>
      <comments>https://tech.ktcloud.com/entry/2026-06-ktcloud-ai-rag-reranking-%EA%B2%80%EC%83%89-%EA%B3%A0%EB%8F%84%ED%99%94#entry454comment</comments>
      <pubDate>Fri, 5 Jun 2026 19:44:49 +0900</pubDate>
    </item>
    <item>
      <title>[기술분석] Kubernetes Gateway API에서 트래픽을 세밀하게 제어하는 Policy 객체 파헤치기</title>
      <link>https://tech.ktcloud.com/entry/2026-06-ktcloud-kubernetes-gateway-api-%ED%8A%B8%EB%9E%98%ED%94%BD-%EC%A0%9C%EC%96%B4</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 티스토리용 시맨틱 HTML 기술 블로그 템플릿 (개선된 UI) --&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;article style=&quot;font-family: 'Noto Sans KR', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; max-width: 100%; margin: 0 auto; line-height: 1.7; color: #2c3e50; background: #ffffff;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 메타데이터 섹션 --&gt; &lt;/span&gt;&lt;header style=&quot;background: linear-gradient(135deg, #009a87 0%, #00b39f 100%); color: white; padding: 20px 25px; text-align: right; font-weight: 600; border-radius: 15px; margin-bottom: 35px; box-shadow: 0 8px 25px rgba(0, 154, 135, 0.15); position: relative; overflow: hidden;&quot;&gt;
&lt;div style=&quot;position: absolute; top: -50%; right: -10%; width: 200px; height: 200px; background: rgba(255,255,255,0.1); border-radius: 50%; transform: rotate(45deg);&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;position: relative; z-index: 2;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;b&gt; &lt;span style=&quot;font-size: 1.1rem; text-shadow: rgba(0, 0, 0, 0.1) 0px 2px 4px;&quot;&gt; [ kt cloud Container Service팀 박지선 님 ] &lt;/span&gt; &lt;/b&gt; &lt;/span&gt;&lt;/div&gt;
&lt;/header&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 콘텐츠 구조 및 메타데이터 표준화 적용 --&gt; &lt;/span&gt;
&lt;article&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 작성자 정보 (시맨틱 헤더) --&gt; &lt;/span&gt;&lt;header style=&quot;margin: 20px 0;&quot;&gt;
&lt;section style=&quot;margin: 25px 0;&quot;&gt;&lt;header&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 요약 섹션 헤더 - 초미니멀 디자인 --&gt; &lt;/span&gt;
&lt;h4 style=&quot;margin: 15px 0 10px 0;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87; background: #f0fffe; padding: 4px 10px; border-radius: 12px; border: 1px solid #d4eeeb; display: inline-flex; align-items: center; gap: 5px; font-weight: bold; font-size: 0.9em;&quot;&gt; &lt;span style=&quot;font-size: 0.8em;&quot;&gt; &lt;/span&gt; 요약 &lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;이 글에서는 Kubernetes Gateway API의 Policy 객체를 활용해 트래픽 동작을 제어하는 방식과 적용 범위를 다룹니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;운영 환경에서 설정 혼선을 줄이고 안정적인 트래픽 관리를 위한 기준을 정리합니다.&lt;/span&gt;&lt;/p&gt;
&lt;/header&gt;&lt;/section&gt;
&lt;/header&gt;&lt;/article&gt;
&lt;/article&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;#Kubernetes&amp;nbsp;#GatewayAPI&amp;nbsp;#Policy&amp;nbsp;#ClientSettingsPolicy&amp;nbsp;#BackendTLSPolicy&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;1.-개요&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;772&quot; data-local-id=&quot;40366b47fd8b&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;1. 개요&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;9632a0dbe528&quot; data-renderer-start-pos=&quot;842&quot; data-ke-size=&quot;size16&quot;&gt;이전 편에서 Gateway API 사용해서 Gateway와 HTTPRoute로 기본 라우팅을 구성했다면, 이번 편에서는 &lt;b&gt;Policy 객체&lt;/b&gt;로 트래픽을 세밀하게 제어하는 방법을 다룹니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;9632a0dbe528&quot; data-renderer-start-pos=&quot;842&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;f35c5387b5fa&quot; data-renderer-start-pos=&quot;947&quot; data-ke-size=&quot;size16&quot;&gt;타임아웃, 세션 유지, 백엔드 TLS 등 기존 Ingress에서 Annotation으로 억지로 처리하던 것들을 표준화된 API로 다루는 방법을 알아보겠습니다.&lt;/p&gt;
&lt;figure id=&quot;og_1780628603044&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[기술 분석] kubernetes Ingress API의 중단. 그 뒤를 잇는 Gateway API 파헤치기&quot; data-og-description=&quot;[ kt cloud Container Service팀 박지선 님 ]   요약 이 글에서는 Kubernetes Ingress API의 지원 중단 배경과 Gateway API의 개념 및 활용 방식을 다룹니다.클러스터 트래픽 관리의 표준 변화에 맞춰 운영 안정성&quot; data-og-host=&quot;tech.ktcloud.com&quot; data-og-source-url=&quot;https://tech.ktcloud.com/entry/2026-05-ktcloud-kubernetes-ingress-gateway-%EC%A0%84%ED%99%98-%EB%B6%84%EC%84%9D&quot; data-og-url=&quot;https://tech.ktcloud.com/entry/2026-05-ktcloud-kubernetes-ingress-gateway-%EC%A0%84%ED%99%98-%EB%B6%84%EC%84%9D&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/H5pu3/dJMb87gd47b/v0owgvpTqfSXjxA08mcdD1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/lGbFh/dJMb8T97eb8/OfbkfI4Tv1lkJxIMsTx5qK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/clqtRC/dJMb82MKIrQ/cgVNMXbzzrLSoOzhOUeo61/img.png?width=851&amp;amp;height=1276&amp;amp;face=0_0_851_1276&quot;&gt;&lt;a href=&quot;https://tech.ktcloud.com/entry/2026-05-ktcloud-kubernetes-ingress-gateway-%EC%A0%84%ED%99%98-%EB%B6%84%EC%84%9D&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://tech.ktcloud.com/entry/2026-05-ktcloud-kubernetes-ingress-gateway-%EC%A0%84%ED%99%98-%EB%B6%84%EC%84%9D&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/H5pu3/dJMb87gd47b/v0owgvpTqfSXjxA08mcdD1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/lGbFh/dJMb8T97eb8/OfbkfI4Tv1lkJxIMsTx5qK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/clqtRC/dJMb82MKIrQ/cgVNMXbzzrLSoOzhOUeo61/img.png?width=851&amp;amp;height=1276&amp;amp;face=0_0_851_1276');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[기술 분석] kubernetes Ingress API의 중단. 그 뒤를 잇는 Gateway API 파헤치기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;[ kt cloud Container Service팀 박지선 님 ]   요약 이 글에서는 Kubernetes Ingress API의 지원 중단 배경과 Gateway API의 개념 및 활용 방식을 다룹니다.클러스터 트래픽 관리의 표준 변화에 맞춰 운영 안정성&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;tech.ktcloud.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;Policy-객체란?&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;1040&quot; data-local-id=&quot;b6853215c1b7&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;Policy 객체란?&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;2de73c219a05&quot; data-renderer-start-pos=&quot;1053&quot; data-ke-size=&quot;size16&quot;&gt;Gateway API에서 &lt;b&gt;Policy 객체&lt;/b&gt;는 Gateway, HTTPRoute, 또는 Service에 붙여서(&lt;b&gt;attach&lt;/b&gt;) 트래픽 동작을 제어하는 확장 리소스를 말합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;eb85259f7a8a&quot; data-renderer-start-pos=&quot;1151&quot; data-ke-size=&quot;size16&quot;&gt;기존 Ingress API에서는 아래 예시와 같이 트래픽 설정들이 전부 Annotation이었는데요,&lt;/p&gt;
&lt;pre id=&quot;code_1780628770143&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 기존 Ingress 방식 &amp;mdash; 줄줄이 Annotation 지옥의 예시
annotations:
  nginx.ingress.kubernetes.io/proxy-connect-timeout: &quot;30&quot;
  nginx.ingress.kubernetes.io/proxy-read-timeout: &quot;60&quot;
  nginx.ingress.kubernetes.io/affinity: &quot;cookie&quot;
  nginx.ingress.kubernetes.io/ssl-redirect: &quot;true&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;45c2a73842d6&quot; data-renderer-start-pos=&quot;1477&quot; data-ke-size=&quot;size16&quot;&gt;Gateway API에서는 이 모든 것이 &lt;b&gt;독립적인 CRD&lt;/b&gt;로 분리되어 명시적으로 관리됩니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;Policy-레벨&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;1532&quot; data-local-id=&quot;d0d5f8bf4cf0&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;Policy 레벨&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;2bd4a3286bb6&quot; data-renderer-start-pos=&quot;1543&quot; data-ke-size=&quot;size16&quot;&gt;Gateway API의 Policy는 모든 GatewayClass에서 공통으로 사용 가능한 Policy와 그렇지 않은 Policy가 있습니다. 크게 Standard(표준), Experimental(실험적), Implementation-specific (구현체 전용) 이렇게 3가지 레벨로 분류됩니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;cfcf0e6d-48a7-44ad-88c8-0c71a751c121&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Standard :&lt;/b&gt; BackendTLSPolicy처럼 어떤 솔루션을 써도 똑같이 동작하는 정책.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Experimental :&lt;/b&gt; 표준화가 진행 중인 정책.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Implementation-specific :&lt;/b&gt; NGINX의 UpstreamSettingsPolicy처럼 특정 엔진의 고유 기능을 제어하기 위해 해당 벤더가 만든 정책.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;dc64d028e9bb&quot; data-renderer-start-pos=&quot;1902&quot; data-ke-size=&quot;size16&quot;&gt;뒤에 설명할 ClientSettingsPolicy 와 같은 policy는 NGINX Gateway Fabric에서 만든 전용 CRD(Custom Resource Definition)로, Istio와 같은 다른 솔루션 GatewayClass 에서는 다른 방식으로 사용합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;Policy-Attachment-방식&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;2059&quot; data-local-id=&quot;9f31c30e5bce&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;Policy Attachment 방식&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock floatRight&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;con06_0601_logo.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsaoAk/dJMcabEzyv3/sfELTtJqUAUy5ebDEEm5k1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsaoAk/dJMcabEzyv3/sfELTtJqUAUy5ebDEEm5k1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsaoAk/dJMcabEzyv3/sfELTtJqUAUy5ebDEEm5k1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsaoAk%2FdJMcabEzyv3%2FsfELTtJqUAUy5ebDEEm5k1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[기술분석] Kubernetes Gateway API에서 트래픽을 세밀하게 제어하는 Policy 객체 파헤치기&quot; loading=&quot;lazy&quot; width=&quot;350&quot; height=&quot;350&quot; data-filename=&quot;con06_0601_logo.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;330fbcf2dcde&quot; data-renderer-start-pos=&quot;2081&quot; data-ke-size=&quot;size16&quot;&gt;정의된 Policy는 다른 객체에 attach 하여 사용하는데, attach에는 두 가지 방식이 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;da45a1bed8f9&quot; data-renderer-start-pos=&quot;2142&quot; data-ke-size=&quot;size16&quot;&gt;Implementation-specific 레벨의 Policy를 사용 전, docs에서 어떤 방식으로 동작하는 Policy인지 파악이 필요합니다.&lt;/p&gt;
&lt;h4 id=&quot;Direct-Policy-Attachment(직접-참조-정책)&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;2226&quot; data-local-id=&quot;4e9293c24a7e&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Direct Policy Attachment(직접 참조 정책)&lt;/b&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;3edc3a7f9ad5&quot; data-renderer-start-pos=&quot;2262&quot; data-ke-size=&quot;size16&quot;&gt;정책이 지정한 &lt;b&gt;단일 객체에만&lt;/b&gt; 적용되며, 상위/하위 리소스에 영향을 주지 않습니다. 1:1 적용 됩니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;21900e93-c064-4a1e-8d25-ae653ec0eb42&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-renderer-start-pos=&quot;2324&quot; data-annotation-mark=&quot;true&quot; data-annotation-inline-node=&quot;true&quot;&gt;&lt;span data-color=&quot;blue&quot; data-node-type=&quot;status&quot;&gt;&lt;span style=&quot;background-color: #8fb8f6;&quot;&gt;&lt;span style=&quot;color: #292a2e;&quot;&gt;standard&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; BackendTLSPolicy / &lt;span data-renderer-start-pos=&quot;2345&quot; data-annotation-mark=&quot;true&quot; data-annotation-inline-node=&quot;true&quot;&gt;&lt;span data-color=&quot;green&quot; data-node-type=&quot;status&quot;&gt;&lt;span style=&quot;background-color: #b3df72;&quot;&gt;&lt;span style=&quot;color: #292a2e;&quot;&gt;NGinx&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; UpstreamSettingsPolicy &amp;rarr; Service (1:1 적용)&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;Inherited-Policy-Attachment(상속형-정책)&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;2394&quot; data-local-id=&quot;1e5754b035ff&quot; data-ke-size=&quot;size20&quot;&gt;Inherited Policy Attachment(상속형 정책) &lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;b63b760ee171&quot; data-renderer-start-pos=&quot;2432&quot; data-ke-size=&quot;size16&quot;&gt;정책이 &lt;b&gt;계층 구조를 따라 하위로 상속&lt;/b&gt;되며, Gateway에 붙이면 하위 모든 HTTPRoute에 영향을 줍니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;ccb17cf4ac41&quot; data-renderer-start-pos=&quot;2497&quot; data-ke-size=&quot;size16&quot;&gt;하위 객체에도 적용 되어져 있는 경우, 하위 객체의 정책이 상위보다 Override되어 우선 적용 됩니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;64d841e2-dded-40c3-9619-8a09c0113f3e&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-renderer-start-pos=&quot;2561&quot; data-annotation-mark=&quot;true&quot; data-annotation-inline-node=&quot;true&quot;&gt;&lt;span data-color=&quot;green&quot; data-node-type=&quot;status&quot;&gt;&lt;span style=&quot;background-color: #b3df72;&quot;&gt;&lt;span style=&quot;color: #292a2e;&quot;&gt;NGinx&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; ClientSettingsPolicy &amp;rarr; Gateway &amp;rarr; (모든 HTTPRoute 상속)&lt;br /&gt;↘ HTTPRoute (개별 override 가능)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;구간-별-Policy-제어-범위&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;2678&quot; data-local-id=&quot;db860908fa39&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;구간 별 Policy 제어 범위&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;3758cc59826d&quot; data-renderer-start-pos=&quot;2697&quot; data-ke-size=&quot;size16&quot;&gt;Policy 별로 트래픽을 제어하는 범위가 다릅니다. 따라서 구간 별 세세하게 설정을 다르게 커스텀 할 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;d93b77bc-220c-4622-8266-d1b8e30d7669&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-renderer-start-pos=&quot;2767&quot; data-annotation-mark=&quot;true&quot; data-annotation-inline-node=&quot;true&quot;&gt;&lt;span data-color=&quot;green&quot; data-node-type=&quot;status&quot;&gt;&lt;span style=&quot;background-color: #b3df72;&quot;&gt;&lt;span style=&quot;color: #292a2e;&quot;&gt;NGinx&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; ClientSettingsPolicy 의 경우, 가장 앞단에서 Client와 Gateway 객체 간 트래픽을 제어합니다.&lt;/li&gt;
&lt;li&gt;&lt;span data-renderer-start-pos=&quot;2842&quot; data-annotation-mark=&quot;true&quot; data-annotation-inline-node=&quot;true&quot;&gt;&lt;span data-color=&quot;blue&quot; data-node-type=&quot;status&quot;&gt;&lt;span style=&quot;background-color: #8fb8f6;&quot;&gt;&lt;span style=&quot;color: #292a2e;&quot;&gt;standard&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; BackendTLSPolicy 의 경우, Gateway 와 실제 Service(Pod) 객체 간 트래픽을 제어합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;afd8933e68ee&quot; data-renderer-start-pos=&quot;2915&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;5126baf320ed&quot; data-renderer-start-pos=&quot;2917&quot; data-ke-size=&quot;size16&quot;&gt;트래픽 흐름에서 Policy가 적용되는 구간을 그림으로 표현하면 이러합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[기술분석] Kubernetes Gateway API에서 트래픽을 세밀하게 제어하는 Policy 객체 파헤치기.png&quot; data-origin-width=&quot;4476&quot; data-origin-height=&quot;780&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOpXEF/dJMcacXEmCd/s8JulTzW3Czpl9M1D0thKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOpXEF/dJMcacXEmCd/s8JulTzW3Czpl9M1D0thKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOpXEF/dJMcacXEmCd/s8JulTzW3Czpl9M1D0thKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOpXEF%2FdJMcacXEmCd%2Fs8JulTzW3Czpl9M1D0thKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4476&quot; height=&quot;780&quot; data-filename=&quot;[기술분석] Kubernetes Gateway API에서 트래픽을 세밀하게 제어하는 Policy 객체 파헤치기.png&quot; data-origin-width=&quot;4476&quot; data-origin-height=&quot;780&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;4565efabe98e&quot; data-renderer-start-pos=&quot;2967&quot; data-ke-size=&quot;size16&quot;&gt;Nginx Gateway Class에서 제공하는 ClientSettingsPolicy와 Gateway API 표준인 BackendTLSPolicy를 좀더 자세히 살펴보겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;클라이언트-트래픽-제어:-ClientSettingsPolicy&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;3070&quot; data-local-id=&quot;97e3446d70e0&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;클라이언트 트래픽 제어: ClientSettingsPolicy&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;262ded6c0f85&quot; data-renderer-start-pos=&quot;3106&quot; data-ke-size=&quot;size16&quot;&gt;ClientSettingsPolicy 는 클라이언트(사용자 브라우저/앱)와 NGINX Gateway 사이의 연결 동작을 설정합니다. keepalive, client body max size등을 제어하며 &lt;b&gt;Inherited Policy&lt;/b&gt;로 동작합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;3246&quot; data-local-id=&quot;727112879b3b&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;주요-설정-항목&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;3246&quot; data-local-id=&quot;727112879b3b&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;주요 설정 항목&lt;/b&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-testid=&quot;table-container&quot; data-layout=&quot;custom&quot;&gt;
&lt;div data-vc=&quot;table-node-wrapper&quot; data-table-width=&quot;697&quot; data-table-local-id=&quot;311bf3d56b50&quot; data-autosize=&quot;false&quot; data-layout=&quot;center&quot; data-number-column=&quot;false&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-layout=&quot;center&quot; data-table-width=&quot;697&quot; data-number-column=&quot;false&quot; data-testid=&quot;renderer-table&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style13&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;필드&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;241&quot;&gt;&lt;span&gt;keepAlive.requests&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;455&quot;&gt;&lt;span&gt;keepalive 커넥션당 최대 요청 수&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;241&quot;&gt;&lt;span&gt;keepAlive.time&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;455&quot;&gt;&lt;span&gt;keepalive 커넥션 유지 시간&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;241&quot;&gt;&lt;span&gt;body.maxSize&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;455&quot;&gt;&lt;span&gt;client max body size 수&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div data-vc=&quot;table-sticky-scrollbar-container&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p id=&quot;예시1)-Gateway-전체에-적용&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;3413&quot; data-local-id=&quot;e326c4f9949c&quot; data-ke-size=&quot;size16&quot;&gt;예시1) Gateway 전체에 적용&lt;/p&gt;
&lt;pre id=&quot;code_1780628985728&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# ClientSettingsPolicy &amp;mdash; Gateway 레벨 (모든 HTTPRoute에 상속)
apiVersion: gateway.nginx.org/v1alpha1
kind: ClientSettingsPolicy
metadata:
  name: global-client-settings
  namespace: sample
spec:
  targetRef:
    group: gateway.networking.k8s.io
    kind: Gateway
    name: cafe
  keepAlive:
    requests: 1000
    time: 1h
    timeout:
      server: 60s
      header: 30s&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;3800&quot; data-local-id=&quot;017dc9f94eaf&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;예시2)-특정-HTTPRoute에만-override-적용&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;3800&quot; data-local-id=&quot;017dc9f94eaf&quot; data-ke-size=&quot;size16&quot;&gt;예시2) 특정 HTTPRoute에만 override 적용&lt;/p&gt;
&lt;pre id=&quot;code_1780629007531&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# ClientSettingsPolicy &amp;mdash; HTTPRoute 레벨 (개별 서비스 override)
apiVersion: gateway.nginx.org/v1alpha1
kind: ClientSettingsPolicy
metadata:
  name: coffee-client-settings
  namespace: sample
spec:
  targetRef:
    group: gateway.networking.k8s.io
    kind: HTTPRoute
    name: coffee
  keepAlive:
    timeout:
      server: 10s   # Gateway 설정(60s)을 이 Route에서만 10s로 단축&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1780629015398&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 적용 확인
kubectl -nsample get clientsettingspolicy
kubectl -nsample describe clientsettingspolicy global-client-settings&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;백엔드-TLS-설정:-BackendTLSPolicy&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;4317&quot; data-local-id=&quot;6947d489888f&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;백엔드 TLS 설정: BackendTLSPolicy&lt;/b&gt;&lt;/span&gt; &lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;a0425dea9159&quot; data-renderer-start-pos=&quot;4348&quot; data-ke-size=&quot;size16&quot;&gt;이 Policy는 Gateway와 &lt;b&gt;백엔드 Pod 사이&lt;/b&gt;의 TLS 연결을 설정하는 &lt;b&gt;Direct Policy&lt;/b&gt;로, 지정한 Service에만 적용됩니다. mTLS 구성이나 내부 서비스 간 암호화가 필요한 환경에서 사용할 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;4476&quot; data-local-id=&quot;ea6319e0e122&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;BackendTLSPolicy-생성&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;4476&quot; data-local-id=&quot;ea6319e0e122&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;BackendTLSPolicy 생성&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1780629043808&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: gateway.networking.k8s.io/v1alpha3
kind: BackendTLSPolicy
metadata:
  name: coffee-backend-tls
  namespace: sample
spec:
  targetRefs:
    - group: &quot;&quot;
      kind: Service
      name: coffee       # TLS를 적용할 백엔드 Service
      sectionName: &quot;443&quot;
  validation:
    hostname: coffee.sample.svc.cluster.local   # 백엔드 인증서의 SNI
    caCertificateRefs:
      - group: &quot;&quot;
        kind: ConfigMap
        name: backend-ca  # comfigMap으로 인증서 등록 후 설정&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1780629051172&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 확인
kubectl -nsample get backendtlspolicy
kubectl -nsample describe backendtlspolicy coffee-backend-tls&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;주의:&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot;&gt; BackendTLSPolicy는 Service와 &lt;/span&gt;&lt;b&gt;같은 namespace&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot;&gt;에 있어야 합니다. &lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;객체에-직접-설정-항목&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;5114&quot; data-local-id=&quot;ce90d7f22306&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;객체에 직접 설정 항목&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;49550d2fbc2a&quot; data-renderer-start-pos=&quot;5128&quot; data-ke-size=&quot;size16&quot;&gt;Policy 객체 외에도 HTTPRoute 자체에서 타임아웃과 재시도를 설정할 수도 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1780629079494&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: coffee
  namespace: sample
spec:
  parentRefs:
    - name: cafe
  hostnames:
    - &quot;cafe.example.com&quot;
  rules:
    - matches:
        - path:
            type: PathPrefix
            value: /
      timeouts:
        request: 10s        # 클라이언트 요청 전체 타임아웃
        backendRequest: 5s  # 백엔드 응답 타임아웃
      retry:
        attempts: 3
        backoff: 500ms
        codes:
          - 502
          - 503
          - 504
      backendRefs:
        - name: coffee
          port: 80&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;b07ba7b6b56d&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HTTPRoute의 timeouts는 백엔드 응답 타임아웃, ClientSettingsPolicy의 timeout은 클라이언트-NGINX 연결 타임아웃으로 역할이 다릅니다. 둘 다 설정하는 것이 일반적이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;주의사항&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;5860&quot; data-local-id=&quot;604636de0f45&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;주의사항&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;d0902355-f035-4b76-8852-906a61fce675&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Policy가 적용되지 않아도 에러가 발생하지 않는 경우가 있으므로, 반드시 생성 후 status 확인을 해야 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1780629104919&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;kubectl -nsample describe clientsettingspolicy global-client-settings
# Status.Conditions.Type: Accepted 확인&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;85ec2f6f-2f7e-4b7c-ac68-2efeb4947eeb&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Policy 객체는 기본적으로 &lt;b&gt;같은 namespace의 리소스에만&lt;/b&gt; attach할 수 있습니다. 다른 namespace 간 적용은 별도 ReferenceGrant가 필요합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;마무리&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;6154&quot; data-local-id=&quot;30d28fa873b8&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;마무리&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;340589ab818b&quot; data-renderer-start-pos=&quot;6159&quot; data-ke-size=&quot;size16&quot;&gt;Gateway API의 Policy 객체는 기존 Annotation 방식 대비 명확한 역할 분리와 재사용성을 제공합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;2d8d0a6941ef&quot; data-renderer-start-pos=&quot;6229&quot; data-ke-size=&quot;size16&quot;&gt;다만, Policy마다 트래픽 제어 구간, attach 방식, 표준Policy 여부 등이 상이하므로 docs 문서를 잘 확인 후 사용해야 합니다.&lt;/p&gt;
&lt;table style=&quot;background-color: #ffffff; color: #292a2e; text-align: start; border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-layout=&quot;center&quot; data-table-width=&quot;682&quot; data-number-column=&quot;false&quot; data-testid=&quot;renderer-table&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style13&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;정책&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;적용 대상&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;attach 방식&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;주요 용도&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;170&quot;&gt;&lt;span&gt;ClientSettingsPolicy&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;170&quot;&gt;&lt;span&gt;Gateway / HTTPRoute&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;110&quot;&gt;&lt;span&gt;Inherited&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;230&quot;&gt;&lt;span&gt;클라이언트 연결 타임아웃, keepalive 설정 등&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;170&quot;&gt;&lt;span&gt;BackendTLSPolicy&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;170&quot;&gt;&lt;span&gt;Service&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;110&quot;&gt;&lt;span&gt;Direct&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;230&quot;&gt;&lt;span&gt;백엔드 TLS 암호화&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;170&quot;&gt;&lt;span&gt;HTTPRoute timeout/retry&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;170&quot;&gt;&lt;span&gt;HTTPRoute (내장)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;110&quot;&gt;&lt;span&gt;-&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;230&quot;&gt;&lt;span&gt;백엔드 타임아웃, 재시도&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- CTA (블루 버전, GA4 공통 스크립트용 figure + data-event) --&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; style=&quot;max-width: 600px; margin: 0 auto 40px auto;&quot; data-event=&quot;go_cloud_banner_click&quot; data-name=&quot;cta_platform_banner&quot; data-loc=&quot;body_mid&quot;&gt;&lt;a href=&quot;https://cloud.kt.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 100%; height: auto; border-radius: 8px; display: block;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt%20cloud%20platform.png&quot; alt=&quot;kt cloud 플랫폼 바로가기&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- ================= FAQ 섹션 (그린 버전, 블루 스타일을 그린 톤으로) ================= --&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #009a87; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;b&gt;❓ 자주 묻는 질문 (FAQ)&lt;/b&gt; &lt;/span&gt;&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #E6F8F4; border-bottom: 1px solid #CDEDE7;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87;&quot;&gt; &lt;b&gt;Q. Policy&amp;nbsp;객체란?&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #ffffff;&quot;&gt;A.&amp;nbsp;Gateway&amp;nbsp;API에서&amp;nbsp;Policy&amp;nbsp;객체는&amp;nbsp;Gateway,&amp;nbsp;HTTPRoute,&amp;nbsp;또는&amp;nbsp;Service에&amp;nbsp;붙여서(attach)&amp;nbsp;트래픽&amp;nbsp;동작을&amp;nbsp;제어하는&amp;nbsp;확장&amp;nbsp;리소스를&amp;nbsp;말합니다.&amp;nbsp;기존&amp;nbsp;Ingress&amp;nbsp;API에서는&amp;nbsp;아래&amp;nbsp;예시와&amp;nbsp;같이&amp;nbsp;트래픽&amp;nbsp;설정들이&amp;nbsp;전부&amp;nbsp;Annotation이었는데요,&amp;nbsp;Gateway&amp;nbsp;API에서는&amp;nbsp;이&amp;nbsp;모든&amp;nbsp;것이&amp;nbsp;독립적인&amp;nbsp;CRD로&amp;nbsp;분리되어&amp;nbsp;명시적으로&amp;nbsp;관리됩니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- ================= 관련/출처 섹션 (그린 박스 버전) ================= --&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 15px; font-weight: bold; color: #000000; font-family: 'Noto Sans KR', sans-serif;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;   관련/출처 &lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 12px 14px; background: #ffffff;&quot;&gt;
&lt;ul style=&quot;list-style-type: disc; color: #292a2e; text-align: left;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;60e0b1bd6a5c&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a style=&quot;color: #1868db;&quot; href=&quot;https://gateway-api.sigs.k8s.io/reference/policy-attachment/&quot; data-testid=&quot;link-with-safety&quot; data-is-router-link=&quot;false&quot; data-renderer-mark=&quot;true&quot;&gt;Policy Attachment - Kubernetes Gateway API 공식&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #1868db;&quot; href=&quot;https://docs.nginx.com/nginx-gateway-fabric/traffic-management/client-settings/&quot; data-testid=&quot;link-with-safety&quot; data-is-router-link=&quot;false&quot; data-renderer-mark=&quot;true&quot;&gt;ClientSettingsPolicy | NGINX Gateway Fabric 공식 문서&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #1868db;&quot; href=&quot;https://gateway-api.sigs.k8s.io/api-types/backendtlspolicy/&quot; data-testid=&quot;link-with-safety&quot; data-is-router-link=&quot;false&quot; data-renderer-mark=&quot;true&quot;&gt;BackendTLSPolicy - Kubernetes Gateway API&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- 포스터 이미지 3개 한 줄 배치 (가운데 정렬 + 링크 추가) --&gt;&lt;/p&gt;
&lt;div&gt;
&lt;style&gt;  /* 모바일에서 포스터 크기 줄이기 */  @media (max-width: 480px) {    .poster-figure {      max-width: 30% !important;  /* 한 줄에 3개 들어오도록 */      flex: 0 0 30% !important;    }    .poster-figure img {      width: 100% !important;      height: auto !important;    }  }&lt;/style&gt;
&lt;/div&gt;
&lt;div style=&quot;display: flex; justify-content: center; align-items: flex-start; gap: 15px; margin: 30px auto; flex-wrap: wrap; text-align: center;&quot;&gt;&lt;!-- 1번 배너: 클라우드 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;cloud_industry_poster_click&quot; data-name=&quot;cloud_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://cloud.kt.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud1.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;!-- 2번 배너: 데이터센터 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;datacenter_industry_poster_click&quot; data-name=&quot;datacenter_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://www.kt-idc.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud2.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;!-- 3번 배너: AI 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;ai_industry_poster_click&quot; data-name=&quot;ai_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://cloud.kt.com/category/?ctgryId=C000000001&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud3.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;/div&gt;</description>
      <category>Tech Story/DevOps &amp;amp; Container</category>
      <category>BackendTLSPolicy</category>
      <category>ClientSettingsPolicy</category>
      <category>container</category>
      <category>DevOps</category>
      <category>gatewayapi</category>
      <category>INGRESS</category>
      <category>KTCloud</category>
      <category>Kubernetes</category>
      <category>KubernetesGatewayAPI</category>
      <category>NginxGatewayFabric</category>
      <author>kt cloud 기술 블로그</author>
      <guid isPermaLink="true">https://tech.ktcloud.com/453</guid>
      <comments>https://tech.ktcloud.com/entry/2026-06-ktcloud-kubernetes-gateway-api-%ED%8A%B8%EB%9E%98%ED%94%BD-%EC%A0%9C%EC%96%B4#entry453comment</comments>
      <pubDate>Fri, 5 Jun 2026 12:13:47 +0900</pubDate>
    </item>
    <item>
      <title>[전환가이드] ArgoCD&amp;middot;FluxCD GitOps 배포를 HelmRelease로 전환하는 방법</title>
      <link>https://tech.ktcloud.com/entry/2026-06-ktcloud-argocd-fluxcd-helmrelease-%EB%B0%B0%ED%8F%AC-%EC%A0%84%ED%99%98</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 티스토리용 시맨틱 HTML 기술 블로그 템플릿 (개선된 UI) --&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;article style=&quot;font-family: 'Noto Sans KR', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; max-width: 100%; margin: 0 auto; line-height: 1.7; color: #2c3e50; background: #ffffff;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 메타데이터 섹션 --&gt; &lt;/span&gt;&lt;header style=&quot;background: linear-gradient(135deg, #009a87 0%, #00b39f 100%); color: white; padding: 20px 25px; text-align: right; font-weight: 600; border-radius: 15px; margin-bottom: 35px; box-shadow: 0 8px 25px rgba(0, 154, 135, 0.15); position: relative; overflow: hidden;&quot;&gt;
&lt;div style=&quot;position: absolute; top: -50%; right: -10%; width: 200px; height: 200px; background: rgba(255,255,255,0.1); border-radius: 50%; transform: rotate(45deg);&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;position: relative; z-index: 2;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;b&gt; &lt;span style=&quot;font-size: 1.1rem; text-shadow: rgba(0, 0, 0, 0.1) 0px 2px 4px;&quot;&gt; [ kt cloud Foundation플랫폼팀 이지은 님 ] &lt;/span&gt; &lt;/b&gt; &lt;/span&gt;&lt;/div&gt;
&lt;/header&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 콘텐츠 구조 및 메타데이터 표준화 적용 --&gt; &lt;/span&gt;
&lt;article&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 작성자 정보 (시맨틱 헤더) --&gt; &lt;/span&gt;&lt;header style=&quot;margin: 20px 0;&quot;&gt;
&lt;section style=&quot;margin: 25px 0;&quot;&gt;&lt;header&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 요약 섹션 헤더 - 초미니멀 디자인 --&gt; &lt;/span&gt;
&lt;h4 style=&quot;margin: 15px 0 10px 0;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87; background: #f0fffe; padding: 4px 10px; border-radius: 12px; border: 1px solid #d4eeeb; display: inline-flex; align-items: center; gap: 5px; font-weight: bold; font-size: 0.9em;&quot;&gt; &lt;span style=&quot;font-size: 0.8em;&quot;&gt; &lt;/span&gt; 요약 &lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;이 글에서는 ArgoCD와 FluxCD 기반 GitOps 배포를 HelmRelease 방식으로 전환하는 과정과 운영 시 고려사항을 다룹니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;인프라 배포를 선언적으로 관리해 변경 추적과 운영 안정성을 높이는 방향을 정리합니다.&lt;/span&gt;&lt;/p&gt;
&lt;/header&gt;&lt;/section&gt;
&lt;/header&gt;&lt;/article&gt;
&lt;/article&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;#ArgoCD&amp;nbsp;#FluxCD&amp;nbsp;#GitOps&amp;nbsp;#HelmRelease&amp;nbsp;#Kubernetes&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;74111865d28b&quot; data-renderer-start-pos=&quot;1183&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. 지난 글에서 OpenStack Helm 배포를 FluxCD HelmRelease 방식으로 전환한 경험을 공유드렸는데요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;74111865d28b&quot; data-renderer-start-pos=&quot;1183&quot; data-ke-size=&quot;size16&quot;&gt;이번에는 그 연장선으로 &lt;b&gt;ArgoCD 자체&lt;/b&gt;를 동일한 방식으로 전환한 이야기입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;74111865d28b&quot; data-renderer-start-pos=&quot;1183&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;0db272a47bc8&quot; data-renderer-start-pos=&quot;1303&quot; data-ke-size=&quot;size16&quot;&gt;&quot;배포 도구인 ArgoCD를 ArgoCD+FluxCD로 관리한다&quot;는 다소 순환적으로 들릴 수 있지만, 실제로 해보면 명확한 이유와 이점이 있습니다.&lt;/p&gt;
&lt;h3 id=&quot;1.-왜-ArgoCD-자체를-전환했나?&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;1387&quot; data-local-id=&quot;f890babb73ea&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;1. 왜 ArgoCD 자체를 전환했나?&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;95c98ed81c3b&quot; data-renderer-start-pos=&quot;1410&quot; data-ke-size=&quot;size16&quot;&gt;기존 방식은 이렇습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1780626988001&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;helm template argocd -n argocd argo/argo-cd \
  --version 8.3.1 \
  --values argocd-helm-overrides-ktcloud.yaml \
  --namespace=argocd &amp;gt; argocd.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;bb0a2aa67e57&quot; data-renderer-start-pos=&quot;1575&quot; data-ke-size=&quot;size16&quot;&gt;Helm Chart를 미리 렌더링해 정적 YAML을 만들고, ArgoCD가 그 파일을 Git에서 읽어 배포합니다. 단순하지만 문제가 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;02b60774fcb8&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;버전을 업그레이드할 때마다 렌더링을 다시 돌려 argocd.yaml을 새로 커밋해야 합니다.&lt;/li&gt;
&lt;li&gt;values 하나 바꿔도 렌더링 결과물 전체가 diff에 잡혀 비교가 어렵습니다.&lt;/li&gt;
&lt;li&gt;ArgoCD values가 길어질수록 파일 하나에 모든 설정이 몰려 가독성이 떨어집니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;8d6d5e93ac54&quot; data-renderer-start-pos=&quot;1817&quot; data-ke-size=&quot;size16&quot;&gt;FluxCD HelmRelease 방식으로 전환하면 이 문제가 깔끔하게 해결됩니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;2.-전환-후-아키텍처&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;1865&quot; data-local-id=&quot;8de7aeec9fa6&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;2. 전환 후 아키텍처&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1780627016801&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Git (HelmRelease + ConfigMap)
  └─ ArgoCD &amp;rarr; HelmRelease 오브젝트 sync
      └─ FluxCD &amp;rarr; Harbor OCI에서 Chart pull &amp;rarr; 실제 배포&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot;&gt;ArgoCD는 선언(HelmRelease)을 동기화하고, FluxCD가 Helm 라이프사이클(install/upgrade/rollback)을 수행합니다. ArgoCD 자체가 FluxCD에 의해 관리되는 구조입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[배포 흐름도]&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1780627042511&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;┌─────────────┐    sync     ┌──────────────────┐
│   ArgoCD    │ ──────────▶ │   HelmRelease    │
│  (Git 감시)  │             │  (FluxCD 오브젝트)  │
└─────────────┘             └────────┬─────────┘
                                     │ chart pull
                                     ▼
                            ┌──────────────────┐
                            │  Harbor OCI      │
                            │  (에어갭 레지스트리)  │
                            └────────┬─────────┘
                                     │ helm install/upgrade
                                     ▼
                            ┌──────────────────┐
                            │  실제 ArgoCD 리소스 │
                            │  (Deployment 등)  │
                            └──────────────────┘&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;3.-에어갭-환경:-Harbor에-Chart-먼저-올리기&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;2897&quot; data-local-id=&quot;78cd2a852571&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;3. 에어갭 환경: Harbor에 Chart 먼저 올리기&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;bd3a0f179c31&quot; data-renderer-start-pos=&quot;2930&quot; data-ke-size=&quot;size16&quot;&gt;내부망이 차단된 환경에서는 외부 Chart를 Harbor OCI 레지스트리에 미리 업로드해야 합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1780627121383&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 외부 인터넷 환경에서 다운로드
helm repo add argo https://argoproj.github.io/argo-helm
helm pull argo/argo-cd --version 8.3.1

# 내부 Harbor에 push
helm registry login harbor.ktcloud.com \
  --username &amp;lt;USERNAME&amp;gt; --password &amp;lt;PASSWORD&amp;gt;

helm push argo-cd-8.3.1.tgz oci://harbor.ktcloud.com/charts
# 결과: harbor.ktcloud.com/charts/argo-cd:8.3.1&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot;&gt;⚠️ &lt;/span&gt;helm push&lt;span style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot;&gt; 시 차트명과 버전을 직접 지정하지 않습니다. &lt;/span&gt;.tgz&lt;span style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot;&gt; 파일명에서 자동으로 읽어 태그로 붙습니다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;4.-values-관리:-인라인-vs-파일-분리&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;3385&quot; data-local-id=&quot;d2302c395ee9&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;4. values 관리: 인라인 vs 파일 분리&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;8748c1551a0c&quot; data-renderer-start-pos=&quot;3413&quot; data-ke-size=&quot;size16&quot;&gt;ArgoCD의 values는 양이 많고, 권한 관리로 수정이 자주 일어나 &lt;b&gt;파일 분리 방식&lt;/b&gt;을 권장합니다. 기존 patches 구조처럼 역할별로 나눕니다.&lt;/p&gt;
&lt;pre id=&quot;code_1780627152395&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;argocd/
├── kustomization.yaml
├── namespace.yaml
├── argocd-helmrelease.yaml
├── argocd-httproute.yaml
├── appproject.yaml
├── values-cm.yaml                    # argocd-cm 관련
├── values-rbac-cm.yaml               # argocd-rbac-cm 관련 (200줄 수준)
├── values-notifications-cm.yaml      # argocd-notifications-cm 관련
└── values-notifications-secret.yaml  # argocd-notifications-secret 관련&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;HelmRelease에서 valuesFrom으로 참조:&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1780627170988&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
  name: argocd
  namespace: argocd
  annotations:
    argocd.argoproj.io/sync-wave: &quot;1&quot;  # ConfigMap 생성 후 배포
spec:
  interval: 1h
  chart:
    spec:
      chart: argo-cd
      version: &quot;8.3.1&quot;
      sourceRef:
        kind: HelmRepository
        name: registry-ys-stack-chart-repo
        namespace: flux-system
      interval: 1h
  install:
    remediation:
      retries: 3
  upgrade:
    remediation:
      retries: 3
  valuesFrom:
    - kind: ConfigMap
      name: argocd-values-cm
      valuesKey: values-cm.yaml
    - kind: ConfigMap
      name: argocd-values-rbac-cm
      valuesKey: values-rbac-cm.yaml
    - kind: ConfigMap
      name: argocd-values-notifications-cm
      valuesKey: values-notifications-cm.yaml
    - kind: ConfigMap
      name: argocd-values-notifications-secret
      valuesKey: values-notifications-secret.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;kustomization.yaml에서 ConfigMap 생성:&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1780627193817&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

sortOptions:
  order: fifo

resources:
  - namespace.yaml
  - argocd-helmrelease.yaml
  - argocd-httproute.yaml
  - appproject.yaml

generatorOptions:
  disableNameSuffixHash: true     # 고정 이름으로 참조하므로 필수

configMapGenerator:
  - name: argocd-values-cm
    files:
      - values-cm.yaml
  - name: argocd-values-rbac-cm
    files:
      - values-rbac-cm.yaml
  - name: argocd-values-notifications-cm
    files:
      - values-notifications-cm.yaml
  - name: argocd-values-notifications-secret
    files:
      - values-notifications-secret.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot;&gt;ℹ️ &lt;/span&gt;disableNameSuffixHash: true&lt;span style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot;&gt;를 반드시 설정해야 합니다. Kustomize는 기본적으로 ConfigMap 이름 뒤에 해시를 붙이는데, &lt;/span&gt;valuesFrom&lt;span style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot;&gt;에서 고정 이름으로 참조하기 때문에 해시가 붙으면 참조가 깨집니다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;5.-핵심-함정:-ConfigMap-&amp;rarr;-HelmRelease-배포-순서&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;5607&quot; data-local-id=&quot;cc024ace0e95&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;5. 핵심 함정: ConfigMap &amp;rarr; HelmRelease 배포 순서&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;b10caf5a5b0f&quot; data-renderer-start-pos=&quot;5648&quot; data-ke-size=&quot;size16&quot;&gt;valuesFrom으로 ConfigMap을 참조하는 HelmRelease는 &lt;u data-renderer-mark=&quot;true&quot;&gt;ConfigMap이 먼저 존재해야&lt;/u&gt; 합니다. ArgoCD Sync를 한 번에 날리면 HelmRelease가 ConfigMap보다 먼저 생성되어 실패할 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;b10caf5a5b0f&quot; data-renderer-start-pos=&quot;5648&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;c5d1292f06a0&quot; data-renderer-start-pos=&quot;5782&quot; data-ke-size=&quot;size16&quot;&gt;해결 방법은 sync-wave입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1780627223848&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;wave 0: ConfigMap 생성 (argocd-values-cm 등)
wave 1: HelmRelease 생성 &amp;rarr; ConfigMap 참조 성공&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;d8ef73237cda&quot; data-renderer-start-pos=&quot;5888&quot; data-ke-size=&quot;size16&quot;&gt;sync-wave는 &lt;b&gt;Application 내부의 배포 리소스에만 적용&lt;/b&gt;되므로, ConfigMap Generator로 생성된 ConfigMap에는 직접 줄 수 없습니다. 대신 HelmRelease에 sync-wave: &quot;1&quot;을 부여하면, ConfigMap(기본 wave 0)이 먼저 생성된 뒤 HelmRelease가 배포되는 순서가 자동으로 보장됩니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;6.-전환-시-기존-리소스-보호:-PRUNE-설정&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;6085&quot; data-local-id=&quot;99c23b7f4dac&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;6. 전환 시 기존 리소스 보호: PRUNE 설정&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;59a4af0b1d28&quot; data-renderer-start-pos=&quot;6114&quot; data-ke-size=&quot;size16&quot;&gt;기존에 렌더링 YAML로 배포된 리소스를 삭제하지 않으려면 반드시 확인이 필요합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1780627260195&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;kubectl get application &amp;lt;APP_NAME&amp;gt; -n argocd -o yaml | grep prune&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;e35457247a8c&quot; data-renderer-start-pos=&quot;6230&quot; data-ke-size=&quot;size16&quot;&gt;수동 Sync 시에도 UI에서 PRUNE 체크박스를 해제한 상태로 진행합니다. FluxCD가 Helm 라이프사이클을 가져가면 변경사항이 없는 한 기존 Pod는 재시작 없이 소유권만 이전됩니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;e35457247a8c&quot; data-renderer-start-pos=&quot;6230&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;f0e6ae1bf493&quot; data-renderer-start-pos=&quot;6339&quot; data-ke-size=&quot;size16&quot;&gt;전환 완료 후 리소스에 붙는 라벨:&lt;/p&gt;
&lt;pre id=&quot;code_1780627342291&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;labels:
  helm.toolkit.fluxcd.io/name: argocd
  helm.toolkit.fluxcd.io/namespace: argocd&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;7.-ArgoCD-UI에서-달라진-점&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;6450&quot; data-local-id=&quot;6f3167ec2a35&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;7. ArgoCD UI에서 달라진 점&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;e475bf2fb5c7&quot; data-renderer-start-pos=&quot;6472&quot; data-ke-size=&quot;size16&quot;&gt;전환 후 ArgoCD UI에  ️ 아이콘이 보이는 리소스들이 생깁니다. 당황하지 않아도 됩니다.&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-testid=&quot;table-container&quot; data-layout=&quot;custom&quot;&gt;
&lt;div data-vc=&quot;table-node-wrapper&quot; data-table-width=&quot;744&quot; data-table-local-id=&quot;42ba6b94280a&quot; data-autosize=&quot;false&quot; data-layout=&quot;align-start&quot; data-number-column=&quot;false&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-layout=&quot;align-start&quot; data-table-width=&quot;744&quot; data-number-column=&quot;false&quot; data-testid=&quot;renderer-table&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style13&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;표시&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;의미&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;142&quot;&gt;&lt;span&gt; ️ +  &lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;602&quot;&gt;&lt;span&gt;클러스터에 살아있음 + ArgoCD Git에는 없음 (FluxCD가 관리 중) &amp;rarr; &lt;b&gt;정상&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;142&quot;&gt;&lt;span&gt; ️&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;602&quot;&gt;&lt;span&gt;클러스터에도 없음 + ArgoCD Git에도 없음 &amp;rarr; 이미 삭제된 리소스&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div data-vc=&quot;table-sticky-scrollbar-container&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;a03b240a08d7&quot; data-renderer-start-pos=&quot;6663&quot; data-ke-size=&quot;size16&quot;&gt;6번에서 확인한 FluxCD 라벨(helm.toolkit.fluxcd.io/name)이 정상적으로 붙어 있다면, ArgoCD의 tracking 어노테이션을 제거해 소유권을 완전히 FluxCD로 이전해야 합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;a03b240a08d7&quot; data-renderer-start-pos=&quot;6663&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;86c1a774b9f9&quot; data-renderer-start-pos=&quot;6782&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ArgoCD 버전별 제거 대상:&lt;/b&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-testid=&quot;table-container&quot; data-layout=&quot;custom&quot;&gt;
&lt;div data-vc=&quot;table-node-wrapper&quot; data-table-width=&quot;912&quot; data-table-local-id=&quot;b8d46cc9d52e&quot; data-autosize=&quot;false&quot; data-layout=&quot;align-start&quot; data-number-column=&quot;false&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-layout=&quot;align-start&quot; data-table-width=&quot;912&quot; data-number-column=&quot;false&quot; data-testid=&quot;renderer-table&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style13&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;ArgoCD&amp;nbsp;버전&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;tracking&amp;nbsp;방식&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;제거&amp;nbsp;대상&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&lt;span&gt;2.2 미만&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&lt;span&gt;label&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&lt;span&gt;app.kubernetes.io/instance&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&lt;span&gt;2.2 이상 ~ 3.0 미만&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&lt;span&gt;annotation (옵션)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&lt;span&gt;argocd.argoproj.io/tracking-id&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&lt;span&gt;3.0 이상&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&lt;span&gt;annotation (기본값)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&lt;span&gt;argocd.argoproj.io/tracking-id&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div data-vc=&quot;table-sticky-scrollbar-container&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;9257eedd1774&quot; data-renderer-start-pos=&quot;7033&quot; data-ke-size=&quot;size16&quot;&gt;FluxCD가 완전히 관리하게 되면 해당 리소스는 ArgoCD에서 점차 보이지 않게 됩니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;8.-배포-상태-확인&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;7086&quot; data-local-id=&quot;a0d576a9675e&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;8. 배포 상태 확인&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1780627447495&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# HelmRelease 상태
flux get helmreleases -n argocd

# 전체 리소스
flux get all -n argocd

# 이벤트 확인
flux events -n argocd&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;e475bf2fb5c7&quot; data-renderer-start-pos=&quot;6472&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;결론&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;7215&quot; data-local-id=&quot;38e6c6ebf370&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;결론&lt;/b&gt;&lt;/span&gt; &lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock floatRight&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;con04_0601_logo.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d3GBEk/dJMcagFNPXu/XfQj9MjuvMb1ZV8iGToiVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d3GBEk/dJMcagFNPXu/XfQj9MjuvMb1ZV8iGToiVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d3GBEk/dJMcagFNPXu/XfQj9MjuvMb1ZV8iGToiVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd3GBEk%2FdJMcagFNPXu%2FXfQj9MjuvMb1ZV8iGToiVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[전환가이드] ArgoCD&amp;middot;FluxCD GitOps 배포를 HelmRelease로 전환하는 방법&quot; loading=&quot;lazy&quot; width=&quot;350&quot; height=&quot;1080&quot; data-filename=&quot;con04_0601_logo.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;27e1ae44e7b6&quot; data-renderer-start-pos=&quot;7220&quot; data-ke-size=&quot;size16&quot;&gt;이번 전환의 핵심은 &quot;ArgoCD를 어떻게 배포하느냐&quot;가 아니라, &lt;b&gt;플랫폼 인프라 자체도 동일한 GitOps 원칙으로 관리할 수 있다&lt;/b&gt;는 것을 확인한 데 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;27e1ae44e7b6&quot; data-renderer-start-pos=&quot;7220&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;2ef548d64e14&quot; data-renderer-start-pos=&quot;7311&quot; data-ke-size=&quot;size16&quot;&gt;values 변경은 해당 파일만 수정하고 커밋하면 끝이고, 버전 업그레이드는 HelmRelease의 version 한 줄만 바꾸면 FluxCD가 나머지를 처리합니다. PR diff에는 실제로 바뀐 내용만 잡히고, 렌더링 결과물 전체가 노이즈로 따라오는 일도 없습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;2ef548d64e14&quot; data-renderer-start-pos=&quot;7311&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;ec6992927041&quot; data-renderer-start-pos=&quot;7462&quot; data-ke-size=&quot;size16&quot;&gt;물론 처음 전환할 때는 ConfigMap 순서 문제, disableNameSuffixHash 설정, tracking 어노테이션 정리 등 작은 함정들이 있었지만, 한 번 정리해두면 다음 앱을 전환할 때는 같은 패턴을 그대로 가져다 쓸 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;ec6992927041&quot; data-renderer-start-pos=&quot;7462&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;cc72c172bbc9&quot; data-renderer-start-pos=&quot;7601&quot; data-ke-size=&quot;size16&quot;&gt;저희 팀은 이 패턴을 ArgoCD에 적용한 뒤, 동일한 방식으로 클러스터 내 다른 인프라 컴포넌트들로 점진적으로 확산하고 있습니다. &quot;배포 도구도 코드로 관리한다&quot;는 원칙이 팀 안에 자리잡히는 과정이기도 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- CTA (블루 버전, GA4 공통 스크립트용 figure + data-event) --&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; style=&quot;max-width: 600px; margin: 0 auto 40px auto;&quot; data-event=&quot;go_cloud_banner_click&quot; data-name=&quot;cta_platform_banner&quot; data-loc=&quot;body_mid&quot;&gt;&lt;a href=&quot;https://cloud.kt.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 100%; height: auto; border-radius: 8px; display: block;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt%20cloud%20platform.png&quot; alt=&quot;kt cloud 플랫폼 바로가기&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- ================= FAQ 섹션 (그린 버전, 블루 스타일을 그린 톤으로) ================= --&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #009a87; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;b&gt;❓ 자주 묻는 질문 (FAQ)&lt;/b&gt; &lt;/span&gt;&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #E6F8F4; border-bottom: 1px solid #CDEDE7;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87;&quot;&gt; &lt;b&gt;Q. ArgoCD가&amp;nbsp;자기&amp;nbsp;자신을&amp;nbsp;관리하는&amp;nbsp;게&amp;nbsp;가능한가요?&amp;nbsp;닭이&amp;nbsp;먼저냐&amp;nbsp;달걀이&amp;nbsp;먼저냐&amp;nbsp;문제&amp;nbsp;아닌가요?&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #ffffff;&quot;&gt;A.&amp;nbsp;ArgoCD가&amp;nbsp;자기&amp;nbsp;자신을&amp;nbsp;관리하는&amp;nbsp;게&amp;nbsp;가능합니다.&amp;nbsp;ArgoCD가&amp;nbsp;먼저&amp;nbsp;설치된&amp;nbsp;상태에서&amp;nbsp;HelmRelease를&amp;nbsp;sync하면,&amp;nbsp;FluxCD가&amp;nbsp;이후&amp;nbsp;Helm&amp;nbsp;라이프사이클을&amp;nbsp;가져갑니다.&amp;nbsp;초기&amp;nbsp;부트스트랩은&amp;nbsp;기존&amp;nbsp;방식으로&amp;nbsp;하고,&amp;nbsp;이후&amp;nbsp;운영은&amp;nbsp;FluxCD가&amp;nbsp;담당하는&amp;nbsp;구조입니다.&amp;nbsp;&quot;자기&amp;nbsp;자신을&amp;nbsp;업그레이드&quot;하는&amp;nbsp;상황도&amp;nbsp;FluxCD가&amp;nbsp;처리하므로&amp;nbsp;실제&amp;nbsp;운영에서&amp;nbsp;문제가&amp;nbsp;없었습니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #E6F8F4; border-bottom: 1px solid #CDEDE7;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87;&quot;&gt;&lt;b&gt;Q.&lt;span&gt; ConfigMap&amp;nbsp;Generator를&amp;nbsp;쓰면&amp;nbsp;sync-wave를&amp;nbsp;ConfigMap에&amp;nbsp;못&amp;nbsp;주는데,&amp;nbsp;순서&amp;nbsp;보장이&amp;nbsp;진짜&amp;nbsp;되나요?&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #ffffff;&quot;&gt;A.&amp;nbsp;됩니다.&amp;nbsp;sync-wave는&amp;nbsp;Application&amp;nbsp;내부&amp;nbsp;배포&amp;nbsp;리소스에만&amp;nbsp;적용되고,&amp;nbsp;ConfigMap&amp;nbsp;Generator의&amp;nbsp;ConfigMap은&amp;nbsp;wave&amp;nbsp;어노테이션을&amp;nbsp;무시합니다.&amp;nbsp;대신&amp;nbsp;HelmRelease에&amp;nbsp;sync-wave:&amp;nbsp;&quot;1&quot;을&amp;nbsp;주면&amp;nbsp;ArgoCD가&amp;nbsp;wave&amp;nbsp;0(ConfigMap&amp;nbsp;포함)을&amp;nbsp;먼저&amp;nbsp;처리한&amp;nbsp;뒤&amp;nbsp;wave&amp;nbsp;1(HelmRelease)을&amp;nbsp;처리하므로&amp;nbsp;순서가&amp;nbsp;자동&amp;nbsp;보장됩니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #E6F8F4; border-bottom: 1px solid #CDEDE7;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87;&quot;&gt;&lt;b&gt;Q.&lt;span&gt;&lt;span&gt; 에어갭&amp;nbsp;환경에서&amp;nbsp;Chart&amp;nbsp;업데이트가&amp;nbsp;필요하면&amp;nbsp;어떻게&amp;nbsp;하나요?&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #ffffff;&quot;&gt;A.&amp;nbsp;외부&amp;nbsp;인터넷이&amp;nbsp;되는&amp;nbsp;환경에서&amp;nbsp;새&amp;nbsp;버전을&amp;nbsp;helm&amp;nbsp;pull한&amp;nbsp;뒤&amp;nbsp;내부&amp;nbsp;레지스트리에&amp;nbsp;다시&amp;nbsp;helm&amp;nbsp;push하고,&amp;nbsp;HelmRelease의&amp;nbsp;version만&amp;nbsp;변경하면&amp;nbsp;됩니다.&amp;nbsp;Chart&amp;nbsp;업로드와&amp;nbsp;버전&amp;nbsp;선언이&amp;nbsp;분리되어&amp;nbsp;있어&amp;nbsp;관리가&amp;nbsp;깔끔합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- ================= 관련/출처 섹션 (그린 박스 버전) ================= --&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- 포스터 이미지 3개 한 줄 배치 (가운데 정렬 + 링크 추가) --&gt;&lt;/p&gt;
&lt;div&gt;
&lt;style&gt;  /* 모바일에서 포스터 크기 줄이기 */  @media (max-width: 480px) {    .poster-figure {      max-width: 30% !important;  /* 한 줄에 3개 들어오도록 */      flex: 0 0 30% !important;    }    .poster-figure img {      width: 100% !important;      height: auto !important;    }  }&lt;/style&gt;
&lt;/div&gt;
&lt;div style=&quot;display: flex; justify-content: center; align-items: flex-start; gap: 15px; margin: 30px auto; flex-wrap: wrap; text-align: center;&quot;&gt;&lt;!-- 1번 배너: 클라우드 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;cloud_industry_poster_click&quot; data-name=&quot;cloud_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://cloud.kt.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud1.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;!-- 2번 배너: 데이터센터 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;datacenter_industry_poster_click&quot; data-name=&quot;datacenter_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://www.kt-idc.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud2.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;!-- 3번 배너: AI 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;ai_industry_poster_click&quot; data-name=&quot;ai_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://cloud.kt.com/category/?ctgryId=C000000001&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud3.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;/div&gt;</description>
      <category>Tech Story/DevOps &amp;amp; Container</category>
      <category>argocd</category>
      <category>CloudNative</category>
      <category>DevOps</category>
      <category>FluxCD</category>
      <category>gitops</category>
      <category>harbor</category>
      <category>HelmChart</category>
      <category>HelmRelease</category>
      <category>KTCloud</category>
      <category>Kubernetes</category>
      <author>kt cloud 기술 블로그</author>
      <guid isPermaLink="true">https://tech.ktcloud.com/452</guid>
      <comments>https://tech.ktcloud.com/entry/2026-06-ktcloud-argocd-fluxcd-helmrelease-%EB%B0%B0%ED%8F%AC-%EC%A0%84%ED%99%98#entry452comment</comments>
      <pubDate>Fri, 5 Jun 2026 11:47:21 +0900</pubDate>
    </item>
    <item>
      <title>[인사이트] 프롬프트&amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링: AI 에이전트 환경 설계</title>
      <link>https://tech.ktcloud.com/entry/2026-06-ktcloud-prompt-context-agent-%ED%99%98%EA%B2%BD-%EC%84%A4%EA%B3%84</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 티스토리용 시맨틱 HTML 기술 블로그 템플릿 (개선된 UI) --&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;article style=&quot;font-family: 'Noto Sans KR', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; max-width: 100%; margin: 0 auto; line-height: 1.7; color: #2c3e50; background: #ffffff;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 메타데이터 섹션 --&gt; &lt;/span&gt;&lt;header style=&quot;background: linear-gradient(135deg, #009a87 0%, #00b39f 100%); color: white; padding: 20px 25px; text-align: right; font-weight: 600; border-radius: 15px; margin-bottom: 35px; box-shadow: 0 8px 25px rgba(0, 154, 135, 0.15); position: relative; overflow: hidden;&quot;&gt;
&lt;div style=&quot;position: absolute; top: -50%; right: -10%; width: 200px; height: 200px; background: rgba(255,255,255,0.1); border-radius: 50%; transform: rotate(45deg);&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;position: relative; z-index: 2;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;b&gt; &lt;span style=&quot;font-size: 1.1rem; text-shadow: rgba(0, 0, 0, 0.1) 0px 2px 4px;&quot;&gt; [ kt cloud 마케팅커뮤니케이션팀 김지웅 님 ] &lt;/span&gt; &lt;/b&gt; &lt;/span&gt;&lt;/div&gt;
&lt;/header&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 콘텐츠 구조 및 메타데이터 표준화 적용 --&gt; &lt;/span&gt;
&lt;article&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 작성자 정보 (시맨틱 헤더) --&gt; &lt;/span&gt;&lt;header style=&quot;margin: 20px 0;&quot;&gt;
&lt;section style=&quot;margin: 25px 0;&quot;&gt;&lt;header&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 요약 섹션 헤더 - 초미니멀 디자인 --&gt; &lt;/span&gt;
&lt;h4 style=&quot;margin: 15px 0 10px 0;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87; background: #f0fffe; padding: 4px 10px; border-radius: 12px; border: 1px solid #d4eeeb; display: inline-flex; align-items: center; gap: 5px; font-weight: bold; font-size: 0.9em;&quot;&gt; &lt;span style=&quot;font-size: 0.8em;&quot;&gt; &lt;/span&gt; 요약 &lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;이 글에서는 AI 에이전트가 실제 업무를 안전하게 수행하도록 실행 환경을 설계하는 하네스 엔지니어링을 다룹니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;모델 성능만으로 해결하기 어려운 운영 안정성과 책임 범위 설정의 중요성을 정리합니다.&lt;/span&gt;&lt;/p&gt;
&lt;/header&gt;&lt;/section&gt;
&lt;/header&gt;&lt;/article&gt;
&lt;/article&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;#하네스엔지니어링&amp;nbsp;#AI에이전트&amp;nbsp;#프롬프트엔지니어링&amp;nbsp;#컨텍스트엔지니어링&amp;nbsp;#AI운영안정성&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock floatRight&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[인사이트] 프롬프트&amp;amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링 AI 에이전트 환경 설계 (16).png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lsQSM/dJMcahdBPHa/kWKrd17caDFNpoXlwgvnzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lsQSM/dJMcahdBPHa/kWKrd17caDFNpoXlwgvnzK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lsQSM/dJMcahdBPHa/kWKrd17caDFNpoXlwgvnzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlsQSM%2FdJMcahdBPHa%2FkWKrd17caDFNpoXlwgvnzK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[인사이트] 프롬프트&amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링: AI 에이전트 환경 설계&quot; loading=&quot;lazy&quot; width=&quot;350&quot; height=&quot;1080&quot; data-filename=&quot;[인사이트] 프롬프트&amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링 AI 에이전트 환경 설계 (16).png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;381b5b30aa3f&quot; data-renderer-start-pos=&quot;829&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요! &lt;b&gt;kt cloud 테크 마케터 김지웅&lt;/b&gt;입니다.  &amp;zwj;♂️&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;381b5b30aa3f&quot; data-renderer-start-pos=&quot;829&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;f245e8230847&quot; data-renderer-start-pos=&quot;867&quot; data-ke-size=&quot;size16&quot;&gt;AI를 활용하는 방식이 빠르게 바뀌고 있어요. 한동안 AI를 잘 쓰는 핵심은 좋은 프롬프트를 작성하는 것이었죠. 어떤 역할을 줄지, 어떤 형식으로 답하게 할지, 어떤 기준을 지키게 할지 구체적으로 지시하는 것이 중요했습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;f245e8230847&quot; data-renderer-start-pos=&quot;867&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;a823bf227c0a&quot; data-renderer-start-pos=&quot;994&quot; data-ke-size=&quot;size16&quot;&gt;그런데 최근의 AI 에이전트는 단순히 답변만 생성하지 않아요. 파일을 읽고, 코드를 수정하고, 테스트를 실행하고, 외부 API를 호출하면서 여러 단계를 거쳐 실제 업무를 수행합니다. AI가 화면 안에서 답변하는 수준을 넘어 실제 시스템과 상호작용하기 시작한 거예요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;a823bf227c0a&quot; data-renderer-start-pos=&quot;994&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;d9aba729038f&quot; data-renderer-start-pos=&quot;1144&quot; data-ke-size=&quot;size16&quot;&gt;이 단계에 들어서면 질문도 달라집니다. 이제는 &amp;ldquo;어떻게 말해야 좋은 답을 얻을까?&amp;rdquo;뿐 아니라, &amp;ldquo;AI가 어떤 환경에서, 어떤 권한으로, 어떤 검증 절차를 거치며 일하게 할 것인가?&amp;rdquo;를 함께 고민해야 해요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;d9aba729038f&quot; data-renderer-start-pos=&quot;1144&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;286db280d341&quot; data-renderer-start-pos=&quot;1260&quot; data-ke-size=&quot;size16&quot;&gt;하네스 엔지니어링은 바로 이 지점을 다루는 접근입니다. AI 에이전트가 실제 업무를 안전하고 반복 가능하게 수행할 수 있도록 도구, 권한, 실행 환경, 테스트, 로그, 승인 흐름을 설계하는 일이에요. 아직 산업 전반에 완전히 정착된 표준 용어라고 보기는 어렵지만, AI가 실제 환경에서 행동하기 시작한 지금 반드시 짚어봐야 할 실무적 문제라고 볼 수 있습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;1.-왜-지금-하네스-엔지니어링인가&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;1464&quot; data-local-id=&quot;064804bf171f&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1. 왜 지금 하네스 엔지니어링인가&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id=&quot;1-1.-AI는-답변-도구에서-실행-주체로-바뀌고-있다&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;1485&quot; data-local-id=&quot;865b936fb9fc&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;AI는 답변 도구에서 실행 주체로 바뀌고 있다&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[인사이트] 프롬프트&amp;amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링 AI 에이전트 환경 설계 (15).png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbamDx/dJMcacwBgvu/pJIVY2s4T0rp2qHevRmKuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbamDx/dJMcacwBgvu/pJIVY2s4T0rp2qHevRmKuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbamDx/dJMcacwBgvu/pJIVY2s4T0rp2qHevRmKuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbamDx%2FdJMcacwBgvu%2FpJIVY2s4T0rp2qHevRmKuK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[인사이트] 프롬프트&amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링: AI 에이전트 환경 설계&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;488&quot; data-filename=&quot;[인사이트] 프롬프트&amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링 AI 에이전트 환경 설계 (15).png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;a46d8eb0c9fc&quot; data-renderer-start-pos=&quot;1520&quot; data-ke-size=&quot;size16&quot;&gt;AI의 역할은 빠르게 &amp;ldquo;답변 생성&amp;rdquo;에서 &amp;ldquo;작업 수행&amp;rdquo;으로 이동하고 있어요. 예전의 AI가 사용자의 질문에 답하거나 문장을 만들어 주는 도구에 가까웠다면, 최근의 AI 에이전트는 파일을 읽고, 코드를 수정하고, 테스트를 실행하고, 외부 시스템과 상호작용하며 하나의 업무를 끝내는 실행 주체에 가까워지고 있어요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;a46d8eb0c9fc&quot; data-renderer-start-pos=&quot;1520&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;e0f9948a1596&quot; data-renderer-start-pos=&quot;1694&quot; data-ke-size=&quot;size16&quot;&gt;이 변화가 중요한 이유는 AI의 결과가 더 이상 텍스트 화면 안에만 머물지 않기 때문이에요. 잘못된 답변은 사람이 읽고 걸러낼 수 있지만, 잘못된 파일 수정이나 부적절한 API 호출은 실제 업무 흐름에 영향을 줄 수 있죠. AI가 행동하기 시작하는 순간부터는 답변의 정확도뿐 아니라, 그 행동이 어떤 조건에서 실행되는지도 함께 봐야 해요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;e0f9948a1596&quot; data-renderer-start-pos=&quot;1694&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;672e7ee15c6f&quot; data-renderer-start-pos=&quot;1885&quot; data-ke-size=&quot;size16&quot;&gt;그래서 AI 에이전트 시대의 질문은 조금 달라집니다. &amp;ldquo;어떤 모델이 더 똑똑한가?&amp;rdquo;도 여전히 중요하지만, 그것만으로는 충분하지 않아요. 이제는 모델이 어떤 작업 범위 안에서 움직이고, 실행 결과를 어떤 기준으로 확인하며, 다음 행동을 어떻게 이어가게 할지도 함께 고민해야 합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h4 id=&quot;1-2.-좋은-프롬프트만으로는-장시간-자율-작업을-통제하기-어렵다&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;2043&quot; data-local-id=&quot;f9082ace273f&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;좋은 프롬프트만으로는 장시간 자율 작업을 통제하기 어렵다&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[인사이트] 프롬프트&amp;amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링 AI 에이전트 환경 설계 (14).png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Xsxtl/dJMcaiwNrfF/dSZoY4jxqid3AMpWBshC50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Xsxtl/dJMcaiwNrfF/dSZoY4jxqid3AMpWBshC50/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Xsxtl/dJMcaiwNrfF/dSZoY4jxqid3AMpWBshC50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXsxtl%2FdJMcaiwNrfF%2FdSZoY4jxqid3AMpWBshC50%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[인사이트] 프롬프트&amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링: AI 에이전트 환경 설계&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;488&quot; data-filename=&quot;[인사이트] 프롬프트&amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링 AI 에이전트 환경 설계 (14).png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;336c98ecdfff&quot; data-renderer-start-pos=&quot;2084&quot; data-ke-size=&quot;size16&quot;&gt;좋은 프롬프트는 여전히 중요해요. 목표, 조건, 출력 형식을 명확히 적는 것만으로도 짧은 답변이나 제한된 작업의 품질은 크게 좋아질 수 있어요. 하지만 에이전트가 여러 단계에 걸쳐 코드를 고치고, 테스트 결과를 확인하고, 다시 계획을 조정해야 한다면 프롬프트만으로는 한계가 드러나요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;336c98ecdfff&quot; data-renderer-start-pos=&quot;2084&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;8d80f0fb6077&quot; data-renderer-start-pos=&quot;2244&quot; data-ke-size=&quot;size16&quot;&gt;장시간 작업에서 특히 문제가 되는 것은 작업의 연속성이에요. 에이전트는 이전 판단의 이유를 놓치거나, 실패한 테스트를 충분히 반영하지 못하거나, 아직 끝나지 않은 일을 완료된 것으로 오해할 수 있어요. 프롬프트에 아무리 자세한 지시를 적어도, 실행 중간에 계속 바뀌는 상태와 오류를 안정적으로 관리하기는 어렵죠.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;8d80f0fb6077&quot; data-renderer-start-pos=&quot;2244&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;98cb30a13b24&quot; data-renderer-start-pos=&quot;2420&quot; data-ke-size=&quot;size16&quot;&gt;이때 필요한 것은 더 길고 자세한 지시문이 아니에요. 작업을 적절히 나누고, 중간 결과를 확인하고, 실패했을 때 멈추거나 되돌릴 수 있는 구조가 필요해요. 즉, AI 에이전트가 오래 일하게 하려면 &amp;ldquo;좋은 지시&amp;rdquo;뿐 아니라 &amp;ldquo;좋은 작업 절차&amp;rdquo;가 함께 필요합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h3 id=&quot;1-3.-이제는-모델이-일하는-조건까지-설계해야-한다&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;2566&quot; data-local-id=&quot;11a60a50f299&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;이제는 모델이 일하는 조건까지 설계해야 한다&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[인사이트] 프롬프트&amp;amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링 AI 에이전트 환경 설계 (13).png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmpqqj/dJMcajh9xcj/whrMAZyqtN3fm4uMi6P0cK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmpqqj/dJMcajh9xcj/whrMAZyqtN3fm4uMi6P0cK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmpqqj/dJMcajh9xcj/whrMAZyqtN3fm4uMi6P0cK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbmpqqj%2FdJMcajh9xcj%2FwhrMAZyqtN3fm4uMi6P0cK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[인사이트] 프롬프트&amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링: AI 에이전트 환경 설계&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;488&quot; data-filename=&quot;[인사이트] 프롬프트&amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링 AI 에이전트 환경 설계 (13).png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;6dd1ffb8fc4f&quot; data-renderer-start-pos=&quot;2600&quot; data-ke-size=&quot;size16&quot;&gt;AI 에이전트가 실제 업무를 수행하려면 모델의 추론 능력만으로는 부족해요. 어떤 파일을 볼 수 있는지, 어떤 명령을 실행할 수 있는지, 실패한 결과를 어떻게 다시 반영할지, 위험한 작업에서 언제 사람에게 넘길지 같은 조건이 함께 정리되어야 합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;6dd1ffb8fc4f&quot; data-renderer-start-pos=&quot;2600&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;c88f7ab66558&quot; data-renderer-start-pos=&quot;2740&quot; data-ke-size=&quot;size16&quot;&gt;사람의 업무 환경을 떠올려 보면 이해하기 쉬워요. 뛰어난 개발자라도 저장소 접근 권한, 개발 장비, 테스트 환경, 로그, 리뷰 절차가 없다면 안정적으로 제품을 고치기 어렵죠. AI 에이전트도 마찬가지예요. 모델이 판단을 담당한다면, 그 판단이 실제 작업으로 이어질 수 있는 환경과 절차가 필요합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;c88f7ab66558&quot; data-renderer-start-pos=&quot;2740&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;53da5fd9132b&quot; data-renderer-start-pos=&quot;2909&quot; data-ke-size=&quot;size16&quot;&gt;결국 AI 에이전트의 성과는 모델 자체의 성능만으로 결정되지 않아요. 모델이 어떤 정보와 도구를 가지고, 어떤 제한과 검증 절차 안에서 움직이는지에 따라 결과의 안정성이 달라집니다. 하네스 엔지니어링은 바로 이 문제를 다루기 위한 관점으로 볼 수 있어요.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;2.-프롬프트&amp;middot;컨텍스트&amp;middot;하네스-엔지니어링의-차이&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;3054&quot; data-local-id=&quot;4456a0702db2&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;2. 프롬프트&amp;middot;컨텍스트&amp;middot;하네스 엔지니어링의 차이&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id=&quot;2-1.-프롬프트-엔지니어링:-무엇을-어떻게-말할-것인가&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;3082&quot; data-local-id=&quot;47c68052948a&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;프롬프트 엔지니어링: 무엇을 어떻게 말할 것인가&lt;/b&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;div style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-media-vc-wrapper=&quot;true&quot; data-renderer-start-pos=&quot;3115&quot; data-vc=&quot;media-single&quot; data-node-type=&quot;mediaSingle&quot; data-width-type=&quot;pixel&quot; data-width=&quot;633&quot; data-layout=&quot;center&quot;&gt;
&lt;div&gt;
&lt;div data-local-id=&quot;52f36ed8df63&quot; data-renderer-start-pos=&quot;3116&quot; data-alt=&quot;image-20260507-040749.png&quot; data-file-mime-type=&quot;&quot; data-file-size=&quot;1&quot; data-file-name=&quot;file&quot; data-collection=&quot;contentId-1988068046&quot; data-id=&quot;ab24e93e-5dd2-417c-8d49-f2d2385f33a1&quot; data-height=&quot;1086&quot; data-width=&quot;1448&quot; data-node-type=&quot;media&quot; data-type=&quot;file&quot; data-context-id=&quot;1988068046&quot;&gt;
&lt;div id=&quot;newFileExperienceWrapper&quot; data-media-vc-wrapper=&quot;true&quot; data-testid=&quot;media-card-view&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[인사이트] 프롬프트&amp;amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링 AI 에이전트 환경 설계 (12).png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsqtFl/dJMcafUplYb/e2KtgmWlvhsbwf64O9etKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsqtFl/dJMcafUplYb/e2KtgmWlvhsbwf64O9etKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsqtFl/dJMcafUplYb/e2KtgmWlvhsbwf64O9etKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsqtFl%2FdJMcafUplYb%2Fe2KtgmWlvhsbwf64O9etKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[인사이트] 프롬프트&amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링: AI 에이전트 환경 설계&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;488&quot; data-filename=&quot;[인사이트] 프롬프트&amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링 AI 에이전트 환경 설계 (12).png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;f4a2d5bec5ae&quot; data-renderer-start-pos=&quot;3118&quot; data-ke-size=&quot;size16&quot;&gt;프롬프트 엔지니어링은 모델에게 목표와 기준을 어떻게 전달할지 설계하는 작업이에요. 모델이 어떤 역할로 답해야 하는지, 어떤 형식으로 출력해야 하는지, 어떤 제약을 지켜야 하는지, 무엇을 우선해야 하는지를 문장으로 정리하는 일이죠.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;f4a2d5bec5ae&quot; data-renderer-start-pos=&quot;3118&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;dac9c74b4f16&quot; data-renderer-start-pos=&quot;3248&quot; data-ke-size=&quot;size16&quot;&gt;좋은 프롬프트는 여전히 AI 활용의 출발점이에요. 처음부터 복잡한 에이전트 구조를 만들지 않아도, 목표와 출력 형식, 평가 기준을 명확히 주는 것만으로 결과 품질이 좋아질 수 있어요. 특히 짧은 답변 생성, 요약, 분류, 초안 작성처럼 작업 범위가 비교적 분명한 경우에는 프롬프트만 잘 설계해도 충분히 좋은 결과를 얻을 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;dac9c74b4f16&quot; data-renderer-start-pos=&quot;3248&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;dccd3167bccd&quot; data-renderer-start-pos=&quot;3436&quot; data-ke-size=&quot;size16&quot;&gt;다만 프롬프트는 기본적으로 &amp;ldquo;지시&amp;rdquo;에 가까워요. 모델에게 무엇을 해야 하는지 알려줄 수는 있지만, 실행 중간에 발생하는 상태 변화, 실패 처리, 권한 통제, 결과 검증까지 모두 대신하기는 어렵습니다. 그래서 작업이 길어지고 실제 시스템과 연결될수록 프롬프트 바깥의 설계가 중요해져요.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h4 id=&quot;2-2.-컨텍스트-엔지니어링:-무엇을-언제-보여줄-것인가&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;3596&quot; data-local-id=&quot;b41078b3aaf2&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;컨텍스트 엔지니어링: 무엇을 언제 보여줄 것인가&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[인사이트] 프롬프트&amp;amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링 AI 에이전트 환경 설계 (11).png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBOz1s/dJMcaffOVUn/333w4xroRsDg9PfncnZlK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBOz1s/dJMcaffOVUn/333w4xroRsDg9PfncnZlK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBOz1s/dJMcaffOVUn/333w4xroRsDg9PfncnZlK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBOz1s%2FdJMcaffOVUn%2F333w4xroRsDg9PfncnZlK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[인사이트] 프롬프트&amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링: AI 에이전트 환경 설계&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;488&quot; data-filename=&quot;[인사이트] 프롬프트&amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링 AI 에이전트 환경 설계 (11).png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;c7a87f976caf&quot; data-renderer-start-pos=&quot;3632&quot; data-ke-size=&quot;size16&quot;&gt;컨텍스트 엔지니어링은 모델이 어느 시점에 어떤 정보를 보아야 하는지 설계하는 작업이에요. 프롬프트 엔지니어링이 &amp;ldquo;어떻게 지시할 것인가&amp;rdquo;에 가깝다면, 컨텍스트 엔지니어링은 &amp;ldquo;무엇을 언제 보여줄 것인가&amp;rdquo;에 가깝습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;c7a87f976caf&quot; data-renderer-start-pos=&quot;3632&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;649f90644414&quot; data-renderer-start-pos=&quot;3753&quot; data-ke-size=&quot;size16&quot;&gt;장시간 작업에서는 정보가 계속 쌓여요. 사용자 지시, 파일 변경 내역, 명령 실행 결과, 실패 기록, 중간 판단이 모두 작업 이력으로 남습니다. 하지만 이 모든 정보를 매번 모델에게 한꺼번에 보여줄 수는 없어요. 그래서 현재 작업에 필요한 정보를 선별하고, 모델이 이해하기 쉬운 형태로 다시 구성하는 과정이 필요합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;649f90644414&quot; data-renderer-start-pos=&quot;3753&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;073757fda535&quot; data-renderer-start-pos=&quot;3933&quot; data-ke-size=&quot;size16&quot;&gt;컨텍스트를 잘 설계한다는 것은 정보를 많이 넣는 것이 아니라, 필요한 정보를 필요한 순간에 참조할 수 있게 만드는 일이에요. 예를 들어 실행 계획, 품질 기준, 아키텍처 문서, 오류 로그를 목적별로 나누어 두면 모델이 현재 판단에 필요한 정보를 더 안정적으로 활용할 수 있습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h4 id=&quot;2-3.-하네스-엔지니어링:-어떤-환경에서-어떻게-행동하게-할-것인가&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;4091&quot; data-local-id=&quot;5ae6db3594e9&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;하네스 엔지니어링: 어떤 환경에서 어떻게 행동하게 할 것인가&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[인사이트] 프롬프트&amp;amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링 AI 에이전트 환경 설계 (10).png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqb6uv/dJMcaiKhUw9/4qhCsyxftS5RKVBGEkmjQK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqb6uv/dJMcaiKhUw9/4qhCsyxftS5RKVBGEkmjQK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqb6uv/dJMcaiKhUw9/4qhCsyxftS5RKVBGEkmjQK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbqb6uv%2FdJMcaiKhUw9%2F4qhCsyxftS5RKVBGEkmjQK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[인사이트] 프롬프트&amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링: AI 에이전트 환경 설계&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;488&quot; data-filename=&quot;[인사이트] 프롬프트&amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링 AI 에이전트 환경 설계 (10).png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;17f5199f0239&quot; data-renderer-start-pos=&quot;4134&quot; data-ke-size=&quot;size16&quot;&gt;하네스 엔지니어링은 AI 에이전트가 실제 작업을 수행할 수 있도록 실행 환경을 설계하는 기술이에요. 프롬프트가 &amp;ldquo;무엇을 지시할 것인가&amp;rdquo;를 다루고, 컨텍스트가 &amp;ldquo;무엇을 보여줄 것인가&amp;rdquo;를 다룬다면, 하네스는 &amp;ldquo;어떤 환경에서 어떻게 행동하게 할 것인가&amp;rdquo;를 다룹니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;17f5199f0239&quot; data-renderer-start-pos=&quot;4134&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;251f02039d64&quot; data-renderer-start-pos=&quot;4281&quot; data-ke-size=&quot;size16&quot;&gt;여기서 말하는 실행 환경은 단순한 도구 목록이 아니에요. 파일 시스템, 코드 실행 공간, 샌드박스, API 접근, 권한 설정, 테스트, 로그, 승인 흐름, 실패 복구 체계까지 포함합니다. 에이전트가 실제로 행동하려면 먼저 어디까지 접근할 수 있고, 무엇을 실행할 수 있으며, 어떤 결과를 기준으로 다음 단계로 넘어갈지 정해져야 해요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;251f02039d64&quot; data-renderer-start-pos=&quot;4281&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;9be9fba57d25&quot; data-renderer-start-pos=&quot;4469&quot; data-ke-size=&quot;size16&quot;&gt;그래서 하네스 엔지니어링의 핵심은 AI 에이전트를 무조건 더 자유롭게 만드는 데 있지 않아요. 오히려 안전하고 예측 가능한 범위 안에서 오래 일할 수 있도록 작업 환경과 통제 구조를 함께 설계하는 데 있습니다. 모델이 판단을 담당한다면, 하네스는 그 판단이 실제 업무 안에서 안전하게 실행되도록 돕는 운영 기반이라고 볼 수 있어요.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;3.-좋은-하네스의-구성-요소&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;4657&quot; data-local-id=&quot;0b4512208168&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;3. 좋은 하네스의 구성 요소&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id=&quot;3-1.-도구-사용-환경:-파일,-코드,-브라우저,-API를-다루는-손과-발&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;4675&quot; data-local-id=&quot;f114e6708421&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;도구 사용 환경: 파일, 코드, 브라우저, API를 다루는 손과 발&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[인사이트] 프롬프트&amp;amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링 AI 에이전트 환경 설계 (9).png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DWcT9/dJMcahkpIlu/NgQSUUIc5AG0ht2g5sHcKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DWcT9/dJMcahkpIlu/NgQSUUIc5AG0ht2g5sHcKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DWcT9/dJMcahkpIlu/NgQSUUIc5AG0ht2g5sHcKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDWcT9%2FdJMcahkpIlu%2FNgQSUUIc5AG0ht2g5sHcKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[인사이트] 프롬프트&amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링: AI 에이전트 환경 설계&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;488&quot; data-filename=&quot;[인사이트] 프롬프트&amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링 AI 에이전트 환경 설계 (9).png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;94ca84bb8327&quot; data-renderer-start-pos=&quot;4722&quot; data-ke-size=&quot;size16&quot;&gt;좋은 하네스의 출발점은 에이전트가 실제로 행동할 수 있는 도구 사용 환경이에요. 모델이 해결 방법을 알고 있어도 파일을 찾고, 코드를 수정하고, 명령을 실행하고, 브라우저나 API를 호출할 수 없다면 작업은 답변 수준에서 멈추게 됩니다. 사람으로 비유하면 문제를 이해하는 능력은 있지만, 작업용 노트북과 저장소, 터미널, 테스트 환경이 없는 상태에 가까워요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;94ca84bb8327&quot; data-renderer-start-pos=&quot;4722&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;2a436b521819&quot; data-renderer-start-pos=&quot;4924&quot; data-ke-size=&quot;size16&quot;&gt;다만 도구를 많이 붙인다고 해서 좋은 하네스가 되는 것은 아니에요. 중요한 것은 도구를 어떤 조건에서 호출할 수 있는지, 실행 결과를 어떤 형식으로 돌려받는지, 실패했을 때 그 정보를 다음 판단에 어떻게 반영할지가 일관되게 설계되어 있는지입니다. 에이전트 입장에서는 도구 자체보다 &amp;ldquo;도구를 사용할 수 있는 안정적인 작업 흐름&amp;rdquo;이 더 중요해요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;2a436b521819&quot; data-renderer-start-pos=&quot;4924&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;802f812e9822&quot; data-renderer-start-pos=&quot;5117&quot; data-ke-size=&quot;size16&quot;&gt;파일 시스템도 단순한 저장 공간으로만 보면 아쉬워요. 에이전트가 중간 산출물을 남기고, 작업 상태를 기록하고, 사람이 검토할 결과물을 공유하는 작업 표면이 될 수 있기 때문이에요. 여기에 git 같은 버전 관리 체계를 함께 사용하면 변경 이력 추적, 롤백, 브랜치 기반 실험까지 가능해져 에이전트의 작업을 더 안전하게 관리할 수 있습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h4 id=&quot;3-2.-권한과-접근-제어:-어디까지-맡길-것인가&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;5308&quot; data-local-id=&quot;f5154b918e24&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;권한과 접근 제어: 어디까지 맡길 것인가&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[인사이트] 프롬프트&amp;amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링 AI 에이전트 환경 설계 (8).png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dTrbvS/dJMcada7nwy/4hDDt37cOaP1G2dncgjv90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dTrbvS/dJMcada7nwy/4hDDt37cOaP1G2dncgjv90/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dTrbvS/dJMcada7nwy/4hDDt37cOaP1G2dncgjv90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdTrbvS%2FdJMcada7nwy%2F4hDDt37cOaP1G2dncgjv90%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[인사이트] 프롬프트&amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링: AI 에이전트 환경 설계&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;488&quot; data-filename=&quot;[인사이트] 프롬프트&amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링 AI 에이전트 환경 설계 (8).png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;2a38acb12a7f&quot; data-renderer-start-pos=&quot;5340&quot; data-ke-size=&quot;size16&quot;&gt;AI 에이전트가 도구를 다루기 시작하면 권한 설계는 곧 안전 설계가 됩니다. 파일을 읽고, 코드를 수정하고, 외부 API를 호출할 수 있다는 것은 에이전트의 판단이 실제 시스템에 영향을 줄 수 있다는 뜻이기 때문이에요. 그래서 핵심 질문은 &amp;ldquo;이 도구를 쓸 수 있는가?&amp;rdquo;가 아니라 &amp;ldquo;어떤 신원으로, 어떤 범위 안에서, 어떤 조건으로 사용할 수 있는가?&amp;rdquo;에 가까워요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;2a38acb12a7f&quot; data-renderer-start-pos=&quot;5340&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;ecef5b88674a&quot; data-renderer-start-pos=&quot;5545&quot; data-ke-size=&quot;size16&quot;&gt;권한이 넓을수록 에이전트가 처리할 수 있는 일은 많아지지만, 잘못된 호출이나 오판이 장애와 보안 사고로 이어질 가능성도 커집니다. 그래서 필요한 권한만 제한적으로 제공하는 방식이 중요해요. 예를 들어 특정 경로는 읽기만 허용하고, 터미널 명령은 샌드박스 안에서만 실행하게 하며, 외부 서비스 호출에는 승인 절차나 정책 검사를 붙일 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;ecef5b88674a&quot; data-renderer-start-pos=&quot;5545&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;e70b82733437&quot; data-renderer-start-pos=&quot;5739&quot; data-ke-size=&quot;size16&quot;&gt;특히 자격 증명은 에이전트의 실행 공간과 분리해서 다루는 편이 안전해요. 토큰, API 키 같은 비밀값이 에이전트가 생성한 코드나 로그에 직접 노출되면 위험할 수 있죠. 에이전트가 외부 서비스를 사용할 수는 있어도, 비밀값 자체를 직접 만지지 않도록 설계하는 것이 좋습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h4 id=&quot;3-3.-테스트&amp;middot;린터&amp;middot;타입체커:-에이전트에게-즉각적인-피드백-주기&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;5894&quot; data-local-id=&quot;61b02b7b71fd&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;테스트&amp;middot;린터&amp;middot;타입체커: 에이전트에게 즉각적인 피드백 주기&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[인사이트] 프롬프트&amp;amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링 AI 에이전트 환경 설계 (7).png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/N5WVu/dJMcahR9Nw1/M4nDAkDw19XwQdklpsbFTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/N5WVu/dJMcahR9Nw1/M4nDAkDw19XwQdklpsbFTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/N5WVu/dJMcahR9Nw1/M4nDAkDw19XwQdklpsbFTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FN5WVu%2FdJMcahR9Nw1%2FM4nDAkDw19XwQdklpsbFTk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[인사이트] 프롬프트&amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링: AI 에이전트 환경 설계&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;488&quot; data-filename=&quot;[인사이트] 프롬프트&amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링 AI 에이전트 환경 설계 (7).png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;84b5fc5bfe89&quot; data-renderer-start-pos=&quot;5935&quot; data-ke-size=&quot;size16&quot;&gt;에이전트가 안정적으로 일하려면 자신의 행동을 바로 확인할 수 있는 피드백 장치가 필요해요. 사람이 최종 리뷰를 하기 전에도, 에이전트는 테스트 실패, 타입 오류, 린트 경고를 통해 방금 수정한 코드가 의도대로 작동하는지 확인할 수 있어야 합니다. 이때 테스트&amp;middot;린터&amp;middot;타입체커는 단순한 품질 관리 도구가 아니라, 에이전트가 다음 행동을 조정하게 만드는 센서에 가까워요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;84b5fc5bfe89&quot; data-renderer-start-pos=&quot;5935&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;e3964dbdc153&quot; data-renderer-start-pos=&quot;6141&quot; data-ke-size=&quot;size16&quot;&gt;이 피드백은 사람에게만 보이는 정보로 끝나면 효과가 제한적이에요. 하네스 안에서는 에이전트가 오류 메시지를 읽고, 원인을 추론하고, 수정 방향을 다시 선택할 수 있어야 합니다. 예를 들어 &amp;ldquo;하위 계층을 직접 import하지 말고 service 계층을 통해 접근하라&amp;rdquo;는 린트 메시지는 단순 경고가 아니라, 에이전트가 바로 반영할 수 있는 작업 지침이 될 수 있어요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;e3964dbdc153&quot; data-renderer-start-pos=&quot;6141&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;c1ebfe974633&quot; data-renderer-start-pos=&quot;6346&quot; data-ke-size=&quot;size16&quot;&gt;그래서 테스트와 정적 분석 도구는 작업 흐름 안에 자연스럽게 연결되어야 합니다. 에이전트가 코드를 고친 뒤 검증 명령을 실행하고, 실패 결과를 다시 읽고, 수정한 뒤 재검증하는 루프가 만들어져야 해요. 그래야 &amp;ldquo;좋은 결과를 내라&amp;rdquo;는 추상적인 지시가 아니라, 실패를 빠르게 발견하고 고칠 수 있는 구체적인 작업 환경이 만들어집니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h4 id=&quot;3-4.-평가와-관측-가능성:-에이전트의-행동을-추적하고-검증하기&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;6532&quot; data-local-id=&quot;ab015b16b90b&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;평가와 관측 가능성: 에이전트의 행동을 추적하고 검증하기&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[인사이트] 프롬프트&amp;amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링 AI 에이전트 환경 설계 (6).png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zmVPh/dJMcaalcSCy/UoLJpmiqAhcqNEF81Gc0c1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zmVPh/dJMcaalcSCy/UoLJpmiqAhcqNEF81Gc0c1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zmVPh/dJMcaalcSCy/UoLJpmiqAhcqNEF81Gc0c1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzmVPh%2FdJMcaalcSCy%2FUoLJpmiqAhcqNEF81Gc0c1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[인사이트] 프롬프트&amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링: AI 에이전트 환경 설계&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;488&quot; data-filename=&quot;[인사이트] 프롬프트&amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링 AI 에이전트 환경 설계 (6).png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;df2e15ca235d&quot; data-renderer-start-pos=&quot;6573&quot; data-ke-size=&quot;size16&quot;&gt;AI 에이전트의 평가는 최종 결과만 확인하는 방식으로는 충분하지 않아요. 겉으로는 그럴듯한 결과를 냈더라도, 중간에 잘못된 도구를 호출했거나, 오류를 무시했거나, 불필요하게 위험한 경로를 거쳤을 수 있습니다. 에이전트는 여러 단계의 판단과 실행을 거쳐 결과를 만들기 때문에 &amp;ldquo;무엇을 만들었는가&amp;rdquo;만큼 &amp;ldquo;어떻게 만들었는가&amp;rdquo;도 함께 봐야 해요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;df2e15ca235d&quot; data-renderer-start-pos=&quot;6573&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;72f231f9a116&quot; data-renderer-start-pos=&quot;6764&quot; data-ke-size=&quot;size16&quot;&gt;좋은 하네스는 실행 과정을 평가 가능한 형태로 남깁니다. 어떤 도구를 선택했는지, 입력값은 적절했는지, 호출은 성공했는지, 도구 출력이 최종 판단에 제대로 반영됐는지 확인할 수 있어야 해요. 결과가 맞아 보여도 과정이 불안정하면 같은 작업을 반복했을 때 품질을 보장하기 어렵습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;72f231f9a116&quot; data-renderer-start-pos=&quot;6764&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;b2d897644852&quot; data-renderer-start-pos=&quot;6923&quot; data-ke-size=&quot;size16&quot;&gt;관측 가능성은 이런 평가를 운영 환경에서 가능하게 만드는 기반이에요. 로그, 트레이스, 메트릭이 남아야 실패를 재현하고 원인을 찾을 수 있습니다. 실행 경로, 중간 출력, 지연 시간, 토큰 사용량, 실패율, 세션 흐름을 함께 기록하면 어떤 프롬프트가 효과적이었는지, 어떤 도구가 자주 실패하는지, 권한이나 중단 조건을 어디서 조정해야 하는지 판단할 수 있어요.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h4 id=&quot;3-5.-메모리와-컨텍스트-관리:-긴-작업을-이어가기-위한-외부-기억-장치&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;7126&quot; data-local-id=&quot;427b579528f5&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;메모리와 컨텍스트 관리: 긴 작업을 이어가기 위한 외부 기억 장치&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[인사이트] 프롬프트&amp;amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링 AI 에이전트 환경 설계 (5).png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lpFCQ/dJMcaci0pFd/IjzMF3O6PLTLoYK7PZaa70/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lpFCQ/dJMcaci0pFd/IjzMF3O6PLTLoYK7PZaa70/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lpFCQ/dJMcaci0pFd/IjzMF3O6PLTLoYK7PZaa70/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlpFCQ%2FdJMcaci0pFd%2FIjzMF3O6PLTLoYK7PZaa70%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[인사이트] 프롬프트&amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링: AI 에이전트 환경 설계&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;488&quot; data-filename=&quot;[인사이트] 프롬프트&amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링 AI 에이전트 환경 설계 (5).png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;574e76a2bb2e&quot; data-renderer-start-pos=&quot;7172&quot; data-ke-size=&quot;size16&quot;&gt;장시간 작업에서는 모델의 기억력에만 의존하기 어려워요. 에이전트가 여러 시간, 여러 세션, 여러 컨텍스트 윈도를 넘나들며 일하려면 이전에 무엇을 했는지, 어떤 결정을 내렸는지, 어떤 문제가 남아 있는지 안정적으로 보존되어야 합니다. 모든 정보를 현재 context window 안에 계속 넣는 방식은 금방 한계에 부딪혀요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;574e76a2bb2e&quot; data-renderer-start-pos=&quot;7172&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;4191518d74cd&quot; data-renderer-start-pos=&quot;7354&quot; data-ke-size=&quot;size16&quot;&gt;그래서 하네스는 모델이 지금 보고 있는 정보와 전체 작업 이력을 분리해서 관리해야 합니다. 모델에게는 현재 판단에 필요한 정보만 제공하고, 전체 로그와 중간 산출물은 외부 저장소에 남겨 두는 방식이에요. 중요한 것은 많이 저장하는 것이 아니라, 무엇을 보존하고 언제 다시 불러올지 정하는 것입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;4191518d74cd&quot; data-renderer-start-pos=&quot;7354&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;5f5fa02396dc&quot; data-renderer-start-pos=&quot;7522&quot; data-ke-size=&quot;size16&quot;&gt;이 구조가 갖춰지면 에이전트는 세션이 바뀌어도 이전 맥락을 이어갈 수 있어요. 작업 계획, 결정 배경, 변경 내역, 평가 결과, 남은 이슈를 외부 기억 장치처럼 관리하면 같은 실수를 반복할 가능성이 줄어듭니다. 결국 메모리와 컨텍스트 관리는 긴 작업을 &amp;ldquo;계속 기억하게 하는 기술&amp;rdquo;이라기보다, 필요한 맥락을 다시 꺼내 쓸 수 있게 만드는 설계에 가까워요.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h4 id=&quot;3-6.-실패-감지와-중단-조건:-언제-멈추고-사람에게-넘길-것인가&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;7721&quot; data-local-id=&quot;03d8ca32950a&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;실패 감지와 중단 조건: 언제 멈추고 사람에게 넘길 것인가&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[인사이트] 프롬프트&amp;amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링 AI 에이전트 환경 설계 (4).png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/v2Em1/dJMcaicyeWr/KFDPmGIPvx04rCHTLFITTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/v2Em1/dJMcaicyeWr/KFDPmGIPvx04rCHTLFITTK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/v2Em1/dJMcaicyeWr/KFDPmGIPvx04rCHTLFITTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fv2Em1%2FdJMcaicyeWr%2FKFDPmGIPvx04rCHTLFITTK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[인사이트] 프롬프트&amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링: AI 에이전트 환경 설계&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;488&quot; data-filename=&quot;[인사이트] 프롬프트&amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링 AI 에이전트 환경 설계 (4).png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;f51f58b3e134&quot; data-renderer-start-pos=&quot;7763&quot; data-ke-size=&quot;size16&quot;&gt;좋은 하네스는 에이전트가 계속 작업할 조건뿐 아니라, 언제 멈춰야 하는지도 함께 정의해야 해요. 장시간 자율 작업에서 위험한 순간은 에이전트가 실패를 인식하지 못한 채 계속 실행될 때입니다. 잘못된 전제를 붙잡고 같은 시도를 반복하거나, 테스트 실패를 무시하거나, 권한이 큰 도구를 부적절하게 호출하면 작은 오류가 운영 리스크로 커질 수 있어요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;f51f58b3e134&quot; data-renderer-start-pos=&quot;7763&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;70d6d02c1ebc&quot; data-renderer-start-pos=&quot;7958&quot; data-ke-size=&quot;size16&quot;&gt;실패 감지는 단순히 오류 발생 여부를 확인하는 수준에서 끝나면 부족합니다. 에이전트가 어떤 기준을 충족하지 못했는지, 그 실패가 재시도 가능한 문제인지, 사람의 판단이 필요한 문제인지 구분할 수 있어야 해요. 예를 들어 같은 오류가 일정 횟수 이상 반복되면 멈추게 하거나, 테스트 실패가 해결되지 않으면 사람 검토로 넘기는 식의 조건이 필요합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;70d6d02c1ebc&quot; data-renderer-start-pos=&quot;7958&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;50578bbea4f1&quot; data-renderer-start-pos=&quot;8154&quot; data-ke-size=&quot;size16&quot;&gt;특히 외부 API 호출, 배포, 데이터 변경, 권한 상승처럼 되돌리기 어려운 작업은 자동 실행보다 승인 흐름을 우선해야 해요. 에이전트에게 일을 맡긴다는 것은 모든 판단을 넘긴다는 뜻이 아닙니다. 자율적으로 처리해도 되는 일과 반드시 사람에게 넘겨야 하는 일을 구분하는 기준까지 함께 설계해야 합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;4.-기업은-무엇을-준비해야-하나&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;8325&quot; data-local-id=&quot;80ef316e078e&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;4. 기업은 무엇을 준비해야 하나&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id=&quot;4-1.-모델-선택만으로는-AI-에이전트-성과를-보장할-수-없다&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;8345&quot; data-local-id=&quot;f5710f08ee5a&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;모델 선택만으로는 AI 에이전트 성과를 보장할 수 없다&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[인사이트] 프롬프트&amp;amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링 AI 에이전트 환경 설계 (3).png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oDhP3/dJMcaiXOkeE/1lZkt3DRH2thMMaKEQwzr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oDhP3/dJMcaiXOkeE/1lZkt3DRH2thMMaKEQwzr0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oDhP3/dJMcaiXOkeE/1lZkt3DRH2thMMaKEQwzr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoDhP3%2FdJMcaiXOkeE%2F1lZkt3DRH2thMMaKEQwzr0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[인사이트] 프롬프트&amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링: AI 에이전트 환경 설계&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;488&quot; data-filename=&quot;[인사이트] 프롬프트&amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링 AI 에이전트 환경 설계 (3).png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;cb05cf1eeb2b&quot; data-renderer-start-pos=&quot;8385&quot; data-ke-size=&quot;size16&quot;&gt;기업이 AI 에이전트를 도입할 때 가장 먼저 보게 되는 것은 대개 모델이에요. 어떤 모델이 더 추론을 잘하는지, 긴 문맥을 얼마나 안정적으로 처리하는지, 도구 호출을 얼마나 정확하게 수행하는지는 당연히 중요합니다. 다만 앞에서 살펴본 것처럼, 에이전트의 성과는 모델 하나로 결정되지 않습니다. 실제 업무에서는 모델이 어떤 도구를 사용할 수 있고, 어떤 권한 안에서 움직이며, 어떤 기준으로 결과를 검증받는지가 함께 맞물려야 해요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;cb05cf1eeb2b&quot; data-renderer-start-pos=&quot;8385&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;d1e692f3b77b&quot; data-renderer-start-pos=&quot;8627&quot; data-ke-size=&quot;size16&quot;&gt;따라서 기업은 &amp;ldquo;가장 좋은 모델을 고르는 일&amp;rdquo;보다 먼저 &amp;ldquo;어떤 업무를 에이전트에게 맡길 것인가&amp;rdquo;를 정리해야 합니다. 규칙이 명확하고 흐름이 고정된 작업이라면 일반 자동화나 워크플로가 더 안정적일 수 있어요. 반대로 중간 판단이 필요하고, 여러 도구를 조합해야 하며, 상황에 따라 다음 행동이 달라지는 작업이라면 에이전트 방식이 더 잘 맞을 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;d1e692f3b77b&quot; data-renderer-start-pos=&quot;8627&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;b51d0ea5a746&quot; data-renderer-start-pos=&quot;8826&quot; data-ke-size=&quot;size16&quot;&gt;그다음에는 업무별로 실행 경계를 정해야 합니다. 읽기만 허용할 작업인지, 파일 수정까지 맡길 수 있는지, 외부 시스템 호출에는 승인이 필요한지, 실패가 반복될 때 어디서 멈춰야 하는지를 미리 설계해야 해요. 결국 기업이 던져야 할 질문은 &amp;ldquo;어느 모델을 쓸 것인가?&amp;rdquo;에서 끝나지 않습니다. &amp;ldquo;이 모델을 어떤 업무에, 어떤 환경에서, 어떤 책임 범위로 일하게 할 것인가?&amp;rdquo;까지 함께 물어야 합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h4 id=&quot;4-2.-하네스도-코드처럼-버전-관리하고-개선해야-한다&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;9048&quot; data-local-id=&quot;4f1d4ee2bcf6&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;하네스도 코드처럼 버전 관리하고 개선해야 한다&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[인사이트] 프롬프트&amp;amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링 AI 에이전트 환경 설계 (2).png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dJldWP/dJMcaaeuL0T/QN8MF1lziMOUhqWj5Dhlb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dJldWP/dJMcaaeuL0T/QN8MF1lziMOUhqWj5Dhlb0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dJldWP/dJMcaaeuL0T/QN8MF1lziMOUhqWj5Dhlb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdJldWP%2FdJMcaaeuL0T%2FQN8MF1lziMOUhqWj5Dhlb0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[인사이트] 프롬프트&amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링: AI 에이전트 환경 설계&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;488&quot; data-filename=&quot;[인사이트] 프롬프트&amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링 AI 에이전트 환경 설계 (2).png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;c2ff1c1d491e&quot; data-renderer-start-pos=&quot;9083&quot; data-ke-size=&quot;size16&quot;&gt;하네스는 한 번 만들어 두고 끝나는 설정 묶음이 아니에요. 프롬프트, 도구 설정, 문서 구조, 권한 정책, 평가 기준, 테스트 루프는 모두 시간이 지나며 실제 업무 환경과 어긋날 수 있습니다. 코드베이스가 바뀌었는데 프롬프트가 예전 파일 경로를 가리키거나, 도구 인터페이스가 달라졌는데 설정이 그대로 남아 있으면 에이전트는 빈틈을 추측으로 메우게 됩니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;c2ff1c1d491e&quot; data-renderer-start-pos=&quot;9083&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;365e1cdaf784&quot; data-renderer-start-pos=&quot;9283&quot; data-ke-size=&quot;size16&quot;&gt;그래서 하네스도 코드처럼 관리되어야 합니다. 어떤 프롬프트를 바꿨는지, 권한 정책을 왜 조정했는지, 평가 기준이 언제 달라졌는지 기록되어야 하고, 문제가 생기면 이전 상태로 되돌릴 수 있어야 해요. 에이전트의 실패는 항상 모델 성능 부족 때문에 생기지는 않습니다. 오래된 문서, 맞지 않는 작업 템플릿, 느슨한 권한 정책, 실제 코드와 어긋난 테스트 기준처럼 주변 구조가 낡으면서 생기는 경우도 많아요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;365e1cdaf784&quot; data-renderer-start-pos=&quot;9283&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;c8b74209be95&quot; data-renderer-start-pos=&quot;9510&quot; data-ke-size=&quot;size16&quot;&gt;하네스 개선은 감으로 하는 일이 아니라 실행 기록과 평가 결과를 바탕으로 이뤄져야 합니다. 에이전트가 같은 실수를 반복한다면 결과물만 사람이 고칠 것이 아니라, 작업 지침, 문서 구조, 테스트 루프, 중단 조건 중 어디가 부족했는지 함께 봐야 해요. 이렇게 하네스를 계속 기록하고 개선해야 에이전트 도입이 일회성 실험에 그치지 않고, 기업 안에 반복 가능한 운영 역량으로 쌓일 수 있습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h3 id=&quot;5.-마무리:-AI-에이전트의-성과는-모델-바깥에서도-결정된다&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;9731&quot; data-local-id=&quot;b1b682daa308&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;5. AI 에이전트의 성과는 모델 바깥에서도 결정된다&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[인사이트] 프롬프트&amp;amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링 AI 에이전트 환경 설계 (1).png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdjkc6/dJMcabxEuHG/YYlP5A9kkYcyGFewKRBZQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdjkc6/dJMcabxEuHG/YYlP5A9kkYcyGFewKRBZQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdjkc6/dJMcabxEuHG/YYlP5A9kkYcyGFewKRBZQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbdjkc6%2FdJMcabxEuHG%2FYYlP5A9kkYcyGFewKRBZQk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[인사이트] 프롬프트&amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링: AI 에이전트 환경 설계&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;488&quot; data-filename=&quot;[인사이트] 프롬프트&amp;middot;컨텍스트 엔지니어링 다음은 하네스 엔지니어링 AI 에이전트 환경 설계 (1).png&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;e8ae4b43697d&quot; data-renderer-start-pos=&quot;9770&quot; data-ke-size=&quot;size16&quot;&gt;모델 성능 경쟁은 앞으로도 계속될 것입니다. 더 긴 컨텍스트, 더 강한 추론 능력, 더 정교한 도구 호출 능력은 여전히 중요해요. AI 에이전트가 더 복잡한 업무를 수행하려면 모델 자체의 능력이 좋아져야 하는 것도 분명합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;e8ae4b43697d&quot; data-renderer-start-pos=&quot;9770&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;0025d1ca5b7f&quot; data-renderer-start-pos=&quot;9898&quot; data-ke-size=&quot;size16&quot;&gt;하지만 기업이 실제 업무에 AI 에이전트를 투입할 때, 성과 차이는 모델 API를 호출하는 것만으로 결정되지 않습니다. 같은 모델을 쓰더라도 문서 구조, 권한 설계, 도구 인터페이스, 테스트 피드백, 평가 루프가 다르면 결과는 크게 달라질 수 있어요. 어떤 환경에서는 에이전트가 안정적으로 작업을 이어가지만, 어떤 환경에서는 같은 모델도 맥락을 놓치고, 잘못된 도구를 호출하고, 실패를 반복할 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;0025d1ca5b7f&quot; data-renderer-start-pos=&quot;9898&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;9ffd5a4b3c35&quot; data-renderer-start-pos=&quot;10127&quot; data-ke-size=&quot;size16&quot;&gt;그래서 하네스 엔지니어링은 AI를 더 자유롭게 풀어놓자는 개념이 아니에요. 오히려 AI가 안전하고 예측 가능한 범위 안에서 더 오래, 더 안정적으로 일할 수 있도록 작업 환경을 설계하자는 접근에 가깝습니다. 프롬프트는 여전히 출발점이지만, 에이전트가 실제 업무를 수행하는 순간부터는 도구, 권한, 테스트, 로그, 메모리, 승인 흐름이 함께 품질을 결정합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;9ffd5a4b3c35&quot; data-renderer-start-pos=&quot;10127&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;eedf61fdb478&quot; data-renderer-start-pos=&quot;10329&quot; data-ke-size=&quot;size16&quot;&gt;결국 핵심은 단순합니다. 모델은 두뇌이고, 하네스는 그 두뇌가 일하는 환경입니다. 앞으로 AI 에이전트를 실제 업무에 도입하려는 기업이라면 &amp;ldquo;어떤 모델을 쓸 것인가&amp;rdquo;뿐 아니라 &amp;ldquo;그 모델이 어떤 환경에서 일하게 할 것인가&amp;rdquo;를 함께 설계해야 합니다. 그 차이가 AI 에이전트를 단순한 실험 도구로 남길지, 실제 업무를 수행하는 운영 역량으로 발전시킬지를 가르게 될 거예요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- CTA (블루 버전, GA4 공통 스크립트용 figure + data-event) --&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; style=&quot;max-width: 600px; margin: 0 auto 40px auto;&quot; data-event=&quot;go_cloud_banner_click&quot; data-name=&quot;cta_platform_banner&quot; data-loc=&quot;body_mid&quot;&gt;&lt;a href=&quot;https://cloud.kt.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 100%; height: auto; border-radius: 8px; display: block;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt%20cloud%20platform.png&quot; alt=&quot;kt cloud 플랫폼 바로가기&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- ================= FAQ 섹션 (그린 버전, 블루 스타일을 그린 톤으로) ================= --&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #009a87; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;b&gt;❓ 자주 묻는 질문 (FAQ)&lt;/b&gt; &lt;/span&gt;&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #E6F8F4; border-bottom: 1px solid #CDEDE7;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87;&quot;&gt; &lt;b&gt;Q. 무엇이&amp;nbsp;하네스&amp;nbsp;엔지니어링을&amp;nbsp;프롬프트&amp;nbsp;엔지니어링과&amp;nbsp;구분하나요?&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #ffffff;&quot;&gt;A.&amp;nbsp;프롬프트&amp;nbsp;엔지니어링은&amp;nbsp;모델에게&amp;nbsp;목표,&amp;nbsp;조건,&amp;nbsp;출력&amp;nbsp;형식&amp;nbsp;등을&amp;nbsp;어떻게&amp;nbsp;지시할지&amp;nbsp;설계하는&amp;nbsp;작업입니다.&amp;nbsp;반면&amp;nbsp;하네스&amp;nbsp;엔지니어링은&amp;nbsp;AI&amp;nbsp;에이전트가&amp;nbsp;실제&amp;nbsp;작업을&amp;nbsp;수행하는&amp;nbsp;실행&amp;nbsp;환경을&amp;nbsp;설계하는&amp;nbsp;접근입니다.&amp;nbsp;여기에는&amp;nbsp;파일&amp;nbsp;시스템,&amp;nbsp;코드&amp;nbsp;실행&amp;nbsp;공간,&amp;nbsp;API&amp;nbsp;접근,&amp;nbsp;권한&amp;nbsp;설정,&amp;nbsp;테스트,&amp;nbsp;로그,&amp;nbsp;승인&amp;nbsp;흐름,&amp;nbsp;실패&amp;nbsp;복구&amp;nbsp;체계가&amp;nbsp;포함됩니다.&amp;nbsp;즉,&amp;nbsp;프롬프트가&amp;nbsp;지시의&amp;nbsp;품질을&amp;nbsp;다룬다면&amp;nbsp;하네스는&amp;nbsp;에이전트가&amp;nbsp;안전하고&amp;nbsp;반복&amp;nbsp;가능하게&amp;nbsp;행동할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;조건을&amp;nbsp;다룹니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- ================= 관련/출처 섹션 (그린 박스 버전) ================= --&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 15px; font-weight: bold; color: #000000; font-family: 'Noto Sans KR', sans-serif;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;   관련/출처 &lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 12px 14px; background: #ffffff;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;702&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://openai.com/index/harness-engineering/&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://openai.com/index/harness-engineering/&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span&gt;Harness engineering: leveraging Codex in an agent-first world&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;708&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://openai.com/index/unlocking-the-codex-harness/&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://openai.com/index/unlocking-the-codex-harness/&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span data-testid=&quot;icon-position-wrapper&quot;&gt;&lt;/span&gt;&lt;span&gt;Unlocking the Codex harness: how we built the App Server&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;714&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://www.anthropic.com/engineering/building-agents-with-the-claude-agent-sdk&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://www.anthropic.com/engineering/building-agents-with-the-claude-agent-sdk&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span data-testid=&quot;icon-position-wrapper&quot;&gt;&lt;/span&gt;&lt;span&gt;Building agents with the Claude Agent SDK | Claude&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;720&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://www.anthropic.com/engineering/harness-design-long-running-apps&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://www.anthropic.com/engineering/harness-design-long-running-apps&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span data-testid=&quot;icon-position-wrapper&quot;&gt;&lt;/span&gt;&lt;span&gt;Harness design for long-running application development&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;726&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://www.anthropic.com/engineering/managed-agents&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://www.anthropic.com/engineering/managed-agents&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span data-testid=&quot;icon-position-wrapper&quot;&gt;&lt;/span&gt;&lt;span&gt;Scaling Managed Agents: Decoupling the brain from the hands&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;732&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://www.anthropic.com/research/building-effective-agents&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://www.anthropic.com/research/building-effective-agents&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span data-testid=&quot;icon-position-wrapper&quot;&gt;&lt;/span&gt;&lt;span&gt;Building Effective AI Agents&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;738&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://developers.redhat.com/articles/2026/04/07/harness-engineering-structured-workflows-ai-assisted-development&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://developers.redhat.com/articles/2026/04/07/harness-engineering-structured-workflows-ai-assisted-development&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span data-testid=&quot;icon-position-wrapper&quot;&gt;&lt;/span&gt;&lt;span&gt;Harness engineering: Structured workflows for AI-assisted development | Red Hat Developer&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;744&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://www.langchain.com/blog/the-anatomy-of-an-agent-harness&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://www.langchain.com/blog/the-anatomy-of-an-agent-harness&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span data-testid=&quot;icon-position-wrapper&quot;&gt;&lt;/span&gt;&lt;span&gt;The Anatomy of an Agent Harness&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;750&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://martinfowler.com/articles/harness-engineering.html&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://martinfowler.com/articles/harness-engineering.html&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span data-testid=&quot;icon-position-wrapper&quot;&gt;&lt;/span&gt;&lt;span&gt;Harness engineering for coding agent users&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;756&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://cloud.google.com/blog/products/ai-machine-learning/a-devs-guide-to-production-ready-ai-agents&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://cloud.google.com/blog/products/ai-machine-learning/a-devs-guide-to-production-ready-ai-agents&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span data-testid=&quot;icon-position-wrapper&quot;&gt;&lt;/span&gt;&lt;span&gt;A dev&amp;rsquo;s guide to production-ready AI agents | Google Cloud Blog&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;762&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://cloud.google.com/blog/topics/developers-practitioners/a-methodical-approach-to-agent-evaluation&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://cloud.google.com/blog/topics/developers-practitioners/a-methodical-approach-to-agent-evaluation&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span data-testid=&quot;icon-position-wrapper&quot;&gt;&lt;/span&gt;&lt;span&gt;A methodical approach to agent evaluation | Google Cloud Blog&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;768&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://arxiv.org/abs/2603.28052&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://arxiv.org/abs/2603.28052&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span data-testid=&quot;icon-position-wrapper&quot;&gt;&lt;/span&gt;&lt;span&gt;Meta-Harness: End-to-End Optimization of Model Harnesses&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- 포스터 이미지 3개 한 줄 배치 (가운데 정렬 + 링크 추가) --&gt;&lt;/p&gt;
&lt;div&gt;
&lt;style&gt;  /* 모바일에서 포스터 크기 줄이기 */  @media (max-width: 480px) {    .poster-figure {      max-width: 30% !important;  /* 한 줄에 3개 들어오도록 */      flex: 0 0 30% !important;    }    .poster-figure img {      width: 100% !important;      height: auto !important;    }  }&lt;/style&gt;
&lt;/div&gt;
&lt;div style=&quot;display: flex; justify-content: center; align-items: flex-start; gap: 15px; margin: 30px auto; flex-wrap: wrap; text-align: center;&quot;&gt;&lt;!-- 1번 배너: 클라우드 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;cloud_industry_poster_click&quot; data-name=&quot;cloud_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://cloud.kt.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud1.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;!-- 2번 배너: 데이터센터 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;datacenter_industry_poster_click&quot; data-name=&quot;datacenter_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://www.kt-idc.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud2.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;!-- 3번 배너: AI 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;ai_industry_poster_click&quot; data-name=&quot;ai_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://cloud.kt.com/category/?ctgryId=C000000001&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud3.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;/div&gt;</description>
      <category>Tech Story/Tech Inside</category>
      <category>agenticai</category>
      <category>aiagent</category>
      <category>ai에이전트</category>
      <category>ai인프라</category>
      <category>DevOps</category>
      <category>KTCloud</category>
      <category>MLOps</category>
      <category>컨텍스트엔지니어링</category>
      <category>프롬프트엔지니어링</category>
      <category>하네스엔지니어링</category>
      <author>kt cloud 기술 블로그</author>
      <guid isPermaLink="true">https://tech.ktcloud.com/451</guid>
      <comments>https://tech.ktcloud.com/entry/2026-06-ktcloud-prompt-context-agent-%ED%99%98%EA%B2%BD-%EC%84%A4%EA%B3%84#entry451comment</comments>
      <pubDate>Thu, 4 Jun 2026 19:20:35 +0900</pubDate>
    </item>
    <item>
      <title>[운영가이드] Kubernetes 기반 Fault-Tolerant GPU 클러스터 유지 관리</title>
      <link>https://tech.ktcloud.com/entry/2026-06-ktcloud-kubernetes-gpu-cluster-%EC%9E%A5%EC%95%A0-%EA%B4%80%EB%A6%AC</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 티스토리용 시맨틱 HTML 기술 블로그 템플릿 (개선된 UI) --&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;article style=&quot;font-family: 'Noto Sans KR', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; max-width: 100%; margin: 0 auto; line-height: 1.7; color: #2c3e50; background: #ffffff;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 메타데이터 섹션 --&gt; &lt;/span&gt;&lt;header style=&quot;background: linear-gradient(135deg, #009a87 0%, #00b39f 100%); color: white; padding: 20px 25px; text-align: right; font-weight: 600; border-radius: 15px; margin-bottom: 35px; box-shadow: 0 8px 25px rgba(0, 154, 135, 0.15); position: relative; overflow: hidden;&quot;&gt;
&lt;div style=&quot;position: absolute; top: -50%; right: -10%; width: 200px; height: 200px; background: rgba(255,255,255,0.1); border-radius: 50%; transform: rotate(45deg);&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;position: relative; z-index: 2;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;b&gt; &lt;span style=&quot;font-size: 1.1rem; text-shadow: rgba(0, 0, 0, 0.1) 0px 2px 4px;&quot;&gt; [ kt cloud Foundation플랫폼팀 서준호 님 ] &lt;/span&gt; &lt;/b&gt; &lt;/span&gt;&lt;/div&gt;
&lt;/header&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 콘텐츠 구조 및 메타데이터 표준화 적용 --&gt; &lt;/span&gt;
&lt;article&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 작성자 정보 (시맨틱 헤더) --&gt; &lt;/span&gt;&lt;header style=&quot;margin: 20px 0;&quot;&gt;
&lt;section style=&quot;margin: 25px 0;&quot;&gt;&lt;header&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 요약 섹션 헤더 - 초미니멀 디자인 --&gt; &lt;/span&gt;
&lt;h4 style=&quot;margin: 15px 0 10px 0;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87; background: #f0fffe; padding: 4px 10px; border-radius: 12px; border: 1px solid #d4eeeb; display: inline-flex; align-items: center; gap: 5px; font-weight: bold; font-size: 0.9em;&quot;&gt; &lt;span style=&quot;font-size: 0.8em;&quot;&gt; &lt;/span&gt; 요약 &lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;이 글에서는 Kubernetes 기반 Fault-Tolerant GPU 클러스터의 안정적 운영과 유지 관리 방안을 다룹니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;대규모 AI 인프라에서 장애 대응과 성능 저하 예방이 운영 신뢰성에 미치는 의미를 정리합니다.&lt;/span&gt;&lt;/p&gt;
&lt;/header&gt;&lt;/section&gt;
&lt;/header&gt;&lt;/article&gt;
&lt;/article&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;#Kubernetes&amp;nbsp;#GPU클러스터&amp;nbsp;#FaultTolerance&amp;nbsp;#Slurm&amp;nbsp;#InfiniBand&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock floatRight&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[운영가이드] Kubernetes 기반 Fault-Tolerant GPU 클러스터 유지 관리.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k8pIT/dJMcahECjfo/CztU8sKKmwNGBLkCUdpUBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k8pIT/dJMcahECjfo/CztU8sKKmwNGBLkCUdpUBK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k8pIT/dJMcahECjfo/CztU8sKKmwNGBLkCUdpUBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk8pIT%2FdJMcahECjfo%2FCztU8sKKmwNGBLkCUdpUBK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;350&quot; height=&quot;1080&quot; data-filename=&quot;[운영가이드] Kubernetes 기반 Fault-Tolerant GPU 클러스터 유지 관리.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;94319d7a34a9&quot; data-renderer-start-pos=&quot;1570&quot; data-ke-size=&quot;size16&quot;&gt;생성형 AI와 대규모 언어 모델(LLM) 시대에 고성능 연산에 대한 수요는 일시적인 급증을 넘어, 이제는 거대하고 지속적인 워크로드로 변화했습니다. 수십억 개의 파라미터를 가진 모델을 학습시키는 것은 단순히 계산 능력을 겨루는 일이 아닌, 인프라를 안정적으로 운영하는 레이스와 같습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;94319d7a34a9&quot; data-renderer-start-pos=&quot;1570&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;cb3d9bac87a2&quot; data-renderer-start-pos=&quot;1732&quot; data-ke-size=&quot;size16&quot;&gt;수천 개의 GPU를 베어메탈(Bare-metal) 환경에서 대규모로 운영할 때, 중요한 것은 하드웨어 고장 여부가 아닙니다. 고장은 반드시 일어납니다. 핵심은 &amp;ldquo;장애 발생 시 오케스트레이션 레이어가 이를 얼마나 유연하게 처리하느냐&amp;rdquo;입니다. 이를 위해 GPU 클러스터의 성능과 탄력성을 유지하기 위해 몇 가지 핵심 원칙과 시스템을 구축해야 합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;cb3d9bac87a2&quot; data-renderer-start-pos=&quot;1732&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;434a68027caf&quot; data-renderer-start-pos=&quot;1927&quot; data-ke-size=&quot;size16&quot;&gt;Kubernetes와 맞춤형 자동화 기술을 활용하여 안정적인 GPU 클러스터를 유지하는 방법을 소개합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;1.-자동화된-Fleet-Life-Cycle-Management&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;1989&quot; data-local-id=&quot;7d059e880c97&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;1. 자동화된 Fleet Life Cycle Management&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;1346223cb97d&quot; data-renderer-start-pos=&quot;2026&quot; data-ke-size=&quot;size16&quot;&gt;수십 개의 GPU를 관리하는 것은 사람이 할 수 있지만, 수만 개를 관리하려면 하드웨어 상태 관리에 대해 &quot;설정 후 망각(Set it and forget it)&quot; 수준의 자동화가 필요합니다. 여기서 Fleet Lifecycle Controllers가 핵심 역할을 합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;1346223cb97d&quot; data-renderer-start-pos=&quot;2026&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;a8e670cca951&quot; data-renderer-start-pos=&quot;2179&quot; data-ke-size=&quot;size16&quot;&gt;이 컨트롤러들은 클러스터의 '면역 체계'와 같습니다. 이들은 다음과 같은 하드웨어 상태 신호를 지속적으로 모니터링합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;04ce892b-3416-4f4e-82b6-d6f14dc3f249&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;GPU 온도 및 전력 소모&lt;/li&gt;
&lt;li&gt;메모리 ECC(Error Correction Code) 오류&lt;/li&gt;
&lt;li&gt;네트워크 인터페이스의 안정성&lt;/li&gt;
&lt;li&gt;선제적 조치(Proactive Remediation): GPU 발열로 인한 스로틀링이나 '소리 없는' 메모리 오류 같은 미세한 성능 저하가 감지되면, 컨트롤러는 시스템이 완전히 멈출 때까지 기다리지 않습니다.&lt;/li&gt;
&lt;li&gt;자동화된 대응: 해당 노드를 '드레인(Drain)'하고 Kubernetes 스케줄러에서 제외(Cordon)한 뒤, 고객의 워크로드에 영향을 주기 전에 자동으로 재부팅하거나 하드웨어 교체 티켓을 생성합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;2.-Deep-Observability-&amp;amp;-Telemetry&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;2563&quot; data-local-id=&quot;e2ae33e31285&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;2. Deep Observability &amp;amp; Telemetry&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;5a56b1bf2830&quot; data-renderer-start-pos=&quot;2598&quot; data-ke-size=&quot;size16&quot;&gt;보이지 않는 것은 고칠 수 없습니다. 분산 학습 환경에서는 기술적으로는 '동작 중'이지만 성능이 50%만 나오는 그레이 페일러(Grey Failure) 노드 하나가 전체 학습 작업을 병목 현상에 빠뜨릴 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;5a56b1bf2830&quot; data-renderer-start-pos=&quot;2598&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;6743b3eb66f8&quot; data-renderer-start-pos=&quot;2720&quot; data-ke-size=&quot;size16&quot;&gt;다음과 같은 실시간 지표를 중앙 집중화하여 모니터링해야 합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;de320835-5c87-4fc0-a8df-c3387afad12c&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;GPU 지표: 전력 사용량, 클록 속도, 메모리 사용률.&lt;/li&gt;
&lt;li&gt;패브릭 상태: 패킷 손실이나 Link Flapping을 감지하기 위한 인피니밴드(InfiniBand) 모니터링.&lt;/li&gt;
&lt;li&gt;스토리지 처리량: 데이터 로딩이 병목의 원인이 되지 않도록 보장.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;fe62fca11907&quot; data-renderer-start-pos=&quot;2900&quot; data-ke-size=&quot;size16&quot;&gt;이를 통해 엔지니어와 고객 모두에게 세밀한 텔레메트리를 제공함으로써 **평균 탐지 시간(MTTD)**을 획기적으로 줄입니다. 학습 속도가 왜 느려졌는지 고민하는 대신, 대시보드를 통해 성능 저하의 원인이 되는 구성 요소를 즉시 찾아낼 수 있어야 합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;3.-Kubernetes와-HPC-스케줄러-통합&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;3044&quot; data-local-id=&quot;04201dea6e20&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;3. Kubernetes와 HPC 스케줄러 통합&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;7e4a92821ace&quot; data-renderer-start-pos=&quot;3072&quot; data-ke-size=&quot;size16&quot;&gt;Kubernetes는 컨테이너 오케스트레이션의 표준이지만, 고성능 컴퓨팅(HPC) 분야는 오랫동안 복잡한 배치 스케줄링을 위해 Slurm에 의존해 왔습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;7e4a92821ace&quot; data-renderer-start-pos=&quot;3072&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;d1ca32b40f01&quot; data-renderer-start-pos=&quot;3161&quot; data-ke-size=&quot;size16&quot;&gt;이 두 세계의 장점을 결합한 Slinky 프로젝트가 최근에 런칭되었습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;4623b98a-f970-41cc-99dc-96089a64d761&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Kubernetes&lt;/b&gt;는 현대적인 API, 컨테이너화, 리소스 관리를 제공합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Slurm&lt;/b&gt;은 대규모 분산 워크로드에 필요한 검증된 결함 허용(Fault Tolerance) 기능을 제공합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;bc5e4292c065&quot; data-renderer-start-pos=&quot;3318&quot; data-ke-size=&quot;size16&quot;&gt;대규모 학습 도중 노드 장애가 발생하면, Slinky는 작업을 지능적으로 재스케줄링하거나 재시작합니다. 이는 Kubernetes의 확장성과 HPC 스케줄러의 정밀함을 동시에 확보하게 해줍니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;4.-Stateless-노드-및-빠른-Reprovisioning&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;3428&quot; data-local-id=&quot;806d3100e28b&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;4. Stateless 노드 및 빠른 Reprovisioning&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;936040cac6f1&quot; data-renderer-start-pos=&quot;3465&quot; data-ke-size=&quot;size16&quot;&gt;클러스터 안정성의 가장 큰 적 중 하나는 Configuration Drift입니다. 처음에는 동일했던 서버들이 패치, 로그 누적, 수동 설정 변경 등으로 인해 시간이 지나면서 조금씩 달라지는 현상을 말합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;936040cac6f1&quot; data-renderer-start-pos=&quot;3465&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;0db8cc60df01&quot; data-renderer-start-pos=&quot;3583&quot; data-ke-size=&quot;size16&quot;&gt;이를 방지하기 위해 베어메탈 노드들은 상태 비저장(Stateless) 방식으로 운영되어야 합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;43fba896-63f6-41a1-9160-224d545ad9f3&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;깨끗한 시작: 모든 노드는 부팅될 때마다 변하지 않는(Immutable) 깨끗한 이미지를 불러옵니다.&lt;/li&gt;
&lt;li&gt;일관성: 이를 통해 노드로 구성된 클러스터의 모든 서버가 동일한 드라이버 버전과 커널 설정을 유지하도록 보장합니다.&lt;/li&gt;
&lt;li&gt;속도: 노드에 이상이 생기면 디버깅에 시간을 허비하지 않습니다. 단순히 재부팅만 하면 몇 분 안에 최적의 상태로 복구됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;5.-고성능-네트워킹-(InfiniBand-&amp;amp;-SHARP)&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;3843&quot; data-local-id=&quot;81f183be884f&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;5. 고성능 네트워킹 (InfiniBand &amp;amp; SHARP)&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;080563e3224f&quot; data-renderer-start-pos=&quot;3877&quot; data-ke-size=&quot;size16&quot;&gt;분산 학습 환경에서 네트워크는 곧 컴퓨터 그 자체입니다. 여러 노드에 걸쳐 있는 GPU들이 그래디언트(Gradient)를 동기화할 때 발생하는 미세한 지연 시간은 곧 학습 실패로 이어질 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;080563e3224f&quot; data-renderer-start-pos=&quot;3877&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;4d4b0b87ad2e&quot; data-renderer-start-pos=&quot;3990&quot; data-ke-size=&quot;size16&quot;&gt;이를위해 SHARP(Scalable Hierarchical Aggregation and Reduction Protocol) 최적화가 적용된 인피니밴드 패브릭을 고려해야 합니다. SHARP는 AllReduce와 같은 집합 통신(Collective Communications) 작업을 GPU가 아닌 네트워크 스위치에서 직접 처리하도록 오프로딩합니다. 결과적으로 데이터 전송량이 줄어들고, 대규모 학습 시 흔히 발생하는 통신 병목 현상에 대해 클러스터가 훨씬 더 높은 탄력성을 갖게 됩니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;6.-DPU를-통한-보안-및-격리&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;4264&quot; data-local-id=&quot;8a376bebd050&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;6. DPU를 통한 보안 및 격리&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;2e2554584ebf&quot; data-renderer-start-pos=&quot;4284&quot; data-ke-size=&quot;size16&quot;&gt;신뢰성은 내부 및 외부의 간섭으로부터 클러스터를 보호하는 것도 포함합니다. 데이터 처리 장치(DPU)를 사용하여 네트워킹 및 보안 작업을 오프로딩합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;005a634d-b27b-4aae-b3ac-3b750f64bf86&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;성능 격리: 네트워킹 및 보안 로직을 DPU로 옮김으로써, 호스트의 CPU와 GPU가 고객의 연산 작업에 100% 전념할 수 있도록 합니다.&lt;/li&gt;
&lt;li&gt;VPC 보안: 각 클러스터는 격리된 가상 사설 클라우드(VPC) 내에서 실행됩니다. 이는 멀티 테넌트 환경에서도 베어메탈의 성능을 그대로 유지하면서 작업의 보안과 프라이버시를 보장합니다.&lt;/li&gt;
&lt;li&gt;스토리지 보안: DPU의 스토리지 가상화 기능을 활용하여 제어권을 이양한 이후에도 Bare Metal 노드에 local or remote 스토리지 장치로 부터 Block, FileSystem 를 제공하고, 고객 데이터 보안을 보장합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;결론&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;4700&quot; data-local-id=&quot;d82a3d48f48d&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;결론&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;3b62909672d3&quot; data-renderer-start-pos=&quot;4704&quot; data-ke-size=&quot;size16&quot;&gt;대규모 GPU 클러스터를 유지하는 것은 엔트로피와의 끊임없는 싸움입니다. 자동화된 라이프사이클 관리, 심층적인 관측 시스템, 그리고 하이브리드 워크로드 스케쥴링 아키텍처를 결합함으로써, 고객들이 인프라 걱정 없이 모델 개발에만 집중할 수 있는 환경을 제공해야 합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;3b62909672d3&quot; data-renderer-start-pos=&quot;4704&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;43bc98f3e7df&quot; data-renderer-start-pos=&quot;4855&quot; data-ke-size=&quot;size16&quot;&gt;자동화 Fleet Life Cycle Management 를 위해 현재 Nvidia 가 오픈소스로 공개한 &lt;a style=&quot;color: #1868db;&quot; href=&quot;https://github.com/NVIDIA/bare-metal-manager-core/tree/main&quot; data-testid=&quot;link-with-safety&quot; data-is-router-link=&quot;false&quot; data-renderer-mark=&quot;true&quot;&gt;Bare Metal Manager&lt;/a&gt; 를 실험해 보고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- CTA (블루 버전, GA4 공통 스크립트용 figure + data-event) --&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; style=&quot;max-width: 600px; margin: 0 auto 40px auto;&quot; data-event=&quot;go_cloud_banner_click&quot; data-name=&quot;cta_platform_banner&quot; data-loc=&quot;body_mid&quot;&gt;&lt;a href=&quot;https://cloud.kt.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 100%; height: auto; border-radius: 8px; display: block;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt%20cloud%20platform.png&quot; alt=&quot;kt cloud 플랫폼 바로가기&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- ================= FAQ 섹션 (그린 버전, 블루 스타일을 그린 톤으로) ================= --&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #009a87; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;b&gt;❓ 자주 묻는 질문 (FAQ)&lt;/b&gt; &lt;/span&gt;&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #E6F8F4; border-bottom: 1px solid #CDEDE7;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87;&quot;&gt;&lt;b&gt;Q. 이미&amp;nbsp;Kubernetes가&amp;nbsp;있는데,&amp;nbsp;왜&amp;nbsp;굳이&amp;nbsp;복잡하게&amp;nbsp;Slurm을&amp;nbsp;함께&amp;nbsp;사용하는&amp;nbsp;건가요?&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #ffffff;&quot;&gt;A. Kubernetes는 웹 서비스나 마이크로서비스 운영에는 최적화되어 있지만, 수백 대의 노드가 동시에 하나의 작업을 수행해야 하는 All-or-Nothing 방식의 Gang Scheduling 에는 한계가 있습니다. &lt;br /&gt;&lt;br /&gt;반면,&amp;nbsp;Slurm은&amp;nbsp;수십&amp;nbsp;년간&amp;nbsp;고성능&amp;nbsp;컴퓨팅(HPC)&amp;nbsp;분야에서&amp;nbsp;검증된&amp;nbsp;스케줄러로,&amp;nbsp;복잡한&amp;nbsp;작업&amp;nbsp;의존성&amp;nbsp;관리와&amp;nbsp;자원&amp;nbsp;선점(Preemption)에&amp;nbsp;탁월합니다.&amp;nbsp;Slinky를&amp;nbsp;사용하면&amp;nbsp;Kubernetes의&amp;nbsp;현대적인&amp;nbsp;컨테이너&amp;nbsp;관리&amp;nbsp;능력과&amp;nbsp;Slurm의&amp;nbsp;정교한&amp;nbsp;배치(Batch)&amp;nbsp;스케줄링&amp;nbsp;능력을&amp;nbsp;결합하여,&amp;nbsp;대규모&amp;nbsp;분산&amp;nbsp;학습&amp;nbsp;시&amp;nbsp;자원&amp;nbsp;낭비를&amp;nbsp;최소화하고&amp;nbsp;작업&amp;nbsp;성공률을&amp;nbsp;높일&amp;nbsp;수&amp;nbsp;있습니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #E6F8F4; border-bottom: 1px solid #CDEDE7;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87;&quot;&gt;&lt;b&gt;Q. &amp;nbsp;'상태&amp;nbsp;비저장(Stateless)'&amp;nbsp;노드&amp;nbsp;방식은&amp;nbsp;부팅할&amp;nbsp;때마다&amp;nbsp;대용량&amp;nbsp;AI&amp;nbsp;드라이버나&amp;nbsp;라이브러리를&amp;nbsp;설치하느라&amp;nbsp;시간이&amp;nbsp;너무&amp;nbsp;오래&amp;nbsp;걸리지&amp;nbsp;않나요?&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #ffffff;&quot;&gt;A. 그렇지 않습니다. stateless 방식은 매번 처음부터 설치하는 것이 아니라, 최적화된 골든 이미지를 네트워크를 통해 고속으로 불러오는 방식(예: PXE 부팅)을 사용합니다. &lt;br /&gt;&lt;br /&gt;이&amp;nbsp;방식의&amp;nbsp;핵심은&amp;nbsp;'구성&amp;nbsp;일관성'입니다.&amp;nbsp;특정&amp;nbsp;노드만&amp;nbsp;설정이&amp;nbsp;꼬이는&amp;nbsp;Configuration&amp;nbsp;Drift를&amp;nbsp;원천&amp;nbsp;차단하므로,&amp;nbsp;디버깅&amp;nbsp;시간을&amp;nbsp;획기적으로&amp;nbsp;줄여줍니다.&amp;nbsp;결과적으로&amp;nbsp;개별&amp;nbsp;노드의&amp;nbsp;부팅&amp;nbsp;시간보다&amp;nbsp;클러스터&amp;nbsp;전체의&amp;nbsp;가동&amp;nbsp;시간(Uptime)과&amp;nbsp;관리&amp;nbsp;효율성&amp;nbsp;측면에서&amp;nbsp;훨씬&amp;nbsp;큰&amp;nbsp;이득을&amp;nbsp;얻게&amp;nbsp;됩니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #E6F8F4; border-bottom: 1px solid #CDEDE7;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87;&quot;&gt; &lt;b&gt;Q. DPU(Data&amp;nbsp;Processing&amp;nbsp;Unit)가&amp;nbsp;GPU&amp;nbsp;클러스터의&amp;nbsp;'신뢰성'에&amp;nbsp;구체적으로&amp;nbsp;어떤&amp;nbsp;도움을&amp;nbsp;주나요?&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #ffffff;&quot;&gt;A. DPU는 호스트 CPU와 GPU가 계산에만 전념할 수 있도록 네트워킹, 보안, 스토리지 작업을 별도로 떼어내어 처리합니다. 신뢰성 측면에서의 가장 큰 장점은 '관리 평면(Management Plane)의 분리'입니다. &lt;br /&gt;&lt;br /&gt;만약&amp;nbsp;호스트&amp;nbsp;OS가&amp;nbsp;커널&amp;nbsp;패닉&amp;nbsp;등으로&amp;nbsp;멈추더라도,&amp;nbsp;독립적인&amp;nbsp;OS를&amp;nbsp;가진&amp;nbsp;DPU는&amp;nbsp;여전히&amp;nbsp;살아있어&amp;nbsp;네트워크&amp;nbsp;상태를&amp;nbsp;보고하거나&amp;nbsp;원격으로&amp;nbsp;노드를&amp;nbsp;제어할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;해줍니다.&amp;nbsp;또한,&amp;nbsp;인피니밴드(InfiniBand)와&amp;nbsp;결합하여&amp;nbsp;데이터&amp;nbsp;전송&amp;nbsp;중&amp;nbsp;발생하는&amp;nbsp;병목&amp;nbsp;현상을&amp;nbsp;하드웨어&amp;nbsp;수준에서&amp;nbsp;해결하므로&amp;nbsp;클러스터&amp;nbsp;전체의&amp;nbsp;성능&amp;nbsp;안정성을&amp;nbsp;보장합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- ================= 관련/출처 섹션 (그린 박스 버전) ================= --&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- 포스터 이미지 3개 한 줄 배치 (가운데 정렬 + 링크 추가) --&gt;&lt;/p&gt;
&lt;div&gt;
&lt;style&gt;  /* 모바일에서 포스터 크기 줄이기 */  @media (max-width: 480px) {    .poster-figure {      max-width: 30% !important;  /* 한 줄에 3개 들어오도록 */      flex: 0 0 30% !important;    }    .poster-figure img {      width: 100% !important;      height: auto !important;    }  }&lt;/style&gt;
&lt;/div&gt;
&lt;div style=&quot;display: flex; justify-content: center; align-items: flex-start; gap: 15px; margin: 30px auto; flex-wrap: wrap; text-align: center;&quot;&gt;&lt;!-- 1번 배너: 클라우드 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;cloud_industry_poster_click&quot; data-name=&quot;cloud_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://cloud.kt.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud1.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;!-- 2번 배너: 데이터센터 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;datacenter_industry_poster_click&quot; data-name=&quot;datacenter_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://www.kt-idc.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud2.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;!-- 3번 배너: AI 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;ai_industry_poster_click&quot; data-name=&quot;ai_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://cloud.kt.com/category/?ctgryId=C000000001&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud3.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;/div&gt;</description>
      <category>Tech Story/DevOps &amp;amp; Container</category>
      <category>ai인프라</category>
      <category>BareMetal</category>
      <category>DevOps</category>
      <category>DPU</category>
      <category>FaultTolerance</category>
      <category>gpu클러스터</category>
      <category>infiniband</category>
      <category>KTCloud</category>
      <category>Kubernetes</category>
      <category>Slurm</category>
      <author>kt cloud 기술 블로그</author>
      <guid isPermaLink="true">https://tech.ktcloud.com/450</guid>
      <comments>https://tech.ktcloud.com/entry/2026-06-ktcloud-kubernetes-gpu-cluster-%EC%9E%A5%EC%95%A0-%EA%B4%80%EB%A6%AC#entry450comment</comments>
      <pubDate>Thu, 4 Jun 2026 18:03:55 +0900</pubDate>
    </item>
    <item>
      <title>[도입전략] Git 시크릿 관리와 Vault 도입으로 보안 강화하기</title>
      <link>https://tech.ktcloud.com/entry/2026-06-ktcloud-git-vault-secrets-%EB%B3%B4%EC%95%88-%EA%B0%95%ED%99%94</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 티스토리용 시맨틱 HTML 기술 블로그 템플릿 (개선된 UI) --&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;article style=&quot;font-family: 'Noto Sans KR', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; max-width: 100%; margin: 0 auto; line-height: 1.7; color: #2c3e50; background: #ffffff;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 메타데이터 섹션 --&gt; &lt;/span&gt;&lt;header style=&quot;background: linear-gradient(135deg, #009a87 0%, #00b39f 100%); color: white; padding: 20px 25px; text-align: right; font-weight: 600; border-radius: 15px; margin-bottom: 35px; box-shadow: 0 8px 25px rgba(0, 154, 135, 0.15); position: relative; overflow: hidden;&quot;&gt;
&lt;div style=&quot;position: absolute; top: -50%; right: -10%; width: 200px; height: 200px; background: rgba(255,255,255,0.1); border-radius: 50%; transform: rotate(45deg);&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;position: relative; z-index: 2;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;b&gt; &lt;span style=&quot;font-size: 1.1rem; text-shadow: rgba(0, 0, 0, 0.1) 0px 2px 4px;&quot;&gt; [ kt cloud Foundation플랫폼팀 이초환 님 ] &lt;/span&gt; &lt;/b&gt; &lt;/span&gt;&lt;/div&gt;
&lt;/header&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 콘텐츠 구조 및 메타데이터 표준화 적용 --&gt; &lt;/span&gt;
&lt;article&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 작성자 정보 (시맨틱 헤더) --&gt; &lt;/span&gt;&lt;header style=&quot;margin: 20px 0;&quot;&gt;
&lt;section style=&quot;margin: 25px 0;&quot;&gt;&lt;header&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 요약 섹션 헤더 - 초미니멀 디자인 --&gt; &lt;/span&gt;
&lt;h4 style=&quot;margin: 15px 0 10px 0;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87; background: #f0fffe; padding: 4px 10px; border-radius: 12px; border: 1px solid #d4eeeb; display: inline-flex; align-items: center; gap: 5px; font-weight: bold; font-size: 0.9em;&quot;&gt; &lt;span style=&quot;font-size: 0.8em;&quot;&gt; &lt;/span&gt; 요약 &lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;이 글에서는 Git 시크릿 관리 개선과 Kubernetes Secret 오브젝트 제거를 위한 Vault 도입 전략을 다룹니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;시크릿 노출 위험을 줄이고 운영 환경의 보안 기준을 명확히 하는 방향을 정리합니다.&lt;/span&gt;&lt;/p&gt;
&lt;/header&gt;&lt;/section&gt;
&lt;/header&gt;&lt;/article&gt;
&lt;/article&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;#Vault&amp;nbsp;#GitSecret&amp;nbsp;#Kubernetes&amp;nbsp;#CSIProvider&amp;nbsp;#시크릿관리&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;[Vault]-왜-Sealed-Secrets도-SOPS도-아닌-Vault였나-&amp;mdash;-도입-배경과-전략&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;2114&quot; data-local-id=&quot;716a2e36c881&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;왜 Sealed Secrets도 SOPS도 아닌 Vault였나 &amp;mdash; 도입 배경과 전략&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id=&quot;요건은-두-가지였다&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;2370&quot; data-local-id=&quot;421139bc890d&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;요건은 두 가지였다&lt;/b&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;4fa9197026a6&quot; data-renderer-start-pos=&quot;2382&quot; data-ke-size=&quot;size16&quot;&gt;회사에서 시크릿 관리 개선 요청을 받았다. 요건을 정리하니 두 가지로 요약됐다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;20ebe094-7be6-4d0e-a05f-cd258bff3f7e&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;Git 레포에 평문으로 관리되는 시크릿을 제거할 것&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Kubernetes 클러스터 위에 Secret 오브젝트로 민감정보가 떠 있는 것을 없앨 것&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;cf28e3bec9e3&quot; data-renderer-start-pos=&quot;2516&quot; data-ke-size=&quot;size16&quot;&gt;두 번째 요건이 핵심이었다. 단순히 &quot;시크릿을 Git 밖으로 꺼내는 것&quot;이 아니라, &lt;b&gt;K8s Secret 오브젝트 자체를 클러스터에서 제거&lt;/b&gt;하는 것이 목표였다. K8s Secret 오브젝트는 기본적으로 etcd에 base64 인코딩된 상태로 저장된다. 암호화가 아닌 단순 인코딩이기 때문에, etcd에 접근 권한이 있는 주체라면 누구든 값을 읽을 수 있다. 이 구조 자체를 없애는 것이 목표였고, 그 차이가 도구 선택을 완전히 갈랐다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;왜-Vault인가-&amp;mdash;-대안-비교&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;2760&quot; data-local-id=&quot;7ebfc510d279&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;왜 Vault인가 &amp;mdash; 대안 비교&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;div style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-testid=&quot;table-container&quot; data-layout=&quot;custom&quot;&gt;
&lt;div style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-testid=&quot;table-container&quot; data-layout=&quot;custom&quot;&gt;
&lt;div data-vc=&quot;table-node-wrapper&quot; data-table-width=&quot;760&quot; data-table-local-id=&quot;129497cd-b360-4d6d-a5ac-ae59ea43bc94&quot; data-autosize=&quot;false&quot; data-layout=&quot;default&quot; data-number-column=&quot;false&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; width: 81.511%;&quot; border=&quot;1&quot; data-layout=&quot;default&quot; data-table-width=&quot;760&quot; data-number-column=&quot;false&quot; data-testid=&quot;renderer-table&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style13&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 27.4419%;&quot;&gt;&lt;b&gt;도구&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 27.1504%;&quot;&gt;&lt;b&gt;Git&amp;nbsp;평문&amp;nbsp;제거&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 26.8031%;&quot;&gt;&lt;b&gt;K8s&amp;nbsp;Secret&amp;nbsp;제거&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; width: 27.4419%;&quot;&gt;&lt;span&gt;Sealed Secrets&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; width: 27.1504%;&quot;&gt;&lt;span&gt;✓&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; width: 26.8031%;&quot;&gt;&lt;span&gt;✗&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; width: 27.4419%;&quot;&gt;&lt;span&gt;SOPS&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; width: 27.1504%;&quot;&gt;&lt;span&gt;✓&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; width: 26.8031%;&quot;&gt;&lt;span&gt;✗&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; width: 27.4419%;&quot;&gt;&lt;span&gt;Vault + CSI Provider&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; width: 27.1504%;&quot;&gt;&lt;span&gt;✓&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; width: 26.8031%;&quot;&gt;&lt;span&gt;✓&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div data-vc=&quot;table-sticky-scrollbar-container&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;25339d9736e9&quot; data-renderer-start-pos=&quot;2905&quot; data-ke-size=&quot;size16&quot;&gt;Sealed Secrets는 암호화된 시크릿을 Git에 커밋하고, 클러스터에서 복호화해 K8s Secret 오브젝트를 생성한다. SOPS는 파일 자체를 암호화해 Git에서 관리하고, CI/CD 파이프라인에서 복호화해 K8s Secret 오브젝트로 배포한다. 두 방식 모두 Git 평문 문제는 해결하지만, 최종적으로 복호화된 값이 K8s Secret 오브젝트로 클러스터에 올라간다는 점에서 두 번째 요건을 충족하지 못한다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;25339d9736e9&quot; data-renderer-start-pos=&quot;2905&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;49c4d9102c71&quot; data-renderer-start-pos=&quot;3142&quot; data-ke-size=&quot;size16&quot;&gt;Vault는 시크릿을 외부 저장소에서 관리하고, 필요한 시점에 Pod로 직접 주입하는 방식이라 두 가지를 동시에 해결할 수 있는 유일한 현실적 선택지였다. 물론 별도 인프라를 직접 운영해야 한다는 트레이드오프가 있지만, 두 요건을 모두 만족하려면 감수해야 했다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[도입전략] Git 시크릿 관리와 Vault 도입으로 보안 강화하기 (1).png&quot; data-origin-width=&quot;605&quot; data-origin-height=&quot;991&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/do59xC/dJMcad3gLwY/AlK262z1DIkOqgeuVtL1D0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/do59xC/dJMcad3gLwY/AlK262z1DIkOqgeuVtL1D0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/do59xC/dJMcad3gLwY/AlK262z1DIkOqgeuVtL1D0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdo59xC%2FdJMcad3gLwY%2FAlK262z1DIkOqgeuVtL1D0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[도입전략] Git 시크릿 관리와 Vault 도입으로 보안 강화하기&quot; loading=&quot;lazy&quot; width=&quot;450&quot; height=&quot;737&quot; data-filename=&quot;[도입전략] Git 시크릿 관리와 Vault 도입으로 보안 강화하기 (1).png&quot; data-origin-width=&quot;605&quot; data-origin-height=&quot;991&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;Vault-도입-전-설계해야-할-것들&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;3296&quot; data-local-id=&quot;359eca7d8ec8&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;Vault 도입 전 설계해야 할 것들&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;c268a1504827&quot; data-renderer-start-pos=&quot;3318&quot; data-ke-size=&quot;size16&quot;&gt;설치하고 바로 쓸 수 있는 도구가 아니다. 아래 항목들을 먼저 설계해야 한다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;c268a1504827&quot; data-renderer-start-pos=&quot;3318&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;df37a8e422e6&quot; data-renderer-start-pos=&quot;3363&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;스토리지 백엔드:&lt;/b&gt; Vault 내부 데이터는 암호화되어 스토리지 백엔드에 저장된다. 운영 환경에서는 외부 의존성 없이 Vault 클러스터 자체적으로 합의 알고리즘을 운영하는 Integrated Storage (Raft)가 권장된다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;df37a8e422e6&quot; data-renderer-start-pos=&quot;3363&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;e8bfe2df3a17&quot; data-renderer-start-pos=&quot;3493&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Seal / Unseal 전략:&lt;/b&gt; Vault는 재시작 시 항상 Sealed 상태로 올라온다. 이 상태에서는 모든 요청이 거부되며, Unseal 키를 입력해야만 정상 동작을 시작한다. 자동화된 환경에서는 AWS KMS, GCP Cloud KMS 같은 클라우드 KMS를 연동하거나 내부적인 별도 프로세스를 연동하여 &lt;b&gt;Auto Unseal&lt;/b&gt; 설정이 필수다. 수동 Unseal에 의존하면, 예상치 못한 재시작 상황에서 서비스 전체가 멈출 수 있다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;e8bfe2df3a17&quot; data-renderer-start-pos=&quot;3493&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;fe746ba4123c&quot; data-renderer-start-pos=&quot;3739&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;인증 방법 (Auth Method):&lt;/b&gt; Vault에 접근하는 모든 주체는 신원을 증명해야 한다. K8s 환경에서는 Pod의 ServiceAccount JWT를 Vault가 검증하는 &lt;b&gt;Kubernetes Auth&lt;/b&gt;가 기본이다. K8s 외부의 CI/CD 파이프라인이나 VM에는 &lt;b&gt;AppRole&lt;/b&gt; 방식이 적합하다. 사용자 접근에 관해서는 OKTA, LDAP 과 같은 통합 사용자 인증도구를 Auth method로 연동 할 수 있다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;fe746ba4123c&quot; data-renderer-start-pos=&quot;3739&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;1b1896e3ab8c&quot; data-renderer-start-pos=&quot;3975&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Policy 설계:&lt;/b&gt; 최소 권한 원칙에 따라, 서비스별로 필요한 경로의 시크릿만 읽을 수 있도록 HCL 정책을 작성한다. 경로 규칙(secret/&amp;lt;환경&amp;gt;/&amp;lt;서비스&amp;gt;/&amp;lt;키&amp;gt;)도 초기에 반드시 잡아야 한다. 나중에 경로를 바꾸면 연관된 Policy, SecretProviderClass, 애플리케이션 설정을 전부 함께 수정해야 하는 상황이 온다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;아키텍처-구조&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;4168&quot; data-local-id=&quot;0d88f7290d86&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;아키텍처 구조&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[도입전략] Git 시크릿 관리와 Vault 도입으로 보안 강화하기 (4).png&quot; data-origin-width=&quot;1545&quot; data-origin-height=&quot;459&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGjE7L/dJMcacDn6Ur/JDIFgKkKZX1k4nKGljYIXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGjE7L/dJMcacDn6Ur/JDIFgKkKZX1k4nKGljYIXK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGjE7L/dJMcacDn6Ur/JDIFgKkKZX1k4nKGljYIXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGjE7L%2FdJMcacDn6Ur%2FJDIFgKkKZX1k4nKGljYIXK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[도입전략] Git 시크릿 관리와 Vault 도입으로 보안 강화하기&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;193&quot; data-filename=&quot;[도입전략] Git 시크릿 관리와 Vault 도입으로 보안 강화하기 (4).png&quot; data-origin-width=&quot;1545&quot; data-origin-height=&quot;459&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;시크릿-주입-방식-비교&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;4181&quot; data-local-id=&quot;1add0c940ed8&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;시크릿 주입 방식 비교&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;80f07cc12507&quot; data-renderer-start-pos=&quot;4195&quot; data-ke-size=&quot;size16&quot;&gt;Vault와 연동해 시크릿을 주입하는 방식은 크게 네 가지다. 각 방식의 K8s Secret 생성 여부와 주요 특징을 정리하면 다음과 같다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;80f07cc12507&quot; data-renderer-start-pos=&quot;4195&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-testid=&quot;table-container&quot; data-layout=&quot;custom&quot;&gt;
&lt;div data-vc=&quot;table-node-wrapper&quot; data-table-width=&quot;760&quot; data-table-local-id=&quot;8aa33cb3-6ea5-4e56-a327-1e53f9099288&quot; data-autosize=&quot;false&quot; data-layout=&quot;default&quot; data-number-column=&quot;false&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-layout=&quot;default&quot; data-table-width=&quot;760&quot; data-number-column=&quot;false&quot; data-testid=&quot;renderer-table&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style13&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 13.3721%;&quot;&gt;&lt;b&gt;방식&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 15.6977%;&quot;&gt;&lt;b&gt;K8s&amp;nbsp;Secret&amp;nbsp;생성&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 15.814%;&quot;&gt;&lt;b&gt;동작&amp;nbsp;시점&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 13.1395%;&quot;&gt;&lt;b&gt;자동&amp;nbsp;갱신&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 41.7442%;&quot;&gt;&lt;b&gt;주요&amp;nbsp;특징&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; width: 13.3721%;&quot;&gt;&lt;span&gt;&lt;b&gt;CSI Provider&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; width: 15.6977%;&quot;&gt;&lt;span&gt;선택 (secretObjects 옵션)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; width: 15.814%;&quot;&gt;&lt;span&gt;Pod 기동 시 마운트&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; width: 13.1395%;&quot;&gt;&lt;span&gt;△ (rotation 옵션)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; width: 41.7442%;&quot;&gt;&lt;span&gt;SecretProviderClass CRD로 GitOps 관리. K8s Secret 없이 파일로 직접 마운트가 기본&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; width: 13.3721%;&quot;&gt;&lt;span&gt;&lt;b&gt;Vault Agent Injector&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; width: 15.6977%;&quot;&gt;&lt;span&gt;✗ (옵션 없음)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; width: 15.814%;&quot;&gt;&lt;span&gt;Pod 기동 시 사이드카 주입&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; width: 13.1395%;&quot;&gt;&lt;span&gt;✓ (사이드카가 상시 갱신)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; width: 41.7442%;&quot;&gt;&lt;span&gt;Mutating Webhook으로 어노테이션만 추가하면 자동 주입. tmpfs에 직접 쓰기&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; width: 13.3721%;&quot;&gt;&lt;span&gt;&lt;b&gt;AVP&lt;/b&gt; (ArgoCD Vault Plugin)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; width: 15.6977%;&quot;&gt;&lt;span&gt;✓ (항상 생성)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; width: 15.814%;&quot;&gt;&lt;span&gt;ArgoCD 배포 시점&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; width: 13.1395%;&quot;&gt;&lt;span&gt;✗ (재배포 필요)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; width: 41.7442%;&quot;&gt;&lt;span&gt;ArgoCD 필수. values.yaml 플레이스홀더를 치환해 K8s Secret 생성. GitOps 흐름에 자연스럽게 통합&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; width: 13.3721%;&quot;&gt;&lt;span&gt;&lt;b&gt;ESO&lt;/b&gt; (External Secrets Operator)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; width: 15.6977%;&quot;&gt;&lt;span&gt;✓ (항상 생성)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; width: 15.814%;&quot;&gt;&lt;span&gt;ExternalSecret CR 동기화 주기&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; width: 13.1395%;&quot;&gt;&lt;span&gt;✓ (주기적 폴링)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left; width: 41.7442%;&quot;&gt;&lt;span&gt;K8s Secret 생성이 목적. Vault 외 다양한 외부 시크릿 소스(AWS SM, GCP SM 등) 지원&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div data-vc=&quot;table-sticky-scrollbar-container&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;1d72a511b379&quot; data-renderer-start-pos=&quot;4911&quot; data-ke-size=&quot;size16&quot;&gt;K8s Secret 오브젝트를 없애는 것이 목표라면 &lt;b&gt;CSI Provider&lt;/b&gt;와 &lt;b&gt;Vault Agent Injector&lt;/b&gt; 중에서 선택해야 한다. 반면 기존 앱이 K8s Secret을 직접 참조하는 구조라 마이그레이션 비용이 크다면, K8s Secret을 자동 동기화해주는 &lt;b&gt;ESO&lt;/b&gt;가 현실적인 중간 단계가 될 수 있다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;CSI가-1순위인-이유,-AVP가-보완인-이유&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;5086&quot; data-local-id=&quot;90dc2af5aeee&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;CSI가 1순위인 이유, AVP가 보완인 이유&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;f6764c868f86&quot; data-renderer-start-pos=&quot;5113&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CSI Provider&lt;/b&gt; 방식에서는 SecretProviderClass라는 CRD를 GitOps로 관리한다. Pod가 기동될 때 CSI Driver가 Vault에 인증하고 시크릿을 가져와 직접 볼륨으로 마운트한다. 이 과정에서 K8s Secret 오브젝트는 생성되지 않는다. Git에는 시크릿 참조 경로만 존재하고, 클러스터에는 Secret 오브젝트가 없으며, 실제 값은 Vault에만 있다. 두 요건을 동시에 만족하는 구조다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;f6764c868f86&quot; data-renderer-start-pos=&quot;5113&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;8783931ca11e&quot; data-renderer-start-pos=&quot;5353&quot; data-ke-size=&quot;size16&quot;&gt;반면 &lt;b&gt;AVP(ArgoCD Vault Plugin)&lt;/b&gt; 는 Helm values나 Kustomize 파일 내 플레이스홀더를 배포 시점에 Vault 값으로 치환해 K8s Secret 오브젝트를 생성한다. Git에 평문이 없다는 점은 좋지만, 결국 K8s Secret 오브젝트는 클러스터에 남는다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;8783931ca11e&quot; data-renderer-start-pos=&quot;5353&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;232a26042102&quot; data-renderer-start-pos=&quot;5516&quot; data-ke-size=&quot;size16&quot;&gt;두 방식의 흐름을 나란히 비교하면 차이가 명확해진다.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[도입전략] Git 시크릿 관리와 Vault 도입으로 보안 강화하기 (3).png&quot; data-origin-width=&quot;1465&quot; data-origin-height=&quot;856&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bimILu/dJMcahR9mTG/U4aJcF2HKS0sejNoc9m7o1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bimILu/dJMcahR9mTG/U4aJcF2HKS0sejNoc9m7o1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bimILu/dJMcahR9mTG/U4aJcF2HKS0sejNoc9m7o1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbimILu%2FdJMcahR9mTG%2FU4aJcF2HKS0sejNoc9m7o1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[도입전략] Git 시크릿 관리와 Vault 도입으로 보안 강화하기&quot; loading=&quot;lazy&quot; width=&quot;1465&quot; height=&quot;856&quot; data-filename=&quot;[도입전략] Git 시크릿 관리와 Vault 도입으로 보안 강화하기 (3).png&quot; data-origin-width=&quot;1465&quot; data-origin-height=&quot;856&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot;&gt;AVP가 필요해진 건 OpenStack처럼 구조가 복잡한 컴포넌트 때문이었다. 내부적으로 K8s Secret 오브젝트를 직접 참조하도록 설계된 서비스는 CSI 마운트 방식으로 대응이 불가능하다. 이런 예외 케이스에 한해 AVP를 보완적으로 도입했다. 핵심은 AVP를 기본 수단으로 삼지 않는 것이다. 예외를 허용하되, 예외임을 명확히 인지하고 관리해야 체계가 흐트러지지 않는다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;운영에서-반드시-챙겨야-할-것들&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;5764&quot; data-local-id=&quot;021ae67ae547&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;운영에서 반드시 챙겨야 할 것들&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;3efabba40b64&quot; data-renderer-start-pos=&quot;5783&quot; data-ke-size=&quot;size16&quot;&gt;Vault를 설치하는 것과 안전하게 운영하는 것은 다른 문제다. 도입 이후 반드시 챙겨야 하는 두 가지를 소개한다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;3efabba40b64&quot; data-renderer-start-pos=&quot;5783&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;2de51dd5e4ff&quot; data-renderer-start-pos=&quot;5849&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Audit Log + logrotate:&lt;/b&gt; Vault Audit Log는 모든 인증 요청과 시크릿 접근을 빠짐없이 기록한다. 활성화하지 않으면 누가 언제 어떤 시크릿에 접근했는지 사후 추적이 불가능하다. 특히 보안 감사나 인시던트 대응 시 Audit Log가 없으면 원인 파악 자체가 막힌다. 운영 환경에서는 로그가 빠르게 쌓이기 때문에 logrotate 설정을 함께 구성해 디스크 문제를 사전에 막아야 한다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;2de51dd5e4ff&quot; data-renderer-start-pos=&quot;5849&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;d6ac0e48c3a8&quot; data-renderer-start-pos=&quot;6079&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;주기적 토큰 비활성화:&lt;/b&gt; Vault의 토큰과 리스(Lease)에는 TTL을 설정할 수 있지만, 장기 실행 시스템에서는 만료되지 않은 토큰이 조용히 누적될 수 있다. 특히 퇴사자 발생 시 해당 구성원의 토큰과 Policy를 즉시 회수하지 않으면, 시크릿 관리 체계가 갖춰져 있어도 실질적인 보안 구멍이 남는다. vault token lookup으로 주기적으로 활성 토큰을 감사하고, vault token revoke를 통한 명시적 회수 루틴을 운영 프로세스에 포함해야 한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;Vault가-있으면-가능해지는-것-&amp;mdash;-OIDC&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;6345&quot; data-local-id=&quot;31b7dc3b1b3d&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;Vault가 있으면 가능해지는 것 &amp;mdash; OIDC&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;a37f9e3ec209&quot; data-renderer-start-pos=&quot;6372&quot; data-ke-size=&quot;size16&quot;&gt;Vault를 도입하고 나면 시크릿 관리를 넘어 신원(Identity) 체계로 확장할 수 있다. Vault는 &lt;b&gt;OIDC Identity Provider&lt;/b&gt; 역할도 지원하기 때문이다. 서비스 간 JWT 기반 신원 발급, Okta&amp;middot;Google Workspace 같은 외부 IdP와의 SSO 연동이 가능해진다. 개발자 개인 접근도 LDAP이나 GitHub 대신 Vault OIDC로 일원화하면, 인증 체계가 단일 지점에서 관리된다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;a37f9e3ec209&quot; data-renderer-start-pos=&quot;6372&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;3c592b3f29d3&quot; data-renderer-start-pos=&quot;6608&quot; data-ke-size=&quot;size16&quot;&gt;이 방향으로 확장하면 &quot;누가 어떤 시크릿에 접근할 수 있는가&quot;라는 Policy 기반 체계가 사람과 시스템 모두에 일관되게 적용된다. 처음에는 &quot;Git 평문 제거&quot;라는 소박한 목표로 시작했지만, 기반이 갖춰지면 Vault는 조직 전체의 &lt;b&gt;신원 허브(Identity Hub)&lt;/b&gt; 로 역할이 자연스럽게 확장된다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;3c592b3f29d3&quot; data-renderer-start-pos=&quot;6608&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;98c9dee24ad6&quot; data-renderer-start-pos=&quot;6778&quot; data-ke-size=&quot;size16&quot;&gt;다만 Vault를 OIDC Provider로 운영할 경우, &lt;b&gt;userpass Auth Method로 관리되는 사용자 엔티티의 주기적 비활성화&lt;/b&gt;도 운영 루틴에 포함해야 한다. Vault의 userpass는 별도의 만료 개념이 없기 때문에, 퇴사자나 역할이 변경된 구성원의 계정이 자동으로 정리되지 않는다. OIDC를 통해 내부 서비스나 대시보드에 접근하는 구조라면, 해당 사용자 엔티티가 살아 있는 한 인증 자체는 여전히 가능한 상태가 된다. HR 프로세스와 연동해 계정 비활성화(vault write auth/userpass/users/&amp;lt;username&amp;gt; password=... disable=true 또는 엔티티 삭제)를 퇴사 처리 절차에 명시적으로 포함시키는 것이 필요하다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;로드맵-요약&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;7158&quot; data-local-id=&quot;929a0e0d2898&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;로드맵 요약&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;div style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-testid=&quot;table-container&quot; data-layout=&quot;custom&quot;&gt;
&lt;div data-vc=&quot;table-node-wrapper&quot; data-table-width=&quot;760&quot; data-table-local-id=&quot;d7814d78-00be-428c-9072-10cc56c4d1a4&quot; data-autosize=&quot;false&quot; data-layout=&quot;default&quot; data-number-column=&quot;false&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-layout=&quot;default&quot; data-table-width=&quot;760&quot; data-number-column=&quot;false&quot; data-testid=&quot;renderer-table&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style13&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;단계&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;목표&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;핵심&amp;nbsp;작업&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&lt;span&gt;&lt;b&gt;Phase 1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&lt;span&gt;평문 제거 + K8s Secret 오브젝트 제거&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&lt;span&gt;Vault KV + K8s Auth + CSI Provider&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&lt;span&gt;&lt;b&gt;Phase 2&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&lt;span&gt;예외 케이스 대응&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&lt;span&gt;AVP (K8s Secret이 불가피한 경우 한정)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&lt;span&gt;&lt;b&gt;Phase 3&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&lt;span&gt;운영 안전화&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&lt;span&gt;Audit Log + logrotate + 토큰 주기 감사&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&lt;span&gt;&lt;b&gt;Phase 4&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&lt;span&gt;신원 체계 확장&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&lt;span&gt;OIDC Provider 연동&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&lt;span&gt;&lt;b&gt;Phase 5&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&lt;span&gt;동적 시크릿 + 자동 로테이션&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&lt;span&gt;Vault Agent Injector 도입&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div data-vc=&quot;table-sticky-scrollbar-container&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;40d061644577&quot; data-renderer-start-pos=&quot;7494&quot; data-ke-size=&quot;size16&quot;&gt;Phase 5의 &lt;b&gt;Vault Agent Injector&lt;/b&gt;는 Mutating Webhook으로 동작한다. Pod에 어노테이션만 추가하면, 배포 시 자동으로 Vault Agent 사이드카가 주입된다. 이 사이드카는 Pod와 함께 살아있으면서 Vault 토큰을 직접 관리하고, 시크릿이 갱신되면 자동으로 다시 가져와 파일을 업데이트한다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;40d061644577&quot; data-renderer-start-pos=&quot;7494&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;d0de97016314&quot; data-renderer-start-pos=&quot;7679&quot; data-ke-size=&quot;size16&quot;&gt;여기서 중요한 점은 &lt;b&gt;K8s Secret 오브젝트를 거치는 경로가 구조적으로 없다&lt;/b&gt;는 것이다. Injector는 Vault에서 가져온 값을 Pod 내부의 공유 tmpfs 볼륨에 직접 파일로 쓴다. K8s Secret 생성 옵션 자체가 존재하지 않는다. CSI Provider가 기본은 Pod 직접 마운트이되 secretObjects 옵션으로 K8s Secret을 함께 생성할 수도 있는 구조라면, Injector는 애초에 그 선택지가 없다. K8s Secret 배제라는 요건에 가장 강하게 일치하는 구조다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;d0de97016314&quot; data-renderer-start-pos=&quot;7679&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock floatRight&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[도입전략] Git 시크릿 관리와 Vault 도입으로 보안 강화하기 (2).png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/clspsy/dJMcagyXFNI/vQrB1Gfq5UzdvTpwazJr61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/clspsy/dJMcagyXFNI/vQrB1Gfq5UzdvTpwazJr61/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/clspsy/dJMcagyXFNI/vQrB1Gfq5UzdvTpwazJr61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fclspsy%2FdJMcagyXFNI%2FvQrB1Gfq5UzdvTpwazJr61%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[도입전략] Git 시크릿 관리와 Vault 도입으로 보안 강화하기&quot; loading=&quot;lazy&quot; width=&quot;350&quot; height=&quot;1080&quot; data-filename=&quot;[도입전략] Git 시크릿 관리와 Vault 도입으로 보안 강화하기 (2).png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;971d052a0c1f&quot; data-renderer-start-pos=&quot;7962&quot; data-ke-size=&quot;size16&quot;&gt;CSI Provider가 &quot;Pod 기동 시점에 한 번 가져오는&quot; 구조라면, Injector는 &quot;항상 Vault와 연결된 채로 동적으로 유지하는&quot; 구조다. DB 비밀번호처럼 주기적으로 로테이션되는 동적 시크릿을 앱 코드 변경 없이 실시간 반영할 수 있다는 점에서, Vault의 기능을 가장 완전하게 활용하는 방식이다. 다만 모든 Pod에 사이드카가 붙는 만큼 리소스 오버헤드가 생기기 때문에, 충분한 운영 경험이 쌓인 뒤 도입하는 것이 현실적이다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;971d052a0c1f&quot; data-renderer-start-pos=&quot;7962&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;fff7b741b42f&quot; data-renderer-start-pos=&quot;8213&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Vault는 한 번에 모든 것을 갖출 필요가 없다. &amp;ldquo;Phase 1&amp;rdquo;만 완료해도 보안 수준은 이전과 완전히 달라진다. 중요한 건 요건을 명확히 하고, 그 요건에 맞는 도구와 방식을 선택하는 것이다. &quot;K8s Secret 오브젝트까지 없애야 한다&quot;는 요건이 없었다면 SOPS로도 충분했을 수 있다. 요건이 도구를 결정하고, 도구가 아키텍처를 결정한다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- CTA (블루 버전, GA4 공통 스크립트용 figure + data-event) --&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; style=&quot;max-width: 600px; margin: 0 auto 40px auto;&quot; data-event=&quot;go_cloud_banner_click&quot; data-name=&quot;cta_platform_banner&quot; data-loc=&quot;body_mid&quot;&gt;&lt;a href=&quot;https://cloud.kt.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 100%; height: auto; border-radius: 8px; display: block;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt%20cloud%20platform.png&quot; alt=&quot;kt cloud 플랫폼 바로가기&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- ================= FAQ 섹션 (그린 버전, 블루 스타일을 그린 톤으로) ================= --&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #009a87; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;b&gt;❓ 자주 묻는 질문 (FAQ)&lt;/b&gt; &lt;/span&gt;&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #E6F8F4; border-bottom: 1px solid #CDEDE7;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87;&quot;&gt;&lt;b&gt;Q. etcd&amp;nbsp;암호화(Encryption&amp;nbsp;at&amp;nbsp;Rest)를&amp;nbsp;활성화하면&amp;nbsp;K8s&amp;nbsp;Secret을&amp;nbsp;그냥&amp;nbsp;써도&amp;nbsp;되지&amp;nbsp;않나요?&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #ffffff;&quot;&gt;A.&amp;nbsp;etcd&amp;nbsp;Encryption&amp;nbsp;at&amp;nbsp;Rest를&amp;nbsp;켜면&amp;nbsp;Secret&amp;nbsp;값이&amp;nbsp;etcd에&amp;nbsp;암호화되어&amp;nbsp;저장되는&amp;nbsp;건&amp;nbsp;맞습니다.&amp;nbsp;하지만&amp;nbsp;이&amp;nbsp;암호화는&amp;nbsp;etcd&amp;nbsp;파일&amp;nbsp;수준의&amp;nbsp;보호일&amp;nbsp;뿐,&amp;nbsp;Kubernetes&amp;nbsp;API를&amp;nbsp;통한&amp;nbsp;접근은&amp;nbsp;여전히&amp;nbsp;평문으로&amp;nbsp;이루어집니다.&amp;nbsp;즉,&amp;nbsp;kubectl&amp;nbsp;get&amp;nbsp;secret&amp;nbsp;-o&amp;nbsp;yaml로&amp;nbsp;Secret&amp;nbsp;오브젝트에&amp;nbsp;접근할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;권한이&amp;nbsp;있다면&amp;nbsp;값은&amp;nbsp;그대로&amp;nbsp;노출됩니다.&amp;nbsp;접근&amp;nbsp;제어(RBAC)를&amp;nbsp;아무리&amp;nbsp;잘&amp;nbsp;설계해도,&amp;nbsp;Secret&amp;nbsp;오브젝트가&amp;nbsp;존재하는&amp;nbsp;한&amp;nbsp;클러스터&amp;nbsp;내&amp;nbsp;권한&amp;nbsp;탈취&amp;nbsp;경로가&amp;nbsp;남아&amp;nbsp;있습니다.&amp;nbsp;CSI&amp;nbsp;Provider&amp;nbsp;방식은&amp;nbsp;그&amp;nbsp;오브젝트&amp;nbsp;자체를&amp;nbsp;없애는&amp;nbsp;접근이라&amp;nbsp;본질적으로&amp;nbsp;다릅니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #E6F8F4; border-bottom: 1px solid #CDEDE7;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87;&quot;&gt;&lt;b&gt;Q. CSI&amp;nbsp;Driver&amp;nbsp;방식에서&amp;nbsp;Vault가&amp;nbsp;다운되면&amp;nbsp;Pod&amp;nbsp;재시작&amp;nbsp;시&amp;nbsp;어떻게&amp;nbsp;되나요?&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #ffffff;&quot;&gt;A.&amp;nbsp;Vault가&amp;nbsp;Sealed&amp;nbsp;상태이거나&amp;nbsp;응답&amp;nbsp;불가&amp;nbsp;상태에서&amp;nbsp;Pod가&amp;nbsp;재시작을&amp;nbsp;시도하면,&amp;nbsp;CSI&amp;nbsp;Driver가&amp;nbsp;시크릿을&amp;nbsp;가져오지&amp;nbsp;못해&amp;nbsp;Pod가&amp;nbsp;기동되지&amp;nbsp;않습니다.&amp;nbsp;이미&amp;nbsp;실행&amp;nbsp;중인&amp;nbsp;Pod는&amp;nbsp;영향을&amp;nbsp;받지&amp;nbsp;않지만,&amp;nbsp;재시작이&amp;nbsp;필요한&amp;nbsp;순간&amp;nbsp;서비스가&amp;nbsp;올라오지&amp;nbsp;않는&amp;nbsp;상황이&amp;nbsp;발생합니다.&amp;nbsp;이&amp;nbsp;때문에&amp;nbsp;운영&amp;nbsp;환경에서&amp;nbsp;Vault&amp;nbsp;HA&amp;nbsp;구성과&amp;nbsp;Auto&amp;nbsp;Unseal은&amp;nbsp;선택이&amp;nbsp;아닌&amp;nbsp;필수입니다.&amp;nbsp;CSI&amp;nbsp;Driver의&amp;nbsp;secretObjects&amp;nbsp;옵션을&amp;nbsp;통해&amp;nbsp;마운트된&amp;nbsp;시크릿을&amp;nbsp;로컬에&amp;nbsp;캐시하는&amp;nbsp;방법도&amp;nbsp;있지만,&amp;nbsp;근본적인&amp;nbsp;해결은&amp;nbsp;Vault&amp;nbsp;자체의&amp;nbsp;가용성을&amp;nbsp;확보하는&amp;nbsp;것입니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #E6F8F4; border-bottom: 1px solid #CDEDE7;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87;&quot;&gt; &lt;b&gt;Q. AVP는&amp;nbsp;ArgoCD가&amp;nbsp;없으면&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;없나요?&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #ffffff;&quot;&gt;A.&amp;nbsp;AVP는&amp;nbsp;ArgoCD의&amp;nbsp;플러그인&amp;nbsp;구조를&amp;nbsp;활용하는&amp;nbsp;방식이기&amp;nbsp;때문에,&amp;nbsp;ArgoCD를&amp;nbsp;GitOps&amp;nbsp;도구로&amp;nbsp;사용하고&amp;nbsp;있다는&amp;nbsp;전제가&amp;nbsp;필요합니다.&amp;nbsp;ArgoCD&amp;nbsp;없이&amp;nbsp;Helm이나&amp;nbsp;Kustomize만&amp;nbsp;사용하는&amp;nbsp;환경이라면&amp;nbsp;AVP는&amp;nbsp;선택지에&amp;nbsp;오르지&amp;nbsp;않습니다.&amp;nbsp;이&amp;nbsp;경우&amp;nbsp;시크릿&amp;nbsp;주입은&amp;nbsp;CSI&amp;nbsp;Driver&amp;nbsp;방식이나,&amp;nbsp;External&amp;nbsp;Secrets&amp;nbsp;Operator(ESO)&amp;nbsp;같은&amp;nbsp;별도&amp;nbsp;도구로&amp;nbsp;해결해야&amp;nbsp;합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #E6F8F4; border-bottom: 1px solid #CDEDE7;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87;&quot;&gt;&lt;b&gt;Q. CSI와&amp;nbsp;AVP를&amp;nbsp;혼용하면&amp;nbsp;관리가&amp;nbsp;복잡해지지&amp;nbsp;않나요?&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #ffffff;&quot;&gt;A.&amp;nbsp;실제로&amp;nbsp;복잡해집니다.&amp;nbsp;어떤&amp;nbsp;컴포넌트가&amp;nbsp;CSI로&amp;nbsp;마운트받는지,&amp;nbsp;어떤&amp;nbsp;컴포넌트가&amp;nbsp;AVP를&amp;nbsp;통해&amp;nbsp;K8s&amp;nbsp;Secret으로&amp;nbsp;주입받는지&amp;nbsp;추적이&amp;nbsp;어려워지고,&amp;nbsp;운영자가&amp;nbsp;바뀌었을&amp;nbsp;때&amp;nbsp;혼란이&amp;nbsp;생기기&amp;nbsp;쉽습니다.&amp;nbsp;AVP&amp;nbsp;적용&amp;nbsp;범위를&amp;nbsp;특정&amp;nbsp;네임스페이스나&amp;nbsp;레이블로&amp;nbsp;명시적으로&amp;nbsp;구분하고,&amp;nbsp;배포&amp;nbsp;정의&amp;nbsp;내에&amp;nbsp;주입&amp;nbsp;방식을&amp;nbsp;주석으로&amp;nbsp;명시하는&amp;nbsp;것이&amp;nbsp;도움이&amp;nbsp;됩니다.&amp;nbsp;가장&amp;nbsp;중요한&amp;nbsp;건&amp;nbsp;AVP가&amp;nbsp;예외&amp;nbsp;수단임을&amp;nbsp;팀&amp;nbsp;내에서&amp;nbsp;명확히&amp;nbsp;공유하고,&amp;nbsp;신규&amp;nbsp;서비스가&amp;nbsp;아무&amp;nbsp;고민&amp;nbsp;없이&amp;nbsp;AVP를&amp;nbsp;택하는&amp;nbsp;일이&amp;nbsp;생기지&amp;nbsp;않도록&amp;nbsp;가이드라인을&amp;nbsp;세워두는&amp;nbsp;것입니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #E6F8F4; border-bottom: 1px solid #CDEDE7;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87;&quot;&gt;&lt;b&gt;Q. Vault&amp;nbsp;도입의&amp;nbsp;가장&amp;nbsp;큰&amp;nbsp;트레이드오프는&amp;nbsp;무엇인가요?&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #ffffff;&quot;&gt;A.&amp;nbsp;별도&amp;nbsp;인프라를&amp;nbsp;직접&amp;nbsp;운영해야&amp;nbsp;한다는&amp;nbsp;점입니다.&amp;nbsp;Sealed&amp;nbsp;Secrets나&amp;nbsp;SOPS는&amp;nbsp;별도&amp;nbsp;서버&amp;nbsp;없이&amp;nbsp;클러스터와&amp;nbsp;파이프라인&amp;nbsp;안에서&amp;nbsp;동작하지만,&amp;nbsp;Vault는&amp;nbsp;HA&amp;nbsp;구성,&amp;nbsp;Auto&amp;nbsp;Unseal,&amp;nbsp;백업&amp;nbsp;전략,&amp;nbsp;모니터링까지&amp;nbsp;직접&amp;nbsp;설계하고&amp;nbsp;운영해야&amp;nbsp;합니다.&amp;nbsp;운영&amp;nbsp;성숙도가&amp;nbsp;낮은&amp;nbsp;팀에서는&amp;nbsp;Vault&amp;nbsp;자체가&amp;nbsp;새로운&amp;nbsp;단일&amp;nbsp;장애점이&amp;nbsp;될&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;다만&amp;nbsp;&quot;K8s&amp;nbsp;Secret&amp;nbsp;오브젝트&amp;nbsp;자체를&amp;nbsp;없애야&amp;nbsp;한다&quot;는&amp;nbsp;요건이&amp;nbsp;명확하다면,&amp;nbsp;이&amp;nbsp;운영&amp;nbsp;비용을&amp;nbsp;감수하는&amp;nbsp;것&amp;nbsp;외에&amp;nbsp;현실적인&amp;nbsp;대안이&amp;nbsp;없습니다.&amp;nbsp;요건이&amp;nbsp;없다면&amp;nbsp;SOPS로&amp;nbsp;시작해서&amp;nbsp;필요할&amp;nbsp;때&amp;nbsp;Vault로&amp;nbsp;마이그레이션하는&amp;nbsp;경로도&amp;nbsp;충분히&amp;nbsp;유효합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- ================= 관련/출처 섹션 (그린 박스 버전) ================= --&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 15px; font-weight: bold; color: #000000; font-family: 'Noto Sans KR', sans-serif;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;   관련/출처 &lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 12px 14px; background: #ffffff;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc; color: #292a2e; text-align: left;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;e4c5c407-5b98-40a3-b9fa-07f9cb3685fb&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;2087&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://argocd-vault-plugin.readthedocs.io/en/stable/&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://argocd-vault-plugin.readthedocs.io/en/stable/&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span&gt;Argo CD Vault Plugin&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;2093&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://developer.hashicorp.com/vault/docs/deploy/kubernetes/csi&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://developer.hashicorp.com/vault/docs/deploy/kubernetes/csi&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span data-testid=&quot;icon-position-wrapper&quot;&gt;&lt;/span&gt;&lt;span&gt;Vault Secrets Store CSI provider | Vault | HashiCorp Developer&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;2099&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://developer.hashicorp.com/vault/docs/deploy/kubernetes/injector&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://developer.hashicorp.com/vault/docs/deploy/kubernetes/injector&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span data-testid=&quot;icon-position-wrapper&quot;&gt;&lt;/span&gt;&lt;span&gt;Vault Agent Injector | Vault | HashiCorp Developer&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- 포스터 이미지 3개 한 줄 배치 (가운데 정렬 + 링크 추가) --&gt;&lt;/p&gt;
&lt;div&gt;
&lt;style&gt;  /* 모바일에서 포스터 크기 줄이기 */  @media (max-width: 480px) {    .poster-figure {      max-width: 30% !important;  /* 한 줄에 3개 들어오도록 */      flex: 0 0 30% !important;    }    .poster-figure img {      width: 100% !important;      height: auto !important;    }  }&lt;/style&gt;
&lt;/div&gt;
&lt;div style=&quot;display: flex; justify-content: center; align-items: flex-start; gap: 15px; margin: 30px auto; flex-wrap: wrap; text-align: center;&quot;&gt;&lt;!-- 1번 배너: 클라우드 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;cloud_industry_poster_click&quot; data-name=&quot;cloud_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://cloud.kt.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud1.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;!-- 2번 배너: 데이터센터 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;datacenter_industry_poster_click&quot; data-name=&quot;datacenter_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://www.kt-idc.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud2.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;!-- 3번 배너: AI 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;ai_industry_poster_click&quot; data-name=&quot;ai_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://cloud.kt.com/category/?ctgryId=C000000001&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud3.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;/div&gt;</description>
      <category>Tech Story/Data Center &amp;amp; Security</category>
      <category>CloudSecurity</category>
      <category>CSIProvider</category>
      <category>DevOps</category>
      <category>gitops</category>
      <category>HashiCorpVault</category>
      <category>K8sSecret</category>
      <category>KTCloud</category>
      <category>Kubernetes</category>
      <category>SecretManagement</category>
      <category>vault</category>
      <author>kt cloud 기술 블로그</author>
      <guid isPermaLink="true">https://tech.ktcloud.com/449</guid>
      <comments>https://tech.ktcloud.com/entry/2026-06-ktcloud-git-vault-secrets-%EB%B3%B4%EC%95%88-%EA%B0%95%ED%99%94#entry449comment</comments>
      <pubDate>Thu, 4 Jun 2026 17:21:23 +0900</pubDate>
    </item>
    <item>
      <title>[AI인프라] AI 시대의 보이지 않는 혈관, 데이터센터 전력 케이블 이해하기</title>
      <link>https://tech.ktcloud.com/entry/2026-06-ktcloud-ai-datacenter-cable-%EC%A0%84%EB%A0%A5-%EC%9D%B4%ED%95%B4</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 티스토리용 시맨틱 HTML 기술 블로그 템플릿 (개선된 UI) --&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;article style=&quot;font-family: 'Noto Sans KR', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; max-width: 100%; margin: 0 auto; line-height: 1.7; color: #2c3e50; background: #ffffff;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 메타데이터 섹션 --&gt; &lt;/span&gt;&lt;header style=&quot;background: linear-gradient(135deg, #009a87 0%, #00b39f 100%); color: white; padding: 20px 25px; text-align: right; font-weight: 600; border-radius: 15px; margin-bottom: 35px; box-shadow: 0 8px 25px rgba(0, 154, 135, 0.15); position: relative; overflow: hidden;&quot;&gt;
&lt;div style=&quot;position: absolute; top: -50%; right: -10%; width: 200px; height: 200px; background: rgba(255,255,255,0.1); border-radius: 50%; transform: rotate(45deg);&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;position: relative; z-index: 2;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;b&gt; &lt;span style=&quot;font-size: 1.1rem; text-shadow: rgba(0, 0, 0, 0.1) 0px 2px 4px;&quot;&gt; [ kt cloud DC동부운용팀 이민재 님 ] &lt;/span&gt; &lt;/b&gt; &lt;/span&gt;&lt;/div&gt;
&lt;/header&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 콘텐츠 구조 및 메타데이터 표준화 적용 --&gt; &lt;/span&gt;
&lt;article&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 작성자 정보 (시맨틱 헤더) --&gt; &lt;/span&gt;&lt;header style=&quot;margin: 20px 0;&quot;&gt;
&lt;section style=&quot;margin: 25px 0;&quot;&gt;&lt;header&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 요약 섹션 헤더 - 초미니멀 디자인 --&gt; &lt;/span&gt;
&lt;h4 style=&quot;margin: 15px 0 10px 0;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87; background: #f0fffe; padding: 4px 10px; border-radius: 12px; border: 1px solid #d4eeeb; display: inline-flex; align-items: center; gap: 5px; font-weight: bold; font-size: 0.9em;&quot;&gt; &lt;span style=&quot;font-size: 0.8em;&quot;&gt; &lt;/span&gt; 요약 &lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;이 글에서는 AI 데이터센터 전력 케이블의 구조, 설계, 시공, 진단과 차세대 기술을 다룹니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;안정적인 전력 공급이 인프라 신뢰도와 운영 관리에 미치는 영향을 정리합니다.&lt;/span&gt;&lt;/p&gt;
&lt;/header&gt;&lt;/section&gt;
&lt;/header&gt;&lt;/article&gt;
&lt;/article&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;#AI데이터센터&amp;nbsp;#전력케이블&amp;nbsp;#데이터센터인프라&amp;nbsp;#HVDC&amp;nbsp;#XLPE&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;전력-확보-전쟁,-그-중심에-선-케이블&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;824&quot; data-local-id=&quot;4aff2d1ce067&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;전력 확보 전쟁, 그 중심에 선 케이블&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;bf320c55de17&quot; data-renderer-start-pos=&quot;847&quot; data-ke-size=&quot;size16&quot;&gt;최근 '전력 확보 전쟁'이라는 말이 뉴스 헤드라인을 장식하고 있습니다. 생성형 AI의 등장으로 데이터센터의 랙당 전력 밀도가 과거 4~5kW 수준에서 40kW, 심지어 100kW까지 치솟고 있기 때문입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;bf320c55de17&quot; data-renderer-start-pos=&quot;847&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;2706840205ea&quot; data-renderer-start-pos=&quot;964&quot; data-ke-size=&quot;size16&quot;&gt;이 거대한 에너지를 발전소에서 변전소를 거쳐, 최종 서버의 PSU(Power Supply Unit)까지 손실 없이 전달하는 것이 바로 케이블의 미션입니다. 과거에는 단순히 '연결'의 수단이었다면, 이제는 에너지 효율(PUE)과 안정성(Reliability)을 결정짓는 핵심 컴포넌트로 격상되었습니다. 수만 볼트의 전압을 견디고, 수천 암페어의 전류를 흘려보내면서도 열을 제어해야 하는 케이블 공학, 그 세계로 들어가 보겠습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[AI인프라] AI 시대의 보이지 않는 혈관, 데이터센터 전력 케이블 이해하기 (1).png&quot; data-origin-width=&quot;740&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AlfGo/dJMcaiKgeZa/Mfnh9krGycZaibk3MpIfq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AlfGo/dJMcaiKgeZa/Mfnh9krGycZaibk3MpIfq1/img.png&quot; data-alt=&quot;Image source: lscns.co.kr&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AlfGo/dJMcaiKgeZa/Mfnh9krGycZaibk3MpIfq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAlfGo%2FdJMcaiKgeZa%2FMfnh9krGycZaibk3MpIfq1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[AI인프라] AI 시대의 보이지 않는 혈관, 데이터센터 전력 케이블 이해하기&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;351&quot; data-filename=&quot;[AI인프라] AI 시대의 보이지 않는 혈관, 데이터센터 전력 케이블 이해하기 (1).png&quot; data-origin-width=&quot;740&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Image source: lscns.co.kr&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;Ch-01.-케이블의-해부학:-도체부터-시스까지&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;1236&quot; data-local-id=&quot;2265ead60de6&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;Ch 01. 케이블의 해부학: 도체부터 시스까지&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;da4b7bcde1a1&quot; data-renderer-start-pos=&quot;1264&quot; data-ke-size=&quot;size16&quot;&gt;전력 케이블은 겉보기엔 검은 고무줄 같지만, 그 내부는 고도의 재료공학이 집약된 복합체입니다. 특히 고압 케이블(HV)의 구조를 이해하는 것이 중요합니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1. 케이블의 5중 구조 (Anatomy)&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;c6bb584a-2cb6-439d-8d9a-6fec16d1feab&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;도체 (Conductor):&lt;/b&gt; 전류가 흐르는 길입니다. 주로 구리(Cu)나 알루미늄(Al)을 사용합니다. 최근 구리 가격 상승으로 알루미늄 케이블의 채택률도 높아지는 추세입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;내부 반도전층 (Inner Semi-con):&lt;/b&gt; 도체 표면의 불균일한 전계를 완화하여 절연체를 보호합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;절연체 (Insulation):&lt;/b&gt; 전압을 견디는 핵심층입니다. 가교 폴리에틸렌(XLPE)이 표준으로 자리 잡았으며, 내열온도 90&amp;deg;C를 보증합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;외부 반도전층 (Outer Semi-con):&lt;/b&gt; 절연체 외부의 전계 집중을 막고 차폐층과 전기적 접촉을 유지합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;차폐층 (Shield):&lt;/b&gt; 사고 시 고장 전류의 귀로가 되며, 외부 전자파 간섭을 막습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;시스 (Sheath):&lt;/b&gt; 최외각 보호층으로, 기계적 충격과 습기로부터 케이블을 보호합니다. PVC나 PE가 주로 쓰입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[AI인프라] AI 시대의 보이지 않는 혈관, 데이터센터 전력 케이블 이해하기 (7).png&quot; data-origin-width=&quot;432&quot; data-origin-height=&quot;274&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwqVR5/dJMcagZZc9N/ro88zc1c1HDAF1k0wAllY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwqVR5/dJMcagZZc9N/ro88zc1c1HDAF1k0wAllY0/img.png&quot; data-alt=&quot;Image source: gaoncalbe.com&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwqVR5/dJMcagZZc9N/ro88zc1c1HDAF1k0wAllY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwqVR5%2FdJMcagZZc9N%2Fro88zc1c1HDAF1k0wAllY0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[AI인프라] AI 시대의 보이지 않는 혈관, 데이터센터 전력 케이블 이해하기&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;412&quot; data-filename=&quot;[AI인프라] AI 시대의 보이지 않는 혈관, 데이터센터 전력 케이블 이해하기 (7).png&quot; data-origin-width=&quot;432&quot; data-origin-height=&quot;274&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Image source: gaoncalbe.com&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2. 현장에서 주로 쓰는 케이블 (Types)&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;28415815-bfab-421a-a728-b19bc51b7e74&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;CNCV-W (Concentric Neutral CV Water-blocking): &lt;/b&gt;동심 중성선 수밀형 전력 케이블입니다. 도체와 중성선 사이에 방수재(수밀 컴파운드/테이프)를 채워, 케이블 내부로 물이 스며드는 것을 막습니다. 주로 한전 선로에서 수변전실로 들어오는 지중 인입구간에 사용됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;TR-CNCV-W (Tree Retardant): &lt;/b&gt;일반 CNCV-W보다 한 단계 진화한 모델입니다. 절연체(XLPE) 자체를 '수트리 억제형'으로 개량하여 수명을 획기적으로 늘렸습니다. 최근 한전 지중 선로의 표준으로 자리 잡고 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;TFR-CV (Tray Fire Retardant - XLPE):&lt;/b&gt; 트레이용 난연 케이블입니다. 화재 시 불길이 케이블을 타고 번지는 것을 막아주는 '난연성'이 핵심이라 데이터센터, 플랜트 필수 자재입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;F-CV:&lt;/b&gt; 난연성이 일반 CV보다 강화된 타입입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;Ch-02.-케이블-설계-Engineering:-굵기-선정의-미학&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;2343&quot; data-local-id=&quot;5530f10dd1c5&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;Ch 02. 케이블 설계 Engineering: 굵기 선정의 미학&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;0af39edf673f&quot; data-renderer-start-pos=&quot;2381&quot; data-ke-size=&quot;size16&quot;&gt;&quot;그냥 굵은 거 쓰면 되는 거 아냐?&quot; 천만의 말씀입니다. 과설계(Over-spec)는 비용 낭비고, 부족한 설계는 화재로 이어집니다. KEC(한국전기설비규정) 및 IEC 표준에 따른 3단계 선정 프로세스를 소개합니다.&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;159856382a1b&quot; data-renderer-start-pos=&quot;2505&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Step 1. 허용 전류 (Allowable Current)와 저감 계수&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;af8c5efa33d6&quot; data-renderer-start-pos=&quot;2547&quot; data-ke-size=&quot;size16&quot;&gt;케이블 제조사가 제시하는 허용 전류는 '공기 중 1가닥' 같은 이상적인 조건일 때입니다. 실제 현장에서는 저감 계수(Derating Factor)를 반드시 적용해야 합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;4a8f0031-4c6e-4d4f-b226-05be0c633e61&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;집합 보정 계수:&lt;/b&gt; 트레이에 케이블이 다닥다닥 붙어 있으면 열이 빠져나가지 못합니다. 케이블 수가 많을수록 허용 전류는 급격히 떨어집니다. (예: 0.7배, 0.6배 등)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;주위 온도 보정:&lt;/b&gt; 데이터센터 핫존(Hot Zone) 처럼 주변 온도가 높으면 허용 전류를 더 낮춰잡아야 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;953a3ca07ce2&quot; data-renderer-start-pos=&quot;2811&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Step 2. 전압 강하 (Voltage Drop)&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;53a7a8d08567&quot; data-renderer-start-pos=&quot;2841&quot; data-ke-size=&quot;size16&quot;&gt;케이블 길이가 길어지면 저항(R)과 리액턴스(X) 성분에 의해 전압이 떨어집니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[AI인프라] AI 시대의 보이지 않는 혈관, 데이터센터 전력 케이블 이해하기 (6).png&quot; data-origin-width=&quot;814&quot; data-origin-height=&quot;69&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKuAPk/dJMcajbhOrI/ZAvFjKz4FJLyL8NPIykmt0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKuAPk/dJMcajbhOrI/ZAvFjKz4FJLyL8NPIykmt0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKuAPk/dJMcajbhOrI/ZAvFjKz4FJLyL8NPIykmt0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKuAPk%2FdJMcajbhOrI%2FZAvFjKz4FJLyL8NPIykmt0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[AI인프라] AI 시대의 보이지 않는 혈관, 데이터센터 전력 케이블 이해하기&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;55&quot; data-filename=&quot;[AI인프라] AI 시대의 보이지 않는 혈관, 데이터센터 전력 케이블 이해하기 (6).png&quot; data-origin-width=&quot;814&quot; data-origin-height=&quot;69&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;1841374e6374&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;e: 전압강하 (Volt, V)&lt;/li&gt;
&lt;li&gt;K: 계통 종류에 따른 상수값&lt;/li&gt;
&lt;li&gt;R: 도체의 단위 길이당 저항&lt;/li&gt;
&lt;li&gt;X: 도체의 단위 길이당 리액턴스(유도성 저항 성분)&lt;/li&gt;
&lt;li&gt;&amp;theta;: 역률각 (전류와 전압 사이의 위상각)&lt;/li&gt;
&lt;li&gt;I: 도체에 흐르는 전류&lt;/li&gt;
&lt;li&gt;L: 도체 또는 선로의 길이&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;248cb430307b&quot; data-renderer-start-pos=&quot;3050&quot; data-ke-size=&quot;size16&quot;&gt;부하 말단에서 전압이 정격의 5% 범위를 벗어나지 않도록, 거리가 멀다면 허용 전류보다 더 굵은 케이블을 선정해야 합니다.&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;336fff8dd361&quot; data-renderer-start-pos=&quot;3120&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Step 3. 단락 전류 용량 (Short Circuit Capacity)&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;f1fd32f28f38&quot; data-renderer-start-pos=&quot;3163&quot; data-ke-size=&quot;size16&quot;&gt;만약 사고가 나서 엄청난 단락 전류가 흐를 때, 차단기가 떨어지기 전까지(약 0.1~0.5초) 케이블이 녹지 않고 버텨야 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[AI인프라] AI 시대의 보이지 않는 혈관, 데이터센터 전력 케이블 이해하기 (5).png&quot; data-origin-width=&quot;297&quot; data-origin-height=&quot;214&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/veewU/dJMcagFL0MU/K6knKyf3iXHYYuoP1N7q1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/veewU/dJMcagFL0MU/K6knKyf3iXHYYuoP1N7q1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/veewU/dJMcagFL0MU/K6knKyf3iXHYYuoP1N7q1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FveewU%2FdJMcagFL0MU%2FK6knKyf3iXHYYuoP1N7q1k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[AI인프라] AI 시대의 보이지 않는 혈관, 데이터센터 전력 케이블 이해하기&quot; loading=&quot;lazy&quot; width=&quot;350&quot; height=&quot;252&quot; data-filename=&quot;[AI인프라] AI 시대의 보이지 않는 혈관, 데이터센터 전력 케이블 이해하기 (5).png&quot; data-origin-width=&quot;297&quot; data-origin-height=&quot;214&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;eab0ddda7e16&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;A: 단면적&lt;/li&gt;
&lt;li&gt;I: 단락전류&lt;/li&gt;
&lt;li&gt;t: 통전시간&lt;/li&gt;
&lt;li&gt;k: 상수&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;b48b864b2eee&quot; data-renderer-start-pos=&quot;3283&quot; data-ke-size=&quot;size16&quot;&gt;이 수식을 만족하지 못하면 사고 한 번에 케이블 전체를 교체해야 하는 큰 일이 벌어집니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;Ch-03.-케이블-시공:-디테일이-품질을-만든다&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;3336&quot; data-local-id=&quot;15d994462092&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;Ch 03. 케이블 시공: 디테일이 품질을 만든다&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;1ed375799501&quot; data-renderer-start-pos=&quot;3365&quot; data-ke-size=&quot;size16&quot;&gt;설계가 머리라면 시공은 손발입니다. 현장에서 엔지니어가 챙겨야 할 핵심 체크리스트(Checklist)입니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1. 곡률 반경 (Bending Radius) 엄수&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;8138cb09222c&quot; data-renderer-start-pos=&quot;3458&quot; data-ke-size=&quot;size16&quot;&gt;케이블은 유연해 보이지만 내부는 딱딱한 고체 절연물입니다. 무리하게 90도로 꺾으면 내부 절연체에 기계적 스트레스(Mechanical Stress)가 가해져 훗날 절연 파괴의 씨앗(Void)이 됩니다. 통상 케이블 외경의 10배~15배 이상의 곡률을 확보해야 합니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2. 포설 장력 (Pulling Tension)&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;508f4bea166e&quot; data-renderer-start-pos=&quot;3638&quot; data-ke-size=&quot;size16&quot;&gt;기계로 케이블을 당길 때(Pulling), 도체가 늘어나지 않도록 장력계를 보며 작업해야 합니다. 특히 코너를 돌 때 측압(Sidewall Pressure)이 허용치를 넘지 않도록 롤러 배치를 신경 써야 합니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;3. 단말 처리 (Termination) - 주된 사고 원인&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;f1fd32f28f38&quot; data-renderer-start-pos=&quot;3163&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot;&gt;케이블 사고의 대부분은 케이블 중간이 아닌 접속부에서 일어납니다. 피복을 벗긴 끝단은 전계(Electric Field)가 집중되기 쉬운데, 이를 스트레스 콘(Stress Cone)으로 균일하게 분산시켜주는 것이 기술입니다. 수축 튜브를 가열할 때 기포가 들어가지 않도록 하는 것이 '장인 정신'의 영역입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[AI인프라] AI 시대의 보이지 않는 혈관, 데이터센터 전력 케이블 이해하기 (4).png&quot; data-origin-width=&quot;915&quot; data-origin-height=&quot;577&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OeUEZ/dJMcaalbiVf/Ee5qwUyB6M25IL2C0EHa51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OeUEZ/dJMcaalbiVf/Ee5qwUyB6M25IL2C0EHa51/img.png&quot; data-alt=&quot;Image source: powercontractors.co.uk&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OeUEZ/dJMcaalbiVf/Ee5qwUyB6M25IL2C0EHa51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOeUEZ%2FdJMcaalbiVf%2FEe5qwUyB6M25IL2C0EHa51%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[AI인프라] AI 시대의 보이지 않는 혈관, 데이터센터 전력 케이블 이해하기&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;410&quot; data-filename=&quot;[AI인프라] AI 시대의 보이지 않는 혈관, 데이터센터 전력 케이블 이해하기 (4).png&quot; data-origin-width=&quot;915&quot; data-origin-height=&quot;577&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Image source: powercontractors.co.uk&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;Ch-04.-차세대-케이블:-효율과-친환경의-미래&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;4015&quot; data-local-id=&quot;83f22228a0e5&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;Ch 04. 차세대 케이블: 효율과 친환경의 미래&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;e726f4e47df0&quot; data-renderer-start-pos=&quot;4044&quot; data-ke-size=&quot;size16&quot;&gt;미래의 전력망을 위한 혁신적인 케이블 기술들도 상용화 단계에 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;ef68be90-cfbd-400f-b86e-3232f7e0d61b&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;HVDC (초고압 직류송전) 케이블:&lt;/b&gt; 교류(AC) 송전의 고질적 문제인 표피 효과(Skin Effect)와 &lt;b&gt;리액턴스 손실&lt;/b&gt;이 없습니다. 같은 굵기로 더 많은 전력을, 더 멀리 보낼 수 있어 해상풍력이나 국가 간 전력망 연계(Super Grid)의 핵심입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;초전도 (Superconducting) 케이블:&lt;/b&gt; 특정 온도 이하에서 전기 저항이 '0'이 되는 꿈의 케이블입니다. 기존 구리 케이블 대비 5~10배의 용량을 송전할 수 있어, 전력구 증설이 불가능한 복잡한 도심지(예: 서울 종로 등)에 구세주가 되고 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;친환경 PP (Polypropylene) 케이블:&lt;/b&gt; 재활용이 불가능한 가교 XLPE 대신, 녹여서 재활용할 수 있는 PP 소자를 사용해 탄소 배출을 획기적으로 줄이는 기술입니다. ESG 경영의 일환으로 도입이 늘고 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;Ch-05.-보이지-않는-균열을-찾아라:-정밀-진단과-상태-기반-보전&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;4512&quot; data-local-id=&quot;20dd8756e764&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;Ch 05. 보이지 않는 균열을 찾아라: 정밀 진단과 상태 기반 보전&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;babf1a3d3732&quot; data-renderer-start-pos=&quot;4552&quot; data-ke-size=&quot;size16&quot;&gt;설치 후 &quot;전기만 잘 통하면 문제없겠지&quot;라고 방심하면 안 됩니다. 사람처럼 케이블도 늙습니다. 이를 엔지니어링 용어로 열화(Degradation)라고 합니다.&lt;/p&gt;
&lt;h4 id=&quot;1.-케이블을-병들게-하는-주범:-열화의-종류&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;4642&quot; data-local-id=&quot;1f668b2875b2&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1. 케이블을 병들게 하는 주범: 열화의 종류&lt;/b&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;b5472150-31a6-4ce1-8af3-0f253b2bb344&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;수트리 (Water Tree):&lt;/b&gt; 절연체 미세 균열로 수분이 침투해, 마치 나뭇가지 모양으로 절연이 파괴되는 현상입니다. 지중 케이블 사고의 가장 흔한 원인입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;전기트리 (Electrical Tree):&lt;/b&gt; 부분 방전에 의해 절연체 내부가 탄화(숯처럼 변함)되어 전기가 뚫고 나가는 현상입니다. 한번 시작되면 절연 파괴까지 시간이 얼마 남지 않았다는 위험 신호입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;2.-진단-기술-(Diagnosis):-사고를-막는-골든타임&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;4882&quot; data-local-id=&quot;a784f0b45fd7&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2. 진단 기술 (Diagnosis): 사고를 막는 골든타임&lt;/b&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;210a0a0b8c00&quot; data-renderer-start-pos=&quot;4917&quot; data-ke-size=&quot;size16&quot;&gt;이제는 사고 나면 고치는 사후 보전(BM)이 아니라, 데이터를 보고 선제 대응하는 상태 기반 보전(CBM)이 글로벌 표준입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;7586c4ea-fa9b-4a74-b37c-b0d3ef8dc253&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;열화상 진단 (Thermal Imaging):&lt;/b&gt; [일상 점검]
&lt;ul style=&quot;list-style-type: circle;&quot; data-indent-level=&quot;2&quot; data-local-id=&quot;e7cda9bb-16d8-4360-b91c-9c7b5fd55188&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;가장 기초적이면서 강력한 방법입니다. 주로 케이블 단말이나 접속 부위의 이완(Looseness)으로 인한 &lt;b&gt;국부적 발열&lt;/b&gt;을 비접촉으로 잡아냅니다. 접속 불량으로 인한 화재를 막는 1차 방어선입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;절연 저항 측정 (Insulation Resistance):&lt;/b&gt; [정기 점검]
&lt;ul style=&quot;list-style-type: circle;&quot; data-indent-level=&quot;2&quot; data-local-id=&quot;cfbb60b8-5240-4368-a661-7f910170ada2&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;흔히 '메거(Megger)'라고 부르는 장비를 사용합니다. 도체와 대지 사이의 저항값을 측정하여 절연체가 제 기능을 하는지 봅니다. 가장 기본이지만, 케이블의 전반적인 건강 상태를 보여주는 핵심 지표입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;VLF (Very Low Frequency) 진단:&lt;/b&gt; [정밀 진단]
&lt;ul style=&quot;list-style-type: circle;&quot; data-indent-level=&quot;2&quot; data-local-id=&quot;0cd60956-ba2d-4501-aa5a-72b02e0d97af&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;상용 주파수(60Hz)보다 훨씬 낮은 &lt;b&gt;0.1Hz&lt;/b&gt; 전압을 인가하는 방식입니다. 케이블에 스트레스를 주지 않으면서도 실제 운전 전압과 유사한 조건에서 **절연 내력(강도)**을 정밀하게 테스트할 수 있어 최근 진단 트렌드의 대세가 되었습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;부분 방전 (PD) 측정:&lt;/b&gt; [정밀 진단]
&lt;ul style=&quot;list-style-type: circle;&quot; data-indent-level=&quot;2&quot; data-local-id=&quot;0e61b816-5c5c-4bc7-ac10-18882d47bea7&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;절연 파괴가 일어나기 직전, 케이블 내부에서 발생하는 미세한 방전 신호(Pulse)를 포착합니다. 사람으로 치면 '암 조기 진단'과 같습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;3.-주기적-케이블-교체-(Replacement-Cycle)&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;5599&quot; data-local-id=&quot;62c6fa6bc4d7&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;3. 주기적 케이블 교체 (Replacement Cycle)&lt;/b&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;7d39c3b6d7fb&quot; data-renderer-start-pos=&quot;5634&quot; data-ke-size=&quot;size16&quot;&gt;아무리 관리를 잘해도 물리적 수명은 존재합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;fb0c6e82-16c8-41b5-88a5-cf834ceab33c&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;통상적으로 XLPE 케이블의 기대 수명은 30년(한전 기준)으로 봅니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;50f87c5cb0f7&quot; data-renderer-start-pos=&quot;5709&quot; data-ke-size=&quot;size16&quot;&gt;※ 실제로는 부하율, 주위 온도, 습기 등 현장 여건에 따라 기대 수명은 변동될 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;c3c11e143ba8&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;하지만 부하율이 높거나 환경이 열악한 데이터센터나 플랜트는 &lt;b&gt;20~25년&lt;/b&gt;을 교체 주기로 잡기도 합니다. 진단 데이터를 바탕으로 잔여 수명을 예측하여, 사고가 나기 전에 계획적으로 교체하는 것이 엔지니어의 가장 중요한 책무입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[AI인프라] AI 시대의 보이지 않는 혈관, 데이터센터 전력 케이블 이해하기 (3).png&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;279&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/broDUk/dJMcad3fy0C/os102wMsMuChjQqejPlRM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/broDUk/dJMcad3fy0C/os102wMsMuChjQqejPlRM1/img.png&quot; data-alt=&quot;Image source: carelabz.com&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/broDUk/dJMcad3fy0C/os102wMsMuChjQqejPlRM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbroDUk%2FdJMcad3fy0C%2Fos102wMsMuChjQqejPlRM1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[AI인프라] AI 시대의 보이지 않는 혈관, 데이터센터 전력 케이블 이해하기&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;283&quot; data-filename=&quot;[AI인프라] AI 시대의 보이지 않는 혈관, 데이터센터 전력 케이블 이해하기 (3).png&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;279&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Image source: carelabz.com&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;맺음말&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;5933&quot; data-local-id=&quot;4509db582708&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;맺음말&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock floatRight&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[AI인프라] AI 시대의 보이지 않는 혈관, 데이터센터 전력 케이블 이해하기 (2).png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CDmME/dJMcacpONsc/iNmK6T7vzW5shcLkgiGLk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CDmME/dJMcacpONsc/iNmK6T7vzW5shcLkgiGLk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CDmME/dJMcacpONsc/iNmK6T7vzW5shcLkgiGLk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCDmME%2FdJMcacpONsc%2FiNmK6T7vzW5shcLkgiGLk1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[AI인프라] AI 시대의 보이지 않는 혈관, 데이터센터 전력 케이블 이해하기&quot; loading=&quot;lazy&quot; width=&quot;350&quot; height=&quot;350&quot; data-filename=&quot;[AI인프라] AI 시대의 보이지 않는 혈관, 데이터센터 전력 케이블 이해하기 (2).png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;e4c7889bcfa7&quot; data-renderer-start-pos=&quot;5938&quot; data-ke-size=&quot;size16&quot;&gt;눈에 띄지 않는 트레이 안과 지하 관로 깊숙한 곳에 자리하기에, 전력 케이블의 중요성은 쉽게 간과되곤 합니다. 그러나 케이블은 단순한 도체가 아닙니다. 거대한 전력을 안정적으로 전달하는 인프라의 혈관이며, 시스템 전체를 지탱하는 기반 설비입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;e4c7889bcfa7&quot; data-renderer-start-pos=&quot;5938&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;d15298fad949&quot; data-renderer-start-pos=&quot;6077&quot; data-ke-size=&quot;size16&quot;&gt;그 내부에는 수만 볼트의 전압을 견디는 절연 재료공학이 적용되어 있고, 전력 손실을 최소화하기 위한 정밀한 설계 계산이 반영되어 있습니다. 여기에 시공 단계의 체결 토크 관리와 접속 품질까지 더해져, 케이블은 다양한 공학 기술이 집약된 결정체로 완성됩니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;d15298fad949&quot; data-renderer-start-pos=&quot;6077&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;61f01814afce&quot; data-renderer-start-pos=&quot;6222&quot; data-ke-size=&quot;size16&quot;&gt;특히, AI와 하이퍼스케일 데이터센터가 주도하는 시대에 전력 밀도는 빠르게 상승하고 있습니다. 이에 따라 케이블에 가해지는 전기적&amp;middot;열적 스트레스 또한 증가하고 있으며, 단순한 정격 충족만으로는 충분하지 않은 환경이 되고 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;61f01814afce&quot; data-renderer-start-pos=&quot;6222&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;309fdc407442&quot; data-renderer-start-pos=&quot;6352&quot; data-ke-size=&quot;size16&quot;&gt;이제 케이블은 &amp;lsquo;자재&amp;rsquo;의 개념을 넘어, 시스템의 안정성을 좌우하는 핵심 기술 요소로 재정의되어야 합니다. 설계, 시공, 진단, 운용 전 과정에서 케이블을 어떻게 관리하느냐가 곧 데이터센터의 신뢰도를 결정합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- CTA (블루 버전, GA4 공통 스크립트용 figure + data-event) --&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; style=&quot;max-width: 600px; margin: 0 auto 40px auto;&quot; data-event=&quot;go_cloud_banner_click&quot; data-name=&quot;cta_platform_banner&quot; data-loc=&quot;body_mid&quot;&gt;&lt;a href=&quot;https://cloud.kt.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 100%; height: auto; border-radius: 8px; display: block;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt%20cloud%20platform.png&quot; alt=&quot;kt cloud 플랫폼 바로가기&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- ================= FAQ 섹션 (그린 버전, 블루 스타일을 그린 톤으로) ================= --&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #009a87; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;b&gt;❓ 자주 묻는 질문 (FAQ)&lt;/b&gt; &lt;/span&gt;&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #E6F8F4; border-bottom: 1px solid #CDEDE7;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87;&quot;&gt; &lt;b&gt;Q. 전선(Wire)이랑 케이블(Cable), 그냥 같은 말 아닌가요?&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #ffffff;&quot;&gt;&lt;span&gt;A. 다릅니다. '옷을 얼마나 껴입었나'의 차이입니다.&lt;/span&gt;&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc; color: #292a2e; text-align: left;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;7f6d5d168b2f&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;전선(Wire):&lt;/b&gt; 구리선 위에 얇은 옷(절연체) 하나만 입은 상태입니다. 약해서 주로 벽 속이나 기계 안에 숨겨서 씁니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;케이블(Cable):&lt;/b&gt; 전선 위에 튼튼한 갑옷(시스, Sheath)을 한 번 더 입힌 것입니다. 밟히거나 물에 젖어도 버틸 수 있어서 땅속이나 건물 밖에 대놓고 쓸 수 있는 '무장된 전선'입니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- ================= 관련/출처 섹션 (그린 박스 버전) ================= --&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 15px; font-weight: bold; color: #000000; font-family: 'Noto Sans KR', sans-serif;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;   관련/출처 &lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 12px 14px; background: #ffffff;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc; color: #292a2e; text-align: left;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;9e14670a5864&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;대한전기협회 (KEA):&lt;/b&gt; KEC(한국전기설비규정) 핸드북 및 기술 지침&lt;/li&gt;
&lt;li&gt;&lt;b&gt;LS전선 다운로드 센터:&lt;/b&gt; 카탈로그 및 기술 자료 (허용전류표 포함)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;대한전선 E-Catalog:&lt;/b&gt; 전력 케이블 상세 스펙 및 시공 가이드&lt;/li&gt;
&lt;li&gt;&lt;b&gt;한국전기기술인협회 (KEEA):&lt;/b&gt; 전기안전관리 기술 및 실무 정보&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- 포스터 이미지 3개 한 줄 배치 (가운데 정렬 + 링크 추가) --&gt;&lt;/p&gt;
&lt;div&gt;
&lt;style&gt;  /* 모바일에서 포스터 크기 줄이기 */  @media (max-width: 480px) {    .poster-figure {      max-width: 30% !important;  /* 한 줄에 3개 들어오도록 */      flex: 0 0 30% !important;    }    .poster-figure img {      width: 100% !important;      height: auto !important;    }  }&lt;/style&gt;
&lt;/div&gt;
&lt;div style=&quot;display: flex; justify-content: center; align-items: flex-start; gap: 15px; margin: 30px auto; flex-wrap: wrap; text-align: center;&quot;&gt;&lt;!-- 1번 배너: 클라우드 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;cloud_industry_poster_click&quot; data-name=&quot;cloud_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://cloud.kt.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud1.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;!-- 2번 배너: 데이터센터 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;datacenter_industry_poster_click&quot; data-name=&quot;datacenter_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://www.kt-idc.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud2.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;!-- 3번 배너: AI 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;ai_industry_poster_click&quot; data-name=&quot;ai_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://cloud.kt.com/category/?ctgryId=C000000001&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud3.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;/div&gt;</description>
      <category>Tech Story/Data Center &amp;amp; Security</category>
      <category>aidc</category>
      <category>AI데이터센터</category>
      <category>HVDC</category>
      <category>KTCloud</category>
      <category>xlpe</category>
      <category>데이터센터운영</category>
      <category>데이터센터인프라</category>
      <category>인프라보안</category>
      <category>전력인프라</category>
      <category>전력케이블</category>
      <author>kt cloud 기술 블로그</author>
      <guid isPermaLink="true">https://tech.ktcloud.com/448</guid>
      <comments>https://tech.ktcloud.com/entry/2026-06-ktcloud-ai-datacenter-cable-%EC%A0%84%EB%A0%A5-%EC%9D%B4%ED%95%B4#entry448comment</comments>
      <pubDate>Mon, 1 Jun 2026 18:26:57 +0900</pubDate>
    </item>
    <item>
      <title>[설계가이드] Terraform 모듈 설계, 원칙 없이 만들면 반드시 무너진다</title>
      <link>https://tech.ktcloud.com/entry/2026-06-ktcloud-terraform-module-%EC%9D%B8%ED%94%84%EB%9D%BC-%EC%95%88%EC%A0%95</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 티스토리용 시맨틱 HTML 기술 블로그 템플릿 (개선된 UI) --&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;article style=&quot;font-family: 'Noto Sans KR', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; max-width: 100%; margin: 0 auto; line-height: 1.7; color: #2c3e50; background: #ffffff;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 메타데이터 섹션 --&gt; &lt;/span&gt;&lt;header style=&quot;background: linear-gradient(135deg, #009a87 0%, #00b39f 100%); color: white; padding: 20px 25px; text-align: right; font-weight: 600; border-radius: 15px; margin-bottom: 35px; box-shadow: 0 8px 25px rgba(0, 154, 135, 0.15); position: relative; overflow: hidden;&quot;&gt;
&lt;div style=&quot;position: absolute; top: -50%; right: -10%; width: 200px; height: 200px; background: rgba(255,255,255,0.1); border-radius: 50%; transform: rotate(45deg);&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;position: relative; z-index: 2;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;b&gt; &lt;span style=&quot;font-size: 1.1rem; text-shadow: rgba(0, 0, 0, 0.1) 0px 2px 4px;&quot;&gt; [ kt cloud Azure전환팀 변세림 님 ] &lt;/span&gt; &lt;/b&gt; &lt;/span&gt;&lt;/div&gt;
&lt;/header&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 콘텐츠 구조 및 메타데이터 표준화 적용 --&gt; &lt;/span&gt;
&lt;article&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 작성자 정보 (시맨틱 헤더) --&gt; &lt;/span&gt;&lt;header style=&quot;margin: 20px 0;&quot;&gt;
&lt;section style=&quot;margin: 25px 0;&quot;&gt;&lt;header&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;!-- 요약 섹션 헤더 - 초미니멀 디자인 --&gt; &lt;/span&gt;
&lt;h4 style=&quot;margin: 15px 0 10px 0;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87; background: #f0fffe; padding: 4px 10px; border-radius: 12px; border: 1px solid #d4eeeb; display: inline-flex; align-items: center; gap: 5px; font-weight: bold; font-size: 0.9em;&quot;&gt; &lt;span style=&quot;font-size: 0.8em;&quot;&gt; &lt;/span&gt; 요약 &lt;/span&gt;&lt;/h4&gt;
&lt;/header&gt;&lt;/section&gt;
&lt;/header&gt;&lt;/article&gt;
&lt;/article&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;이 글에서는 Terraform 모듈 설계 원칙과 표준 구조, 실무 적용 기준을 다룹니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;안정적인 인프라 운영을 위해 모듈 복잡도와 변경 위험을 줄이는 방향을 정리합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;#Terraform&amp;nbsp;#IaC&amp;nbsp;#Terraform모듈&amp;nbsp;#HashiCorp&amp;nbsp;#인프라자동화&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock floatRight&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[설계가이드] Terraform 모듈 설계, 원칙 없이 만들면 반드시 무너진다 (2).png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6wiWu/dJMcageEgac/gxm49wVE4F0KqpXlaurWRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6wiWu/dJMcageEgac/gxm49wVE4F0KqpXlaurWRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6wiWu/dJMcageEgac/gxm49wVE4F0KqpXlaurWRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6wiWu%2FdJMcageEgac%2Fgxm49wVE4F0KqpXlaurWRK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[설계가이드] Terraform 모듈 설계, 원칙 없이 만들면 반드시 무너진다&quot; loading=&quot;lazy&quot; width=&quot;350&quot; height=&quot;1080&quot; data-filename=&quot;[설계가이드] Terraform 모듈 설계, 원칙 없이 만들면 반드시 무너진다 (2).png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;eeb8e2522770&quot; data-renderer-start-pos=&quot;932&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요.  &lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;4f248641110f&quot; data-renderer-start-pos=&quot;963&quot; data-ke-size=&quot;size16&quot;&gt;1부에서 IaC의 본질을 살펴봤는데요, 이번에는 조금 더 실전적인 이야기를 해볼게요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;6684ae4a458e&quot; data-renderer-start-pos=&quot;1012&quot; data-ke-size=&quot;size16&quot;&gt;Terraform을 쓰다 보면 어느 순간 꼭 이런 상황이 생겨요.&lt;/p&gt;
&lt;blockquote data-local-id=&quot;677615ff-1e5c-42bb-97fe-50adb4a9086b&quot; data-ke-style=&quot;style2&quot;&gt;
&lt;p data-local-id=&quot;5bc33e9793dd&quot; data-renderer-start-pos=&quot;1051&quot; data-ke-size=&quot;size16&quot;&gt;&quot;처음엔 그냥 리소스 파일을 하나씩 만들었는데, 어느 순간 코드가 뒤엉켜서 뭐가 뭔지 모르게 됐다.&quot;&lt;br /&gt;&quot;모듈을 만들긴 했는데... 팀원이 어떻게 쓰는지 모른다.&quot;&lt;br /&gt;&quot;모듈 하나 고쳤더니 왜 다른 환경이 망가졌지?&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;7182e2c80756&quot; data-renderer-start-pos=&quot;1172&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;7182e2c80756&quot; data-renderer-start-pos=&quot;1172&quot; data-ke-size=&quot;size16&quot;&gt;이런 문제들은 Terraform을 잘못 쓴 게 아니에요. &lt;b&gt;모듈 설계 원칙 없이 만들어진 코드&lt;/b&gt;가 쌓인 거예요.  &lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;217692da4447&quot; data-renderer-start-pos=&quot;1237&quot; data-ke-size=&quot;size16&quot;&gt;본격적인 모듈 설계 이야기 전에, 먼저 &quot;왜 IaC 도구 중에서 Terraform인가?&quot;를 짚고 넘어갈게요.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;1.-왜-Terraform인가?&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;1300&quot; data-local-id=&quot;33a09e5829f4&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;1. 왜 Terraform인가?&lt;/b&gt;&lt;/span&gt; &lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;a85052ec217e&quot; data-renderer-start-pos=&quot;1320&quot; data-ke-size=&quot;size16&quot;&gt;IaC 도구는 Terraform 외에도 다양해요. AWS CloudFormation, Azure Bicep, Ansible, Pulumi 등 선택지가 많죠. 그런데 왜 많은 팀들이 Terraform을 선택할까요?&lt;/p&gt;
&lt;h4 id=&quot;①-클라우드에-종속되지-않는다-(Cloud-Agnostic)&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;1440&quot; data-local-id=&quot;0c880c06418f&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;① 클라우드에 종속되지 않는다 (Cloud-Agnostic)&lt;/b&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;4151512e9ea3&quot; data-renderer-start-pos=&quot;1475&quot; data-ke-size=&quot;size16&quot;&gt;CloudFormation은 AWS 전용, Bicep은 Azure 전용이에요. 반면 Terraform은 AWS, Azure, GCP, Kubernetes 등 1,000개 이상의 Provider를 지원하는 클라우드 중립적인 도구예요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;4151512e9ea3&quot; data-renderer-start-pos=&quot;1475&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;4e6a1d552880&quot; data-renderer-start-pos=&quot;1606&quot; data-ke-size=&quot;size16&quot;&gt;멀티 클라우드 환경이 보편화된 지금, 하나의 도구로 여러 클라우드를 동일한 워크플로우로 관리할 수 있다는 건 큰 장점이에요.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;  실무 관점&lt;br /&gt;오늘은 Azure만 쓰더라도, 내일 다른 클라우드가 추가될 가능성은 항상 있어요. Terraform을 쓰면 도구를 바꾸지 않고 Provider만 추가하면 돼요.&lt;/blockquote&gt;
&lt;h4 id=&quot;②-선언형-언어로-직관적이다-(Declarative)&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;1780&quot; data-local-id=&quot;4d0facae75bb&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;② 선언형 언어로 직관적이다 (Declarative)&lt;/b&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;350f176b92e6&quot; data-renderer-start-pos=&quot;1811&quot; data-ke-size=&quot;size16&quot;&gt;Terraform은 HCL(HashiCorp Configuration Language)이라는 선언형 언어를 써요. &quot;어떻게 만들지&quot;가 아니라 &quot;어떤 상태가 되어야 하는지&quot;만 기술하면, Terraform이 알아서 현재 상태와 비교해서 필요한 작업을 수행해요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;350f176b92e6&quot; data-renderer-start-pos=&quot;1811&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;bf71d3b4a774&quot; data-renderer-start-pos=&quot;1956&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 VM 하나를 만들 때 &quot;이 VM은 이런 스펙으로 존재해야 한다&quot;고 선언만 하면, Terraform이 현재 상태와 비교해서 필요한 작업을 알아서 수행해줘요. 절차를 일일이 쓸 필요가 없는 거죠.&lt;/p&gt;
&lt;h4 id=&quot;③-거대한-커뮤니티와-생태계&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;2071&quot; data-local-id=&quot;64645d0cb12e&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;③ 거대한 커뮤니티와 생태계&lt;/b&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;d28dfb4667b7&quot; data-renderer-start-pos=&quot;2088&quot; data-ke-size=&quot;size16&quot;&gt;Terraform은 전 세계 수만 개의 조직에서 사용하는 사실상의 IaC 표준이에요. 공식 문서, 커뮤니티 모듈, 레퍼런스 아키텍처가 풍부해서 막히는 상황에서 해결책을 찾기가 쉬워요.&lt;/p&gt;
&lt;table style=&quot;background-color: #ffffff; color: #292a2e; text-align: start; border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-layout=&quot;default&quot; data-table-width=&quot;760&quot; data-number-column=&quot;false&quot; data-testid=&quot;renderer-table&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style13&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;도구&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;클라우드&amp;nbsp;지원&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;언어&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;특징&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: center;&quot; data-colwidth=&quot;190&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;Terraform&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: center;&quot; data-colwidth=&quot;152&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;멀티 클라우드&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: center;&quot; data-colwidth=&quot;180&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;HCL (선언형)&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: center;&quot; data-colwidth=&quot;236&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;클라우드 중립, 대규모 커뮤니티&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: center;&quot; data-colwidth=&quot;190&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;CloudFormation&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: center;&quot; data-colwidth=&quot;152&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;AWS 전용&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: center;&quot; data-colwidth=&quot;180&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;YAML/JSON&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: center;&quot; data-colwidth=&quot;236&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;AWS 네이티브 통합&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: center;&quot; data-colwidth=&quot;190&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;Bicep&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: center;&quot; data-colwidth=&quot;152&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;Azure 전용&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: center;&quot; data-colwidth=&quot;180&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;DSL&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: center;&quot; data-colwidth=&quot;236&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;ARM 템플릿 대체&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: center;&quot; data-colwidth=&quot;190&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;Ansible&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: center;&quot; data-colwidth=&quot;152&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;멀티 클라우드&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: center;&quot; data-colwidth=&quot;180&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;YAML (절차형)&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: center;&quot; data-colwidth=&quot;236&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;설정 관리에 강점&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: center;&quot; data-colwidth=&quot;190&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;Pulumi&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: center;&quot; data-colwidth=&quot;152&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;멀티 클라우드&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: center;&quot; data-colwidth=&quot;180&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;범용 언어(Python 등)&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: center;&quot; data-colwidth=&quot;236&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;개발자 친화적&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;2.-좋은-모듈의-3가지-설계-원칙&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;2492&quot; data-local-id=&quot;7c010a99088d&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;2. 좋은 모듈의 3가지 설계 원칙&lt;/b&gt;&lt;/span&gt; &lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;16b13d9e12f1&quot; data-renderer-start-pos=&quot;2514&quot; data-ke-size=&quot;size16&quot;&gt;이제 본론으로 들어가볼게요. HashiCorp 공식 가이드는 모듈을 설계할 때 반드시 고려해야 할 세 가지 축을 제시해요.&lt;/p&gt;
&lt;h4 id=&quot;①-캡슐화-(Encapsulation):-항상-함께-배포되는-것만-묶어라&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;2584&quot; data-local-id=&quot;1232ce432ab5&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;① 캡슐화 (Encapsulation): 항상 함께 배포되는 것만 묶어라&lt;/b&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;6f4c431381a0&quot; data-renderer-start-pos=&quot;2626&quot; data-ke-size=&quot;size16&quot;&gt;모듈에 너무 많은 리소스를 넣으면 쓰기는 편하지만, 모듈의 목적과 요구사항이 무엇인지 이해하기 어려워져요.&lt;/p&gt;
&lt;blockquote style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;8f66b521-34a8-4d0c-99d2-bff14a1823d8&quot; data-ke-style=&quot;style3&quot;&gt;
&lt;p data-local-id=&quot;8a3ab592a38b&quot; data-renderer-start-pos=&quot;2688&quot; data-ke-size=&quot;size16&quot;&gt;  기준은 이거예요&lt;/p&gt;
&lt;p data-local-id=&quot;5a6a509f52ac&quot; data-renderer-start-pos=&quot;2701&quot; data-ke-size=&quot;size16&quot;&gt;&quot;이 리소스들은 항상 함께 배포되는가?&quot; &amp;rarr; Yes면 같은 모듈, No면 분리&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;14e5a480d244&quot; data-renderer-start-pos=&quot;2747&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;14e5a480d244&quot; data-renderer-start-pos=&quot;2747&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 네트워크 모듈이 VNet, 서브넷, NSG를 함께 만드는 건 자연스러워요. 이것들은 항상 같이 필요하거든요. 하지만 같은 모듈이 애플리케이션 서버까지 만들기 시작하면, 모듈의 목적이 흐려지고 나중에 분리하기가 굉장히 힘들어지죠.&lt;/p&gt;
&lt;h4 id=&quot;②-권한-경계-(Privileges):-권한이-다른-리소스는-분리하라&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;2882&quot; data-local-id=&quot;bcbc3eb17ed3&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;② 권한 경계 (Privileges): 권한이 다른 리소스는 분리하라&lt;/b&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;11fe5e21b84b&quot; data-renderer-start-pos=&quot;2922&quot; data-ke-size=&quot;size16&quot;&gt;모듈 안에 서로 다른 팀이 관리하는 리소스가 섞이면 권한 분리 원칙이 깨질 수 있어요.&lt;/p&gt;
&lt;blockquote style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;5b20346f-4774-440b-9f27-33cf1c7499c9&quot; data-ke-style=&quot;style3&quot;&gt;
&lt;p data-local-id=&quot;19f6360a1ca2&quot; data-renderer-start-pos=&quot;2973&quot; data-ke-size=&quot;size16&quot;&gt;  실무 예시&lt;/p&gt;
&lt;p data-local-id=&quot;a6b3481c04d9&quot; data-renderer-start-pos=&quot;2983&quot; data-ke-size=&quot;size16&quot;&gt;네트워크 팀이 관리하는 VNet 설정과 개발팀이 관리하는 VM을 같은 모듈에 넣으면, 개발팀이 의도치 않게 네트워크 설정을 건드릴 수 있어요. 권한 경계에 맞게 모듈을 나누면 이런 사고를 구조적으로 막을 수 있어요.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id=&quot;③-변동성-(Volatility):-자주-바뀌는-것과-안-바뀌는-것을-분리하라&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;3106&quot; data-local-id=&quot;db2b9e507e39&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;③ 변동성 (Volatility): 자주 바뀌는 것과 안 바뀌는 것을 분리하라&lt;/b&gt;&lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;c5eba39295eb&quot; data-renderer-start-pos=&quot;3151&quot; data-ke-size=&quot;size16&quot;&gt;수명이 긴 인프라와 짧은 인프라를 같은 모듈에 묶으면 안 돼요.&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-testid=&quot;table-container&quot; data-layout=&quot;custom&quot;&gt;
&lt;div data-vc=&quot;table-node-wrapper&quot; data-table-width=&quot;760&quot; data-table-local-id=&quot;6bfa3386-d41d-496e-af64-efb628f5766a&quot; data-autosize=&quot;false&quot; data-layout=&quot;default&quot; data-number-column=&quot;false&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-layout=&quot;default&quot; data-table-width=&quot;760&quot; data-number-column=&quot;false&quot; data-testid=&quot;renderer-table&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style13&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;낮은&amp;nbsp;변동성&amp;nbsp;(분리&amp;nbsp;권장)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;높은&amp;nbsp;변동성&amp;nbsp;(분리&amp;nbsp;권장)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&lt;span&gt;VNet, 서브넷 등 네트워크&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&lt;span&gt;애플리케이션 서버&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&lt;span&gt;데이터베이스&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&lt;span&gt;오토스케일링 설정&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&lt;span&gt;Key Vault, IAM 정책&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&lt;span&gt;배포 관련 설정&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;e2d022aa-ef2d-4519-bbe5-a91a4b5ace88&quot; data-ke-style=&quot;style3&quot;&gt;
&lt;p data-local-id=&quot;8acd522416f5&quot; data-renderer-start-pos=&quot;3324&quot; data-ke-size=&quot;size16&quot;&gt;  왜 분리해야 할까요?&lt;/p&gt;
&lt;p data-local-id=&quot;2c3ea873dfbf&quot; data-renderer-start-pos=&quot;3340&quot; data-ke-size=&quot;size16&quot;&gt;애플리케이션 서버는 하루에도 수십 번 배포될 수 있어요. 이걸 DB와 같은 모듈에 넣으면, 서버 배포할 때마다 DB 설정에 불필요한 변경 위험이 생기거든요. 안 바뀌어도 될 인프라를 괜히 건드리는 셈이죠.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;3.-표준-모듈-구조-(Standard-Module-Structure)&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;3458&quot; data-local-id=&quot;74bfd7c69f25&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;3. 표준 모듈 구조 (Standard Module Structure)&lt;/b&gt;&lt;/span&gt; &lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;5e1198c08bac&quot; data-renderer-start-pos=&quot;3500&quot; data-ke-size=&quot;size16&quot;&gt;HashiCorp가 권장하는 모듈의 표준 파일/디렉토리 구조예요. 이 구조를 따르면 Terraform 툴링이 자동으로 문서를 생성하고 모듈 레지스트리에 인덱싱하는 등 여러 기능을 활용할 수 있어요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1780294633176&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;terraform-module-name/
├── main.tf          # 핵심 리소스 정의 (필수)
├── variables.tf     # 입력 변수 정의
├── outputs.tf       # 출력값 정의
├── README.md        # 모듈 설명 문서
├── modules/         # 중첩 모듈 (선택)
│   └── sub-module/
└── examples/        # 사용 예시 (선택)
    └── basic/&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;08b6c4422e32&quot; data-renderer-start-pos=&quot;3871&quot; data-ke-size=&quot;size16&quot;&gt;유일한 필수 요소는 루트 디렉토리의 .tf 파일이에요. 나머지는 모듈이 성숙해지면서 점진적으로 추가하면 돼요.&lt;/p&gt;
&lt;blockquote style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;fd88a018-ca17-4f24-b551-a4aa0bdae664&quot; data-ke-style=&quot;style3&quot;&gt;
&lt;p data-local-id=&quot;e2d4228e6714&quot; data-renderer-start-pos=&quot;3935&quot; data-ke-size=&quot;size16&quot;&gt;  [한 단계 더 들어가 보기] README는 왜 중요한가요?&lt;/p&gt;
&lt;p data-local-id=&quot;893b2590d60a&quot; data-renderer-start-pos=&quot;3972&quot; data-ke-size=&quot;size16&quot;&gt;HashiCorp 공식 가이드는 루트 모듈과 모든 중첩 모듈에 README를 작성할 것을 권장해요.&lt;/p&gt;
&lt;p data-local-id=&quot;8f9f0d6cfd36&quot; data-renderer-start-pos=&quot;4029&quot; data-ke-size=&quot;size16&quot;&gt;변수나 출력값 목록은 terraform-docs 같은 툴이 .tf 파일을 읽어서 자동으로 생성해줘요. README에 꼭 담아야 할 것은 &quot;이 모듈이 무엇을 만드는가&quot;, &quot;언제 써야 하는가&quot;, 그리고 &quot;실제 사용 예시&quot;예요. 이것만 있어도 팀원이 물어보는 횟수가 확 줄어들어요.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;4.-MVP-원칙:-처음엔-작게-시작하라&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;4187&quot; data-local-id=&quot;37c88d9eb2f3&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;4. MVP 원칙: 처음엔 작게 시작하라&lt;/b&gt;&lt;/span&gt; &lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;5867f9f9f173&quot; data-renderer-start-pos=&quot;4212&quot; data-ke-size=&quot;size16&quot;&gt;HashiCorp는 모듈을 처음 만들 때 MVP(Minimum Viable Product) 접근을 강조해요. 처음부터 완벽한 모듈을 만들려다가 결국 아무것도 못 만드는 것보다, 작게 시작해서 점진적으로 발전시키는 게 낫거든요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;5867f9f9f173&quot; data-renderer-start-pos=&quot;4212&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;c0841e800c2e&quot; data-renderer-start-pos=&quot;4340&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;MVP 모듈 설계 원칙 4가지&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;63b34014-ceaa-461b-8246-3e164ca62813&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;80% 룰&lt;/b&gt; &amp;mdash; 80%의 사용 사례에서 작동하는 모듈을 목표로 해요. 모든 케이스를 커버하려다가 복잡해지는 게 더 나빠요.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;엣지 케이스 금지&lt;/b&gt; &amp;mdash; 드물게 일어나는 예외 상황은 모듈에 넣지 마세요. 모듈은 재사용 가능한 블록이어야 해요.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;조건문 최소화&lt;/b&gt; &amp;mdash; MVP 단계에서 복잡한 조건 분기는 모듈의 범위를 흐리게 해요.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;변수는 꼭 필요한 것만&lt;/b&gt; &amp;mdash; 자주 바꿀 것 같은 변수만 노출하고, 나머지는 기본값으로 숨겨두세요.&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;4fac927d-1aae-449a-a4fc-7d54a00026f4&quot; data-ke-style=&quot;style3&quot;&gt;
&lt;p data-local-id=&quot;cbcafa882c16&quot; data-renderer-start-pos=&quot;4603&quot; data-ke-size=&quot;size16&quot;&gt;  실무 팁&lt;/p&gt;
&lt;p data-local-id=&quot;1de76079c4c5&quot; data-renderer-start-pos=&quot;4612&quot; data-ke-size=&quot;size16&quot;&gt;&quot;이 변수, 나중에 누군가 바꾸고 싶어할까?&quot;를 기준으로 변수를 정해요. 그렇지 않다면 locals로 처리하는 게 모듈을 훨씬 깔끔하게 유지시켜 줘요.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 id=&quot;5.-Output은-아낌없이-내보내라&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;4700&quot; data-local-id=&quot;c9c2404b948c&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;5. Output은 아낌없이 내보내라&lt;/b&gt;&lt;/span&gt; &lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;3e1c4c2e3dbc&quot; data-renderer-start-pos=&quot;4723&quot; data-ke-size=&quot;size16&quot;&gt;HashiCorp 가이드에서 특히 강조하는 내용이에요. 지금 당장 쓸 곳이 없더라도, 모듈에서 나올 수 있는 정보는 최대한 output으로 내보내야 해요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;3e1c4c2e3dbc&quot; data-renderer-start-pos=&quot;4723&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;eb7218b0f3f7&quot; data-renderer-start-pos=&quot;4811&quot; data-ke-size=&quot;size16&quot;&gt;실무에서 모듈은 혼자 쓰이지 않거든요. 네트워크 모듈의 output이 컴퓨팅 모듈의 input이 되고, 컴퓨팅 모듈의 output이 보안 모듈의 input이 되는 식으로 연결돼요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;eb7218b0f3f7&quot; data-renderer-start-pos=&quot;4811&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;7520db66148e&quot; data-renderer-start-pos=&quot;4913&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 네트워크 모듈을 만들 때 network ID 하나만 output으로 내보내면, 나중에 다른 모듈에서 network 이름이나 subnet ID가 필요할 때 참조할 방법이 없어요. ID뿐 아니라 name, subnet ID, CIDR 등 해당 리소스에서 나올 수 있는 정보는 최대한 함께 내보내두는 게 좋아요.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;6.-모듈-설계-원칙-요약&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;5093&quot; data-local-id=&quot;2010eb126922&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;6. 모듈 설계 원칙 요약&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;div style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-testid=&quot;table-container&quot; data-layout=&quot;custom&quot;&gt;
&lt;div data-vc=&quot;table-node-wrapper&quot; data-table-width=&quot;760&quot; data-table-local-id=&quot;c704dbad-bdb3-4186-ae42-e4d9368c08ee&quot; data-autosize=&quot;false&quot; data-layout=&quot;default&quot; data-number-column=&quot;false&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-layout=&quot;default&quot; data-table-width=&quot;760&quot; data-number-column=&quot;false&quot; data-testid=&quot;renderer-table&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style13&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;원칙&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;핵심&amp;nbsp;질문&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;잘못된&amp;nbsp;예&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;올바른&amp;nbsp;예&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;104&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;캡슐화&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;216&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;항상 함께 배포되는가?&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;247&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;네트워크 + 앱 서버를 한 모듈에&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;190&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;네트워크 모듈 / 앱 모듈 분리&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;104&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;권한 경계&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;216&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;같은 팀이 관리하는가?&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;247&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;네트워크팀 + 개발팀 리소스 혼재&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;190&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;담당 팀별로 모듈 분리&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;104&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;변동성&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;216&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;변경 빈도가 같은가?&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;247&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;DB + 앱 서버를 한 모듈에&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;190&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;정적 인프라 / 동적 인프라 분리&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;104&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;MVP&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;216&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;80%의 케이스를 커버하는가?&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;247&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;처음부터 모든 옵션 변수화&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;190&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;꼭 필요한 변수만 노출&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;104&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;Output&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;216&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;충분히 내보내고 있는가?&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;247&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;ID만 output&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; text-align: left;&quot; data-colwidth=&quot;190&quot;&gt;
&lt;div style=&quot;text-align: center;&quot; data-align=&quot;center&quot;&gt;&lt;span&gt;이름, ID, 속성 모두 output&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div data-vc=&quot;table-sticky-scrollbar-container&quot;&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&quot;마무리&quot; style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-renderer-start-pos=&quot;5477&quot; data-local-id=&quot;8aa009410df6&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;마무리&lt;/b&gt;&lt;/span&gt; &lt;span&gt;&lt;span style=&quot;color: #505258;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[설계가이드] Terraform 모듈 설계, 원칙 없이 만들면 반드시 무너진다 (1).png&quot; data-origin-width=&quot;1640&quot; data-origin-height=&quot;1084&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3RLRT/dJMcabqTiHf/iTKSddxMcHCHteFhDeffnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3RLRT/dJMcabqTiHf/iTKSddxMcHCHteFhDeffnK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3RLRT/dJMcabqTiHf/iTKSddxMcHCHteFhDeffnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3RLRT%2FdJMcabqTiHf%2FiTKSddxMcHCHteFhDeffnK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;[설계가이드] Terraform 모듈 설계, 원칙 없이 만들면 반드시 무너진다&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;430&quot; data-filename=&quot;[설계가이드] Terraform 모듈 설계, 원칙 없이 만들면 반드시 무너진다 (1).png&quot; data-origin-width=&quot;1640&quot; data-origin-height=&quot;1084&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-local-id=&quot;401bd80343b5&quot; data-renderer-start-pos=&quot;5483&quot; data-ke-size=&quot;size16&quot;&gt;지금까지 살펴본 Terraform 모듈 설계 원칙, kt cloud 환경에서 직접 적용해보고 싶으신가요? 3부에서는 kt cloud 인프라의 기반이 되는 OpenStack Provider를 활용한 구성 방법과 함께, 팀이 함께 안전하게 모듈을 관리하는 버전 관리 전략까지 소개해 드릴게요. 기대해 주세요! ✨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- CTA (블루 버전, GA4 공통 스크립트용 figure + data-event) --&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; style=&quot;max-width: 600px; margin: 0 auto 40px auto;&quot; data-event=&quot;go_cloud_banner_click&quot; data-name=&quot;cta_platform_banner&quot; data-loc=&quot;body_mid&quot;&gt;&lt;a href=&quot;https://cloud.kt.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 100%; height: auto; border-radius: 8px; display: block;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt%20cloud%20platform.png&quot; alt=&quot;kt cloud 플랫폼 바로가기&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- ================= FAQ 섹션 (그린 버전, 블루 스타일을 그린 톤으로) ================= --&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #009a87; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;b&gt;❓ 자주 묻는 질문 (FAQ)&lt;/b&gt; &lt;/span&gt;&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #E6F8F4; border-bottom: 1px solid #CDEDE7;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87;&quot;&gt;&lt;b&gt;Q. Terraform&amp;nbsp;말고&amp;nbsp;Azure&amp;nbsp;Bicep을&amp;nbsp;써도&amp;nbsp;되지&amp;nbsp;않나요?&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #ffffff;&quot;&gt;A.&amp;nbsp;Azure&amp;nbsp;환경만&amp;nbsp;사용한다면&amp;nbsp;Bicep도&amp;nbsp;충분히&amp;nbsp;좋은&amp;nbsp;선택이에요.&amp;nbsp;Azure&amp;nbsp;네이티브&amp;nbsp;기능과의&amp;nbsp;통합이&amp;nbsp;더&amp;nbsp;빠르고&amp;nbsp;긴밀하거든요.&amp;nbsp;다만&amp;nbsp;멀티&amp;nbsp;클라우드&amp;nbsp;환경이거나&amp;nbsp;팀이&amp;nbsp;이미&amp;nbsp;Terraform&amp;nbsp;경험이&amp;nbsp;있다면,&amp;nbsp;하나의&amp;nbsp;도구로&amp;nbsp;통일하는&amp;nbsp;것이&amp;nbsp;운영&amp;nbsp;효율&amp;nbsp;면에서&amp;nbsp;유리해요.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #E6F8F4; border-bottom: 1px solid #CDEDE7;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87;&quot;&gt;&lt;b&gt;Q. 모듈&amp;nbsp;하나가&amp;nbsp;너무&amp;nbsp;작아지는&amp;nbsp;것&amp;nbsp;같아요.&amp;nbsp;어느&amp;nbsp;정도&amp;nbsp;크기가&amp;nbsp;적당한가요?&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #ffffff;&quot;&gt;A.&amp;nbsp;HashiCorp는&amp;nbsp;&quot;모듈의&amp;nbsp;기능이나&amp;nbsp;목적을&amp;nbsp;설명하기&amp;nbsp;어렵다면&amp;nbsp;너무&amp;nbsp;복잡한&amp;nbsp;것&quot;이라고&amp;nbsp;말해요.&amp;nbsp;딱&amp;nbsp;한&amp;nbsp;문장으로&amp;nbsp;&quot;이&amp;nbsp;모듈은&amp;nbsp;○○을&amp;nbsp;만든다&quot;고&amp;nbsp;설명할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;크기가&amp;nbsp;적당해요.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #E6F8F4; border-bottom: 1px solid #CDEDE7;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #009a87;&quot;&gt; &lt;b&gt;Q. 변수를&amp;nbsp;얼마나&amp;nbsp;많이&amp;nbsp;노출해야&amp;nbsp;할까요?&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 14px 16px; background: #ffffff;&quot;&gt;A.&amp;nbsp;MVP&amp;nbsp;단계에서는&amp;nbsp;&quot;자주&amp;nbsp;바꿔야&amp;nbsp;할&amp;nbsp;것&amp;nbsp;같은&amp;nbsp;값&quot;만&amp;nbsp;변수로&amp;nbsp;노출하는&amp;nbsp;걸&amp;nbsp;권장해요.&amp;nbsp;나머지는&amp;nbsp;locals나&amp;nbsp;기본값으로&amp;nbsp;처리하세요.&amp;nbsp;변수가&amp;nbsp;많을수록&amp;nbsp;모듈을&amp;nbsp;쓰는&amp;nbsp;사람의&amp;nbsp;부담도&amp;nbsp;커지거든요.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- ================= 관련/출처 섹션 (그린 박스 버전) ================= --&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0px 0px 15px; font-weight: bold; color: #000000; font-family: 'Noto Sans KR', sans-serif;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;   관련/출처 &lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; border: 1px solid #CDEDE7; border-radius: 12px; overflow: hidden; background: #F0FBF9; box-shadow: 0 3px 10px rgba(0,154,135,0.08);&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%; padding: 12px 14px; background: #ffffff;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc; color: #292a2e; text-align: left;&quot; data-indent-level=&quot;1&quot; data-local-id=&quot;59507e42-b71e-4b35-8a21-82b17429de7d&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;899&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://developer.hashicorp.com/terraform/tutorials/aws-get-started/infrastructure-as-code&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://developer.hashicorp.com/terraform/tutorials/aws-get-started/infrastructure-as-code&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span&gt;What is Infrastructure as Code with Terraform? | Terraform | HashiCorp Developer&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;905&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://developer.hashicorp.com/terraform/tutorials/modules/pattern-module-creation&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://developer.hashicorp.com/terraform/tutorials/modules/pattern-module-creation&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span data-testid=&quot;icon-position-wrapper&quot;&gt;&lt;/span&gt;&lt;span&gt;Module creation - recommended pattern | Terraform | HashiCorp Developer&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;912&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://developer.hashicorp.com/terraform/language/modules/develop/structure&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://developer.hashicorp.com/terraform/language/modules/develop/structure&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span data-testid=&quot;icon-position-wrapper&quot;&gt;&lt;/span&gt;&lt;span&gt;Standard Module Structure | Terraform | HashiCorp Developer&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-testid=&quot;smart-link-draggable-inline&quot;&gt;&lt;span data-annotation-mark=&quot;true&quot; data-renderer-start-pos=&quot;918&quot; data-annotation-inline-node=&quot;true&quot; data-card-url=&quot;https://blog.gruntwork.io/why-we-use-terraform-and-not-chef-puppet-ansible-saltstack-or-cloudformation-7989dad2865c&quot; data-inline-card=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span data-testid=&quot;hover-card-trigger-wrapper&quot;&gt;&lt;a style=&quot;background-color: #ffffff; color: #1868db;&quot; href=&quot;https://blog.gruntwork.io/why-we-use-terraform-and-not-chef-puppet-ansible-saltstack-or-cloudformation-7989dad2865c&quot; data-testid=&quot;inline-card-resolved-view&quot;&gt;&lt;span data-testid=&quot;inline-card-icon-and-title&quot;&gt;&lt;span data-testid=&quot;icon-position-wrapper&quot;&gt;&lt;/span&gt;&lt;span&gt;Gruntwork Blog | Why we use Terraform and not Chef, Puppet, Ansible, Pulumi, or CloudFormation&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- 포스터 이미지 3개 한 줄 배치 (가운데 정렬 + 링크 추가) --&gt;&lt;/p&gt;
&lt;div&gt;
&lt;style&gt;  /* 모바일에서 포스터 크기 줄이기 */  @media (max-width: 480px) {    .poster-figure {      max-width: 30% !important;  /* 한 줄에 3개 들어오도록 */      flex: 0 0 30% !important;    }    .poster-figure img {      width: 100% !important;      height: auto !important;    }  }&lt;/style&gt;
&lt;/div&gt;
&lt;div style=&quot;display: flex; justify-content: center; align-items: flex-start; gap: 15px; margin: 30px auto; flex-wrap: wrap; text-align: center;&quot;&gt;&lt;!-- 1번 배너: 클라우드 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;cloud_industry_poster_click&quot; data-name=&quot;cloud_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://cloud.kt.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud1.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;!-- 2번 배너: 데이터센터 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;datacenter_industry_poster_click&quot; data-name=&quot;datacenter_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://www.kt-idc.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud2.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;!-- 3번 배너: AI 산업 포스터 --&gt;
&lt;figure class=&quot;poster-figure&quot; style=&quot;flex: 0 0 auto; max-width: 180px; margin: 0;&quot; data-event=&quot;ai_industry_poster_click&quot; data-name=&quot;ai_industry_poster&quot; data-loc=&quot;body_bottom&quot;&gt;&lt;a style=&quot;display: block; text-decoration: none;&quot; href=&quot;https://cloud.kt.com/category/?ctgryId=C000000001&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img style=&quot;width: 180px; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); transition: transform 0.3s ease, box-shadow 0.3s ease;&quot; src=&quot;https://tistory1.daumcdn.net/tistory/4226485/skin/images/kt_cloud3.png&quot; alt=&quot;kt cloud&quot; /&gt; &lt;/a&gt;&lt;/figure&gt;
&lt;/div&gt;</description>
      <category>Tech Story/etc.</category>
      <category>CloudAutomation</category>
      <category>CloudInfrastructure</category>
      <category>DevOps</category>
      <category>hashicorp</category>
      <category>IaC</category>
      <category>InfrastructureAsCode</category>
      <category>KTCloud</category>
      <category>Openstack</category>
      <category>terraform</category>
      <category>TerraformModule</category>
      <author>kt cloud 기술 블로그</author>
      <guid isPermaLink="true">https://tech.ktcloud.com/447</guid>
      <comments>https://tech.ktcloud.com/entry/2026-06-ktcloud-terraform-module-%EC%9D%B8%ED%94%84%EB%9D%BC-%EC%95%88%EC%A0%95#entry447comment</comments>
      <pubDate>Mon, 1 Jun 2026 11:36:33 +0900</pubDate>
    </item>
  </channel>
</rss>