<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>jaeyoung-dev</title>
    <link>https://jaeyoung-dev.tistory.com/</link>
    <description>항상 궁금한게 많다</description>
    <language>ko</language>
    <pubDate>Tue, 26 May 2026 22:52:26 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>jaeyoung-dev</managingEditor>
    <image>
      <title>jaeyoung-dev</title>
      <url>https://tistory1.daumcdn.net/tistory/8691611/attach/572168f214b545e1958a1dd6a7cf3f05</url>
      <link>https://jaeyoung-dev.tistory.com</link>
    </image>
    <item>
      <title>운영 중인 UniFi 장비에서 NAT 규칙 확인하기</title>
      <link>https://jaeyoung-dev.tistory.com/3</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;NAT는 네트워크를 공부하다 보면 자주 만나는 개념입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;처음에는 NAT를 단순히 &amp;ldquo;사설 IP를 공인 IP로 변환하는 기술&amp;rdquo; 정도로 이해했습니다. &lt;/span&gt;&lt;br /&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;style5&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;&lt;span style=&quot;color: #333333; text-align: center;&quot;&gt;따라서, 이번 글에서는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;UniFi USG-Pro-4&lt;/b&gt;에 SSH로 접속해&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;NAT&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;관련 설정을 살펴보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;i&gt;운영 중인 장비이기 때문에 설정 변경은 하지 않았고, 조회 명령만 사용했습니다.&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;공인 IP, 사설 IP 일부, 비표준 포트, 내부 서버 정보는 보안상 마스킹했습니다.&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #333333; text-align: start;&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;548&quot; data-origin-height=&quot;180&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b6CzhL/dJMcahEuO7T/vl6Agbi5inqVGvKZzUHek0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b6CzhL/dJMcahEuO7T/vl6Agbi5inqVGvKZzUHek0/img.png&quot; data-alt=&quot;SSH 접속 화면&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b6CzhL/dJMcahEuO7T/vl6Agbi5inqVGvKZzUHek0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb6CzhL%2FdJMcahEuO7T%2Fvl6Agbi5inqVGvKZzUHek0%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;548&quot; height=&quot;180&quot; data-origin-width=&quot;548&quot; data-origin-height=&quot;180&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;SSH 접속 화면&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;NAT가 필요한 이유&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;IPv4&amp;nbsp;주소는&amp;nbsp;32비트로&amp;nbsp;구성되어&amp;nbsp;있으며,&amp;nbsp;이론상&amp;nbsp;약&amp;nbsp;43억&amp;nbsp;개의&amp;nbsp;주소를&amp;nbsp;표현할&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;하지만&amp;nbsp;이&amp;nbsp;주소를&amp;nbsp;모두&amp;nbsp;공인&amp;nbsp;IP로&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;부족합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;그래서 내부 네트워크에서는 보통 &lt;b&gt;사설 IP&lt;/b&gt;를 사용합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1779606920654&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;10.0.0.0/8
172.16.0.0/12
192.168.0.0/16&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;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;사설 IP는 회사, 가정, 연구실 같은 내부 네트워크에서는 사용할 수 있지만, 인터넷에서는 직접 라우팅되지 않습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 내부 장비가 &lt;b&gt;192.168.xxx.xxx&lt;/b&gt;&amp;nbsp;주소를 가지고 있다고 해서, 이 주소 그대로 인터넷 서버와 통신할 수는 없습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;인터넷 입장에서는 &lt;b&gt;해당 사설 IP가 어느 네트워크의 어떤 장비인지 알 수 없기 때문&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이때&amp;nbsp;필요한&amp;nbsp;기술이&amp;nbsp;&lt;b&gt;NAT(Network&amp;nbsp;Address&amp;nbsp;Translation)&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;NAT는 내부 사설 IP를 외부 인터넷에서 사용할 수 있는 주소로 변환해주는 기술입니다.&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;책의 예시로 보는 NAT 구조&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;책에 나오는 NAT 구조를 기준으로 먼저 개념을 짚고 넘어가겠습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1779610375751&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[내부 호스트]
172.18.3.1
...
      &amp;darr;
      
[NAT 라우터]
Inside: 172.18.3.30
Outside: 200.24.5.8
      &amp;darr;
      
[외부 서버]&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시에서 사설 네트워크가 &lt;b&gt;172.18.3.x&lt;/b&gt;&amp;nbsp;대역을 사용합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1779607094387&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;172.18.3.1
172.18.3.2
...
172.18.3.20&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;&amp;nbsp;&lt;/p&gt;
&lt;p 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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중간의 NAT 라우터는 두 개의 주소를 가집니다.&lt;/p&gt;
&lt;pre id=&quot;code_1779607118929&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;내부 방향 주소: 172.18.3.30
외부 방향 주소: 200.24.5.8&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내부 호스트가 인터넷으로 나가면, NAT 라우터는 출발지 주소를 내부 사설 IP에서 자신의 외부 주소로 변환합니다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 &lt;b&gt;172.18.3.1&lt;/b&gt;이 외부 서버에 접근한다고 해보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1779607142869&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;변환 전:
172.18.3.1 &amp;rarr; 외부 서버

변환 후:
200.24.5.8 &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;b&gt;172.18.3.1&lt;/b&gt;을 직접 볼 수 없습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;외부에서 보이는 주소는 NAT 라우터의 외부 주소인 &lt;b&gt;200.24.5.8&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;b&gt;NAT 라우터 역할을 UniFi USG-Pro-4가 수행&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;SNAT, DNAT, PAT 구분&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;NAT는 어떤 주소를 변환하느냐에 따라 나눌 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 74px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 14.031%; height: 20px;&quot;&gt;구분&lt;/td&gt;
&lt;td style=&quot;width: 41.5891%; height: 20px;&quot;&gt;의미&lt;/td&gt;
&lt;td style=&quot;width: 44.3798%; height: 20px;&quot;&gt;대표 방향&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 14.031%; height: 18px;&quot;&gt;SNAT&lt;/td&gt;
&lt;td style=&quot;width: 41.5891%; height: 18px;&quot;&gt;Source NAT, 출발지 주소 변환&lt;/td&gt;
&lt;td style=&quot;width: 44.3798%; height: 18px;&quot;&gt;내부 &amp;rarr; 외부&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 14.031%; height: 18px;&quot;&gt;DNAT&lt;/td&gt;
&lt;td style=&quot;width: 41.5891%; height: 18px;&quot;&gt;Destination NAT, 목적지 주소 변환&lt;/td&gt;
&lt;td style=&quot;width: 44.3798%; height: 18px;&quot;&gt;외부 &amp;rarr; 내부&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 14.031%; height: 18px;&quot;&gt;PAT&lt;/td&gt;
&lt;td style=&quot;width: 41.5891%; height: 18px;&quot;&gt;Port Address Translation, 포트까지 함께 변환&lt;/td&gt;
&lt;td style=&quot;width: 44.3798%; height: 18px;&quot;&gt;여러 내부 장비 &amp;rarr; 하나의 외부 IP&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;SNAT &lt;/b&gt;: 내부 장비가 인터넷으로 나갈 때 출발지 IP를 바꾸는 방식&lt;/li&gt;
&lt;li&gt;&lt;b&gt;DNAT &lt;/b&gt;: 외부에서 들어온 요청의 목적지 IP를 내부 서버로 바꾸는 방식&lt;/li&gt;
&lt;li&gt;&lt;b&gt;PAT &lt;/b&gt;: 여러 내부 장비의 연결을 포트 번호로 구분하여 하나의 공인 IP를 공유하는 방식&lt;/li&gt;
&lt;/ul&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;h3 data-ke-size=&quot;size23&quot;&gt;실제 환경에서 확인&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이제 운영 중인 UniFi 장비에서 NAT 관련 설정을 직접 확인해보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;대상 장비는 &lt;b&gt;UniFi USG-Pro-4&lt;/b&gt;이고, 사용한 명령어는 다음과 같습니다.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;pre id=&quot;code_1779607390863&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;show interfaces
show ip route
show nat rules
show configuration commands | grep -i port-forward
sudo iptables -t nat -L POSTROUTING -n -v --line-numbers
sudo iptables -t nat -S | grep -E &quot;DNAT|SNAT|MASQUERADE&quot;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래&amp;nbsp;정보는&amp;nbsp;보안상&amp;nbsp;이유로&amp;nbsp;마스킹했습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1779609897417&quot; class=&quot;routeros&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;공인 IP
사설 IP 일부
비표준 포트
내부 서버 주소
장비 식별 정보
서비스 설명 일부
...&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;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;인터페이스 확인&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;먼저&amp;nbsp;LAN과&amp;nbsp;WAN이&amp;nbsp;각각&amp;nbsp;어떤&amp;nbsp;인터페이스에&amp;nbsp;연결되어&amp;nbsp;있는지&amp;nbsp;확인했습니다.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;pre id=&quot;code_1779607457578&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;show interfaces&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필요한 부분만 가져오면 아래와 같습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1779607488239&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Interface    IP Address              S/L  Description
---------    ----------              ---  -----------
eth0         192.168.xxx.1/23        u/u  LAN
eth1         -                       A/D
eth2         203.xxx.xxx.xxx/24      u/u  WAN
eth3         -                       A/D
lo           127.0.0.1/8             u/u&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;eth0&lt;/b&gt;은 내부 네트워크와 연결된 LAN 인터페이스이고, &lt;b&gt;eth2&lt;/b&gt;는 외부 인터넷과 연결된 WAN 인터페이스입니다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1779607524485&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;내부 네트워크
192.168.xxx.0/23
        &amp;darr;
eth0 - USG-Pro-4 - eth2
        &amp;darr;
외부 네트워크
203.xxx.xxx.xxx/24&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NAT는 이 &lt;b&gt;LAN과 WAN 사이에서 발생&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;h4 data-ke-size=&quot;size20&quot;&gt;라우팅 경로 확인&lt;/h4&gt;
&lt;p 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;pre id=&quot;code_1779607563807&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;show ip route&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;주요&amp;nbsp;출력은&amp;nbsp;아래와&amp;nbsp;같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1779607574503&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;S&amp;gt;* 0.0.0.0/0 [1/0] via 203.xxx.xxx.1, eth2
C&amp;gt;* 127.0.0.0/8 is directly connected, lo
C&amp;gt;* 192.168.xxx.0/23 is directly connected, eth0
C&amp;gt;* 203.xxx.xxx.0/24 is directly connected, eth2&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;&amp;nbsp;&lt;/p&gt;
&lt;p 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;pre id=&quot;code_1779607591523&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;0.0.0.0/0 via 203.xxx.xxx.1, eth2&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;eth2&lt;/b&gt;를 통해 WAN 방향으로 나갑니다.&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;b&gt;192.168.xxx.xxx&lt;/b&gt; 형태의 사설 IP를 사용하고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 이 주소 그대로 인터넷에 나갈 수 없기 때문에, WAN으로 나가기 전 &lt;b&gt;출발지 주소 변환이 필요&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;SNAT / Masquerade 확인&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설정된 NAT 규칙을 확인해보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1779607661874&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;show nat rules&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NAT와 관련된 부분만 보면 다음과 같습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1779607686467&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;rule   type  intf     translation
----   ----  ----     -----------
6001   MASQ  eth2     saddr ANY to 203.xxx.xxx.xxx
    proto-all         sport ANY

6002   MASQ  eth2     saddr ANY to 203.xxx.xxx.xxx
    proto-all         sport ANY

6003   MASQ  eth2     saddr ANY to 203.xxx.xxx.xxx
    proto-all         sport ANY&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;여기서 MASQ는 Masquerade를 의미합니다.&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;Masquerade는&amp;nbsp;&lt;b&gt;SNAT&lt;/b&gt;의&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;&lt;b&gt;출발지&amp;nbsp;주소&lt;/b&gt;를&amp;nbsp;WAN&amp;nbsp;인터페이스의&amp;nbsp;주소로&amp;nbsp;바꿔줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1779607725997&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;변환 전:
192.168.xxx.xxx &amp;rarr; 외부 서버

변환 후:
203.xxx.xxx.xxx &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;즉, 내부 장비의 사설 IP가 그대로 인터넷에 노출되는 것이 아니라, USG-Pro-4의 WAN IP로 변환되어 외부와 통신합니다.&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;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;iptables에서 SNAT 확인&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;USG-Pro-4 내부에서는 NAT 규칙이 iptables NAT 테이블에도 반영되어 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1779607759363&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo iptables -t nat -L POSTROUTING -n -v --line-numbers&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NAT와 관련된 부분만 보면 다음과 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1779607773484&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Chain POSTROUTING (policy ACCEPT)
num   pkts   bytes  target      prot  in  out   source       destination
4     ...    ...    MASQUERADE  all   *   eth2  0.0.0.0/0    0.0.0.0/0  match-set corporate_network src  /* NAT-6001 */
5     ...    ...    MASQUERADE  all   *   eth2  0.0.0.0/0    0.0.0.0/0  match-set remote_user_vpn_network src  /* NAT-6002 */
6     ...    ...    MASQUERADE  all   *   eth2  0.0.0.0/0    0.0.0.0/0  match-set guest_network src  /* NAT-6003 */&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;&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;b&gt;POSTROUTING&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;이 지점에서 &lt;b&gt;MASQUERADE&lt;/b&gt;가 적용된다는 것은, &lt;b&gt;내부 네트워크의 출발지 주소가 WAN 인터페이스의 주소로 변환된다는 의미&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;b&gt;따라서 이 규칙은 SNAT에 해당한다고 볼 수 있습니다.&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;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;PAT는 어디에 해당할까?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PAT는 IP 주소뿐 아니라 포트 번호까지 함께 변환하여 연결을 구분하는 방식입니다.&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;내부&amp;nbsp;장비가&amp;nbsp;하나의&amp;nbsp;WAN&amp;nbsp;IP를&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 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;&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;span&gt;예를 들어 내부에서는 다음과 같은 연결이 발생할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1779607852820&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;192.168.xxx.10:50001 &amp;rarr; 외부 서버:443
192.168.xxx.20:50002 &amp;rarr; 외부 서버:443
192.168.xxx.30:50003 &amp;rarr; 외부 서버:443&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;NAT 이후 외부에서 보기에는 다음처럼 보일 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1779610080363&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;203.xxx.xxx.xxx:40001 &amp;rarr; 외부 서버:443
203.xxx.xxx.xxx:40002 &amp;rarr; 외부 서버:443
203.xxx.xxx.xxx:40003 &amp;rarr; 외부 서버:443&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;외부에서 보면 모두 같은 WAN IP를 사용하는 것처럼 보입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;USG-Pro-4는&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 data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;운영 장비에서 &lt;b&gt;PAT&lt;/b&gt;라는 이름의 규칙이 따로 보이지는 않았습니다.&lt;br /&gt;&lt;br /&gt;다만 여러 내부 네트워크가 &lt;b&gt;MASQUERADE&lt;/b&gt;&amp;nbsp;규칙을 통해 하나의 WAN IP로 나가고 있으므로,&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;있습니다.&lt;br /&gt;&lt;br /&gt;실제&amp;nbsp;포트&amp;nbsp;매핑&amp;nbsp;상태까지&amp;nbsp;보려면&amp;nbsp;&lt;b&gt;NAT&lt;/b&gt;&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 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;h4 data-ke-size=&quot;size20&quot;&gt;DNAT / Port Forwarding 확인&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에는&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 data-ke-size=&quot;size16&quot;&gt;UniFi 설정에서 Port Forwarding 규칙을 확인할 수 있었습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1779607943108&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;show configuration commands | grep -i port-forward&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Port Forwarding 관련 설정만 보면&amp;nbsp;다음과 같습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1779607957095&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;set port-forward hairpin-nat enable
set port-forward lan-interface eth0
set port-forward wan-interface eth2

set port-forward rule 3003 forward-to address 192.168.xxx.xxx
set port-forward rule 3003 original-port 80
set port-forward rule 3003 protocol tcp_udp

set port-forward rule 3004 forward-to address 192.168.xxx.xxx
set port-forward rule 3004 original-port 443
set port-forward rule 3004 protocol tcp_udp&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;여기서&amp;nbsp;&lt;b&gt;hairpin&amp;nbsp;NAT&lt;/b&gt;는&amp;nbsp;내부&amp;nbsp;사용자가&amp;nbsp;내부&amp;nbsp;서버를&amp;nbsp;공인&amp;nbsp;IP나&amp;nbsp;도메인으로&amp;nbsp;접근할&amp;nbsp;때도&amp;nbsp;&lt;br /&gt;Port&amp;nbsp;Forwarding&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 data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Port Forwarding&lt;/b&gt;은 외부에서 WAN IP의 특정 포트로 들어온 요청을 내부 서버로 전달하는 기능입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1779607977497&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;외부 사용자
  &amp;darr;
USG-Pro-4 WAN IP:80
  &amp;darr;
Port Forwarding
  &amp;darr;
192.168.xxx.xxx:80&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTTPS도 같은 방식입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1779607986204&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;외부 사용자
  &amp;darr;
USG-Pro-4 WAN IP:443
  &amp;darr;
Port Forwarding
  &amp;darr;
192.168.xxx.xxx:443&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;/b&gt;하므로 &lt;b&gt;DNAT&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;iptables에서 DNAT 확인&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;iptables NAT 테이블에서도 DNAT 규칙을 확인할 수 있었습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1779608022982&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo iptables -t nat -S | grep -E &quot;DNAT|SNAT|MASQUERADE&quot;&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;&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;DNAT 처리 흐름은 아래와 같습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1779608056394&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-A PREROUTING -j UBNT_PFOR_DNAT_HOOK
-A UBNT_PFOR_DNAT_HOOK -i eth2 -m set --match-set ADDRv4_eth2 dst -j UBNT_PFOR_DNAT_RULES

-A UBNT_PFOR_DNAT_RULES -p tcp --dport 80  -j DNAT --to-destination 192.168.xxx.xxx
-A UBNT_PFOR_DNAT_RULES -p udp --dport 80  -j DNAT --to-destination 192.168.xxx.xxx
-A UBNT_PFOR_DNAT_RULES -p tcp --dport 443 -j DNAT --to-destination 192.168.xxx.xxx
-A UBNT_PFOR_DNAT_RULES -p udp --dport 443 -j DNAT --to-destination 192.168.xxx.xxx&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;PREROUTING&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;외부에서 WAN IP의 특정 포트로 들어온 요청은 이 단계에서 내부 사설 IP로 목적지가 변경됩니다.&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;즉, UniFi의 Port Forwarding 설정은 내부적으로&lt;b&gt; iptables의 DNAT 규칙으로 반영&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;정리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;운영 중인 UniFi USG-Pro-4에서 NAT 관련 설정을 확인한 결과는 다음과 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 92px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 28.3721%; height: 20px;&quot;&gt;구분&lt;/td&gt;
&lt;td style=&quot;width: 71.6279%; height: 20px;&quot;&gt;확인한 내용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 28.3721%; height: 18px;&quot;&gt;&lt;b&gt;LAN / WAN 구조&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 71.6279%; height: 18px;&quot;&gt;&lt;b&gt;eth0 = LAN&lt;/b&gt;, &lt;b&gt;eth2 = WAN&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 28.3721%; height: 18px;&quot;&gt;&lt;b&gt;기본 라우팅&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 71.6279%; height: 18px;&quot;&gt;외부 트래픽은 &lt;b&gt;eth2&lt;/b&gt;를 통해 WAN으로 전달&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 28.3721%; height: 18px;&quot;&gt;&lt;b&gt;SNAT&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 71.6279%; height: 18px;&quot;&gt;&lt;b&gt;MASQUERADE&lt;/b&gt; 규칙으로 내부 주소를 WAN IP로 변환&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 28.3721%; height: 18px;&quot;&gt;&lt;b&gt;PAT&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 71.6279%; height: 18px;&quot;&gt;여러 내부 장비가 하나의 WAN IP를 공유하며 포트로 연결 구분&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 28.3721%;&quot;&gt;&lt;b&gt;DNAT&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 71.6279%;&quot;&gt;Port Forwarding 설정이 iptables의 &lt;b&gt;DNAT&lt;/b&gt;&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방향만&amp;nbsp;놓고&amp;nbsp;보면&amp;nbsp;NAT의&amp;nbsp;역할은&amp;nbsp;다음처럼&amp;nbsp;나눌&amp;nbsp;수&amp;nbsp;있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1779608191077&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;내부 &amp;rarr; 외부:
SNAT / Masquerade / PAT

외부 &amp;rarr; 내부:
DNAT / Port Forwarding&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;책에서&amp;nbsp;개념으로만&amp;nbsp;봤던&amp;nbsp;NAT는&amp;nbsp;실제&amp;nbsp;운영&amp;nbsp;장비에서도&amp;nbsp;구체적인&amp;nbsp;규칙으로&amp;nbsp;확인할&amp;nbsp;수&amp;nbsp;있었습니다.&lt;br /&gt;&lt;br /&gt;UniFi USG-Pro-4에서는 내부에서 외부로 나가는 트래픽에 MASQUERADE 규칙이 적용되어 SNAT/PAT 성격으로 처리되고 있었고,&amp;nbsp;&lt;br /&gt;외부에서&amp;nbsp;내부로&amp;nbsp;들어오는&amp;nbsp;요청은&amp;nbsp;Port&amp;nbsp;Forwarding&amp;nbsp;설정을&amp;nbsp;통해&amp;nbsp;DNAT&amp;nbsp;규칙으로&amp;nbsp;처리되고&amp;nbsp;있었습니다.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;이처럼 NAT는 단순히 &amp;ldquo;사설 IP를 공인 IP로 바꿔준다&amp;rdquo;는 설명으로만 끝나는 기능이 아니라, &lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;트래픽 방향에 따라 서로 다른 규칙으로 처리되는 기능&lt;/b&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span&gt;참고자료&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Book: &lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;Data Communications and Networking / Behrouz A. Forouzan 저&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>Why?</category>
      <category>network</category>
      <author>jaeyoung-dev</author>
      <guid isPermaLink="true">https://jaeyoung-dev.tistory.com/3</guid>
      <comments>https://jaeyoung-dev.tistory.com/3#entry3comment</comments>
      <pubDate>Sun, 24 May 2026 17:39:40 +0900</pubDate>
    </item>
    <item>
      <title>AWS Summit Seoul 2026 회고: AI 시대에 어떤 개발자가 되어야 할까</title>
      <link>https://jaeyoung-dev.tistory.com/2</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2026년 5월 20일부터 21일까지 이틀간 진행된 AWS Summit Seoul 2026에 참여했다.&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;blob&quot; data-origin-width=&quot;890&quot; data-origin-height=&quot;683&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GAOcg/dJMcad28YbK/GkjNhA0HKeTuMILJo9MkIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GAOcg/dJMcad28YbK/GkjNhA0HKeTuMILJo9MkIk/img.png&quot; data-alt=&quot;AWS Summit Seoul 2026 행사장에 도착했을 때의 모습&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GAOcg/dJMcad28YbK/GkjNhA0HKeTuMILJo9MkIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGAOcg%2FdJMcad28YbK%2FGkjNhA0HKeTuMILJo9MkIk%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;620&quot; height=&quot;1042&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;890&quot; data-origin-height=&quot;683&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;AWS Summit Seoul 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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;01-2.png&quot; data-origin-width=&quot;2032&quot; data-origin-height=&quot;1192&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cKLeoh/dJMcabYDLDH/KtDRIdSSRGeHvOCEuLgZb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cKLeoh/dJMcabYDLDH/KtDRIdSSRGeHvOCEuLgZb1/img.png&quot; data-alt=&quot;AWS !&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cKLeoh/dJMcabYDLDH/KtDRIdSSRGeHvOCEuLgZb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcKLeoh%2FdJMcabYDLDH%2FKtDRIdSSRGeHvOCEuLgZb1%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;2032&quot; height=&quot;1192&quot; data-filename=&quot;01-2.png&quot; data-origin-width=&quot;2032&quot; data-origin-height=&quot;1192&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;AWS !&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;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;AWS Summit은 이번이 처음이었다. AWS에 관심은 꾸준히 가지고 있었지만, 이렇게 큰 규모의 오프라인 행사에 직접 참여한 것은&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;처음이었기 때문에 행사장에 들어가기 전까지는 어떤 분위기일지 쉽게 상상이 되지 않았다.&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이번 Summit에 참여한 가장 큰 이유는 AWS가 클라우드 시장의 선두 주자라는 점 때문이었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;클라우드 시장을 이끌어 온 AWS가 현재 AI 흐름을 어떻게 바라보고 있는지,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 실제 기업들은 AWS 위에서 AI를 어떤 방식으로 활용하고 있는지 직접 확인해보고 싶었다.&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이번 Summit은 1일차 Industry Day, 2일차 AI Day로 구성되어 있었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;하지만 실제로 세션을 들어보니 첫날부터 이미 전체 분위기는 AI를 중심으로 흘러가고 있었다.&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 style=&quot;text-align: center;&quot; 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;금융, 로봇, 고객 경험, 개발 라이프사이클, 서버리스, 에이전틱 AI 등 다루는 도메인은 다양했지만, 결국 많은 발표가&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;ldquo;AI를 어떻게 실제 비즈니스와 서비스에 적용할 것인가&amp;rdquo;&lt;/b&gt;라는 질문으로 연결되고 있었다.&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이틀 동안 총 10개의 세션에 참여했다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기조연설 - Industry Day&lt;/li&gt;
&lt;li&gt;KBaaS, 금융이 플랫폼 속으로 : KB국민은행의 임베디드 금융 전략과 API 인프라 현대화&lt;/li&gt;
&lt;li&gt;AWS 위에서 만드는 로봇의 미래: 리얼월드의 RFM 학습과 위로보틱스의 휴머노이드 조작기능 구현&lt;/li&gt;
&lt;li&gt;복잡함 속의 질서 : Beyond AI Adoption in Agentic Era&lt;/li&gt;
&lt;li&gt;혁신가와 리더의 대담 - AI로 이끄는 비즈니스 혁신&lt;/li&gt;
&lt;li&gt;Amazon Connect Customer AI Agent가 다시 쓰는 고객 경험 : 불만을 감동으로&lt;/li&gt;
&lt;li&gt;AI 기반 개발 라이프사이클(AI-DLC) 소개&lt;/li&gt;
&lt;li&gt;AWS AI와 서버리스로 구축하는 완성차 지능형 상품 전략 플랫폼&lt;/li&gt;
&lt;li&gt;200개국 삼성 스마트 TV 앱 데이터를 자연어로 묻다: 에이전틱 AI on AWS&lt;/li&gt;
&lt;li&gt;에이전트 성능 평가와 개선: 개발부터 운영까지&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: center;&quot; 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;i&gt;모든 세션을 하나씩 자세히 정리하기보다는, 이번 글에서는 &lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;특히 인상 깊었던 세션들과 그 과정에서 정리하게 된 생각을 중심으로 기록해보려고 한다.&lt;/i&gt;&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 style=&quot;text-align: center;&quot; 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;&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;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;생각보다 훨씬 컸던 AWS 생태계의 존재감&lt;/h2&gt;
&lt;p style=&quot;text-align: center;&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;02-1.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQQxjD/dJMcagMqAjn/pbEO3CSNXzvnaz5dW08K70/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQQxjD/dJMcagMqAjn/pbEO3CSNXzvnaz5dW08K70/img.jpg&quot; data-alt=&quot;기조연설을 듣고 있는 사람들&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQQxjD/dJMcagMqAjn/pbEO3CSNXzvnaz5dW08K70/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQQxjD%2FdJMcagMqAjn%2FpbEO3CSNXzvnaz5dW08K70%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; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot; data-filename=&quot;02-1.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&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;p style=&quot;text-align: center;&quot; 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;/p&gt;
&lt;p style=&quot;text-align: center;&quot; 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;단순히 AWS 서비스를 소개하는 자리가 아니라, 이미 많은 기업과 개발자들이 AWS 기반으로 서비스를 만들고 운영하고 있으며,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그 위에서 &lt;b&gt;AI를 어떻게 활용할지 고민&lt;/b&gt;하고 있다는 점이 현장에서 바로 느껴졌다.&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-filename=&quot;02-2.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zofRm/dJMcagliCM6/BZP1FnfWMP9q5UiKrXNti0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zofRm/dJMcagliCM6/BZP1FnfWMP9q5UiKrXNti0/img.jpg&quot; data-alt=&quot;거의 모든 세션에서 많은 참가자들이 발표를 듣고 있었다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zofRm/dJMcagliCM6/BZP1FnfWMP9q5UiKrXNti0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzofRm%2FdJMcagliCM6%2FBZP1FnfWMP9q5UiKrXNti0%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; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot; data-filename=&quot;02-2.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;거의 모든 세션에서 많은 참가자들이 발표를 듣고 있었다.&lt;/figcaption&gt;
&lt;/figure&gt;
&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 style=&quot;text-align: center;&quot; 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;예전에 AWS 온라인 교육 프로그램에 참여한 적이 있었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;당시에는 AWS에 대한 이해가 충분하지 않았기 때문에, &lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;일부 내용이 AWS 서비스를 홍보하는 강의처럼 느껴지기도 했다. &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;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;p style=&quot;text-align: center;&quot; 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;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그런데 이번 Summit에서는 조금 다르게 받아들여졌다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;AWS가 단순히 클라우드 서비스를 제공하는 회사를 넘어,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;현재 AI 시장과 소프트웨어 개발 방식의 변화를 이끌어가는 주요 플랫폼 중 하나&lt;/b&gt;라는 점이 더 분명하게 느껴졌다.&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 style=&quot;text-align: center;&quot; 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;그래서 이번에는 &amp;ldquo;AWS가 어떤 서비스를 제공하는가?&amp;rdquo;보다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&amp;ldquo;AWS는 AI 시대의 흐름을 어떤 방향으로 이끌고 있는가?&amp;rdquo;,&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 1.12em; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;ldquo;나는 그 흐름 속에서 어떤 역량을 갖춰야 하는가&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style=&quot;font-size: 1.12em; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;?&amp;rdquo;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 1.12em; 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;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-size: 1.12em; 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;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;Why에서 Why Not으로&lt;/h2&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;ldquo;Why&amp;rdquo;에서 &amp;ldquo;Why Not&amp;rdquo;으로의 전환이었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;1773&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WhNd6/dJMcahdtfT2/v82LMKysfhuzMSXZEsYI1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WhNd6/dJMcahdtfT2/v82LMKysfhuzMSXZEsYI1k/img.png&quot; data-alt=&quot;첫째 날, Industry Day 기조연설 사진&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WhNd6/dJMcahdtfT2/v82LMKysfhuzMSXZEsYI1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWhNd6%2FdJMcahdtfT2%2Fv82LMKysfhuzMSXZEsYI1k%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;3000&quot; height=&quot;1773&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;1773&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;첫째 날, Industry Day 기조연설 사진&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;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Jason Bennett - Vice President, Worldwide Startups and VC, AWS 의 발표 중 나온 내용이었는데,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;개인적으로 이번 Summit 전체를 관통하는 문장처럼 느껴졌다.&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 style=&quot;text-align: center;&quot; 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;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;왜 해야 하지?&amp;rdquo;, &amp;ldquo;정말 가능한가?&amp;rdquo;, &amp;ldquo;구현하려면 너무 복잡하지 않을까?&amp;rdquo; 같은 질문을 먼저 하게 되는 경우가 많았다.&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 style=&quot;text-align: center;&quot; 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;하지만 AI를 활용하면 아이디어를 직접 만들어보고 실험하는 과정이 이전보다 훨씬 빨라진다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;완성도 높은 결과물을 처음부터 만드는 것은 여전히 어렵지만,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;적어도 가능성을 검증하고 초기 형태를 구현해보는 진입 장벽은 분명히 낮아졌다는 생각이 들었다.&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 style=&quot;text-align: center;&quot; 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;이 지점에서 &amp;ldquo;Why?&amp;rdquo;보다&lt;b&gt; &amp;ldquo;Why Not?&amp;rdquo;이라는 태도가 가능해졌다&lt;/b&gt;는 말이 특히 인상 깊었다.&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 style=&quot;text-align: center;&quot; 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;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AI를 통해 무언가를 빠르게 만들어낼 수 있는 시대가 되었기 때문에, &lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;그 결과물이 올바른 방향으로 가고 있는지 판단하는 능력이 더 중요해졌다.&lt;/b&gt;&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 style=&quot;text-align: center;&quot; 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;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;문제를 이해하는 능력, 도메인을 해석하는 능력, 그리고 적절한 소프트웨어 구조를 설계하는 능력이라는 생각이 들었다.&lt;/b&gt;&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;고객 경험을 바꾸는 AI Agent&lt;/h2&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;b&gt;&lt;span data-token-index=&quot;1&quot;&gt;&amp;ldquo;Amazon Connect Customer AI Agent가 다시 쓰는 고객 경험 : 불만을 감동으로&amp;rdquo;&lt;/span&gt;&lt;/b&gt;였다.&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-filename=&quot;blob&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;1827&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZiWrN/dJMcacpHSJj/v70phOt7KKVCKV9In0uFq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZiWrN/dJMcacpHSJj/v70phOt7KKVCKV9In0uFq0/img.png&quot; data-alt=&quot;고객 경험 관점에서 AI Agent를 어떻게 활용할 수 있는지 보여준 세션&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZiWrN/dJMcacpHSJj/v70phOt7KKVCKV9In0uFq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZiWrN%2FdJMcacpHSJj%2Fv70phOt7KKVCKV9In0uFq0%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;3000&quot; height=&quot;1827&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;1827&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;고객 경험 관점에서 AI Agent를 어떻게 활용할 수 있는지 보여준 세션&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;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 세션이 좋았던 이유는 AI를 단순히 &amp;ldquo;대단한 기술&amp;rdquo;로 설명하기보다,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;실제 고객 경험 안에서 어떤 역할을 할 수 있는지를 보여주었다는 점이었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;특히 고객 문의나 불만 처리처럼 반복적이면서도 감정적인 부담이 큰 업무에서 AI가 어떻게 개입할 수 있는지를 구체적으로 볼 수 있었다.&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 style=&quot;text-align: center;&quot; 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;b&gt;항공편 지연 상황&lt;/b&gt;을 바탕으로 데모가 진행되었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;고객이 항공편 지연 문제로 문의했을 때, AI Agent가 단순히 정해진 답변을 반복하는 것이 아니라&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;고객의 상황을 진단하고, 적절한 조치를 위해 여러 MCP 툴을 유연하게 호출하는 흐름이 인상 깊었다.&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-filename=&quot;06-1.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pdPPO/dJMcaii7138/a8GtCpNgQBuazZUt6gA91k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pdPPO/dJMcaii7138/a8GtCpNgQBuazZUt6gA91k/img.jpg&quot; data-alt=&quot;Amazon Connect 데모&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pdPPO/dJMcaii7138/a8GtCpNgQBuazZUt6gA91k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpdPPO%2FdJMcaii7138%2Fa8GtCpNgQBuazZUt6gA91k%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; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot; data-filename=&quot;06-1.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Amazon Connect 데모&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;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;또 흥미로웠던 부분은 외부 API와의 연동이었다. 실제 서비스 환경에서는 고객의 상황을 이해하기 위해&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;내부 시스템이나 외부 API를 호출해야 하는 경우가 많은데, 이 데모에서는 AI가 상황에 맞는 외부 API를 호출하고,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그 결과를 이해한 뒤 추가 응대까지 이어가는 모습을 보여주었다.&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 style=&quot;text-align: center;&quot; 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;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;특히 좋았던 것은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;대화의 맥락이 끊기지 않도록 설계되어 있다는 점&lt;/b&gt;이었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;AI가 1차적으로 고객 상황에 대응한 뒤 상담사에게 연결되는 경우에도, 상담사는 처음부터 다시 상황을 파악할 필요가 없었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;AI와 고객이 나눈 대화의 맥락이 정리된 대시보드를 통해 상담사가 자연스럽게 이어서 응대할 수 있도록 지원하는 구조였다.&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 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-filename=&quot;blob&quot; data-origin-width=&quot;2783&quot; data-origin-height=&quot;1945&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/czJ4Ku/dJMcacpHSJi/KQl9TZnZ6gefpqkf5kIxUk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/czJ4Ku/dJMcacpHSJi/KQl9TZnZ6gefpqkf5kIxUk/img.png&quot; data-alt=&quot;AI Agent가 고객 상황을 파악하고, 상담사에게 맥락을 이어주는 구조가 특히 인상 깊었다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/czJ4Ku/dJMcacpHSJi/KQl9TZnZ6gefpqkf5kIxUk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FczJ4Ku%2FdJMcacpHSJi%2FKQl9TZnZ6gefpqkf5kIxUk%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;2783&quot; height=&quot;1945&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;2783&quot; data-origin-height=&quot;1945&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;AI Agent가 고객 상황을 파악하고, 상담사에게 맥락을 이어주는 구조가 특히 인상 깊었다.&lt;/figcaption&gt;
&lt;/figure&gt;
&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 style=&quot;text-align: center;&quot; 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;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;세션에서 보여준 구조는 바로 그런 문제를 AI로 어떻게 줄일 수 있는지를 잘 보여주었다.&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 style=&quot;text-align: center;&quot; 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;b&gt;키오스크 기반 회의실 관리 서비스&lt;/b&gt;를 만든 적이 있었는데, 여기에 AI Agent를 결합하면 어떨까 하는 생각이 들었다.&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 style=&quot;text-align: center;&quot; 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;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;AI Agent가 사용자의 요청을 이해하고 가능한 시간대나 회의실을 추천해줄 수 있다면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;서비스 경험이 훨씬 자연스러워질 수 있겠다는 생각이 들었다.&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;다만 동시에 한 가지 개인적인 의문도 생겼다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;AI Agent가 사용자와 상호작용할 때 반드시 음성이나 TTS 중심으로 가야 할까?&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;경우에 따라서는 음성보다 체크박스, 선택지, 자연어 입력, 화면 기반 인터페이스가 더 편안한 경험이 될 수도 있지 않을까?&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 style=&quot;text-align: center;&quot; 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;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;하지만 AI를 서비스에 적용할 때 중요한 것은 &amp;ldquo;AI를 넣었다&amp;rdquo;는 사실보다,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;사용자가 어떤 방식으로 가장 자연스럽게 문제를 해결할 수 있는가&lt;/b&gt;라는 점이라고 느꼈다.&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;SDLC에서 AI-DLC로&lt;/h2&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 data-token-index=&quot;1&quot;&gt;&amp;ldquo;AI 기반 개발 라이프사이클(AI-DLC) 소개&amp;rdquo;&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;blob&quot; data-origin-width=&quot;2175&quot; data-origin-height=&quot;1341&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3rJci/dJMcaaL9qHv/Nhj63AtprgkoOjDLe9IpU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3rJci/dJMcaaL9qHv/Nhj63AtprgkoOjDLe9IpU0/img.png&quot; data-alt=&quot;소프트웨어 개발 전 과정에서 AI와 사람이 어떻게 협업할 수 있는지를 다룬 세션&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3rJci/dJMcaaL9qHv/Nhj63AtprgkoOjDLe9IpU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3rJci%2FdJMcaaL9qHv%2FNhj63AtprgkoOjDLe9IpU0%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;2175&quot; height=&quot;1341&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;2175&quot; data-origin-height=&quot;1341&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;&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 세션은 기존의 SDLC, 즉 Software Development Life Cycle이 AI 시대에 어떻게 변화할 수 있는지를 보여주었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;단순히 개발자가 AI 도구를 사용해 코드를 더 빠르게 작성한다는 이야기가 아니라,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;요구사항 분석, 설계, 구현, 테스트, 운영까지 이어지는 전체 소프트웨어 개발 과정에서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;AI가 어떻게 보조 역할을 할 수 있는지를 설명하는 세션이었다.&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 style=&quot;text-align: center;&quot; 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;b&gt;AI와 사람이 각자 잘하는 일에 집중해야 한다&lt;/b&gt;는 것이었다.&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;AI는 빠르게 초안을 만들고, 반복 작업을 줄이고, 다양한 가능성을 제안하는 데 강점이 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;반면 사람은 &lt;b&gt;맥락을 이해하고, 최종 결정을 내리고, 책임 있는 판단&lt;/b&gt;을 해야 한다.&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 style=&quot;text-align: center;&quot; 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;즉, AI-DLC는 AI가 사람을 대체하는 구조라기보다,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AI와 사람이 하나의 워크플로우 안에서 협업하는 구조&lt;/b&gt;에 더 가까워 보였다.&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 style=&quot;text-align: center;&quot; 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;LG에서는 이를 세 가지 관점으로 설명했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;1865&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ej6b1Z/dJMcadaZoba/SrhbCKKmlDgaAd9f2VForK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ej6b1Z/dJMcadaZoba/SrhbCKKmlDgaAd9f2VForK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ej6b1Z/dJMcadaZoba/SrhbCKKmlDgaAd9f2VForK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fej6b1Z%2FdJMcadaZoba%2FSrhbCKKmlDgaAd9f2VForK%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;3000&quot; height=&quot;1865&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;1865&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;b&gt;업무 분해&lt;/b&gt;였다.&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;계층적 Inception을 통해 작업을 적절한 단위로 나누고,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;1인이 1~2일 안에 Construction 가능한 크기로 작업 단위를 분할하는 방식이었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;특히 &lt;b&gt;500라인 이하의 분량이 사람과 AI 모두에게 안정적이라는 경험적 기준&lt;/b&gt;을 제시한 점이 인상 깊었다.&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;AI를 활용한다고 해서 무조건 큰 작업을 한 번에 맡길 수 있는 것은 아니었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;오히려 작업을 잘게 나누고, AI가 안정적으로 처리할 수 있는 단위로 구조화하는 능력이 중요하다는 점이 눈에 들어왔다.&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 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;blob&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;1720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FFq3K/dJMcaaZHcaS/YC7nATZeUyLhqASSbH6951/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FFq3K/dJMcaaZHcaS/YC7nATZeUyLhqASSbH6951/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FFq3K/dJMcaaZHcaS/YC7nATZeUyLhqASSbH6951/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFFq3K%2FdJMcaaZHcaS%2FYC7nATZeUyLhqASSbH6951%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;3000&quot; height=&quot;1720&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;1720&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;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;두 번째는 &lt;b&gt;정보 보존&lt;/b&gt;이었다. 이 부분은 개인적으로 특히 중요하게 느껴졌다.&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;세션에서는 AI가 본능적으로 요약하려는 경향이 있으며, 소프트웨어 설계에서는 이것이 치명적일 수 있다고 설명했다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;개발 과정에서 중요한 것은 단순한 요약이 아니라, &lt;b&gt;왜 그런 설계 결정을 내렸는지에 대한 맥락&lt;/b&gt;이다.&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;설계 의사 결정이 코드까지 이어지려면, 중간 과정의 정보가 사라지지 않도록 관리해야 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이를 위해 계획 단계에서 참조해야 하는 문서 목록을 명시적으로 관리하고,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;사람이 최종적으로 확인해 누락된 문서를 추가하며,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;AI에게 명확한 제약과 기대치를 설정하는 전략을 사용했다고 소개했다.&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 style=&quot;text-align: center;&quot; 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;b&gt;AI 시대의 개발에서는 문서화와 설계 기록의 중요성이 오히려 더 커질 수 있겠다&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;1763&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwVmaz/dJMcagMqAHB/CI2l9Qa2KDcGKHwgXP2yvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwVmaz/dJMcagMqAHB/CI2l9Qa2KDcGKHwgXP2yvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwVmaz/dJMcagMqAHB/CI2l9Qa2KDcGKHwgXP2yvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwVmaz%2FdJMcagMqAHB%2FCI2l9Qa2KDcGKHwgXP2yvK%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;3000&quot; height=&quot;1763&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;1763&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&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 style=&quot;text-align: center;&quot; 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;b&gt;기존 결정과의 공존&lt;/b&gt;이었다.&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;기업 환경에는 이미 사람이 내린 수많은 결정들이 존재한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;기존 시스템의 구조, 조직의 정책, 기술 스택, 도메인 규칙, 과거의 설계 판단 등이 모두 현재의 개발에 영향을 준다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AI가 유용하게 동작하려면 이러한 외부 맥락을 무시해서는 안 된다.&lt;/b&gt;&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 style=&quot;text-align: center;&quot; 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;세션에서는 AI의 역할을 &lt;b&gt;&amp;ldquo;확정된 것은 존중하고, 애매한 것은 질문하며, 빈 곳은 제안하게 만드는 것&amp;rdquo;&lt;/b&gt;으로 설명했다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 표현이 특히 기억에 남았다.&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 style=&quot;text-align: center;&quot; 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;AI를 잘 활용한다는 것은 AI에게 모든 것을 맡기는 것이 아니라, AI가 어떤 맥락 안에서 일해야 하는지를 분명히 정해주는 것에 가깝다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;결국 좋은 결과를 얻기 위해서는 사람이 도메인과 기존 의사결정을 이해하고 있어야 한다.&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 style=&quot;text-align: center;&quot; 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;이 세션을 통해 AI 시대의 개발자는 단순히 프롬프트를 잘 쓰는 사람이 아니라,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;작업을 분해하고, 정보를 보존하며, 기존 맥락과 공존할 수 있는 개발 프로세스 자체를 설계할 수 있어야 한다&lt;/b&gt;는 생각이 들었다.&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 style=&quot;text-align: center;&quot; 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;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;에이전트는 만들어지는 것보다 평가되고 개선되어야 한다&lt;/h2&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 data-token-index=&quot;1&quot;&gt;&amp;ldquo;에이전트 성능 평가와 개선: 개발부터 운영까지&amp;rdquo;&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;blob&quot; data-origin-width=&quot;2649&quot; data-origin-height=&quot;2049&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FeIUO/dJMcaf0YXAk/x8G99LYejFFvTwwSYKuXW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FeIUO/dJMcaf0YXAk/x8G99LYejFFvTwwSYKuXW0/img.png&quot; data-alt=&quot;AI Agent를 실제 서비스 수준으로 끌어올리기 위해 필요한 평가와 개선 과정을 다룬 세션&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FeIUO/dJMcaf0YXAk/x8G99LYejFFvTwwSYKuXW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFeIUO%2FdJMcaf0YXAk%2Fx8G99LYejFFvTwwSYKuXW0%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;2649&quot; height=&quot;2049&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;2649&quot; data-origin-height=&quot;2049&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;AI Agent를 실제 서비스 수준으로 끌어올리기 위해 필요한 평가와 개선 과정을 다룬 세션&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 style=&quot;text-align: center;&quot; 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;요즘 AI Agent에 대한 이야기는 정말 많다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;하지만 실제 서비스를 만든다고 생각하면 Agent를 구현하는 것만으로는 부족하다.&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;운영 환경에서 안정적으로 동작하는지, &lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;의도한 답변을 일관되게 제공하는지,&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;잘못된 도구를 호출하지는 않는지, &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&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;&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;세션에서는 먼저 에이전트 개발자들이 밤잠을 설치게 만드는 네 가지 문제를 소개했다.&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 style=&quot;text-align: center;&quot; 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;b&gt;설계상 비결정론적이라는 점, &lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;잘못된 도구와 잘못된 파라미터를 선택할 수 있다는 점,&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;ldquo;더 나아졌다&amp;rdquo;는 것을 측정하기 어렵다는 점, &lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;그리고 자동 회귀 오류가 발생할 수 있다는 점&lt;/b&gt;이었다.&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 style=&quot;text-align: center;&quot; 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;이 네 가지는 AI Agent를 실제 서비스로 운영하려면 결국 반드시 마주하게 될 문제처럼 느껴졌다.&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 style=&quot;text-align: center;&quot; 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;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;특히 &amp;ldquo;더 나아졌다&amp;rdquo;를 어떻게 측정할 것인가라는 질문이 인상 깊었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;단순히 응답이 자연스러워 보인다고 해서 좋은 에이전트라고 말할 수는 없다.&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;실제로 사용자의 목적을 달성했는지,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;올바른 도구를 호출했는지,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;적절한 파라미터를 사용했는지,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;10.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0IwNF/dJMcabRNIlF/L1Na1W0POo4xThOo84kMXk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0IwNF/dJMcabRNIlF/L1Na1W0POo4xThOo84kMXk/img.jpg&quot; data-alt=&quot;에이전트는 한 번 만들고 끝나는 것이 아니라, 평가와 개선이 반복되는 라이프사이클을 가진다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0IwNF/dJMcabRNIlF/L1Na1W0POo4xThOo84kMXk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0IwNF%2FdJMcabRNIlF%2FL1Na1W0POo4xThOo84kMXk%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; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot; data-filename=&quot;10.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&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;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;/p&gt;
&lt;p style=&quot;text-align: center;&quot; 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;모델 업데이트, 에이전트의 새 버전, 소스 프롬프트 수정, Tool 추가와 제거가 반복적으로 이루어지고,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그때마다 평가 과정이 필요하다는 것이다.&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;에이전트 평가 라이프사이클도 구체적으로 소개되었다.&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;에이전트를 구축하고, 평가 데이터셋을 찾거나 생성하고, Evaluator를 선택하고,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;에이전트를 평가할 모델을 선택하고, &lt;span style=&quot;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;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;프로덕션 환경에서 모니터링하는 과정이 반복되어야 한다는 내용이었다.&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 style=&quot;text-align: center;&quot; 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;이 과정을 들으며 AI Agent 개발은 단순히 프롬프트를 작성하고 도구를 연결하는 작업이 아니라는 점을 다시 느꼈다.&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Agent가 실제 서비스로 운영되려면 &lt;b&gt;평가 체계와 개선 루프가 함께 설계되어야 한다&lt;/b&gt;는 것이다.&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 style=&quot;text-align: center;&quot; 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;세션에서는 AWS의 AgentCore Evaluations를 활용하면 이러한 과정의 부담을 줄일 수 있다고 소개했다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;또 사용자 시뮬레이터를 활용한 에이전트 평가 Preview도 언급되었다.&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Amazon Bedrock FM을 사용해 다양한 표현으로 테스트하고,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;자유 대화 평가를 진행하며, 시나리오 커버리지를 확장하고, 다양성 기반 회귀 테스트를 수행할 수 있다는 내용이었다.&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-filename=&quot;11.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cV2RjX/dJMcagyPJOx/1RrOceRKUf3LQNSpnATOvK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cV2RjX/dJMcagyPJOx/1RrOceRKUf3LQNSpnATOvK/img.jpg&quot; data-alt=&quot;평가 기준을 어떻게 세우고, 어떻게 반복적으로 검증할 것인가가 핵심이라는 점이 인상 깊었다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cV2RjX/dJMcagyPJOx/1RrOceRKUf3LQNSpnATOvK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcV2RjX%2FdJMcagyPJOx%2F1RrOceRKUf3LQNSpnATOvK%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; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot; data-filename=&quot;11.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&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;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;b&gt;Ground Truth&lt;/b&gt;도 소개되었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;세션에서는 이를 어설션, 예상 응답, 예상 궤적과 같은 형태로 표현할 수 있다고 설명했다.&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 style=&quot;text-align: center;&quot; 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;이 부분이 특히 중요하게 느껴졌다. AI Agent는 항상 동일한 문장을 출력하지 않을 수 있기 때문에,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;단순히 정답 문자열 하나와 비교하는 방식으로는 평가하기 어렵다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;어떤 조건을 만족해야 하는지, 어떤 응답이 기대되는지, 어떤 경로로 도구를 호출해야 하는지 등&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;평가 기준 자체를 더 섬세하게 설계해야 한다&lt;/b&gt;는 점이 인상 깊었다.&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 style=&quot;text-align: center;&quot; 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;결국 에이전트 성능 평가에서 중요한 것은 &amp;ldquo;잘 되는 것처럼 보이는가?&amp;rdquo;가 아니라,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;ldquo;&lt;/b&gt;&lt;b&gt;무엇을 기준으로 잘 되었다고 판단할 것인가?&amp;rdquo;&lt;/b&gt;였다.&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 세션을 통해 나는 에이전트 개발자라면 이러한 평가 라이프사이클을 직접 설계하고 작성해보는 경험이 반드시 필요하다고 느꼈다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;AWS의 도구를 활용할 수는 있지만, 특정 서비스에만 의존하기보다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;에이전트가 어떻게 평가되고 개선되어야 하는지에 대한 기본적인 구조를 이해하고 있어야 한다&lt;/b&gt;고 생각했다.&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 style=&quot;text-align: center;&quot; 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;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;AI Agent 개발 정도는 직접 다룰 수 있고, 개발의 구체적인 어려움과 평가 과정을 이해한 상태에서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;아키텍처를 제시할 수 있는 사람이 되고 싶다는 생각도 더 분명해졌다.&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 style=&quot;text-align: center;&quot; 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;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;AI 시대에 내가 갖춰야 할 역량&lt;/h2&gt;
&lt;p style=&quot;text-align: center;&quot; 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;이번 Summit을 통해 가장 많이 생각한 것은 &lt;b&gt;&amp;ldquo;AI 시대에 어떤 개발자가 되어야 하는가&amp;rdquo;&lt;/b&gt;였다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;졸업을 앞둔 입장에서, 이 질문은 단순한 감상이 아니라 앞으로의 진로와도 바로 연결되는 질문이었다.&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 style=&quot;text-align: center;&quot; 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;AI를 잘 사용하는 것도 물론 중요하다. &lt;span style=&quot;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;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;기업에서 정말 필요로 하는 사람은 &lt;span style=&quot;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;&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;오히려 중요한 것은&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;도메인과 비즈니스를 이해하고, 그 문제를 해결하기 위해 어떤 기술과 구조가 적합한지 판단할 수 있는 사람&lt;/b&gt;&lt;span style=&quot;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;p style=&quot;text-align: center;&quot; 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;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;금융, 자동차, 로봇, 고객 경험, 개발 라이프사이클 등 서로 다른 세션을 들으며 공통적으로 느낀 점도 이와 같았다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;AI나 클라우드 기술이 단독으로 가치를 만드는 것이 아니라,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;특정 도메인의 문제를 얼마나 정확히 이해하고 그에 맞는 아키텍처를 설계할 수 있는지가 중요했다.&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 style=&quot;text-align: center;&quot; 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;b&gt;소프트웨어 아키텍처 설계 능력&lt;/b&gt;이 더욱 중요해질 것이라고 느꼈다.&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;AI를 통해 초기 구현은 더 빨라질 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;하지만 실제 서비스로 운영하기 위해서는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;안정적인 구조, 확장 가능한 설계, 명확한 책임 분리, 운영과 평가 체계가 필요하다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 부분은 AI가 대신해주는 것이 아니라, &lt;b&gt;개발자가 더 깊게 고민해야 하는 영역&lt;/b&gt;이라고 생각한다.&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 style=&quot;text-align: center;&quot; 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;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;도메인 중심으로 문제를 이해하고 비즈니스적인 맥락을 바탕으로 &lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;적합한 소프트웨어 아키텍처를 제시할 수 있는 개발자이자 아키텍터&lt;/b&gt;로 성장하고 싶다.&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;마무리&lt;/h2&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;i&gt;AWS Summit Seoul 2026은 나에게 단순히 AWS 서비스를 소개받는 자리가 아니었다.&lt;/i&gt;&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 style=&quot;text-align: center;&quot; 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;클라우드 시장의 선두에 있는 AWS가 AI 시대를 어떤 방향으로 바라보고 있는지 확인할 수 있었고,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여러 기업들이 AI를 실제 비즈니스와 서비스에 어떻게 적용하고 있는지도 볼 수 있었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;하지만 그보다 더 크게 남은 것은 기술 자체보다도 &lt;b&gt;내가 앞으로 어떤 개발자가 되어야 하는가&lt;/b&gt;에 대한 고민이었다.&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 style=&quot;text-align: center;&quot; 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;AI가 더 많은 코드를 작성하고, 더 빠르게 결과물을 만들어내는 시대가 오고 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그렇기 때문에 개발자에게 필요한 역량은 오히려 더 넓어지고 있다고 생각한다.&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 style=&quot;text-align: center;&quot; 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;b&gt;문제를 이해하는 능력, 도메인을 해석하는 능력, 비즈니스 맥락을 파악하는 능력, &lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;그리고 그에 맞는 소프트웨어 아키텍처를 설계하는 능력&lt;/b&gt;이 더욱 중요해지고 있다.&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 style=&quot;text-align: center;&quot; 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;이번 Summit을 통해 나는 AI 시대의 개발자가 단순히 AI를 잘 사용하는 사람이 아니라,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AI를 이해하고 적절한 구조 안에서 활용할 수 있는 사람&lt;/b&gt;이어야 한다는 생각을 하게 되었다.&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 style=&quot;text-align: center;&quot; 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;b&gt;도메인과 비즈니스를 이해하고, &lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AI 시대에 적합한 소프트웨어 아키텍처를 제시할 수 있는 개발자로 성장하고 싶다.&lt;/b&gt;&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-filename=&quot;15.jpg&quot; data-origin-width=&quot;1524&quot; data-origin-height=&quot;1208&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/71D2I/dJMcaaZHdHL/7cuNNGhqnYTibwQzNtol21/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/71D2I/dJMcaaZHdHL/7cuNNGhqnYTibwQzNtol21/img.jpg&quot; data-alt=&quot;이틀간의 Summit을 마치고, 앞으로 어떤 개발자로 성장해야 할지 다시 생각하게 되었다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/71D2I/dJMcaaZHdHL/7cuNNGhqnYTibwQzNtol21/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F71D2I%2FdJMcaaZHdHL%2F7cuNNGhqnYTibwQzNtol21%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; loading=&quot;lazy&quot; width=&quot;1524&quot; height=&quot;1208&quot; data-filename=&quot;15.jpg&quot; data-origin-width=&quot;1524&quot; data-origin-height=&quot;1208&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이틀간의 Summit을 마치고, 앞으로 어떤 개발자로 성장해야 할지 다시 생각하게 되었다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>회고</category>
      <category>AWS</category>
      <author>jaeyoung-dev</author>
      <guid isPermaLink="true">https://jaeyoung-dev.tistory.com/2</guid>
      <comments>https://jaeyoung-dev.tistory.com/2#entry2comment</comments>
      <pubDate>Sat, 23 May 2026 19:55:08 +0900</pubDate>
    </item>
    <item>
      <title>리눅스는 어떻게 부팅될까? (EC2 로그로 따라가 보기)</title>
      <link>https://jaeyoung-dev.tistory.com/1</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;리눅스 부팅 과정을 공부하다 보면 다음과 같은 흐름을 보게 됩니다.&lt;/p&gt;
&lt;pre class=&quot;nginx&quot;&gt;&lt;code&gt;UEFI &amp;rarr; GRUB &amp;rarr; Kernel &amp;rarr; systemd&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;처음 이 흐름을 봤을 때는 각각의 단어가 무엇을 의미하는것인지 명확하지 않았습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;UEFI는 BIOS와 비슷한 것인가?&lt;/li&gt;
&lt;li&gt;GRUB는 왜 필요한가?&lt;/li&gt;
&lt;li&gt;Kernel은 언제 실행되는가?&lt;/li&gt;
&lt;li&gt;systemd는 서비스 관리 도구 아닌가?&lt;br /&gt;...&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서&lt;br /&gt;&lt;b&gt;AWS EC2에서 Amazon Linux 2023 인스턴스를 직접 실행하고&lt;br /&gt;실제 로그와 파일을 확인하면서 부팅 과정을 따라가 보기로 결정하였습니다.&lt;/b&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;실습 환경&lt;/h2&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;Cloud Provider : AWS EC2
OS             : Amazon Linux 2023
Instance Type  : t3.micro
Architecture   : x86_64
AMI            : al2023-ami-2023.11.20260514.0-kernel-6.1-x86_64
접속 방식       : SSH&lt;/code&gt;&lt;/pre&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;663&quot; data-origin-height=&quot;562&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nHU0Z/dJMcaipPz1T/X8wgCLsttUofeQmMwZgt30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nHU0Z/dJMcaipPz1T/X8wgCLsttUofeQmMwZgt30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nHU0Z/dJMcaipPz1T/X8wgCLsttUofeQmMwZgt30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnHU0Z%2FdJMcaipPz1T%2FX8wgCLsttUofeQmMwZgt30%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;663&quot; height=&quot;562&quot; data-origin-width=&quot;663&quot; data-origin-height=&quot;562&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 data-ke-size=&quot;size16&quot;&gt;이 실습 환경에서 &lt;code&gt;UEFI &amp;rarr; GRUB &amp;rarr; Kernel &amp;rarr; systemd&lt;/code&gt; 부팅 과정을 따라가 보겠습니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;UEFI&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;운영체제가 실행되기 전에 부팅에 필요한 초기화 작업을 수행하고,&lt;br /&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;UEFI(Unified Extensible Firmware Interface)&lt;/b&gt;로,&lt;br /&gt;UEFI는 컴퓨터 전원이 켜졌을 때 운영체제가 실행되기 전에 가장 먼저 동작합니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존에는 &lt;b&gt;BIOS(Basic Input/Output System)&lt;/b&gt;라는 전통적인 방식이 사용되었습니다.&lt;br /&gt;UEFI는 BIOS의 한계를 극복하기 위해 만들어진 후속 표준으로 볼 수 있습니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;EC2에서는 일반 PC처럼 부팅 화면을 직접 보는 것이 아니기 때문에,&lt;br /&gt;OS 내부에 남아 있는 흔적을 통해 UEFI 여부를 확인해야 합니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;/sys/firmware/efi&lt;/code&gt; 디렉터리의 존재 여부로 UEFI 여부를 확인할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;ls -lah /sys/firmware/efi&lt;/code&gt;&lt;/pre&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;758&quot; data-origin-height=&quot;316&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVuzZY/dJMcaiwzVoH/wtxzsUzg4u4GgPwTkBrAOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVuzZY/dJMcaiwzVoH/wtxzsUzg4u4GgPwTkBrAOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVuzZY/dJMcaiwzVoH/wtxzsUzg4u4GgPwTkBrAOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVuzZY%2FdJMcaiwzVoH%2FwtxzsUzg4u4GgPwTkBrAOK%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;758&quot; height=&quot;316&quot; data-origin-width=&quot;758&quot; data-origin-height=&quot;316&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 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;pre class=&quot;routeros&quot;&gt;&lt;code&gt;config_table     : UEFI configuration table 정보
efivars          : UEFI 변수들이 노출되는 위치
fw_platform_size : UEFI 펌웨어의 플랫폼 비트 수 정보
fw_vendor        : 펌웨어 벤더 정보
runtime          : UEFI runtime service 관련 정보
runtime-map      : UEFI runtime memory map
systab           : UEFI system table 정보&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;code&gt;/sys/firmware/efi&lt;/code&gt; 디렉터리가 존재한다는 것은&lt;br /&gt;&lt;b&gt;커널이 UEFI 환경에서 부팅되었음을 인식했다는 의미&lt;/b&gt;입니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;따라서 이 인스턴스는&lt;br /&gt;&lt;b&gt;Legacy BIOS 방식이 아니라 UEFI 방식으로 부팅되었다고 볼 수 있습니다.&lt;/b&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;GRUB&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UEFI 다음에는 부트로더가 동작합니다. 리눅스 환경에서 대표적인 부트로더가 &lt;b&gt;GRUB&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Amazon Linux 2023에서는 부팅에 필요한 파일들을 &lt;code&gt;/boot&lt;/code&gt; 아래에서 확인할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;ls -lah /boot&lt;/code&gt;&lt;/pre&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;874&quot; data-origin-height=&quot;269&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lso3B/dJMcagZOoAr/RYbCF6Ms9lRoUoqTAtpDB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lso3B/dJMcagZOoAr/RYbCF6Ms9lRoUoqTAtpDB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lso3B/dJMcagZOoAr/RYbCF6Ms9lRoUoqTAtpDB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flso3B%2FdJMcagZOoAr%2FRYbCF6Ms9lRoUoqTAtpDB1%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;874&quot; height=&quot;269&quot; data-origin-width=&quot;874&quot; data-origin-height=&quot;269&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;pre class=&quot;routeros&quot;&gt;&lt;code&gt;vmlinuz-*    : 리눅스 커널 이미지
initramfs-*  : 초기 RAM 파일시스템 이미지
grub2/       : GRUB 관련 파일
efi/         : EFI System Partition 마운트 위치
loader/      : 부팅 항목 관련 파일&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;/b&gt; : 컴퓨터의 전원이 켜진 뒤, 운영체제의 커널을 메모리에 적재하고 실행하는 프로그램&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UEFI 환경에서는 &lt;b&gt;EFI System Partition(ESP)&lt;/b&gt;이 중요합니다.&lt;br /&gt;&lt;br /&gt;Amazon Linux 2023 이미지에서는&lt;br /&gt;기본적으로 이 파티션이 &lt;code&gt;/boot/efi&lt;/code&gt;에 마운트되는 것으로 확인됩니다.&lt;br /&gt;즉, &lt;code&gt;/boot&lt;/code&gt;와 &lt;code&gt;/boot/efi&lt;/code&gt;는&lt;br /&gt;UEFI 이후 GRUB와 커널로 이어지는 부팅 흐름을 확인할 수 있는 중요한 위치입니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;EFI System Partition(ESP)&lt;/b&gt; : UEFI 기반 시스템에서 부팅에 필요한 파일들을 저장하는 전용 파티션으로, 부팅 과정에서 UEFI 펌웨어가 참조하는 파티션에 해당&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;ls -lah /boot/efi&lt;/code&gt;&lt;/pre&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;465&quot; data-origin-height=&quot;171&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kA24z/dJMcagS5Rn3/shY0pL2pjN4sOT8kZ9i7G1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kA24z/dJMcagS5Rn3/shY0pL2pjN4sOT8kZ9i7G1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kA24z/dJMcagS5Rn3/shY0pL2pjN4sOT8kZ9i7G1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkA24z%2FdJMcagS5Rn3%2FshY0pL2pjN4sOT8kZ9i7G1%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;465&quot; height=&quot;171&quot; data-origin-width=&quot;465&quot; data-origin-height=&quot;171&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;485&quot; data-origin-height=&quot;171&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c1k2g5/dJMcafmmkl5/RJq7KIbPkJKWKwAbX3NrRk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c1k2g5/dJMcafmmkl5/RJq7KIbPkJKWKwAbX3NrRk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c1k2g5/dJMcafmmkl5/RJq7KIbPkJKWKwAbX3NrRk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc1k2g5%2FdJMcafmmkl5%2FRJq7KIbPkJKWKwAbX3NrRk%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;485&quot; height=&quot;171&quot; data-origin-width=&quot;485&quot; data-origin-height=&quot;171&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GRUB 설정은 &lt;code&gt;/boot/grub2&lt;/code&gt;에서 확인할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;ls -lah /boot/grub2&lt;/code&gt;&lt;/pre&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;483&quot; data-origin-height=&quot;245&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DxGyK/dJMcahkcak0/eSWSbH3oFfYtKl56K1sHg1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DxGyK/dJMcahkcak0/eSWSbH3oFfYtKl56K1sHg1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DxGyK/dJMcahkcak0/eSWSbH3oFfYtKl56K1sHg1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDxGyK%2FdJMcahkcak0%2FeSWSbH3oFfYtKl56K1sHg1%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;483&quot; height=&quot;245&quot; data-origin-width=&quot;483&quot; data-origin-height=&quot;245&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 data-ke-size=&quot;size16&quot;&gt;다음으로 확인할 파일은 &lt;code&gt;/proc/cmdline&lt;/code&gt;입니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;/proc/cmdline&lt;/code&gt;은 현재 실행 중인 커널이&lt;br /&gt;부팅 시 전달받은 command line 파라미터를 보여주는 가상 파일입니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;즉, GRUB가 커널을 실행하면서 넘긴 옵션들이&lt;br /&gt;최종적으로 커널에 어떻게 전달되었는지 확인할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;armasm&quot;&gt;&lt;code&gt;cat /proc/cmdline&lt;/code&gt;&lt;/pre&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;479&quot; data-origin-height=&quot;114&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cLjvmQ/dJMcahqWB41/lijrV2rYhqOj3xgldIMxnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cLjvmQ/dJMcahqWB41/lijrV2rYhqOj3xgldIMxnK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cLjvmQ/dJMcahqWB41/lijrV2rYhqOj3xgldIMxnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcLjvmQ%2FdJMcahqWB41%2FlijrV2rYhqOj3xgldIMxnK%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;479&quot; height=&quot;114&quot; data-origin-width=&quot;479&quot; data-origin-height=&quot;114&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 data-ke-size=&quot;size16&quot;&gt;다음과 같은 옵션을 볼 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;BOOT_IMAGE=(hd0,gpt1)/boot/vmlinuz-6.1.170-213.321.amzn2023.x86_64
root=UUID=afcd3653-4916-4996-a80d-b02b83e8be92
console=tty0
console=ttyS0,115200n8
nvme_core.io_timeout=4294967295
rd.emergency=poweroff
rd.shell=0
selinux=1
security=selinux&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;이 결과를 통해 GRUB가 커널을 실행하면서 &lt;code&gt;BOOT_IMAGE&lt;/code&gt;, &lt;code&gt;root&lt;/code&gt;, &lt;code&gt;console&lt;/code&gt;, &lt;code&gt;selinux&lt;/code&gt;&lt;br /&gt;같은 부팅 옵션을 함께 전달했다는 흐름을 확인할 수 있습니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Kernel&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GRUB가 커널을 실행하면 이제 &lt;b&gt;Linux Kernel&lt;/b&gt; 단계로 넘어갑니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;커널 버전은 다음 명령어로 확인할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;ebnf&quot;&gt;&lt;code&gt;uname -r&lt;/code&gt;&lt;/pre&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;344&quot; data-origin-height=&quot;103&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNt8a2/dJMcahqWB43/PGmkhycmRP5k5lOKKHChKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNt8a2/dJMcahqWB43/PGmkhycmRP5k5lOKKHChKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNt8a2/dJMcahqWB43/PGmkhycmRP5k5lOKKHChKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNt8a2%2FdJMcahqWB43%2FPGmkhycmRP5k5lOKKHChKK%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;344&quot; height=&quot;103&quot; data-origin-width=&quot;344&quot; data-origin-height=&quot;103&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 data-ke-size=&quot;size16&quot;&gt;사실 이 정보는 AMI 이름에서도 미리 확인할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;AMI : al2023-ami-2023.11.20260514.0-kernel-6.1-x86_64&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;커널은 부팅 과정에서 CPU, 메모리, 디스크, 네트워크 장치, 파일시스템 등을 초기화합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;커널 로그는 &lt;code&gt;dmesg&lt;/code&gt;로 확인할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;1c&quot;&gt;&lt;code&gt;sudo dmesg | head -n 80&lt;/code&gt;&lt;/pre&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;596&quot; data-origin-height=&quot;579&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Np3F5/dJMb990K7f9/9cyEKkOXeuAOYBBCViFEjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Np3F5/dJMb990K7f9/9cyEKkOXeuAOYBBCViFEjk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Np3F5/dJMb990K7f9/9cyEKkOXeuAOYBBCViFEjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNp3F5%2FdJMb990K7f9%2F9cyEKkOXeuAOYBBCViFEjk%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;596&quot; height=&quot;579&quot; data-origin-width=&quot;596&quot; data-origin-height=&quot;579&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 data-ke-size=&quot;size16&quot;&gt;조금 더 보기 쉽게 필터링하면,&lt;/p&gt;
&lt;pre class=&quot;gherkin&quot;&gt;&lt;code&gt;sudo dmesg | grep -Ei &quot;Linux version|Command line|EFI|ACPI|NVMe|ENA|XFS|EXT4|systemd&quot; | head -n 100&lt;/code&gt;&lt;/pre&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;502&quot; data-origin-height=&quot;877&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/D78ak/dJMcaaehqny/g9FyviKKwks4U7cgRoSTn1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/D78ak/dJMcaaehqny/g9FyviKKwks4U7cgRoSTn1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/D78ak/dJMcaaehqny/g9FyviKKwks4U7cgRoSTn1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FD78ak%2FdJMcaaehqny%2Fg9FyviKKwks4U7cgRoSTn1%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;502&quot; height=&quot;877&quot; data-origin-width=&quot;502&quot; data-origin-height=&quot;877&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 data-ke-size=&quot;size16&quot;&gt;일부만 캡처한 결과이며,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;밑에서 두 번째 줄의 &lt;code&gt;Command line&lt;/code&gt; 에서 앞서 &lt;code&gt;/proc/cmdline&lt;/code&gt;에서 확인했던&lt;br /&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;/p&gt;
&lt;pre class=&quot;ada&quot;&gt;&lt;code&gt;Linux version : 실제 실행된 커널 버전
Command line  : 커널이 받은 부팅 파라미터
EFI           : UEFI 관련 흔적
NVMe          : EC2 루트 볼륨이 NVMe 장치로 인식된 흔적
ENA           : EC2 네트워크 드라이버 관련 흔적
XFS 또는 EXT4 : 파일시스템 마운트 관련 흔적
systemd       : 커널 이후 사용자 공간으로 넘어가는 흔적&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;GRUB가 커널을 실행하고 부팅 파라미터를 넘기면,&lt;br /&gt;커널은 해당 정보를 바탕으로 시스템을 초기화합니다.&lt;br /&gt;그리고 이 과정의 흔적은 &lt;code&gt;dmesg&lt;/code&gt; 로그에서 확인할 수 있습니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;systemd&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;커널이 기본적인 초기화를 마치면 사용자 공간의 첫 번째 프로세스를 실행합니다.&lt;br /&gt;이 역할을 &lt;b&gt;systemd&lt;/b&gt;가 담당합니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PID 1 프로세스를 확인해보면 다음과 같습니다.&lt;/p&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;ps -p 1 -o pid,comm,args&lt;/code&gt;&lt;/pre&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;842&quot; data-origin-height=&quot;138&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mKMl3/dJMcaaL4Cpx/jb3n3bP4Ua0tsBHKGXot51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mKMl3/dJMcaaL4Cpx/jb3n3bP4Ua0tsBHKGXot51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mKMl3/dJMcaaL4Cpx/jb3n3bP4Ua0tsBHKGXot51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmKMl3%2FdJMcaaL4Cpx%2Fjb3n3bP4Ua0tsBHKGXot51%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;842&quot; height=&quot;138&quot; data-origin-width=&quot;842&quot; data-origin-height=&quot;138&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 data-ke-size=&quot;size16&quot;&gt;결과를 통해 커널 이후 systemd가 사용자 공간 초기화를 담당하고 있음을 확인할 수 있으며,&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;부팅 로그도 확인할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;mipsasm&quot;&gt;&lt;code&gt;journalctl -b --no-pager | head -n 100&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;code&gt;journalctl -b&lt;/code&gt;는 이번 부팅에서 systemd-journal에 기록된 로그를 보여줍니다.&lt;br /&gt;여기에는 systemd 서비스 로그뿐만 아니라 커널에서 넘어온 초기 부팅 메시지도 함께 포함될 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;891&quot; data-origin-height=&quot;318&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Wn1eR/dJMcajoEg8s/fJHKm6rRJ8okhHEKKihmrk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Wn1eR/dJMcajoEg8s/fJHKm6rRJ8okhHEKKihmrk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Wn1eR/dJMcajoEg8s/fJHKm6rRJ8okhHEKKihmrk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWn1eR%2FdJMcajoEg8s%2FfJHKm6rRJ8okhHEKKihmrk%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;891&quot; height=&quot;318&quot; data-origin-width=&quot;891&quot; data-origin-height=&quot;318&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 data-ke-size=&quot;size16&quot;&gt;systemd가 부팅에 사용한 시간도 확인할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;ebnf&quot;&gt;&lt;code&gt;systemd-analyze&lt;/code&gt;&lt;/pre&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;1096&quot; data-origin-height=&quot;111&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OF5nh/dJMcacwoM3H/P6VvBe5rwaOAr5OyDX8pnk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OF5nh/dJMcacwoM3H/P6VvBe5rwaOAr5OyDX8pnk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OF5nh/dJMcacwoM3H/P6VvBe5rwaOAr5OyDX8pnk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOF5nh%2FdJMcacwoM3H%2FP6VvBe5rwaOAr5OyDX8pnk%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;1096&quot; height=&quot;111&quot; data-origin-width=&quot;1096&quot; data-origin-height=&quot;111&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 data-ke-size=&quot;size16&quot;&gt;마지막으로 SSH 서비스 상태를 확인해보면,&lt;/p&gt;
&lt;pre class=&quot;lua&quot;&gt;&lt;code&gt;systemctl status sshd --no-pager&lt;/code&gt;&lt;/pre&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;1114&quot; data-origin-height=&quot;323&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cEgKux/dJMcafNr1mc/tqQd7o4CbK3pjmVIBlMCU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cEgKux/dJMcafNr1mc/tqQd7o4CbK3pjmVIBlMCU1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cEgKux/dJMcafNr1mc/tqQd7o4CbK3pjmVIBlMCU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcEgKux%2FdJMcafNr1mc%2FtqQd7o4CbK3pjmVIBlMCU1%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;1114&quot; height=&quot;323&quot; data-origin-width=&quot;1114&quot; data-origin-height=&quot;323&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 data-ke-size=&quot;size16&quot;&gt;systemd가 사용자 공간 초기화를 진행한 뒤 SSH 서비스까지 정상적으로 올렸다는 것을 확인할 수 있습니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;정리&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금까지 &lt;b&gt;Amazon Linux 2023 EC2 인스턴스&lt;/b&gt;에서 &lt;b&gt;리눅스 부팅과정&lt;/b&gt;을 따라가 보았습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;code&gt;/sys/firmware/efi&lt;/code&gt;를 통해 UEFI 방식으로 부팅되었음을 확인했고,&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/boot&lt;/code&gt;와 &lt;code&gt;/proc/cmdline&lt;/code&gt;을 통해 GRUB가 커널을 실행하면서 전달한 부팅 파라미터를 확인했습니다.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dmesg&lt;/code&gt;를 통해 커널이 디스크, 네트워크, 파일시스템 등을 초기화하는 과정을 확인했고,&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ps -p 1&lt;/code&gt;, &lt;code&gt;journalctl&lt;/code&gt;, &lt;code&gt;systemd-analyze&lt;/code&gt;, &lt;code&gt;systemctl status sshd&lt;/code&gt;를 통해 systemd가 사용자 공간의 첫 번째 프로세스로 실행되었고, SSH 서비스까지 올라간 흐름을 확인했습니다.&lt;/li&gt;
&lt;/ol&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;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/qnUcD/dJMb990K7LH/h4GO5lnZBskkr6HdyGlmo0/amazon-linux-boot-capture.mov?attach=1&amp;amp;knm=tfile.mov&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;amazon-linux-boot-capture.mov&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;1.7 MB&lt;/div&gt;
&lt;/div&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 data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;참고자료&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.ibm.com/kr-ko/think/topics/firmware&quot;&gt;https://www.ibm.com/kr-ko/think/topics/firmware&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://uefi.org/specifications&quot;&gt;https://uefi.org/specifications&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://uefi.org/sites/default/files/resources/UEFI_PI_Spec_Final_Draft_1.9.pdf&quot;&gt;https://uefi.org/sites/default/files/resources/UEFI_PI_Spec_Final_Draft_1.9.pdf&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.gnu.org/&quot;&gt;https://www.gnu.org/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.aws.amazon.com/linux/al2023/ug/journald.html&quot;&gt;https://docs.aws.amazon.com/linux/al2023/ug/journald.html&lt;/a&gt;&lt;/p&gt;</description>
      <category>Why?</category>
      <category>AWS</category>
      <category>EC2</category>
      <category>Linux</category>
      <author>jaeyoung-dev</author>
      <guid isPermaLink="true">https://jaeyoung-dev.tistory.com/1</guid>
      <comments>https://jaeyoung-dev.tistory.com/1#entry1comment</comments>
      <pubDate>Mon, 18 May 2026 01:21:40 +0900</pubDate>
    </item>
  </channel>
</rss>