<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>똥선생의 네트워크 기술노트</title>
    <link>https://kujung.tistory.com/</link>
    <description>IT/네트워크 전문 블로그</description>
    <language>ko</language>
    <pubDate>Sun, 5 Apr 2026 07:44:09 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>똥선생</managingEditor>
    <image>
      <title>똥선생의 네트워크 기술노트</title>
      <url>https://tistory1.daumcdn.net/tistory/2793604/attach/572e4c14bb994af1811fd704b3d1e23a</url>
      <link>https://kujung.tistory.com</link>
    </image>
    <item>
      <title>Route Map과 PBR (Policy-Based Routing) 이란</title>
      <link>https://kujung.tistory.com/entry/Route-Map%EA%B3%BC-PBR-Policy-Based-Routing-%EC%9D%B4%EB%9E%80</link>
      <description>&lt;h2 data-end=&quot;119&quot; data-start=&quot;104&quot; data-ke-size=&quot;size26&quot;&gt;1. Route Map&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;536&quot; data-start=&quot;120&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;171&quot; data-start=&quot;120&quot;&gt;Cisco IOS, Juniper 등 라우터에서 제공하는 &lt;b&gt;정책 기반 설정 도구&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;219&quot; data-start=&quot;172&quot;&gt;Access-list와 비슷하게 match 조건과 set 동작으로 이루어짐&lt;/li&gt;
&lt;li data-end=&quot;219&quot; data-start=&quot;172&quot;&gt;라우팅 테이블 처리보다 먼저 이루어짐.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;372&quot; data-start=&quot;369&quot; data-ke-size=&quot;size16&quot;&gt;구조:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1756016050625&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;route-map my_route_map permit 10
    { match statements }
    { match statements }
    { set statements }
route-map my_route_map deny 20
route-map my_route_map permit 30
# match 조건을 따로 작성하지 않을 경우에는 match any가 적용된다.
# route-map의 마지막에는 deny any가 생략 되있다.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&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 data-end=&quot;478&quot; data-start=&quot;447&quot;&gt;match: 어떤 패킷/라우트가 대상인지 정의&lt;/li&gt;
&lt;li data-end=&quot;536&quot; data-start=&quot;481&quot;&gt;set: 매칭되면 어떤 동작을 할지 지정 (next-hop 변경, metric 변경 등) (설정 수정을 하는 작업이다, permit에서만 사용)&lt;/li&gt;
&lt;li data-end=&quot;536&quot; data-start=&quot;481&quot;&gt;match &amp;lt;조건&amp;gt; &amp;lt;조건&amp;gt; &amp;lt;조건&amp;gt; 일 경우 or 연산이고&lt;/li&gt;
&lt;li data-end=&quot;536&quot; data-start=&quot;481&quot;&gt;match &amp;lt;조건&amp;gt;&lt;/li&gt;
&lt;li data-end=&quot;536&quot; data-start=&quot;481&quot;&gt;match &amp;lt;조건&amp;gt;&lt;/li&gt;
&lt;li data-end=&quot;536&quot; data-start=&quot;481&quot;&gt;match &amp;lt;조건&amp;gt; 일 경우 and 연산이다.&lt;/li&gt;
&lt;li data-end=&quot;536&quot; data-start=&quot;481&quot;&gt;match &amp;lt;조건&amp;gt;에 적용되는 것들을 set &amp;lt;동작&amp;gt; 하고 permit 한다.&lt;/li&gt;
&lt;li data-end=&quot;536&quot; data-start=&quot;481&quot;&gt;seq number 순서대로 정책 적용이 된다.&lt;/li&gt;
&lt;li data-end=&quot;536&quot; data-start=&quot;481&quot;&gt;패킷을 필터링 하는것은 하드웨어로 처리가 되지만,&lt;/li&gt;
&lt;li data-end=&quot;536&quot; data-start=&quot;481&quot;&gt;route-map은 네트웍을 필터링 하는 것이기 때문에 소프트웨어 적으로 필터링 된다.&lt;/li&gt;
&lt;li data-end=&quot;536&quot; data-start=&quot;481&quot;&gt;이름이 같으면 다 같은 route map이다.&lt;/li&gt;
&lt;li data-end=&quot;536&quot; data-start=&quot;481&quot;&gt;route-map의 마지막에는 ACL과 같이 deny any가 생략 되있다.&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;h2 style=&quot;color: #000000; text-align: start;&quot; data-start=&quot;104&quot; data-end=&quot;119&quot; data-ke-size=&quot;size26&quot;&gt;Route Map 사용처 3가지&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;1.Redistribution route filtering&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- route-map을 통해 Route filetering과 modify가 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- OSPF ~ BGP간등에 redistribution 할때, 특정네트웍을 filtering 한다던지 modify할 수 있다.&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;2.PBR (Policy-Based Routing)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- route 경로를 변경 한다던지 Null0로 가게 만들어 드랍 시킬 수 있다.&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;3.BGP&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- BGP는 Bestpath를 선출하기 위한 조건은 다양한 값들을 사용한다.(bandwidth x)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 업데이트를 주거나 받을때 조건들을 변경해서 주어야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 그 때 route map이 자주 사용된다.&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;h2 data-end=&quot;575&quot; data-start=&quot;543&quot; data-ke-size=&quot;size26&quot;&gt;2. PBR (Policy-Based Routing)&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;879&quot; data-start=&quot;576&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;631&quot; data-start=&quot;576&quot;&gt;기본 라우팅은 &lt;b&gt;라우팅 테이블(RIB)&lt;/b&gt; 만 참고해서 목적지 IP 기반으로 경로를 결정.&lt;/li&gt;
&lt;li data-end=&quot;631&quot; data-start=&quot;576&quot;&gt;무조건 인바운드 쪽에서 적용해야 한다.&lt;/li&gt;
&lt;li data-end=&quot;700&quot; data-start=&quot;632&quot;&gt;하지만 &lt;b&gt;PBR은 관리자 정책에 따라 목적지 이외의 조건&lt;/b&gt;(출발지, 프로토콜, 포트, ACL 등)으로 라우팅 가능.&lt;/li&gt;
&lt;li data-end=&quot;769&quot; data-start=&quot;701&quot;&gt;예시:
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;769&quot; data-start=&quot;709&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;739&quot; data-start=&quot;709&quot;&gt;특정 VLAN에서 오는 트래픽은 인터넷 회선 A로,&lt;/li&gt;
&lt;li data-end=&quot;769&quot; data-start=&quot;742&quot;&gt;다른 VLAN은 인터넷 회선 B로 보내는 경우&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;879&quot; data-start=&quot;770&quot;&gt;구현 방식:
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;879&quot; data-start=&quot;783&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;824&quot; data-start=&quot;783&quot;&gt;PBR을 적용할 인터페이스에 &lt;b&gt;route-map&lt;/b&gt;을 붙여서 동작시킴&lt;/li&gt;
&lt;li data-end=&quot;879&quot; data-start=&quot;827&quot;&gt;set ip next-hop 또는 set interface 같은 동작으로 경로 지정&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;route map 안에 있는 ACL은 network 필터링을 하는데, PBR에 사용되는 ACL은 패킷 필터링이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-end=&quot;894&quot; data-start=&quot;886&quot; data-ke-size=&quot;size26&quot;&gt;관계&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1013&quot; data-start=&quot;895&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;928&quot; data-start=&quot;895&quot;&gt;&lt;b&gt;PBR은 route-map을 이용해서 구현&lt;/b&gt;됨.&lt;/li&gt;
&lt;li data-end=&quot;1013&quot; data-start=&quot;929&quot;&gt;즉,
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1013&quot; data-start=&quot;936&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;966&quot; data-start=&quot;936&quot;&gt;Route map 자체는 &lt;b&gt;정책 정의 도구&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;1013&quot; data-start=&quot;969&quot;&gt;PBR은 그 도구를 활용해 &lt;b&gt;트래픽 라우팅 정책을 실제로 적용하는 기능&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&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;&lt;b&gt;예시&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1756014513385&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;! ACL로 트래픽 정의 (예: 192.168.1.0/24에서 오는 트래픽)
access-list 101 permit ip 192.168.1.0 0.0.0.255 any

! route-map 작성
route-map PBR-TEST permit 10
 match ip address 101
 set ip next-hop 10.10.10.1   ! 특정 게이트웨이로 보냄

! 인터페이스에 적용
interface GigabitEthernet0/0
 ip policy route-map PBR-TEST&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;이렇게 하면 192.168.1.0/24 대역에서 나오는 트래픽은&lt;br /&gt;라우팅 테이블을 보지 않고 무조건 &lt;b&gt;10.10.10.1&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;h2 data-end=&quot;107&quot; data-start=&quot;79&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;이중 회선(dual ISP) 환경&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;344&quot; data-start=&quot;108&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;152&quot; data-start=&quot;108&quot;&gt;기업에서 &lt;b&gt;인터넷 회선 두 개(예: KT, SKB)&lt;/b&gt; 를 사용한다고 가정&lt;/li&gt;
&lt;li data-end=&quot;231&quot; data-start=&quot;153&quot;&gt;일반적으로 라우팅 테이블은 &lt;b&gt;라우팅 프로토콜 or Static&lt;/b&gt; 기반으로 &lt;b&gt;하나의 기본 경로(default route)&lt;/b&gt; 만 선택&lt;/li&gt;
&lt;li data-end=&quot;344&quot; data-start=&quot;232&quot;&gt;하지만 PBR을 쓰면:
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;344&quot; data-start=&quot;249&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;273&quot; data-start=&quot;249&quot;&gt;&lt;b&gt;일반 사용자 트래픽&lt;/b&gt; &amp;rarr; KT 회선&lt;/li&gt;
&lt;li data-end=&quot;309&quot; data-start=&quot;276&quot;&gt;&lt;b&gt;서버 트래픽(예: DMZ 웹서버)&lt;/b&gt; &amp;rarr; SKB 회선&lt;/li&gt;
&lt;li data-end=&quot;344&quot; data-start=&quot;312&quot;&gt;이렇게 출발지 네트워크별로 다른 ISP로 보낼 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;529&quot; data-start=&quot;509&quot; data-ke-size=&quot;size26&quot;&gt;PBR을 지양해야 하는 경우&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;952&quot; data-start=&quot;530&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;675&quot; data-start=&quot;530&quot;&gt;&lt;b&gt;라우팅 프로토콜로 해결 가능한 경우&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;675&quot; data-start=&quot;562&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;634&quot; data-start=&quot;562&quot;&gt;OSPF area, BGP local-pref/AS-path-prepend, metric 조정으로 가능하면 그게 더 안정적&lt;/li&gt;
&lt;li data-end=&quot;675&quot; data-start=&quot;638&quot;&gt;Control plane에서 조정하는 게 운영/확장성에 유리&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;836&quot; data-start=&quot;677&quot;&gt;&lt;b&gt;규모가 큰 환경(대규모 ISP/데이터센터)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;836&quot; data-start=&quot;713&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;764&quot; data-start=&quot;713&quot;&gt;수백~수천 개 정책을 PBR로 처리하면 &lt;b&gt;성능 저하&lt;/b&gt; + &lt;b&gt;관리 복잡성 폭발&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;836&quot; data-start=&quot;768&quot;&gt;일부 장비는 PBR이 FIB에 하드웨어 처리 안 되고 &lt;b&gt;소프트웨어 처리(CEF bypass)&lt;/b&gt; &amp;rarr; CPU 부하&amp;uarr;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;952&quot; data-start=&quot;838&quot;&gt;&lt;b&gt;장애 분석 시&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;952&quot; data-start=&quot;858&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;925&quot; data-start=&quot;858&quot;&gt;라우팅 테이블 보고 정상인데, 실제 트래픽이 안 가는 경우 &amp;rarr; 알고 보니 PBR 때문에 경로가 바뀌는 경우가 많음&lt;/li&gt;
&lt;li data-end=&quot;952&quot; data-start=&quot;929&quot;&gt;즉, &lt;b&gt;트러블슈팅 난이도 상승&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>네트워크/Layer3</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/181</guid>
      <comments>https://kujung.tistory.com/entry/Route-Map%EA%B3%BC-PBR-Policy-Based-Routing-%EC%9D%B4%EB%9E%80#entry181comment</comments>
      <pubDate>Sun, 24 Aug 2025 17:10:49 +0900</pubDate>
    </item>
    <item>
      <title>IPsec VPN 알아보기#2 주요 보안 기능과 동작 흐름</title>
      <link>https://kujung.tistory.com/entry/IPsec-VPN-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B02-%EC%A3%BC%EC%9A%94-%EB%B3%B4%EC%95%88-%EA%B8%B0%EB%8A%A5%EA%B3%BC-%EB%8F%99%EC%9E%91-%ED%9D%90%EB%A6%84</link>
      <description>&lt;p data-end=&quot;48&quot; data-start=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;IPSec(IP Security)에서는 &lt;b&gt;두 가지 주요 보안 기능&lt;/b&gt;이 적용돼요:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;128&quot; data-start=&quot;50&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;94&quot; data-start=&quot;50&quot;&gt;&lt;b&gt;무결성/인증&lt;/b&gt; (데이터가 변조되지 않았는지, 발신자가 맞는지 확인)&lt;/li&gt;
&lt;li data-end=&quot;128&quot; data-start=&quot;95&quot;&gt;&lt;b&gt;암호화&lt;/b&gt; (데이터를 제3자가 읽지 못하게 보호)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;166&quot; data-start=&quot;130&quot; data-ke-size=&quot;size16&quot;&gt;여기에 사용되는 암호화 방식은 크게 세 가지로 나눌 수 있습니다:&lt;/p&gt;
&lt;hr data-end=&quot;171&quot; data-start=&quot;168&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;211&quot; data-start=&quot;173&quot; data-ke-size=&quot;size23&quot;&gt;1. 대칭키 암호화 (Confidentiality - 기밀성)&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;497&quot; data-origin-height=&quot;304&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/duT57T/btsP0ZCY5Bn/6UY0OCPCKDA8mf0daGC9RK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/duT57T/btsP0ZCY5Bn/6UY0OCPCKDA8mf0daGC9RK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/duT57T/btsP0ZCY5Bn/6UY0OCPCKDA8mf0daGC9RK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FduT57T%2FbtsP0ZCY5Bn%2F6UY0OCPCKDA8mf0daGC9RK%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;497&quot; height=&quot;304&quot; data-origin-width=&quot;497&quot; data-origin-height=&quot;304&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;260&quot; data-start=&quot;212&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;데이터를 암호화할 때 &lt;b&gt;속도가 빠른 블록 암호/스트림 암호&lt;/b&gt;를 주로 사용합니다.&lt;/p&gt;
&lt;p data-end=&quot;260&quot; data-start=&quot;212&quot; data-ke-size=&quot;size16&quot;&gt;암호화와 복호화에 사용되는 키가 같습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;444&quot; data-start=&quot;261&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;292&quot; data-start=&quot;261&quot;&gt;&lt;b&gt;DES&lt;/b&gt; (과거 사용, 현재는 보안에 취약)&lt;/li&gt;
&lt;li data-end=&quot;340&quot; data-start=&quot;293&quot;&gt;&lt;b&gt;3DES&lt;/b&gt; (DES를 3번 적용, 오래됐지만 일부 레거시 환경에서 사용)&lt;/li&gt;
&lt;li data-end=&quot;406&quot; data-start=&quot;341&quot;&gt;&lt;b&gt;AES&lt;/b&gt; (가장 많이 사용됨, 128/192/256bit 키 길이 지원 &amp;rarr; IPSec 표준 암호화 방식)&lt;/li&gt;
&lt;li data-end=&quot;444&quot; data-start=&quot;407&quot;&gt;&lt;b&gt;ChaCha20&lt;/b&gt; (일부 환경에서 AES 대체로 사용)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;449&quot; data-start=&quot;446&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;499&quot; data-start=&quot;451&quot; data-ke-size=&quot;size23&quot;&gt;2. 해시 기반 무결성 검증 (Integrity &amp;amp; Authentication)&lt;/h3&gt;
&lt;p data-end=&quot;577&quot; data-start=&quot;500&quot; data-ke-size=&quot;size16&quot;&gt;데이터 변조 여부를 확인하기 위해 HMAC(Hash-based Message Authentication Code)를 사용합니다.&lt;/p&gt;
&lt;p data-end=&quot;577&quot; data-start=&quot;500&quot; data-ke-size=&quot;size16&quot;&gt;본래 해시라는 것은 대용량 데이터를 다운받고 무결성을 체크하는 용도로 사용됨.&lt;/p&gt;
&lt;p data-end=&quot;577&quot; data-start=&quot;500&quot; data-ke-size=&quot;size16&quot;&gt;데이터에다 뒤에 키값까지 붙여서 해시를 하는 개념을 만듬.&lt;/p&gt;
&lt;p data-end=&quot;577&quot; data-start=&quot;500&quot; data-ke-size=&quot;size16&quot;&gt;키값을 알아야 무결성이 정상체크 되기 때문에 변복조에 안전하게됨.&lt;/p&gt;
&lt;p data-end=&quot;577&quot; data-start=&quot;500&quot; data-ke-size=&quot;size16&quot;&gt;무결성과 패킷에 대한 인증이 같이 이루어짐.&lt;/p&gt;
&lt;p data-end=&quot;577&quot; data-start=&quot;500&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;715&quot; data-start=&quot;578&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;616&quot; data-start=&quot;578&quot;&gt;&lt;b&gt;HMAC-MD5&lt;/b&gt; (128비트, 현재는 보안상 권장 X)&lt;/li&gt;
&lt;li data-end=&quot;653&quot; data-start=&quot;617&quot;&gt;&lt;b&gt;HMAC-SHA1&lt;/b&gt; (160비트, 점점 사용 줄어듦)&lt;/li&gt;
&lt;li data-end=&quot;715&quot; data-start=&quot;654&quot;&gt;&lt;b&gt;HMAC-SHA2 (SHA-256, SHA-384, SHA-512)&lt;/b&gt; &amp;rarr; 현재 가장 권장되는 방식&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;720&quot; data-start=&quot;717&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;770&quot; data-start=&quot;722&quot; data-ke-size=&quot;size23&quot;&gt;3. 키 교환 및 인증 (Key Exchange &amp;amp; Authentication)&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;486&quot; data-origin-height=&quot;385&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blcrjc/btsP0uwEa9U/5pDQKW44c7TnkqqRhSUxNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blcrjc/btsP0uwEa9U/5pDQKW44c7TnkqqRhSUxNK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blcrjc/btsP0uwEa9U/5pDQKW44c7TnkqqRhSUxNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fblcrjc%2FbtsP0uwEa9U%2F5pDQKW44c7TnkqqRhSUxNK%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;486&quot; height=&quot;385&quot; data-origin-width=&quot;486&quot; data-origin-height=&quot;385&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;822&quot; data-start=&quot;771&quot; data-ke-size=&quot;size16&quot;&gt;세션 키를 안전하게 교환하기 위해 &lt;b&gt;비대칭키 암호화/디피-헬만 키 교환&lt;/b&gt;이 쓰입니다.&lt;/p&gt;
&lt;p data-end=&quot;822&quot; data-start=&quot;771&quot; data-ke-size=&quot;size16&quot;&gt;1.한쪽에서 공개키, 사설키를 생성하고 공개키를 다른쪽에 제공합니다.&lt;/p&gt;
&lt;p data-end=&quot;822&quot; data-start=&quot;771&quot; data-ke-size=&quot;size16&quot;&gt;2.위 그림,사설키로 데이터를 암호화하여 공개키로 복호화 하는 방식은 주로 인증을 위해 사용합니다.&lt;/p&gt;
&lt;p data-end=&quot;822&quot; data-start=&quot;771&quot; data-ke-size=&quot;size16&quot;&gt;(해커가 공개키를 제공 받아 데이터를 복호화 할 위험이 있기 때문)&lt;/p&gt;
&lt;p data-end=&quot;822&quot; data-start=&quot;771&quot; data-ke-size=&quot;size16&quot;&gt;3.&lt;span style=&quot;background-color: #99cefa;&quot;&gt;실제 데이터 전송 암호화&lt;/span&gt;를 위해서는 공개키로 데이터를 암호화 하고 사설키로 복호화 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;460&quot; data-origin-height=&quot;388&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cFLxJX/btsPZ5jCyjX/DtYkN3OspCtLjtoOXUOUfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cFLxJX/btsPZ5jCyjX/DtYkN3OspCtLjtoOXUOUfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cFLxJX/btsPZ5jCyjX/DtYkN3OspCtLjtoOXUOUfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcFLxJX%2FbtsPZ5jCyjX%2FDtYkN3OspCtLjtoOXUOUfK%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;460&quot; height=&quot;388&quot; data-origin-width=&quot;460&quot; data-origin-height=&quot;388&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;974&quot; data-start=&quot;823&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;872&quot; data-start=&quot;823&quot;&gt;&lt;b&gt;Diffie-Hellman (DH group 1~31 등급)&lt;/b&gt; &amp;rarr; 키 교환용&lt;/li&gt;
&lt;li data-end=&quot;904&quot; data-start=&quot;873&quot;&gt;&lt;b&gt;RSA / ECDSA&lt;/b&gt; &amp;rarr; 인증서 기반 인증&lt;/li&gt;
&lt;li data-end=&quot;974&quot; data-start=&quot;905&quot;&gt;&lt;b&gt;IKEv2에서 ECDH(Elliptic Curve Diffie-Hellman)&lt;/b&gt; 많이 사용 (보안성과 효율성&amp;uarr;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-start=&quot;981&quot; data-end=&quot;991&quot; 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; data-start=&quot;992&quot; data-end=&quot;1126&quot;&gt;
&lt;li data-start=&quot;1030&quot; data-end=&quot;1082&quot;&gt;&lt;b&gt;무결성 검증&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;rarr; HMAC-SHA2 (과거: HMAC-MD5, HMAC-SHA1)&lt;/li&gt;
&lt;li data-start=&quot;1030&quot; data-end=&quot;1082&quot;&gt;&lt;b&gt;데이터 암호화&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;rarr; AES, 3DES (과거: DES)&lt;/li&gt;
&lt;li data-start=&quot;1083&quot; data-end=&quot;1126&quot;&gt;&lt;b&gt;키 교환/인증&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;rarr; Diffie-Hellman, RSA, ECDH&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;979&quot; data-start=&quot;976&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;991&quot; data-start=&quot;981&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-end=&quot;991&quot; data-start=&quot;981&quot; data-ke-size=&quot;size26&quot;&gt;IPSec 동작 흐름&amp;nbsp;&lt;/h2&gt;
&lt;p data-end=&quot;183&quot; data-start=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;IKE(Internet Key Exchange)&lt;/b&gt; 는 IPSec에서 &lt;b&gt;암호화/인증을 하기 전에, 두 장비가 서로 약속(협상)하고 세션 키를 안전하게 교환하는 프로토콜&lt;/b&gt;이에요.&lt;br /&gt;쉽게 말하면 &lt;b&gt;&amp;ldquo;IPSec 통신을 시작하기 전에 보안 규칙을 정하고 열쇠를 맞추는 절차&amp;rdquo;&lt;/b&gt; 라고 보면 돼요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;369&quot; data-origin-height=&quot;558&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWnvil/btsP2uicQwf/LXEzaLD0fAVK3IOiURlj2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWnvil/btsP2uicQwf/LXEzaLD0fAVK3IOiURlj2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWnvil/btsP2uicQwf/LXEzaLD0fAVK3IOiURlj2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWnvil%2FbtsP2uicQwf%2FLXEzaLD0fAVK3IOiURlj2k%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;442&quot; height=&quot;668&quot; data-origin-width=&quot;369&quot; data-origin-height=&quot;558&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;991&quot; data-start=&quot;981&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;991&quot; data-start=&quot;981&quot; data-ke-size=&quot;size16&quot;&gt;나머지는 기존에 학습하였고, IKE 2단계의 프로토콜에 대해 알아보자.&lt;/p&gt;
&lt;p data-end=&quot;991&quot; data-start=&quot;981&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;두 가지 프로토콜&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;IPSec은 또 두가지 보안 프로토콜을 제공하는데,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;인증에 대해서만 검사하는 인증헤더 프로토콜(AH: Authentication Header Protocol)&lt;/b&gt;과 페이로드 전체를 보호하여&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;기밀성을 제공하는 보안 페이로드 캡슐화(ESP: Encapsulating Security Payload)&lt;/b&gt;가 그것들입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;AH(Authentication Header)&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;말그대로 헤더 인증. 인증과 무결성을 할 수 있는 기술이다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;발신지 호스트를 인증하고 IP패킷의 무결성을 보장합니다. 인증을 위해서 해쉬함수와 대칭키가 사용되어 Message Digest를 생성하고 헤더에 삽입합니다. AH는 인증과 무결성을 보장하지만 비밀은 보장해주지 않습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;때문에 보통 ESP를 추가하여 암호화까지 이루어지게 합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&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;AH.png&quot; data-origin-width=&quot;688&quot; data-origin-height=&quot;311&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWn6qQ/btsPZoEamWM/kMc2Bw6o65PeFNttilEDb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWn6qQ/btsPZoEamWM/kMc2Bw6o65PeFNttilEDb0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWn6qQ/btsPZoEamWM/kMc2Bw6o65PeFNttilEDb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWn6qQ%2FbtsPZoEamWM%2FkMc2Bw6o65PeFNttilEDb0%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;688&quot; height=&quot;311&quot; data-filename=&quot;AH.png&quot; data-origin-width=&quot;688&quot; data-origin-height=&quot;311&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Next Header&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: IPSec 다음에 오는 페이로드의 헤더를 말합니다. TCP인지 UDP인지 또는 ICMP인지 의미합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Payload Length&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 인증헤더의 길이를 말하며 4바이트 배수가 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Security Parameter Index&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 32비트 보안 매개변수 색인(SPI) 필드는 Security Association에 대한 식별자입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Sequence Number&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 32비트 순서번호인데 이것은 replay attack을 방지합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Authentication Data&lt;/b&gt;: 헤더를 포함하여 전체 페킷에 대한 데이터를 인증 데이터로 만드는데, 이때 IP 헤더의 변경될 수 있는 데이터는 제외하고 인증데이터를 만들게 됩니다. 예를 들어 TTL같은 변경이 될 수 있는 데이터는 인증 데이터를 만들때 포함하지 않습니다. 만들면 AH의 Authentication Data필드에 삽입됩니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ESP(Encapsulating Security Payload)&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;AH가 지원하는 인증+무결성에, 암호화까지 할 수 있는 기술이다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&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;esp.png&quot; data-origin-width=&quot;822&quot; data-origin-height=&quot;191&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/t3XCE/btsP0WmjrHX/pAV1Kx8GWyfeBd7V3Ylqd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/t3XCE/btsP0WmjrHX/pAV1Kx8GWyfeBd7V3Ylqd0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/t3XCE/btsP0WmjrHX/pAV1Kx8GWyfeBd7V3Ylqd0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ft3XCE%2FbtsP0WmjrHX%2FpAV1Kx8GWyfeBd7V3Ylqd0%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;822&quot; height=&quot;191&quot; data-filename=&quot;esp.png&quot; data-origin-width=&quot;822&quot; data-origin-height=&quot;191&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;ESP 헤더의 각각 필드는 32비트입니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;눈에 익은 필드들이 몇개 보이지요? 대부분은 AH의 필드와 유사합니다. 또 payload를 암호화하고 있네요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Authentication Data&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: AH와는 다르게 인증데이터가 IP헤더를 포함하지 않습니다. ESP헤더까지만 인증데이터로 만들고 ESP Trailer에 붙이게 됩니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;ESP가 인증+무결성+암호화까지 한번에 지원하는 프로토콜이지만, AH는 ESP보다 나중에 나온 프로토콜인 만큼 필요성에 의해 만들어 졌습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;정리해보면,&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;AH는 무결성과 인증을 지원하고 추가 IP헤더까지 포함 시킬 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;암호화는 ESP를 이용하여 ESP+AH 구조로 사용하게 됩니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;ESP는 무결성+인증+암호화까지 하게되고 추가 IP헤더는 포함 시킬 수 없습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;AH와 ESP의 대한 차이는 다음의 표로 간략하게 정리하였습니다.&lt;/p&gt;
&lt;table style=&quot;background-color: #ffffff; color: #333333; text-align: start; border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style15&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #2780d4; color: #ffffff; text-align: center;&quot;&gt;&lt;b&gt;Services&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #2780d4; color: #ffffff; text-align: center;&quot;&gt;&lt;b&gt;AH&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #2780d4; color: #ffffff; text-align: center;&quot;&gt;&lt;b&gt;ESP&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #dcdddd; text-align: center;&quot;&gt;&lt;b&gt;Access Control&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;O&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;O&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #dcdddd; text-align: center;&quot;&gt;&lt;b&gt;Message Authentication&lt;/b&gt;&lt;br /&gt;&lt;b&gt;(Message Integrity)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #f0f0f0; text-align: center;&quot;&gt;&lt;b&gt;O&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #f0f0f0; text-align: center;&quot;&gt;&lt;b&gt;O&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #dcdddd; text-align: center;&quot;&gt;&lt;b&gt;Confidentiality&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;X&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;O&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #dcdddd; text-align: center;&quot;&gt;&lt;b&gt;Replay Attack Protection&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #f0f0f0; text-align: center;&quot;&gt;&lt;b&gt;O&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #f0f0f0; text-align: center;&quot;&gt;&lt;b&gt;O&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #dcdddd; text-align: center;&quot;&gt;&lt;b&gt;Entity Authentication&lt;/b&gt;&lt;br /&gt;&lt;b&gt;(Data Source Authentication)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;O&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;O&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;참고블로그&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://reakwon.tistory.com/108&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://reakwon.tistory.com/108&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>네트워크/Layer3</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/180</guid>
      <comments>https://kujung.tistory.com/entry/IPsec-VPN-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B02-%EC%A3%BC%EC%9A%94-%EB%B3%B4%EC%95%88-%EA%B8%B0%EB%8A%A5%EA%B3%BC-%EB%8F%99%EC%9E%91-%ED%9D%90%EB%A6%84#entry180comment</comments>
      <pubDate>Fri, 22 Aug 2025 15:21:26 +0900</pubDate>
    </item>
    <item>
      <title>IPsec VPN 알아보기#1 두가지 모드</title>
      <link>https://kujung.tistory.com/entry/IPsec-VPN-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B01-%EB%91%90%EA%B0%80%EC%A7%80-%EB%AA%A8%EB%93%9C</link>
      <description>&lt;h2 data-end=&quot;70&quot; data-start=&quot;50&quot; data-ke-size=&quot;size26&quot;&gt;IPsec VPN 알아보기#1&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;896&quot; data-start=&quot;72&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;186&quot; data-start=&quot;72&quot;&gt;&lt;b&gt;VPN = 인터넷 위에 비밀 통로&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;186&quot; data-start=&quot;103&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;139&quot; data-start=&quot;103&quot;&gt;원래 인터넷은 모든 데이터가 그냥 흘러다니는 길과 같아요.&lt;/li&gt;
&lt;li data-end=&quot;186&quot; data-start=&quot;143&quot;&gt;VPN은 그 위에 &lt;b&gt;내 것만 지나가는 비밀 터널&lt;/b&gt;을 만드는 거예요.&lt;b&gt;&lt;/b&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;343&quot; data-start=&quot;188&quot;&gt;&lt;b&gt;IPsec = 터널 안에서 보안 지켜주는 약속&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;343&quot; data-start=&quot;226&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;258&quot; data-start=&quot;226&quot;&gt;두 지점(회사 &amp;harr; 지사, 집 &amp;harr; 회사)이 통신할 때&lt;/li&gt;
&lt;li data-end=&quot;311&quot; data-start=&quot;262&quot;&gt;서로 &quot;우리끼리만 알아볼 수 있게 암호 걸자&quot; 하고 약속하는 게 IPsec이에요.&lt;/li&gt;
&lt;li data-end=&quot;343&quot; data-start=&quot;315&quot;&gt;그래서 누가 중간에서 훔쳐봐도 못 알아봐요.&lt;/li&gt;
&lt;li data-end=&quot;343&quot; data-start=&quot;315&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot;&gt;IP계층(네트워크 계층)을 안전하게 보호하기 위해서 IPSec이라는 보호 기법을 사용합니다. &lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;343&quot; data-start=&quot;315&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot;&gt;TLS와 같은 안전한 통신 기법만 있으면 되지, 왜 굳이 IPSec이 필요하느냐에 대한 물음을 갖을 수 있습니다. TLS는 TCP 프로토콜만을 보호합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;343&quot; data-start=&quot;315&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot;&gt;때문에 UDP까지 보호를 해주기 위해서는 더 낮은 계층에서 보호 해주는 것이 효과적 일 겁니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;527&quot; data-start=&quot;345&quot;&gt;&lt;b&gt;동작 방식&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;527&quot; data-start=&quot;363&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;392&quot; data-start=&quot;363&quot;&gt;먼저 서로 인사(IKE) &amp;rarr; 암호 방식 정하기&lt;/li&gt;
&lt;li data-end=&quot;441&quot; data-start=&quot;396&quot;&gt;&quot;너 진짜 우리 회사 맞아?&quot; (인증) &amp;rarr; PSK(비밀번호)나 인증서 사용&lt;/li&gt;
&lt;li data-end=&quot;489&quot; data-start=&quot;445&quot;&gt;약속 끝나면 데이터를 보낼 때마다 포장지(라벨)를 씌워서 암호화함&lt;/li&gt;
&lt;li data-end=&quot;527&quot; data-start=&quot;493&quot;&gt;받는 쪽은 &lt;b&gt;같은 열쇠&lt;/b&gt;로 풀어서 원래 데이터 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;657&quot; data-start=&quot;529&quot;&gt;&lt;b&gt;두가지 모드&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot; data-start=&quot;549&quot; data-end=&quot;657&quot;&gt;
&lt;li style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;IPSec에는 두 가지 모드가 있는데, IP의 내용(payload)만을 보호&lt;/span&gt;하느냐, 아니면 &lt;span style=&quot;background-color: #9feec3;&quot;&gt;헤더까지 모두 보호하느냐&lt;/span&gt;에 따라서 전자는 전송 모드(Transport Mode), 후자는 터널 모드(Tunnel Model)라고 합니다.&lt;/li&gt;
&lt;li style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot;&gt;end-to-end 끼리 IPSec통신하려고 한다 -&amp;gt; 전송 모드&lt;/li&gt;
&lt;li style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot;&gt;일정 구간에서만 IPSec통신하려고 한다 -&amp;gt; 터널 모드&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;767&quot; data-origin-height=&quot;190&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bV4SEE/btsPXRShnOU/xiKAMDl4RmxmRrqOrCmXOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bV4SEE/btsPXRShnOU/xiKAMDl4RmxmRrqOrCmXOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bV4SEE/btsPXRShnOU/xiKAMDl4RmxmRrqOrCmXOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbV4SEE%2FbtsPXRShnOU%2FxiKAMDl4RmxmRrqOrCmXOK%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;767&quot; height=&quot;190&quot; data-origin-width=&quot;767&quot; data-origin-height=&quot;190&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;br /&gt;먼저, &lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: justify;&quot;&gt;end-to-end 끼리 IPSec통신하는 &lt;/span&gt;&lt;b&gt;전송모드&lt;/b&gt;는 전송 계층와 네트워크 계층 사이에 전달되는 payload를 보호합니다. 중간에 IPSec 계층이 있기 때문에 IPSec헤더가 붙고, 이후에 네트워크 계층에서는 이것이 모두 상위층에서 보낸 데이터(payload)로 취급이 되므로 IP 헤더가 붙고 아래 계층으로 전달되지요.&amp;nbsp;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;transport_layer.png&quot; data-origin-width=&quot;761&quot; data-origin-height=&quot;321&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b98PpY/btsPYy50PsD/qviZFdwK2c5xyvOZeysmKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b98PpY/btsPYy50PsD/qviZFdwK2c5xyvOZeysmKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b98PpY/btsPYy50PsD/qviZFdwK2c5xyvOZeysmKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb98PpY%2FbtsPYy50PsD%2FqviZFdwK2c5xyvOZeysmKk%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;761&quot; height=&quot;321&quot; data-filename=&quot;transport_layer.png&quot; data-origin-width=&quot;761&quot; data-origin-height=&quot;321&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;br /&gt;전송모드는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;u&gt;&lt;b&gt;host-to-host( end-to-end)간 데이터 보호&lt;/b&gt;&lt;/u&gt;가 필요할때 사용이 됩니다. 아래는 전송모드의 데이터 전송 흐름을 보여줍니다.왼쪽 컴퓨터(host)는 IPSec을 적용하여 데이터를 보냅니다. 네트워크를 통해서 오른쪽 컴퓨터로 데이터가 도착합니다. 자, 이 사이에서 다른 사람이 데이터를 가져가도 IPSec에 대한 보호가 이루어져있으므로 볼 수 없고 라우터를 거쳐 두 당사자만 데이터를 보호할 수 있지요. 그래서 종단 간의 보호(End-To-End Protection, E2EP)가 이루어 질 수 있습니다.&amp;nbsp;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;transport mode.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;361&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XW36v/btsPVC9GE3d/qq9gblr8gu2nv1uJt8VLXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XW36v/btsPVC9GE3d/qq9gblr8gu2nv1uJt8VLXK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XW36v/btsPVC9GE3d/qq9gblr8gu2nv1uJt8VLXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXW36v%2FbtsPVC9GE3d%2Fqq9gblr8gu2nv1uJt8VLXK%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;895&quot; height=&quot;252&quot; data-filename=&quot;transport mode.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;361&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;br /&gt;&lt;b&gt;&lt;b&gt;터널 모드(Tunnel Mode)&lt;/b&gt;&lt;/b&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;730&quot; data-origin-height=&quot;176&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cXwe6s/btsPXYKDYZ2/A6U565rUlikMzYCUYcJPh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cXwe6s/btsPXYKDYZ2/A6U565rUlikMzYCUYcJPh0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cXwe6s/btsPXYKDYZ2/A6U565rUlikMzYCUYcJPh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcXwe6s%2FbtsPXYKDYZ2%2FA6U565rUlikMzYCUYcJPh0%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;730&quot; height=&quot;176&quot; data-origin-width=&quot;730&quot; data-origin-height=&quot;176&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;tunnel_mode.png&quot; data-origin-width=&quot;871&quot; data-origin-height=&quot;411&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nzC2q/btsPVx8OCxn/DmecQ8R0MjAbzOKGg48bck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nzC2q/btsPVx8OCxn/DmecQ8R0MjAbzOKGg48bck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nzC2q/btsPVx8OCxn/DmecQ8R0MjAbzOKGg48bck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnzC2q%2FbtsPVx8OCxn%2FDmecQ8R0MjAbzOKGg48bck%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;871&quot; height=&quot;411&quot; data-filename=&quot;tunnel_mode.png&quot; data-origin-width=&quot;871&quot; data-origin-height=&quot;411&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
아래는 그 흐름을 보여주는데, 전송모드와는 다르게 호스트 A는 별다른 IPSec의 조취를 취하지 않습니다. 하지만 Router A에서 IPSec을 적용하고 새로운 IP 헤더를 추가합니다. 이 헤더에는 목적지 라우터의 주소가 있어서 Router B로 보냅니다. Router B는 이후에 적절한 조취를 취하고 새로운 IP헤더와 IPSec헤더를 제거한 후 Host B에게 전달합니다. 마치 RouterA, RouterB가 터널 역할을 하는 것 같네요.&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;tunnel_mode_flow.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;624&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cpPy9G/btsPVFSQ1pL/WCnkkOD0bk9QF4pzdHLjkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cpPy9G/btsPVFSQ1pL/WCnkkOD0bk9QF4pzdHLjkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cpPy9G/btsPVFSQ1pL/WCnkkOD0bk9QF4pzdHLjkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcpPy9G%2FbtsPVFSQ1pL%2FWCnkkOD0bk9QF4pzdHLjkK%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;1280&quot; height=&quot;624&quot; data-filename=&quot;tunnel_mode_flow.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;624&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;b&gt;&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;position: absolute;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;993&quot; data-start=&quot;903&quot; data-ke-size=&quot;size16&quot;&gt;한마디로 정리하면:&lt;br /&gt;&lt;b&gt;IPsec VPN은 인터넷 위에 비밀 터널을 만들고, 그 안에 들어가는 데이터를 전부 잠가서 안전하게 전달하는 기술&lt;/b&gt;이에요.&lt;/p&gt;
&lt;p data-end=&quot;993&quot; data-start=&quot;903&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;993&quot; data-start=&quot;903&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;993&quot; data-start=&quot;903&quot; data-ke-size=&quot;size16&quot;&gt;참고 블로그&lt;/p&gt;
&lt;p data-end=&quot;993&quot; data-start=&quot;903&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://reakwon.tistory.com/108&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://reakwon.tistory.com/108&lt;/a&gt;&lt;/p&gt;</description>
      <category>네트워크/Layer3</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/179</guid>
      <comments>https://kujung.tistory.com/entry/IPsec-VPN-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B01-%EB%91%90%EA%B0%80%EC%A7%80-%EB%AA%A8%EB%93%9C#entry179comment</comments>
      <pubDate>Tue, 19 Aug 2025 23:22:30 +0900</pubDate>
    </item>
    <item>
      <title>이더넷케이블로 데이터와 전원까지 공급 PoE(Power over Ethernet)</title>
      <link>https://kujung.tistory.com/entry/%EC%9D%B4%EB%8D%94%EB%84%B7%EC%BC%80%EC%9D%B4%EB%B8%94%EB%A1%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%99%80-%EC%A0%84%EC%9B%90%EA%B9%8C%EC%A7%80-%EA%B3%B5%EA%B8%89-PoEPower-over-Ethernet</link>
      <description>&lt;p data-end=&quot;93&quot; data-start=&quot;61&quot; data-ke-size=&quot;size14&quot;&gt;PoE는&amp;nbsp;VoIP(Voice&amp;nbsp;over&amp;nbsp;Internet&amp;nbsp;Phone)의&amp;nbsp;전원&amp;nbsp;공급&amp;nbsp;문제를&amp;nbsp;해결하기&amp;nbsp;위해&amp;nbsp;처음&amp;nbsp;발명되었습니다.&amp;nbsp;기존&amp;nbsp;전화기는&amp;nbsp;음성&amp;nbsp;통화를&amp;nbsp;전송하는&amp;nbsp;구리선에서&amp;nbsp;직접&amp;nbsp;전원을&amp;nbsp;공급받을&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;그러나&amp;nbsp;점점&amp;nbsp;인기를&amp;nbsp;얻고&amp;nbsp;있는&amp;nbsp;VoIP는&amp;nbsp;기존&amp;nbsp;회선에&amp;nbsp;연결되지&amp;nbsp;않고&amp;nbsp;대신에&amp;nbsp;회사의&amp;nbsp;근거리&amp;nbsp;통신망(LAN)인&amp;nbsp;이더넷&amp;nbsp;케이블을&amp;nbsp;통해&amp;nbsp;전화를&amp;nbsp;겁니다.&amp;nbsp;이더넷&amp;nbsp;케이블은&amp;nbsp;전원을&amp;nbsp;공급하지&amp;nbsp;않으므로&amp;nbsp;VoIP는&amp;nbsp;어댑터를&amp;nbsp;통해&amp;nbsp;주&amp;nbsp;전원&amp;nbsp;공급&amp;nbsp;장치에&amp;nbsp;연결되어야&amp;nbsp;합니다.&amp;nbsp;건물이&amp;nbsp;정전되면&amp;nbsp;전화가&amp;nbsp;중단되기&amp;nbsp;때문에&amp;nbsp;이는&amp;nbsp;종합적으로&amp;nbsp;충분하지&amp;nbsp;않습니다.&lt;/p&gt;
&lt;p data-end=&quot;93&quot; data-start=&quot;61&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;93&quot; data-start=&quot;61&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;93&quot; data-start=&quot;61&quot; data-ke-size=&quot;size26&quot;&gt;1. PoE(Power over Ethernet)란?&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;331&quot; data-start=&quot;94&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;135&quot; data-start=&quot;94&quot;&gt;&lt;b&gt;데이터와 전원을 하나의 이더넷 케이블로 동시에 전송&lt;/b&gt;하는 기술&lt;/li&gt;
&lt;li data-end=&quot;200&quot; data-start=&quot;136&quot;&gt;즉, &lt;b&gt;전원 어댑터 없이&lt;/b&gt; 네트워크 장비(IP 카메라, 무선 AP, VoIP 전화기 등)를 동작시킬 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-end=&quot;349&quot; data-start=&quot;338&quot; data-ke-size=&quot;size26&quot;&gt;2. 동작 원리&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;589&quot; data-start=&quot;350&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;407&quot; data-start=&quot;350&quot;&gt;일반 UTP 케이블(보통 Cat5e 이상)의 4쌍(8가닥) 중 일부 또는 전체를 사용해 전력을 공급&lt;/li&gt;
&lt;li data-end=&quot;440&quot; data-start=&quot;408&quot;&gt;&lt;b&gt;데이터와 전력은 서로 간섭 없이 전송&lt;/b&gt;되도록 설계&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;857&quot; data-origin-height=&quot;632&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mGOVa/btsPUIPp3aw/wLne3vsC2ft9OpxC5U5lv0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mGOVa/btsPUIPp3aw/wLne3vsC2ft9OpxC5U5lv0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mGOVa/btsPUIPp3aw/wLne3vsC2ft9OpxC5U5lv0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmGOVa%2FbtsPUIPp3aw%2FwLne3vsC2ft9OpxC5U5lv0%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;857&quot; height=&quot;632&quot; data-origin-width=&quot;857&quot; data-origin-height=&quot;632&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;PoE기능을 지원하지 않는 장비 쪽에는 PoE Injector를 사용합니다.&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;h2 data-end=&quot;610&quot; data-start=&quot;596&quot; data-ke-size=&quot;size26&quot;&gt;3. 전원 전송 방식&lt;/h2&gt;
&lt;p data-end=&quot;631&quot; data-start=&quot;611&quot; data-ke-size=&quot;size16&quot;&gt;IEEE 표준에서 2가지 방식 사용:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;808&quot; data-start=&quot;632&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;697&quot; data-start=&quot;632&quot;&gt;&lt;b&gt;Alternative A&lt;/b&gt; &amp;rarr; 데이터 전송에 쓰이는 선(1, 2, 3, 6번 핀)으로 전력도 함께 전달&lt;/li&gt;
&lt;li data-end=&quot;808&quot; data-start=&quot;698&quot;&gt;&lt;b&gt;Alternative B&lt;/b&gt; &amp;rarr; 데이터에 사용하지 않는 선(4, 5, 7, 8번 핀)으로 전력 전달&lt;br /&gt;(기가비트 이더넷에서는 모든 쌍을 데이터에 사용하므로, 전력도 함께 전송 가능)&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-end=&quot;827&quot; data-start=&quot;815&quot; data-ke-size=&quot;size26&quot;&gt;4. PoE 장점&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;918&quot; data-start=&quot;828&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;855&quot; data-start=&quot;828&quot;&gt;전원 콘센트가 없는 장소에서도 장비 설치 가능&lt;/li&gt;
&lt;li data-end=&quot;878&quot; data-start=&quot;856&quot;&gt;케이블 수 줄어듦 &amp;rarr; 설치 비용 절감&lt;/li&gt;
&lt;li data-end=&quot;918&quot; data-start=&quot;879&quot;&gt;중앙에서 전원 관리 가능 (PoE 스위치로 원격 On/Off 제어&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-end=&quot;939&quot; data-start=&quot;925&quot; data-ke-size=&quot;size26&quot;&gt;5. PoE 주의사항&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1065&quot; data-start=&quot;940&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;965&quot; data-start=&quot;940&quot;&gt;케이블 품질 중요 &amp;rarr; 최소 Cat5e 권장&lt;/li&gt;
&lt;li data-end=&quot;1027&quot; data-start=&quot;966&quot;&gt;장비의 &lt;b&gt;PoE 규격 호환성&lt;/b&gt; 확인 필요 (예: PoE+ 장비는 일반 PoE에서 전력 부족할 수 있음)&lt;/li&gt;
&lt;li data-end=&quot;1065&quot; data-start=&quot;1028&quot;&gt;고전력 장비(PTZ 카메라, LED 조명 등)는 PoE++ 필요&lt;/li&gt;
&lt;li data-end=&quot;1065&quot; data-start=&quot;1028&quot;&gt;부팅시에만 더 높은 W를 요구하는 장비가 있을 수 있음.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>네트워크/Layer1</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/176</guid>
      <comments>https://kujung.tistory.com/entry/%EC%9D%B4%EB%8D%94%EB%84%B7%EC%BC%80%EC%9D%B4%EB%B8%94%EB%A1%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%99%80-%EC%A0%84%EC%9B%90%EA%B9%8C%EC%A7%80-%EA%B3%B5%EA%B8%89-PoEPower-over-Ethernet#entry176comment</comments>
      <pubDate>Sat, 16 Aug 2025 21:06:55 +0900</pubDate>
    </item>
    <item>
      <title>MPLS (Multiprotocol Label Switching)와 MPLS-VPN</title>
      <link>https://kujung.tistory.com/entry/MPLS-Multiprotocol-Label-Switching%EC%99%80-MPLS-VP</link>
      <description>&lt;h2 data-end=&quot;107&quot; data-start=&quot;68&quot; data-ke-size=&quot;size26&quot;&gt;MPLS (Multiprotocol Label Switching)&lt;/h2&gt;
&lt;p data-end=&quot;120&quot; data-start=&quot;109&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 개념&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;308&quot; data-start=&quot;121&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;225&quot; data-start=&quot;121&quot;&gt;MPLS는 전통적인 IP 라우팅처럼 패킷의 &lt;b&gt;IP 헤더&lt;/b&gt;만 보고 경로를 결정하지 않고, 라벨(label)이라는 짧은 식별자를 붙여서 고속으로 패킷을 전달하는 기술입니다.&lt;/li&gt;
&lt;li data-end=&quot;308&quot; data-start=&quot;226&quot;&gt;OSI 3계층(IP)과 2계층(Ethernet, Frame Relay, ATM 등) 사이에 존재하는 &lt;b&gt;&amp;ldquo;2.5 계층&amp;rdquo; 기술&lt;/b&gt;로 불립니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;324&quot; data-start=&quot;310&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 동작 방식&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;506&quot; data-start=&quot;325&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;387&quot; data-start=&quot;325&quot;&gt;패킷이 네트워크에 들어올 때, &lt;b&gt;Ingress 라우터&lt;/b&gt;가 패킷에 라벨(Label)을 붙입니다.&lt;/li&gt;
&lt;li data-end=&quot;450&quot; data-start=&quot;388&quot;&gt;중간 라우터들은 IP 주소를 다시 조회하지 않고, &lt;b&gt;라벨 값만 보고 전송(next hop)&lt;/b&gt; 합니다.&lt;/li&gt;
&lt;li data-end=&quot;506&quot; data-start=&quot;451&quot;&gt;마지막 &lt;b&gt;Egress 라우터&lt;/b&gt;가 라벨을 제거하고, 원래 IP 패킷을 목적지로 전달합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;519&quot; data-start=&quot;508&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 특징&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;649&quot; data-start=&quot;520&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;555&quot; data-start=&quot;520&quot;&gt;고속 패킷 전달 (라우팅 테이블 탐색 대신 라벨 스위칭)&lt;/li&gt;
&lt;li data-end=&quot;593&quot; data-start=&quot;556&quot;&gt;트래픽 엔지니어링 (특정 경로로 유도 가능 &amp;rarr; QoS 향상)&lt;/li&gt;
&lt;li data-end=&quot;649&quot; data-start=&quot;594&quot;&gt;다양한 프로토콜 지원 (IP, Ethernet, ATM 등 &amp;rarr; &amp;ldquo;Multiprotocol&amp;rdquo;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1038&quot; data-origin-height=&quot;631&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/euRyVR/btsPTT42fTA/IToMK6K2kKrU18dc4Wxsuk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/euRyVR/btsPTT42fTA/IToMK6K2kKrU18dc4Wxsuk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/euRyVR/btsPTT42fTA/IToMK6K2kKrU18dc4Wxsuk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeuRyVR%2FbtsPTT42fTA%2FIToMK6K2kKrU18dc4Wxsuk%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;1038&quot; height=&quot;631&quot; data-origin-width=&quot;1038&quot; data-origin-height=&quot;631&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-end=&quot;667&quot; data-start=&quot;656&quot; data-ke-size=&quot;size26&quot;&gt;MPLS-VPN&lt;/h2&gt;
&lt;p data-end=&quot;680&quot; data-start=&quot;669&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 개념&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;846&quot; data-start=&quot;681&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;720&quot; data-start=&quot;681&quot;&gt;MPLS 위에서 동작하는 &lt;b&gt;가상사설망(VPN)&lt;/b&gt; 기술입니다.&lt;/li&gt;
&lt;li data-end=&quot;801&quot; data-start=&quot;721&quot;&gt;기업 지사나 데이터센터가 물리적으로 떨어져 있어도, MPLS 네트워크를 통해 &lt;b&gt;마치 하나의 사설망처럼&lt;/b&gt; 안전하게 연결할 수 있습니다.&lt;/li&gt;
&lt;li data-end=&quot;846&quot; data-start=&quot;802&quot;&gt;흔히 통신사(ISP)가 제공하는 서비스형 VPN이 MPLS-VPN입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;862&quot; data-start=&quot;848&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 주요 방식&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1101&quot; data-start=&quot;863&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1005&quot; data-start=&quot;863&quot;&gt;&lt;b&gt;L3 MPLS-VPN (가장 일반적)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1005&quot; data-start=&quot;894&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;972&quot; data-start=&quot;894&quot;&gt;서비스 제공자의 라우터가 고객의 라우팅 정보를 저장하고 관리 (VRF: Virtual Routing and Forwarding 사용)&lt;/li&gt;
&lt;li data-end=&quot;1005&quot; data-start=&quot;975&quot;&gt;서로 다른 고객 간 트래픽이 논리적으로 분리됨.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1101&quot; data-start=&quot;1006&quot;&gt;&lt;b&gt;L2 MPLS-VPN&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1101&quot; data-start=&quot;1028&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1080&quot; data-start=&quot;1028&quot;&gt;MPLS를 이용해 고객의 Layer2 프레임을 그대로 전달 (예: VPLS, VPWS)&lt;/li&gt;
&lt;li data-end=&quot;1101&quot; data-start=&quot;1083&quot;&gt;고객이 직접 라우팅 관리.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1129&quot; data-start=&quot;1103&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 동작 구조 (L3 VPN 기준)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1282&quot; data-start=&quot;1130&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1169&quot; data-start=&quot;1130&quot;&gt;각 고객은 PE(Provider Edge Router)에 연결.&lt;/li&gt;
&lt;li data-end=&quot;1223&quot; data-start=&quot;1170&quot;&gt;PE는 고객별로 &lt;b&gt;VRF 테이블&lt;/b&gt;을 따로 유지 &amp;rarr; 고객 네트워크가 논리적으로 격리됨.&lt;/li&gt;
&lt;li data-end=&quot;1282&quot; data-start=&quot;1224&quot;&gt;PE 간에는 MPLS 라벨을 사용해 패킷을 전달 &amp;rarr; 고객 입장에서는 투명하게 연결된 것처럼 보임.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;1296&quot; data-start=&quot;1289&quot; data-ke-size=&quot;size26&quot;&gt;요약&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1414&quot; data-start=&quot;1297&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1349&quot; data-start=&quot;1297&quot;&gt;&lt;b&gt;MPLS&lt;/b&gt;: 패킷에 라벨을 붙여서 빠르고 효율적으로 전달하는 네트워크 전송 기술.&lt;/li&gt;
&lt;li data-end=&quot;1414&quot; data-start=&quot;1350&quot;&gt;&lt;b&gt;MPLS-VPN&lt;/b&gt;: MPLS 네트워크를 기반으로 여러 고객(기업)의 VPN을 안전하게 제공하는 서비스.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;87&quot; data-start=&quot;76&quot; data-ke-size=&quot;size23&quot;&gt;VRF란?&lt;/h3&gt;
&lt;p data-end=&quot;197&quot; data-start=&quot;88&quot; data-ke-size=&quot;size16&quot;&gt;VRF는 &lt;b&gt;라우터 안에서 라우팅 테이블을 가상적으로 분리하는 기술&lt;/b&gt;입니다.&lt;br /&gt;즉, &lt;b&gt;하나의 물리적인 라우터 장비&lt;/b&gt;에서 여러 개의 독립된 라우팅 환경을 동시에 운영할 수 있게 해줍니다.&lt;/p&gt;
&lt;h3 data-end=&quot;213&quot; data-start=&quot;204&quot; data-ke-size=&quot;size23&quot;&gt;핵심 개념&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;662&quot; data-start=&quot;214&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;338&quot; data-start=&quot;214&quot;&gt;&lt;b&gt;라우팅 테이블 분리&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;338&quot; data-start=&quot;237&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;272&quot; data-start=&quot;237&quot;&gt;일반적으로 라우터는 단 하나의 라우팅 테이블을 갖습니다.&lt;/li&gt;
&lt;li data-end=&quot;338&quot; data-start=&quot;276&quot;&gt;VRF를 사용하면 여러 개의 라우팅 테이블을 생성하여 &lt;b&gt;서로 다른 네트워크가 독립적으로 동작&lt;/b&gt;합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;531&quot; data-start=&quot;340&quot;&gt;&lt;b&gt;주소 공간 중복 가능&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;531&quot; data-start=&quot;364&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;422&quot; data-start=&quot;364&quot;&gt;VRF 환경에서는 서로 다른 고객이나 서비스가 동일한 IP 주소 대역을 사용해도 충돌이 없습니다.&lt;/li&gt;
&lt;li data-end=&quot;531&quot; data-start=&quot;426&quot;&gt;예:
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;531&quot; data-start=&quot;438&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;465&quot; data-start=&quot;438&quot;&gt;고객 A VRF: 10.1.1.0/24&lt;/li&gt;
&lt;li data-end=&quot;498&quot; data-start=&quot;471&quot;&gt;고객 B VRF: 10.1.1.0/24&lt;/li&gt;
&lt;li data-end=&quot;531&quot; data-start=&quot;504&quot;&gt;&amp;nbsp;같은 라우터에서 문제 없이 공존 가능.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;499&quot; data-origin-height=&quot;309&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BLEEi/btsPTC3gvyq/JkRapfGdETS2XtFxvS6m4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BLEEi/btsPTC3gvyq/JkRapfGdETS2XtFxvS6m4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BLEEi/btsPTC3gvyq/JkRapfGdETS2XtFxvS6m4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBLEEi%2FbtsPTC3gvyq%2FJkRapfGdETS2XtFxvS6m4K%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;499&quot; height=&quot;309&quot; data-origin-width=&quot;499&quot; data-origin-height=&quot;309&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;662&quot; data-start=&quot;214&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;662&quot; data-start=&quot;533&quot;&gt;&lt;b&gt;VPN 구현 기반 기술&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;662&quot; data-start=&quot;558&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;596&quot; data-start=&quot;558&quot;&gt;MPLS-VPN 같은 서비스에서 VRF가 핵심 역할을 합니다.&lt;/li&gt;
&lt;li data-end=&quot;662&quot; data-start=&quot;600&quot;&gt;서비스 프로바이더는 고객별 VRF를 생성해서, 각 고객이 자기 전용 라우터를 쓰는 것처럼 보이게 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-end=&quot;677&quot; data-start=&quot;669&quot; data-ke-size=&quot;size23&quot;&gt;비유&lt;/h3&gt;
&lt;p data-end=&quot;716&quot; data-start=&quot;678&quot; data-ke-size=&quot;size16&quot;&gt;VRF를 쉽게 이해하려면 &lt;b&gt;아파트 우편함&lt;/b&gt;을 생각하면 됩니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;784&quot; data-start=&quot;717&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;784&quot; data-start=&quot;717&quot;&gt;아파트(라우터)는 하나지만, 세대별로 우편함(VRF)이 따로 있어서 서로의 편지(라우팅 정보)가 섞이지 않습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;800&quot; data-start=&quot;791&quot; data-ke-size=&quot;size23&quot;&gt;사용 사례&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;929&quot; data-start=&quot;801&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;842&quot; data-start=&quot;801&quot;&gt;&lt;b&gt;서비스 프로바이더&lt;/b&gt;: 고객별 네트워크 분리 (MPLS VPN)&lt;/li&gt;
&lt;li data-end=&quot;896&quot; data-start=&quot;843&quot;&gt;&lt;b&gt;엔터프라이즈&lt;/b&gt;: 내부 부서/서비스별 네트워크 격리 (예: HR망, Finance망)&lt;/li&gt;
&lt;li data-end=&quot;929&quot; data-start=&quot;897&quot;&gt;&lt;b&gt;보안 목적&lt;/b&gt;: 특정 트래픽을 별도 라우팅 처리&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;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-end=&quot;80&quot; data-start=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;정리해드리면 &lt;b&gt;MPLS VPN&lt;/b&gt;과 &lt;b&gt;VRF&lt;/b&gt;는 밀접하게 연결되어 있지만, 같은 개념은 아니고 역할이 달라요.&lt;/p&gt;
&lt;h3 data-end=&quot;130&quot; data-start=&quot;87&quot; data-ke-size=&quot;size23&quot;&gt;1. VRF (Virtual Routing and Forwarding)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;269&quot; data-start=&quot;131&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;169&quot; data-start=&quot;131&quot;&gt;라우터 안에서 &lt;b&gt;라우팅 테이블을 가상으로 분리&lt;/b&gt;하는 기술.&lt;/li&gt;
&lt;li data-end=&quot;213&quot; data-start=&quot;170&quot;&gt;즉, 하나의 라우터 장비에 여러 개의 독립된 라우팅 테이블을 두는 것.&lt;/li&gt;
&lt;li data-end=&quot;269&quot; data-start=&quot;214&quot;&gt;고객 A, 고객 B가 같은 라우터를 사용하더라도 서로의 경로 정보를 보지 못하게 격리 가능.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;274&quot; data-start=&quot;271&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;302&quot; data-start=&quot;276&quot; data-ke-size=&quot;size23&quot;&gt;2. MPLS VPN (주로 L3VPN)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;571&quot; data-start=&quot;303&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;366&quot; data-start=&quot;303&quot;&gt;서비스 프로바이더(통신사)가 &lt;b&gt;MPLS 라벨 스위칭&lt;/b&gt;을 이용해 고객의 사설망을 서로 연결해주는 서비스.&lt;/li&gt;
&lt;li data-end=&quot;438&quot; data-start=&quot;367&quot;&gt;이때 고객별로 트래픽과 경로를 분리하기 위해 &lt;b&gt;PE 라우터(Provider Edge)&lt;/b&gt; 에서 &lt;b&gt;VRF를 설정&lt;/b&gt;함.&lt;/li&gt;
&lt;li data-end=&quot;484&quot; data-start=&quot;439&quot;&gt;즉, 고객 A &amp;rarr; VRF A, 고객 B &amp;rarr; VRF B 이런 식으로 매핑됨.&lt;/li&gt;
&lt;li data-end=&quot;571&quot; data-start=&quot;485&quot;&gt;PE &amp;harr; PE 간에는 &lt;b&gt;MPLS 라벨 스위칭&lt;/b&gt;과 &lt;b&gt;MP-BGP (Multiprotocol BGP)&lt;/b&gt; 로 VRF에 있는 라우팅 정보가 전파됨.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;576&quot; data-start=&quot;573&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;594&quot; data-start=&quot;578&quot; data-ke-size=&quot;size23&quot;&gt;3. 관계를 비유하자면&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;684&quot; data-start=&quot;595&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;629&quot; data-start=&quot;595&quot;&gt;&lt;b&gt;VRF&lt;/b&gt; = &amp;ldquo;독립된 라우팅 테이블(가상 공간)&amp;rdquo;&lt;/li&gt;
&lt;li data-end=&quot;684&quot; data-start=&quot;630&quot;&gt;&lt;b&gt;MPLS VPN&lt;/b&gt; = &amp;ldquo;이 VRF들을 MPLS 백본망 위에서 서로 연결해주는 서비스&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;113&quot; data-start=&quot;75&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-end=&quot;113&quot; data-start=&quot;75&quot; data-ke-size=&quot;size26&quot;&gt;MPLS L3VPN 동작 흐름 (CE&amp;ndash;PE&amp;ndash;P&amp;ndash;PE&amp;ndash;CE)&lt;/h2&gt;
&lt;h3 data-end=&quot;157&quot; data-start=&quot;115&quot; data-ke-size=&quot;size23&quot;&gt;1. CE &amp;rarr; PE (고객 라우터 &amp;rarr; 서비스 프로바이더 엣지 라우터)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;344&quot; data-start=&quot;158&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;222&quot; data-start=&quot;158&quot;&gt;고객 CE 라우터가 자신의 프라이빗 라우팅 정보(예: 10.1.0.0/16)를 &lt;b&gt;PE 라우터에 광고&lt;/b&gt;함.&lt;/li&gt;
&lt;li data-end=&quot;308&quot; data-start=&quot;223&quot;&gt;PE 라우터는 이 경로를 받아서 &lt;b&gt;해당 고객 전용 VRF 테이블&lt;/b&gt;에 저장.
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;308&quot; data-start=&quot;273&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;289&quot; data-start=&quot;273&quot;&gt;고객 A &amp;rarr; VRF-A&lt;/li&gt;
&lt;li data-end=&quot;308&quot; data-start=&quot;292&quot;&gt;고객 B &amp;rarr; VRF-B&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;344&quot; data-start=&quot;309&quot;&gt;따라서 고객 A와 고객 B의 경로는 서로 완전히 분리됨.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;349&quot; data-start=&quot;346&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;389&quot; data-start=&quot;351&quot; data-ke-size=&quot;size23&quot;&gt;2. PE &amp;rarr; P &amp;rarr; PE (서비스 프로바이더 망 내부 전달)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;685&quot; data-start=&quot;390&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;451&quot; data-start=&quot;390&quot;&gt;PE 라우터는 VRF에서 받은 고객 라우팅 정보를 &lt;b&gt;MP-BGP&lt;/b&gt;를 통해 다른 PE 라우터와 공유.&lt;/li&gt;
&lt;li data-end=&quot;632&quot; data-start=&quot;452&quot;&gt;이때 경로 정보는 &lt;b&gt;MPLS 라벨이 두 겹으로 붙어서 전송&lt;/b&gt;됨.
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;632&quot; data-start=&quot;496&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;560&quot; data-start=&quot;496&quot;&gt;&lt;b&gt;외부 라벨(Transport Label)&lt;/b&gt; : P 라우터들이 목적지 PE까지 트래픽을 전달하는데 사용.&lt;/li&gt;
&lt;li data-end=&quot;632&quot; data-start=&quot;563&quot;&gt;&lt;b&gt;내부 라벨(VPN Label)&lt;/b&gt; : 목적지 PE 라우터가 어느 VRF로 패킷을 전달해야 할지 식별하는 데 사용.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;685&quot; data-start=&quot;633&quot;&gt;중간의 P 라우터들은 단순히 MPLS 라벨 스위칭만 수행하고, 고객 경로는 전혀 모름.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;690&quot; data-start=&quot;687&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;725&quot; data-start=&quot;692&quot; data-ke-size=&quot;size23&quot;&gt;3. PE &amp;rarr; CE (다른 지역 고객 라우터로 전달)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;862&quot; data-start=&quot;726&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;815&quot; data-start=&quot;726&quot;&gt;목적지 PE 라우터는 두 겹의 MPLS 라벨을 보고,
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;815&quot; data-start=&quot;762&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;781&quot; data-start=&quot;762&quot;&gt;&lt;b&gt;외부 라벨&lt;/b&gt;은 벗겨내고&lt;/li&gt;
&lt;li data-end=&quot;815&quot; data-start=&quot;784&quot;&gt;&lt;b&gt;내부 라벨&lt;/b&gt;로 어떤 VRF에 전달할지 결정.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;862&quot; data-start=&quot;816&quot;&gt;해당 VRF에서 고객의 라우팅 테이블을 확인하고 CE 라우터로 패킷을 전달.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;867&quot; data-start=&quot;864&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;880&quot; data-start=&quot;869&quot; data-ke-size=&quot;size26&quot;&gt;핵심 정리&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1041&quot; data-start=&quot;881&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;920&quot; data-start=&quot;881&quot;&gt;&lt;b&gt;VRF&lt;/b&gt; : PE 라우터에서 고객별 경로를 분리하는 기술.&lt;/li&gt;
&lt;li data-end=&quot;995&quot; data-start=&quot;921&quot;&gt;&lt;b&gt;MPLS VPN&lt;/b&gt; : 이 VRF들을 MPLS 라벨과 MP-BGP를 이용해 서비스 프로바이더 망 안에서 연결해주는 서비스.&lt;/li&gt;
&lt;li data-end=&quot;1041&quot; data-start=&quot;996&quot;&gt;즉, MPLS VPN이 &quot;VRF들을 서로 연결해주는 방식&quot;이라고 보면 됨.&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-end=&quot;425&quot; data-start=&quot;409&quot; data-ke-size=&quot;size23&quot;&gt;P 라우터의 역할&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;654&quot; data-start=&quot;426&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;475&quot; data-start=&quot;426&quot;&gt;P 라우터는 고객 경로를 보지 않고, &lt;b&gt;Transport 라벨만 보고&lt;/b&gt; 동작.&lt;/li&gt;
&lt;li data-end=&quot;654&quot; data-start=&quot;476&quot;&gt;각 P 라우터에는 &lt;b&gt;LFIB(Label Forwarding Information Base)&lt;/b&gt; 라는 라벨 전환 테이블이 있음.
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;654&quot; data-start=&quot;554&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;586&quot; data-start=&quot;554&quot;&gt;들어온 라벨(= Incoming Label)을 보고&lt;/li&gt;
&lt;li data-end=&quot;626&quot; data-start=&quot;589&quot;&gt;바꿔야 할 라벨(= Outgoing Label)로 교체한 뒤&lt;/li&gt;
&lt;li data-end=&quot;654&quot; data-start=&quot;629&quot;&gt;다음 홉(Next Hop)으로 포워딩.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;P&amp;nbsp;라우터&amp;nbsp;LFIB: &lt;br /&gt;Incoming&amp;nbsp;Label&amp;nbsp;100&amp;nbsp;&amp;rarr;&amp;nbsp;Outgoing&amp;nbsp;Label&amp;nbsp;200&amp;nbsp;(다음&amp;nbsp;홉:&amp;nbsp;P2) &lt;br /&gt;Incoming&amp;nbsp;Label&amp;nbsp;200&amp;nbsp;&amp;rarr;&amp;nbsp;Outgoing&amp;nbsp;Label&amp;nbsp;300&amp;nbsp;(다음&amp;nbsp;홉:&amp;nbsp;PE2)&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1062&quot; data-start=&quot;1021&quot;&gt;&lt;b&gt;P 라우터는 고객 라우팅 정보(IP Prefix)를 모른다.&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;1102&quot; data-start=&quot;1063&quot;&gt;오직 &lt;b&gt;라벨 전환(Lookup &amp;amp; Swap)&lt;/b&gt; 만 수행한다.&lt;/li&gt;
&lt;li data-end=&quot;1138&quot; data-start=&quot;1103&quot;&gt;덕분에 프로바이더 코어망이 단순해지고, 확장성이 커진다.&lt;/li&gt;
&lt;li data-end=&quot;1138&quot; data-start=&quot;1103&quot;&gt;MPLS에서 &lt;b&gt;P 라우터는 IP 목적지 주소 자체는 모르지만&lt;/b&gt;,&lt;br /&gt;라벨이 어떤 &lt;b&gt;목적지 PE 라우터&lt;/b&gt;로 가야 하는지에 대한 정보는 알고 있어요.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, MPLS 코어(P 라우터)는 일종의 **&amp;ldquo;택배 물류센터&amp;rdquo;**처럼 동작한다고 보면 돼요.&lt;br /&gt;택배 물류센터는 &amp;ldquo;집 주소&amp;rdquo;를 모르고, 그냥 &amp;ldquo;택배 바코드(라벨)&amp;rdquo;만 보고 다음 허브로 넘기는 거랑 똑같습니다&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;</description>
      <category>네트워크/Layer3</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/178</guid>
      <comments>https://kujung.tistory.com/entry/MPLS-Multiprotocol-Label-Switching%EC%99%80-MPLS-VP#entry178comment</comments>
      <pubDate>Sat, 16 Aug 2025 12:25:46 +0900</pubDate>
    </item>
    <item>
      <title>매트로 이더넷(Metro Ethernet)이란?</title>
      <link>https://kujung.tistory.com/entry/%EB%A7%A4%ED%8A%B8%EB%A1%9C-%EC%9D%B4%EB%8D%94%EB%84%B7Metro-Ethernet%EC%9D%B4%EB%9E%80</link>
      <description>&lt;p data-end=&quot;310&quot; data-start=&quot;128&quot; data-ke-size=&quot;size16&quot;&gt;기업의 네트워크 환경이 점점 복잡해지면서 &lt;b&gt;빠르고 안정적인 데이터 전송&lt;/b&gt;이 필수적이 되었습니다. 그중 매트로 이더넷(Metro Ethernet)은 도심 지역이나 대규모 캠퍼스 네트워크에서 많이 활용되는 솔루션으로 주목받고 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;310&quot; data-start=&quot;128&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot;&gt;메트로 이더넷은 MAN(Metropolitan Area Network)을 통해 점대점(point-to-point) 또는 멀티포인트 연결 서비스를 제공하는 이더넷 전송 네트워크입니다. 이더넷은 LAN 기술로 시작되었지만 저속 WAN 기술을 대체하게 되었습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;310&quot; data-start=&quot;128&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;310&quot; data-start=&quot;128&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;333&quot; data-start=&quot;317&quot; data-ke-size=&quot;size26&quot;&gt;1. 매트로 이더넷이란?&lt;/h2&gt;
&lt;p data-end=&quot;544&quot; data-start=&quot;335&quot; data-ke-size=&quot;size16&quot;&gt;매트로 이더넷(Metro Ethernet, MetroE)은 &lt;b&gt;도시 규모(Metropolitan Area)에 걸친 이더넷 기반 통신망&lt;/b&gt;을 의미합니다.&lt;br /&gt;즉, 기업이나 기관이 사용하는 LAN(Local Area Network)을 도심 내 여러 지점과 연결해 MAN(Metropolitan Area Network)처럼 확장한 형태라고 이해하면 쉽습니다.&lt;/p&gt;
&lt;p data-end=&quot;657&quot; data-start=&quot;546&quot; data-ke-size=&quot;size16&quot;&gt;기존의 WAN(Wide Area Network) 기술인 &lt;b&gt;MPLS, 프레임 릴레이, ATM&lt;/b&gt;과 달리, 매트로 이더넷은 &lt;b&gt;이더넷 기술을 기반으로 하기 때문에 설치가 간단하고 비용 효율적&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-end=&quot;657&quot; data-start=&quot;546&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;1111&quot; data-origin-height=&quot;746&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lgYkJ/btsPVflDb43/uwmDUy9kgd6cgnnDsLja00/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lgYkJ/btsPVflDb43/uwmDUy9kgd6cgnnDsLja00/img.png&quot; data-alt=&quot;출처https://www.juniper.net/kr/ko/research-topics/what-is-metro-ethernet.html&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lgYkJ/btsPVflDb43/uwmDUy9kgd6cgnnDsLja00/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlgYkJ%2FbtsPVflDb43%2FuwmDUy9kgd6cgnnDsLja00%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;1111&quot; height=&quot;746&quot; data-origin-width=&quot;1111&quot; data-origin-height=&quot;746&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처https://www.juniper.net/kr/ko/research-topics/what-is-metro-ethernet.html&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-end=&quot;681&quot; data-start=&quot;664&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-end=&quot;681&quot; data-start=&quot;664&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-end=&quot;681&quot; data-start=&quot;664&quot; data-ke-size=&quot;size26&quot;&gt;2. 매트로 이더넷의 특징&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;900&quot; data-start=&quot;683&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;728&quot; data-start=&quot;683&quot;&gt;&lt;b&gt;이더넷 기반&lt;/b&gt;: LAN에서 사용하던 친숙한 이더넷 기술을 그대로 사용&lt;/li&gt;
&lt;li data-end=&quot;767&quot; data-start=&quot;729&quot;&gt;&lt;b&gt;높은 대역폭&lt;/b&gt;: 10Mbps~100Gbps까지 지원 가능&lt;/li&gt;
&lt;li data-end=&quot;813&quot; data-start=&quot;768&quot;&gt;&lt;b&gt;확장성 용이&lt;/b&gt;: 새로운 지점 연결 시 구조 변경 없이 쉽게 확장 가능&lt;/li&gt;
&lt;li data-end=&quot;853&quot; data-start=&quot;814&quot;&gt;&lt;b&gt;비용 효율적&lt;/b&gt;: 기존 WAN 대비 설치 및 유지 비용 절감&lt;/li&gt;
&lt;li data-end=&quot;900&quot; data-start=&quot;854&quot;&gt;&lt;b&gt;QoS 지원&lt;/b&gt;: 음성, 영상, 데이터 트래픽을 구분하여 품질 보장 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-end=&quot;924&quot; data-start=&quot;907&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-end=&quot;924&quot; data-start=&quot;907&quot; data-ke-size=&quot;size26&quot;&gt;3. 매트로 이더넷의 구성&lt;/h2&gt;
&lt;p data-end=&quot;973&quot; data-start=&quot;926&quot; data-ke-size=&quot;size16&quot;&gt;매트로 이더넷은 크게 &lt;b&gt;사용자 구간과 서비스 제공자 구간&lt;/b&gt;으로 나눌 수 있습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1240&quot; data-start=&quot;975&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1071&quot; data-start=&quot;975&quot;&gt;&lt;b&gt;UNI(User Network Interface)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1071&quot; data-start=&quot;1015&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1039&quot; data-start=&quot;1015&quot;&gt;고객 단말 장치와 연결되는 인터페이스&lt;/li&gt;
&lt;li data-end=&quot;1071&quot; data-start=&quot;1043&quot;&gt;예: 기업 사무실 LAN &amp;rarr; 매트로 이더넷 포트&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1171&quot; data-start=&quot;1073&quot;&gt;&lt;b&gt;ENNI(External Network-to-Network Interface)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1171&quot; data-start=&quot;1129&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1150&quot; data-start=&quot;1129&quot;&gt;서비스 제공자 망 간 연결 지점&lt;/li&gt;
&lt;li data-end=&quot;1171&quot; data-start=&quot;1154&quot;&gt;예: ISP 간 트래픽 교환&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1240&quot; data-start=&quot;1173&quot;&gt;&lt;b&gt;Metro Core&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1240&quot; data-start=&quot;1196&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1215&quot; data-start=&quot;1196&quot;&gt;도심 내 고속 백본 네트워크&lt;/li&gt;
&lt;li data-end=&quot;1240&quot; data-start=&quot;1219&quot;&gt;대규모 데이터 전송과 안정성을 담당&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-end=&quot;1245&quot; data-start=&quot;1242&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1268&quot; data-start=&quot;1247&quot; data-ke-size=&quot;size26&quot;&gt;4. 매트로 이더넷의 서비스 유형&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1508&quot; data-start=&quot;1270&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style7&quot;&gt;
&lt;tbody data-end=&quot;1508&quot; data-start=&quot;1308&quot;&gt;
&lt;tr data-end=&quot;1364&quot; data-start=&quot;1308&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1338&quot; data-start=&quot;1308&quot;&gt;&lt;b&gt;E-Line (Point-to-Point)&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;1364&quot; data-start=&quot;1338&quot; data-col-size=&quot;sm&quot;&gt;두 지점을 직접 연결, 데이터 전송 전용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1438&quot; data-start=&quot;1365&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1404&quot; data-start=&quot;1365&quot;&gt;&lt;b&gt;E-LAN (Multipoint-to-Multipoint)&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;1438&quot; data-start=&quot;1404&quot; data-col-size=&quot;sm&quot;&gt;여러 지점 간 상호 연결 가능, 가상 LAN 환경 제공&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1508&quot; data-start=&quot;1439&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1472&quot; data-start=&quot;1439&quot;&gt;&lt;b&gt;E-Tree (Rooted Multipoint)&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;1508&quot; data-start=&quot;1472&quot; data-col-size=&quot;sm&quot;&gt;중앙 서버와 여러 지점 간 연결, 트래픽 단방향 흐름 관리&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;1513&quot; data-start=&quot;1510&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1532&quot; data-start=&quot;1515&quot; data-ke-size=&quot;size26&quot;&gt;5. 매트로 이더넷의 장점&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1723&quot; data-start=&quot;1534&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1566&quot; data-start=&quot;1534&quot;&gt;&lt;b&gt;간편한 설치&lt;/b&gt;: LAN 기술 그대로 사용 가능&lt;/li&gt;
&lt;li data-end=&quot;1613&quot; data-start=&quot;1567&quot;&gt;&lt;b&gt;유연한 확장&lt;/b&gt;: 새로운 지점을 추가해도 기존 네트워크 구조 변경 불필요&lt;/li&gt;
&lt;li data-end=&quot;1644&quot; data-start=&quot;1614&quot;&gt;&lt;b&gt;높은 성능&lt;/b&gt;: 대역폭을 자유롭게 할당 가능&lt;/li&gt;
&lt;li data-end=&quot;1684&quot; data-start=&quot;1645&quot;&gt;&lt;b&gt;비용 절감&lt;/b&gt;: 전용 회선이나 복잡한 WAN 장비 필요 없음&lt;/li&gt;
&lt;li data-end=&quot;1723&quot; data-start=&quot;1685&quot;&gt;&lt;b&gt;QoS 지원&lt;/b&gt;: 음성, 영상 등 트래픽 우선 순위 조정 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1728&quot; data-start=&quot;1725&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1741&quot; data-start=&quot;1730&quot; data-ke-size=&quot;size26&quot;&gt;6. 활용 사례&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1954&quot; data-start=&quot;1743&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1797&quot; data-start=&quot;1743&quot;&gt;&lt;b&gt;기업 지점 연결&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1797&quot; data-start=&quot;1764&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1797&quot; data-start=&quot;1764&quot;&gt;서울 본사와 전국 지사를 &lt;b&gt;고속 LAN처럼 연결&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1852&quot; data-start=&quot;1798&quot;&gt;&lt;b&gt;캠퍼스 네트워크&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1852&quot; data-start=&quot;1819&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1852&quot; data-start=&quot;1819&quot;&gt;대학, 병원 등 대규모 캠퍼스 내부와 외부 지점 연결&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1904&quot; data-start=&quot;1853&quot;&gt;&lt;b&gt;데이터 센터 간 연결&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1904&quot; data-start=&quot;1877&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1904&quot; data-start=&quot;1877&quot;&gt;여러 데이터 센터를 안정적이고 빠르게 연결&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1954&quot; data-start=&quot;1905&quot;&gt;&lt;b&gt;클라우드 서비스 연결&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1954&quot; data-start=&quot;1929&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1954&quot; data-start=&quot;1929&quot;&gt;온프레미스와 클라우드 간 고속 데이터 전송&lt;/li&gt;
&lt;/ul&gt;
&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;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-start=&quot;1730&quot; data-end=&quot;1741&quot; data-ke-size=&quot;size26&quot;&gt;7. Q-in-Q란 무엇인가?&lt;/h2&gt;
&lt;p data-end=&quot;306&quot; data-start=&quot;93&quot; data-ke-size=&quot;size16&quot;&gt;Q-in-Q는 &lt;b&gt;802.1Q 터널링(VLAN 태깅 중첩)&lt;/b&gt; 기술을 의미합니다.&lt;br /&gt;기존 VLAN 태그(802.1Q)는 한 번만 붙여서 LAN 트래픽을 구분할 수 있지만, Q-in-Q는 &lt;b&gt;외부 VLAN 태그(S-VLAN, Service VLAN) 위에 내부 VLAN 태그(C-VLAN, Customer VLAN)를 추가&lt;/b&gt;로 붙여 여러 계층의 VLAN을 구분할 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;379&quot; data-start=&quot;308&quot; data-ke-size=&quot;size16&quot;&gt;즉, 고객 트래픽을 그대로 유지하면서 서비스 제공자 네트워크 안에서 &lt;b&gt;별도의 VLAN 영역으로 감싸서 전송&lt;/b&gt;하는 방식입니다.&lt;/p&gt;
&lt;p data-end=&quot;405&quot; data-start=&quot;381&quot; data-ke-size=&quot;size16&quot;&gt;────────────────────────&lt;/p&gt;
&lt;h2 data-end=&quot;430&quot; data-start=&quot;407&quot; data-ke-size=&quot;size26&quot;&gt;매트로 이더넷과 Q-in-Q의 연관성&lt;/h2&gt;
&lt;p data-end=&quot;529&quot; data-start=&quot;432&quot; data-ke-size=&quot;size16&quot;&gt;매트로 이더넷에서는 여러 고객이 하나의 도심 통신망을 공유하게 됩니다.&lt;br /&gt;이때 각 고객의 LAN 트래픽이 겹치지 않도록 구분해야 하는데, Q-in-Q가 핵심 역할을 합니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;758&quot; data-start=&quot;531&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;605&quot; data-start=&quot;531&quot;&gt;&lt;b&gt;고객별 VLAN 유지&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;605&quot; data-start=&quot;555&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;605&quot; data-start=&quot;555&quot;&gt;고객 A, 고객 B 각각의 VLAN을 그대로 유지하면서 매트로 네트워크를 통해 전송&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;680&quot; data-start=&quot;607&quot;&gt;&lt;b&gt;서비스 제공자 VLAN 추가&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;680&quot; data-start=&quot;635&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;680&quot; data-start=&quot;635&quot;&gt;고객 트래픽 위에 S-VLAN 태그를 추가해 서비스 제공자망에서 식별 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;758&quot; data-start=&quot;682&quot;&gt;&lt;b&gt;대규모 확장 가능&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;758&quot; data-start=&quot;704&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;758&quot; data-start=&quot;704&quot;&gt;일반 VLAN 4096개 제한을 넘어서도 여러 계층의 태깅으로 수만 개 VLAN 처리 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-end=&quot;784&quot; data-start=&quot;760&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;제목 없는 다이어그램.drawio.png&quot; data-origin-width=&quot;545&quot; data-origin-height=&quot;406&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFbe1M/btsPVCt4ef2/MpREvs3rC7d11bnVl1IzWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFbe1M/btsPVCt4ef2/MpREvs3rC7d11bnVl1IzWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFbe1M/btsPVCt4ef2/MpREvs3rC7d11bnVl1IzWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFbe1M%2FbtsPVCt4ef2%2FMpREvs3rC7d11bnVl1IzWk%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;545&quot; height=&quot;406&quot; data-filename=&quot;제목 없는 다이어그램.drawio.png&quot; data-origin-width=&quot;545&quot; data-origin-height=&quot;406&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-end=&quot;801&quot; data-start=&quot;786&quot; data-ke-size=&quot;size26&quot;&gt;Q-in-Q 동작 예시&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;862&quot; data-start=&quot;803&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;832&quot; data-start=&quot;803&quot;&gt;고객 LAN: C-VLAN 10, 20, 30&lt;/li&gt;
&lt;li data-end=&quot;862&quot; data-start=&quot;833&quot;&gt;서비스 제공자망: S-VLAN 100, 200&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;895&quot; data-start=&quot;864&quot; data-ke-size=&quot;size16&quot;&gt;매트로 이더넷 스위치가 들어오는 트래픽을 처리할 때,&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;997&quot; data-start=&quot;896&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;929&quot; data-start=&quot;896&quot;&gt;고객 VLAN 10 &amp;rarr; S-VLAN 100 안에 태깅&lt;/li&gt;
&lt;li data-end=&quot;963&quot; data-start=&quot;930&quot;&gt;고객 VLAN 20 &amp;rarr; S-VLAN 200 안에 태깅&lt;/li&gt;
&lt;li data-end=&quot;997&quot; data-start=&quot;964&quot;&gt;고객 VLAN 30 &amp;rarr; S-VLAN 200 안에 태깅&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1045&quot; data-start=&quot;999&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 하면 고객별 VLAN 충돌 없이 통합 매트로 네트워크를 운용할 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;1071&quot; data-start=&quot;1047&quot; data-ke-size=&quot;size16&quot;&gt;────────────────────────&lt;/p&gt;
&lt;h2 data-end=&quot;1085&quot; data-start=&quot;1073&quot; data-ke-size=&quot;size26&quot;&gt;Q-in-Q 장점&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1176&quot; data-start=&quot;1087&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1108&quot; data-start=&quot;1087&quot;&gt;고객 트래픽 분리 및 보안 강화&lt;/li&gt;
&lt;li data-end=&quot;1128&quot; data-start=&quot;1109&quot;&gt;VLAN 수 제한 문제 해결&lt;/li&gt;
&lt;li data-end=&quot;1158&quot; data-start=&quot;1129&quot;&gt;매트로 이더넷에서 여러 고객 트래픽 공유 가능&lt;/li&gt;
&lt;li data-end=&quot;1176&quot; data-start=&quot;1159&quot;&gt;서비스 제공자망 관리 단순화&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1202&quot; data-start=&quot;1178&quot; data-ke-size=&quot;size16&quot;&gt;────────────────────────&lt;/p&gt;
&lt;p data-end=&quot;1297&quot; data-start=&quot;1204&quot; data-ke-size=&quot;size16&quot;&gt;정리하면, &lt;b&gt;매트로 이더넷이 여러 고객을 한 네트워크로 연결하는 통신망이라면, Q-in-Q는 그 안에서 고객 트래픽을 안전하고 효율적으로 분리하는 기술&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>네트워크/Layer2</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/177</guid>
      <comments>https://kujung.tistory.com/entry/%EB%A7%A4%ED%8A%B8%EB%A1%9C-%EC%9D%B4%EB%8D%94%EB%84%B7Metro-Ethernet%EC%9D%B4%EB%9E%80#entry177comment</comments>
      <pubDate>Sat, 16 Aug 2025 00:58:02 +0900</pubDate>
    </item>
    <item>
      <title>와이어샤크를 통한 프로토콜 분석 - HTTP 요청-응답</title>
      <link>https://kujung.tistory.com/entry/%EC%99%80%EC%9D%B4%EC%96%B4%EC%83%A4%ED%81%AC%EB%A5%BC-%ED%86%B5%ED%95%9C-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C-%EB%B6%84%EC%84%9D-HTTP-%EC%9A%94%EC%B2%AD-%EC%9D%91%EB%8B%B5</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;IT 개발자나 네트워크 엔지니어에게 필요한 와이어샤크를 실습하면서 배워보려고 한다.&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;&lt;a href=&quot;https://www.youtube.com/watch?v=I_aCbbzORms&quot;&gt;https://www.youtube.com/watch?v=I_aCbbzORms&lt;/a&gt;&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;a href=&quot;https://github.com/kangtegong/self-learning-cs2&quot;&gt;https://github.com/kangtegong/self-learning-cs2&lt;/a&gt;&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;한빛미디어의 강의를 바탕으로 배운것들을 정리해본다.&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;h2 data-end=&quot;49&quot; data-start=&quot;28&quot; data-ke-size=&quot;size26&quot;&gt;1. HTTP 요청과 응답의 개념&lt;/h2&gt;
&lt;p data-end=&quot;140&quot; data-start=&quot;50&quot; data-ke-size=&quot;size16&quot;&gt;HTTP(HyperText Transfer Protocol)는 웹에서 **클라이언트(브라우저)**와 &lt;b&gt;서버&lt;/b&gt;가 정보를 주고받을 때 쓰는 약속(프로토콜)입니다.&lt;/p&gt;
&lt;h3 data-end=&quot;166&quot; data-start=&quot;142&quot; data-ke-size=&quot;size23&quot;&gt;1.1 HTTP 요청(Request)&lt;/h3&gt;
&lt;p data-end=&quot;232&quot; data-start=&quot;167&quot; data-ke-size=&quot;size16&quot;&gt;클라이언트 &amp;rarr; 서버로 보내는 메시지로,&lt;br /&gt;&quot;서버야, 이 정보를 좀 줘&quot; 또는 &quot;이 작업 좀 해줘&quot;라고 요청하는 것.&lt;/p&gt;
&lt;p data-end=&quot;240&quot; data-start=&quot;234&quot; data-ke-size=&quot;size16&quot;&gt;구성 요소:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;616&quot; data-start=&quot;241&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;396&quot; data-start=&quot;241&quot;&gt;&lt;b&gt;요청 라인(Request Line)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;396&quot; data-start=&quot;273&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;396&quot; data-start=&quot;273&quot;&gt;예: GET /index.html HTTP/1.1
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;396&quot; data-start=&quot;312&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;332&quot; data-start=&quot;312&quot;&gt;&lt;b&gt;GET&lt;/b&gt; &amp;rarr; 요청 메서드&lt;/li&gt;
&lt;li data-end=&quot;366&quot; data-start=&quot;338&quot;&gt;/index.html &amp;rarr; 요청 대상 경로&lt;/li&gt;
&lt;li data-end=&quot;396&quot; data-start=&quot;372&quot;&gt;HTTP/1.1 &amp;rarr; HTTP 버전&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;518&quot; data-start=&quot;397&quot;&gt;&lt;b&gt;헤더(Header)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;518&quot; data-start=&quot;420&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;518&quot; data-start=&quot;420&quot;&gt;클라이언트 정보, 요청 조건, 인증 토큰, 데이터 형식 등을 포함
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;518&quot; data-start=&quot;466&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;518&quot; data-start=&quot;466&quot;&gt;예: User-Agent: Chrome/119, Accept: text/html&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;616&quot; data-start=&quot;519&quot;&gt;&lt;b&gt;본문(Body)&lt;/b&gt; (필요할 때만)
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;616&quot; data-start=&quot;551&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;616&quot; data-start=&quot;551&quot;&gt;주로 POST, PUT 요청에서 서버로 데이터를 전송할 때 사용
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;616&quot; data-start=&quot;596&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;616&quot; data-start=&quot;596&quot;&gt;예: JSON, 폼 데이터 등&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-end=&quot;648&quot; data-start=&quot;623&quot; data-ke-size=&quot;size23&quot;&gt;1.2 HTTP 응답(Response)&lt;/h3&gt;
&lt;p data-end=&quot;713&quot; data-start=&quot;649&quot; data-ke-size=&quot;size16&quot;&gt;서버 &amp;rarr; 클라이언트로 보내는 메시지로,&lt;br /&gt;&quot;네가 요청한 자료 여기 있어&quot; 또는 &quot;요청이 실패했어&quot;를 알려주는 것.&lt;/p&gt;
&lt;p data-end=&quot;721&quot; data-start=&quot;715&quot; data-ke-size=&quot;size16&quot;&gt;구성 요소:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;995&quot; data-start=&quot;722&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;837&quot; data-start=&quot;722&quot;&gt;&lt;b&gt;상태 라인(Status Line)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;837&quot; data-start=&quot;753&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;837&quot; data-start=&quot;753&quot;&gt;예: HTTP/1.1 200 OK
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;837&quot; data-start=&quot;783&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;814&quot; data-start=&quot;783&quot;&gt;200 &amp;rarr; 상태 코드 (성공, 실패 등 표시)&lt;/li&gt;
&lt;li data-end=&quot;837&quot; data-start=&quot;820&quot;&gt;OK &amp;rarr; 상태 메시지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;944&quot; data-start=&quot;838&quot;&gt;&lt;b&gt;헤더(Header)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;944&quot; data-start=&quot;861&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;944&quot; data-start=&quot;861&quot;&gt;서버 정보, 콘텐츠 형식, 캐시 정보 등을 포함
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;944&quot; data-start=&quot;897&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;944&quot; data-start=&quot;897&quot;&gt;예: Content-Type: text/html; charset=UTF-8&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;995&quot; data-start=&quot;945&quot;&gt;&lt;b&gt;본문(Body)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;995&quot; data-start=&quot;966&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;995&quot; data-start=&quot;966&quot;&gt;실제 데이터(HTML, JSON, 이미지 등)&lt;/li&gt;
&lt;/ul&gt;
&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;&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;http-request-response.pcapng&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;928&quot; data-origin-height=&quot;127&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bA6lwJ/btsPWgj1B4D/kJFDXdP8wQCKUsLT3mXd6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bA6lwJ/btsPWgj1B4D/kJFDXdP8wQCKUsLT3mXd6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bA6lwJ/btsPWgj1B4D/kJFDXdP8wQCKUsLT3mXd6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbA6lwJ%2FbtsPWgj1B4D%2FkJFDXdP8wQCKUsLT3mXd6K%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;928&quot; height=&quot;127&quot; data-origin-width=&quot;928&quot; data-origin-height=&quot;127&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;1번 패킷의 HTTP 메시지&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;954&quot; data-origin-height=&quot;171&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bD24HV/btsPTUpiPY9/FAYHkPLvkXBpK2ptpMd2H0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bD24HV/btsPTUpiPY9/FAYHkPLvkXBpK2ptpMd2H0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bD24HV/btsPTUpiPY9/FAYHkPLvkXBpK2ptpMd2H0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbD24HV%2FbtsPTUpiPY9%2FFAYHkPLvkXBpK2ptpMd2H0%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;954&quot; height=&quot;171&quot; data-origin-width=&quot;954&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;요청을 보낸 호스트는 info.cern.ch&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요청을 보낸 경로는 /&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요청에 사용된 HTTP 메서드는 GET이라는 것을 알 수 있다.&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;\r과 \n&lt;br /&gt;&amp;bull;&amp;nbsp;\r은&amp;nbsp;캐리지&amp;nbsp;리턴(Carriage&amp;nbsp;Return)&amp;nbsp;-&amp;nbsp;커서를&amp;nbsp;현재&amp;nbsp;행의&amp;nbsp;앞으로&amp;nbsp;이동 &lt;br /&gt;&amp;bull;&amp;nbsp;\n은&amp;nbsp;라인&amp;nbsp;피드(Line&amp;nbsp;Feed)&amp;nbsp;-&amp;nbsp;다음&amp;nbsp;행으로&amp;nbsp;커서를&amp;nbsp;이동 &lt;br /&gt;&amp;bull;&amp;nbsp;\r과&amp;nbsp;\n을&amp;nbsp;같이&amp;nbsp;사용 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&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;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;439&quot; data-origin-height=&quot;187&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Th5Qt/btsPTFyWExL/NcxEADn91cEGY3kwOg6hJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Th5Qt/btsPTFyWExL/NcxEADn91cEGY3kwOg6hJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Th5Qt/btsPTFyWExL/NcxEADn91cEGY3kwOg6hJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTh5Qt%2FbtsPTFyWExL%2FNcxEADn91cEGY3kwOg6hJ0%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;439&quot; height=&quot;187&quot; data-origin-width=&quot;439&quot; data-origin-height=&quot;187&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;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2번 패킷을 보자&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;924&quot; data-origin-height=&quot;359&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HSCev/btsPSM6l6I8/5KIAiouDqoI0gZSdORHv31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HSCev/btsPSM6l6I8/5KIAiouDqoI0gZSdORHv31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HSCev/btsPSM6l6I8/5KIAiouDqoI0gZSdORHv31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHSCev%2FbtsPSM6l6I8%2F5KIAiouDqoI0gZSdORHv31%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;924&quot; height=&quot;359&quot; data-origin-width=&quot;924&quot; data-origin-height=&quot;359&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;2번 패킷은 메시지 본문이 포함되어 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Content-Type은 html이다.&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;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;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;945&quot; data-origin-height=&quot;173&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ReVIM/btsPTBDls4m/vkQMCgo7DNopvgFlDQ7IFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ReVIM/btsPTBDls4m/vkQMCgo7DNopvgFlDQ7IFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ReVIM/btsPTBDls4m/vkQMCgo7DNopvgFlDQ7IFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FReVIM%2FbtsPTBDls4m%2FvkQMCgo7DNopvgFlDQ7IFk%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;945&quot; height=&quot;173&quot; data-origin-width=&quot;945&quot; data-origin-height=&quot;173&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3번 패킷은 웹사이트 안에서 Browse the first website라는 링크를 클릭했을 때의 패킷.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 요청을 보낸 호스트는 info.cern.ch이고, 요청을 보낸 경로는 /hypertext/WWW/TheProject.html &lt;br /&gt;-&amp;nbsp;요청에&amp;nbsp;사용된&amp;nbsp;HTTP&amp;nbsp;메서드는&amp;nbsp;GET &lt;br /&gt;-&amp;nbsp;Referer&amp;nbsp;헤더를&amp;nbsp;통해&amp;nbsp;이전에&amp;nbsp;요청을&amp;nbsp;보낸&amp;nbsp;자원이&amp;nbsp;&lt;a href=&quot;http://info.cern.ch임을&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://info.cern.ch&lt;/a&gt;확인 &lt;br /&gt;&lt;br /&gt;&lt;br /&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;&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;3번 패킷에 대한 응답 메시지는 5번 패킷이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;917&quot; data-origin-height=&quot;418&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXzERZ/btsPS0Kv6ce/d0uKGdZLUPJcN5MALoUS2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXzERZ/btsPS0Kv6ce/d0uKGdZLUPJcN5MALoUS2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXzERZ/btsPS0Kv6ce/d0uKGdZLUPJcN5MALoUS2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXzERZ%2FbtsPS0Kv6ce%2Fd0uKGdZLUPJcN5MALoUS2k%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;917&quot; height=&quot;418&quot; data-origin-width=&quot;917&quot; data-origin-height=&quot;418&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2번 패킷과 마찬가지로 HTML 문서를 응답 받게 된다.&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;</description>
      <category>네트워크/wireshark</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/175</guid>
      <comments>https://kujung.tistory.com/entry/%EC%99%80%EC%9D%B4%EC%96%B4%EC%83%A4%ED%81%AC%EB%A5%BC-%ED%86%B5%ED%95%9C-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C-%EB%B6%84%EC%84%9D-HTTP-%EC%9A%94%EC%B2%AD-%EC%9D%91%EB%8B%B5#entry175comment</comments>
      <pubDate>Fri, 15 Aug 2025 19:25:58 +0900</pubDate>
    </item>
    <item>
      <title>[k8s] 데브옵스 한방정리</title>
      <link>https://kujung.tistory.com/entry/kubernetes-%EB%8D%B0%EB%B8%8C%EC%98%B5%EC%8A%A4-%ED%95%9C%EB%B0%A9%EC%A0%95%EB%A6%AC</link>
      <description>&lt;h3 style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;데브옵스를 구성하는 오픈소스들&lt;/span&gt;&lt;/h3&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1239&quot; data-origin-height=&quot;608&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6EVqc/btsPQwuxAVs/x1C5NVrJ7dxPpE1kkFxe8k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6EVqc/btsPQwuxAVs/x1C5NVrJ7dxPpE1kkFxe8k/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6EVqc/btsPQwuxAVs/x1C5NVrJ7dxPpE1kkFxe8k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6EVqc%2FbtsPQwuxAVs%2Fx1C5NVrJ7dxPpE1kkFxe8k%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;1239&quot; height=&quot;608&quot; data-origin-width=&quot;1239&quot; data-origin-height=&quot;608&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; 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;1238&quot; data-origin-height=&quot;64&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pnFBz/btsPSbiNSLF/39rZepm8qRdGk52iry83O0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pnFBz/btsPSbiNSLF/39rZepm8qRdGk52iry83O0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pnFBz/btsPSbiNSLF/39rZepm8qRdGk52iry83O0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpnFBz%2FbtsPSbiNSLF%2F39rZepm8qRdGk52iry83O0%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;1238&quot; height=&quot;64&quot; data-origin-width=&quot;1238&quot; data-origin-height=&quot;64&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;DevOps가 개발에서 운영까지 원할한 흐름을 만드는 건데, 중간에 가장 중요한 역할을 하는게 CI/CD. &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;CI는 통합된 소스를 가지고 빌드/테스트를 자동화 시키는 기능을 만드는 거고, CD는 배포를 자동화 시키는 기능&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그래서 결국 개발을 해서 커밋을 하는 순간, 운영 환경에 App이 자동으로 배포가 되는 파이프라인이 만들어 지는데, 세부적으로 나누면 위 그림처럼 8가지 단계가 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;계획/개발, 빌드/테스트, 릴리즈/배포, 그리고 운영/모니터링 인데, 이걸 각 단계를 대표적으로 사용하는 오픈소스를 가지고 얘기를 해보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[계획]&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;단계부터 시작합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1239&quot; data-origin-height=&quot;608&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GI78J/btsPR7OhpSF/Bb1ZAZ1PUNKEoKY01Eh6ek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GI78J/btsPR7OhpSF/Bb1ZAZ1PUNKEoKY01Eh6ek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GI78J/btsPR7OhpSF/Bb1ZAZ1PUNKEoKY01Eh6ek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGI78J%2FbtsPR7OhpSF%2FBb1ZAZ1PUNKEoKY01Eh6ek%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;1239&quot; height=&quot;608&quot; data-origin-width=&quot;1239&quot; data-origin-height=&quot;608&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;강사님이 개발할 당시에는 redmine을 많이 썻다고 하는데, 지금은 Jira나 notion을 많이 사용. &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기능은 비슷한데, UI가 요즘 스타일로 많이 세련되 졌고요. &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;개발 일정을 공유하거나 이슈 사항들을 기록해야 되기 때문에 이런 툴을 사용. &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;협업은 서로 메신저를 통해서 개발에 관련된 대화를 하는 걸 말하는데, 사실 카톡이나 사내 메신저를 써도 되는 부분이긴 하지만&amp;nbsp; 그래도 슬렉을 쓰는 가장 큰 이유가 하나 있습니다. (마지막에)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;span style=&quot;color: #000000;&quot;&gt;다음으로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[개발]&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;인데&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1239&quot; data-origin-height=&quot;608&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/C2y6F/btsPPkBZS5i/Ks9gSgcc2UnO9y4wy2Zfm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/C2y6F/btsPPkBZS5i/Ks9gSgcc2UnO9y4wy2Zfm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/C2y6F/btsPPkBZS5i/Ks9gSgcc2UnO9y4wy2Zfm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FC2y6F%2FbtsPPkBZS5i%2FKs9gSgcc2UnO9y4wy2Zfm1%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;1239&quot; height=&quot;608&quot; data-origin-width=&quot;1239&quot; data-origin-height=&quot;608&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;인텔리제이나, OpenJDK, 그리고 Spring Boot는 이전에 내용이 있었고, 밑에 JUnit은 테스트 코드를 작성할 때 필요해요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;보통 개발할때 if문 3~4개에 for문도 여러개 섞어서 복잡한 로직을 만들어 내죠. 이게 처음 만들 때는 집중해서 만들기 때문에 로직이 이해 되는데, 하루만 지나도 이 로직이 이해가 안되기 시작해요. 아무래 내가 짠 코드라도 다시 이해하는게 힘들어 지는데, 이럴때는 차라리 입력값을 넣어서 돌려보고, 결과값을 보는 게 로직을 이해하는 데 쉽거든요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그래서 바로 이런 테스트 코드를 만들어 놓는 게 좋고, 혹시라도 다른 사람이 이 로직을 수정하더라도,&amp;nbsp;테스트 코드를 돌려봐서 기대했던 값이 잘 나오면 안심을 할 수가 있죠. 그래서 코드를 개발할 때 조금만 고생해서 이렇게 테스트 코드도 같이 만들어 놓습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다음으로 코드 분석 이라고 해서 FindBug나 PMD는 내가 짠 코드 패턴에 혹시 모를 버그가 있는지를 체크해줘요.&amp;nbsp;그래서 잘못된 로직을 짜지 않도록 도와주는데, 이런거 뿐만아니라 개발자간에 미리 코딩 스타일을 정해 놓거나,&amp;nbsp;개발 편의를 위해서 사용하는 툴 들은 엄청 많습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다음으로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[빌드]&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 볼께요.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1239&quot; data-origin-height=&quot;608&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BLYbg/btsPPnZNn8W/yLvvDhpqeVlRH4k62hj1wk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BLYbg/btsPPnZNn8W/yLvvDhpqeVlRH4k62hj1wk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BLYbg/btsPPnZNn8W/yLvvDhpqeVlRH4k62hj1wk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBLYbg%2FbtsPPnZNn8W%2FyLvvDhpqeVlRH4k62hj1wk%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;1239&quot; height=&quot;608&quot; data-origin-width=&quot;1239&quot; data-origin-height=&quot;608&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;빌드 대상은 소스와 컨테이너고 Gradle과 도커가 사용됩니다. 소스 빌드로 현재 Maven보단 Gradle을 많이 쓰지만 저장소 자체는 메이븐 저장소에서 라이브러리를 가져 오는 거고요.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이제 다음으로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[테스트]&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;예요.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1239&quot; data-origin-height=&quot;608&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzICei/btsPRqOgGDI/Gbxy1kJg1Es8yRmw7haxjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzICei/btsPRqOgGDI/Gbxy1kJg1Es8yRmw7haxjK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzICei/btsPRqOgGDI/Gbxy1kJg1Es8yRmw7haxjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzICei%2FbtsPRqOgGDI%2FGbxy1kJg1Es8yRmw7haxjK%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;1239&quot; height=&quot;608&quot; data-origin-width=&quot;1239&quot; data-origin-height=&quot;608&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;테스트를 해야되는 요소에는 크게 3가지가 있는데, 기능이랑 성능 그리고 커버리지예요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;각각 Junit, Jmeter, JACOCO라는 툴 들이 쓰이고. 각자 개발단계에서 테스트 코드를 만들고 실행을 해봤더라도&amp;nbsp;코드들이 병합되고 나서 또 다른 결과가 나올 수 있기 때문에, 빌드 단계에서 이 JUnit을 실행시켜서 자동으로 테스트를 한번 더 돌려 보는 거예요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그래서 위치는 이렇게 빌드에 연결되서 테스트가 같이 실행되는 거고, 테스트 이후에 Jacoco라는 툴을 돌리면 이 테스트를 돌렸을 때 사용된 로직들이, App 전체에서 어느정도 범위를 테스트 해본 건지, 커버리지를 결과를 알려줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그래서 내가 돌려본 테스트 케이스들이 전체 로직에서 많은 부분을 차지할 수록, 이 App에 대한 신뢰도가 높다고 판단을 해요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그리고 JMeter는 성능 테스트를 하는 툴 인데, 이건 자동화 기능은 아니고,&amp;nbsp;여기 개발환경이나 검증환경을 대상으로 진행 합니다. 통상 별도의 성능 테스트 전문 인력이 날잡아서 수동으로 진행하고요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이제 다음으로&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[릴리즈]&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;와&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[배포]&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1239&quot; data-origin-height=&quot;608&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cuspvp/btsPO2OuO8L/6bKsyCQ7JcN0cnpy5gnel0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cuspvp/btsPO2OuO8L/6bKsyCQ7JcN0cnpy5gnel0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cuspvp/btsPO2OuO8L/6bKsyCQ7JcN0cnpy5gnel0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcuspvp%2FbtsPO2OuO8L%2F6bKsyCQ7JcN0cnpy5gnel0%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;1239&quot; height=&quot;608&quot; data-origin-width=&quot;1239&quot; data-origin-height=&quot;608&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;릴리즈는 배포 가능한 패키지를 만드는 과정이에요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;도커 빌드를 하기 위해서는 Dockerfile이라는 스크립트를 작성해야 되고, 또 쿠버네티스에 배포를 하기 위해서 yaml 파일들을 사전에 만들어 놔야 되는데 이렇게 배포를 하기 위한 별도의 패키지를 만드는 게 릴리즈고, 이 파일들도 변경관리가 되야 하기 때문에 작성한 내용들을 이렇게 Github에 올려 놓습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이제 다음 단계로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[운영]&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;입니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1239&quot; data-origin-height=&quot;608&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b923xi/btsPO8OD5Fy/ptDHk8VNBtq4hIjNiVR3bk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b923xi/btsPO8OD5Fy/ptDHk8VNBtq4hIjNiVR3bk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b923xi/btsPO8OD5Fy/ptDHk8VNBtq4hIjNiVR3bk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb923xi%2FbtsPO8OD5Fy%2FptDHk8VNBtq4hIjNiVR3bk%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;1239&quot; height=&quot;608&quot; data-origin-width=&quot;1239&quot; data-origin-height=&quot;608&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이건 실제 운영환경을 구성하는 요소와 툴 들이라고 보시면 되요. 여기서 Nginx와 Istio는 네트워크 트래픽 관리에 대한 도구에요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;운영을 구성하는 환경들은 다 표현하기 힘들 정도로 많지만, 이정도로만 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이렇게 인프라 환경 안에서 설치되고, 운영자는 이 툴들이 정상적으로 잘 돌아가고 있는지 확인해야 하는 역할을 하죠.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그리고 마지막으로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[모니터링]&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;인데,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1239&quot; data-origin-height=&quot;608&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lzfAZ/btsPRAJVCKJ/FcW63DK4fjB8sClXXKph80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lzfAZ/btsPRAJVCKJ/FcW63DK4fjB8sClXXKph80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lzfAZ/btsPRAJVCKJ/FcW63DK4fjB8sClXXKph80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlzfAZ%2FbtsPRAJVCKJ%2FFcW63DK4fjB8sClXXKph80%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;1239&quot; height=&quot;608&quot; data-origin-width=&quot;1239&quot; data-origin-height=&quot;608&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;모니터링 요소는 주로 자원 사용량이나 App로그 그리고 트래픽 흐름을 많이 봐요. Grafana 나 Loki 그리고 Prometheus는 Sprint1에서 사용을 해봤고. 이게 자원 사용량이랑 App로그를 보기 위한 툴이였죠?&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그리고 Jaeger랑 Zipkin은 트래픽 흐름을 보기 위한 도구예요.&amp;nbsp;이제 마이크로서비스 환경이 많아졌기 때문에 서비스들 간에 트래픽이 어떻게 흘러가는지 추적을 하는게 중요해 졌습니다. 그래서 이런 오픈소스들을 설치해야 되고&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위치는 운영과 똑같이 인프라 환경 내에 설치가 되요. 이 App들은 다 쿠버네티스 클러스터 위에서 Pod로 띄어 진다고 보시면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그럼 여기까지가 모니터링까지 다 설명을 드린거고,&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아까&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[Slack을 쓰는 이유]에 대해 설명하면&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1239&quot; data-origin-height=&quot;608&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjyiDD/btsPQDUSuhZ/SsYKLYuVLjijWW30CsEd0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjyiDD/btsPQDUSuhZ/SsYKLYuVLjijWW30CsEd0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjyiDD/btsPQDUSuhZ/SsYKLYuVLjijWW30CsEd0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjyiDD%2FbtsPQDUSuhZ%2FSsYKLYuVLjijWW30CsEd0k%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;1239&quot; height=&quot;608&quot; data-origin-width=&quot;1239&quot; data-origin-height=&quot;608&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;딴게 아니라 이렇게 연결되는 그림들이 있어야 되서 그래요. 이렇게 슬렉은 데브옵스에 중요 포인트 차지하고 있는 툴들이랑 연동이 할 수가 있거든요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;통상 메신저에는 개발자나, 데브옵스 엔지니어 혹은 운영자들이 모여 있는 방이 각각 있을 텐데,&amp;nbsp;슬렉을 쓰면 이 파이프라인에서 발생하는 알람들을 필요한 방에 울리도록 설정할 수가 있는거죠. 그래서 이게 협업을 위한 여러 메신저들 중에서, 그래도 슬렉을 쓰면 좋은 점 이었습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자 그럼 여기까지가 데브옵스를 구성하는 오픈소스들에 대한 설명이였는데, 현재는 이렇게 데브옵스가 복잡해 졌습니다. 그래서 기업에서는 데브옵스 엔지니어를 별도로 뽑을 수 밖에 없는 거고요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;뭔가 많아 보이지만, 그래도 차근차근 하나씩 구성하다 보면 생각보다 금방 파이프라인이 만들어 지기도하고 여기 있는걸 한번에 다 만들 필요는 없어요. 배포를 한다고 처음부터 helm이나 argoCD를 적용할 필요는 없는 거고 Kubectl 배포부터 일단 연결을 해 놓은 다음에 하나씩 장비를 업그레이드 하는 마음으로 바꿔 나가면 되거든요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;쿠버네티스 어나더클래스 DevOps 전체 구성도&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1129&quot; data-origin-height=&quot;562&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GeEXX/btsPO4yOOpH/LfC8BChVMv0P21S78ZKXF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GeEXX/btsPO4yOOpH/LfC8BChVMv0P21S78ZKXF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GeEXX/btsPO4yOOpH/LfC8BChVMv0P21S78ZKXF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGeEXX%2FbtsPO4yOOpH%2FLfC8BChVMv0P21S78ZKXF1%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;1129&quot; height=&quot;562&quot; data-origin-width=&quot;1129&quot; data-origin-height=&quot;562&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;DevOps에서 가장 중요한 것&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(개발-&amp;gt;빌드-&amp;gt;실행파일)&lt;/span&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1087&quot; data-origin-height=&quot;562&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cl6TBA/btsPPOJdp1k/UZKx5T2FtVpm9wWpbgyLq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cl6TBA/btsPPOJdp1k/UZKx5T2FtVpm9wWpbgyLq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cl6TBA/btsPPOJdp1k/UZKx5T2FtVpm9wWpbgyLq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcl6TBA%2FbtsPPOJdp1k%2FUZKx5T2FtVpm9wWpbgyLq0%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;1087&quot; height=&quot;562&quot; data-origin-width=&quot;1087&quot; data-origin-height=&quot;562&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;DevOps에 엮인 IT 직군들&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1257&quot; data-origin-height=&quot;546&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCSkfU/btsPQF6gXk8/AGmucur9aBqQEMDQpHjhf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCSkfU/btsPQF6gXk8/AGmucur9aBqQEMDQpHjhf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCSkfU/btsPQF6gXk8/AGmucur9aBqQEMDQpHjhf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCSkfU%2FbtsPQF6gXk8%2FAGmucur9aBqQEMDQpHjhf1%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;1257&quot; height=&quot;546&quot; data-origin-width=&quot;1257&quot; data-origin-height=&quot;546&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;DevOps 외 다른 Ops들&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1257&quot; data-origin-height=&quot;546&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mJEVv/btsPPYZuB46/g92d8UgCjp8OkwMC7NKee1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mJEVv/btsPPYZuB46/g92d8UgCjp8OkwMC7NKee1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mJEVv/btsPPYZuB46/g92d8UgCjp8OkwMC7NKee1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmJEVv%2FbtsPPYZuB46%2Fg92d8UgCjp8OkwMC7NKee1%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;1257&quot; height=&quot;546&quot; data-origin-width=&quot;1257&quot; data-origin-height=&quot;546&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #00a760;&quot;&gt;해당 블로그 내용은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #00a760;&quot;&gt;[쿠버네티스 어나더 클래스]&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #00a760;&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;인프런&amp;nbsp;&lt;/span&gt;강의를 정리한 것입니다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: unset;&quot;&gt;&lt;span style=&quot;color: #343a40;&quot;&gt;강의 링크 :&lt;/span&gt;&lt;span style=&quot;color: #00a760;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://inf.run/NzKy&quot;&gt;https://inf.run/NzKy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>인프라/쿠버네티스</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/174</guid>
      <comments>https://kujung.tistory.com/entry/kubernetes-%EB%8D%B0%EB%B8%8C%EC%98%B5%EC%8A%A4-%ED%95%9C%EB%B0%A9%EC%A0%95%EB%A6%AC#entry174comment</comments>
      <pubDate>Fri, 15 Aug 2025 19:19:18 +0900</pubDate>
    </item>
    <item>
      <title>AWS 3 Tier Architecture 구축해보기 2-11</title>
      <link>https://kujung.tistory.com/entry/AWS-3-Tier-Architecture-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B0-2-11</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/estrellaSia/AWS_3Tier_Infra_Data_Pipeline/tree/main&quot;&gt;https://github.com/estrellaSia/AWS_3Tier_Infra_Data_Pipeline/tree/main&lt;/a&gt;&lt;br /&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;3-tier.drawio.png&quot; data-origin-width=&quot;1340&quot; data-origin-height=&quot;897&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bykAq1/btsPR6BOjhU/7hMXWMHdTKDoobYbSxbBsk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bykAq1/btsPR6BOjhU/7hMXWMHdTKDoobYbSxbBsk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bykAq1/btsPR6BOjhU/7hMXWMHdTKDoobYbSxbBsk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbykAq1%2FbtsPR6BOjhU%2F7hMXWMHdTKDoobYbSxbBsk%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;1340&quot; height=&quot;897&quot; data-filename=&quot;3-tier.drawio.png&quot; data-origin-width=&quot;1340&quot; data-origin-height=&quot;897&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;&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-origin-width=&quot;223&quot; data-origin-height=&quot;148&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/L8qw1/btsPOJBYQ7x/gnm1Tfelvk2tOzhIbPYd91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/L8qw1/btsPOJBYQ7x/gnm1Tfelvk2tOzhIbPYd91/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/L8qw1/btsPOJBYQ7x/gnm1Tfelvk2tOzhIbPYd91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FL8qw1%2FbtsPOJBYQ7x%2Fgnm1Tfelvk2tOzhIbPYd91%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;223&quot; height=&quot;148&quot; data-origin-width=&quot;223&quot; data-origin-height=&quot;148&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;u&gt;&lt;b&gt;1. DB 스냅샷 백업&lt;/b&gt;&lt;/u&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;데이터베이스 스냅샷을 S3에 보관&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;KMS 생성하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;bull; KMS 키를 사용하여 RDS 스냅샷을 S3로 내보내기 위해 KMS 생성하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;bull; KMS &amp;gt; 키 생성 &amp;gt; 다음과 같이 설정하기 - 키 유형: 대칭 - 키 사용: 암호화 및 해독&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 별칭: ddong-snapshot-key&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 키 관리자: admin&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 키 사용자: admin&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;p data-ke-size=&quot;size16&quot;&gt;&amp;bull; 람다 함수를 실행시키기 위해서는 2가지 권한이 필요함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. S3로 스냅샷 내보내기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;bull; RDS 스냅샷을 S3로 내보내기 위한 권한&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. Lambda 역할 &amp;bull; Lambda 함수가 실행되기 위해 필요한 권한&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;bull; &amp;lsquo;iam:PassRole&amp;rsquo; 권한을 통해 2번째 역할인 &amp;lsquo;S3 로 스냅샷 내보내기&amp;rsquo; 역할을 맡을 수 있도록 허용하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) S3로 스냅샷 내보낼 때의 정책 생성하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;bull; IAM &amp;gt; 정책 생성 &amp;gt; JSON 클릭 &amp;gt; 정책 편집기에 다음을 붙여넣기 &amp;gt; 다음과 같이 설정 &amp;gt; 정책 생성 - 정책 이름: ddong-RDS-S3&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;backup을 저장할 s3 버킷은 미리 만들어야합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1754984651462&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{ 
    &quot;Version&quot;: &quot;2012-10-17&quot;, 
    &quot;Statement&quot;: [ 
        { 
            &quot;Effect&quot;: &quot;Allow&quot;, 
            &quot;Action&quot;: [ 
                &quot;s3:PutObject&quot;, 
                &quot;s3:ListBucket&quot;, 
                &quot;s3:GetBucketLocation&quot;, 
                &quot;s3:GetObject&quot;, 
                &quot;s3:AbortMultipartUpload&quot;, 
                &quot;s3:ListMultipartUploadParts&quot;, 
                &quot;s3:DeleteObject&quot; 
            ], 
            &quot;Resource&quot;: [ 
                &quot;arn:aws:s3:::my-backup-bucketname&quot;, 
                &quot;arn:aws:s3:::my-backup-bucketname/*&quot; 
            ] 
        }, 
           { 
            &quot;Effect&quot;: &quot;Allow&quot;, 
            &quot;Action&quot;: [ 
                &quot;kms:Encrypt&quot;, 
                &quot;kms:Decrypt&quot;, 
                &quot;kms:DescribeKey&quot;, 
                &quot;kms:CreateGrant&quot; 
            ], 
            &quot;Resource&quot;: &quot;arn:aws:kms:ap-northeast-2:767828741563:key/9fc3667b-7028-4b75-9816-ab9405a6b398&quot; 
        }, 
        { 
            &quot;Effect&quot;: &quot;Allow&quot;, 
            &quot;Action&quot;: [ 
                &quot;rds:DescribeDBSnapshots&quot;, 
                &quot;rds:ListTagsForResource&quot;, 
                &quot;rds:StartExportTask&quot; 
            ], 
            &quot;Resource&quot;: &quot;*&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;&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;IAM &amp;gt; 역할 &amp;gt; 역할 생성 &amp;gt; AWS 서비스 선택 &amp;gt; 사용 사례: Lambda &amp;gt; 다음과 같은 권한 정책 추가하기 &amp;gt; 역할 이름: ddong-RDS-S3-Role &amp;gt; 역할 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ddong-RDS-S3, AWSLambdaBasicExecutionRole&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;ddong-RDS-S3-Role의 신뢰관계 다음과 같이 설정하기&lt;/p&gt;
&lt;pre id=&quot;code_1754984844767&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{ 
&quot;Version&quot;: &quot;2012-10-17&quot;, 
&quot;Statement&quot;: [ 
{ 
&quot;Effect&quot;: &quot;Allow&quot;, 
&quot;Principal&quot;: { 
&quot;Service&quot;: &quot;export.rds.amazonaws.com&quot; 
}, 
&quot;Action&quot;: &quot;sts:AssumeRole&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;&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;Lambda 함수 역할 생성하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;bull; lambda 함수를 사용하기 위한 역할을 생성하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 위에서 역할 생성을 했던 방식대로 아래와 같이 역할을 생성하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 역할 이름: ddong-administratorAccess&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 권한 추가: AdministratorAccess&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 람다 함수 생성하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;bull; Lambda &amp;gt; 함수 생성 &amp;gt; 새로 작성 &amp;gt; 다음과 같이 설정하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 함수 이름: CreateRdsSnapshotAndExport&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 런타임: Python 3.8&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;lsquo;ddong-administratorAccess&amp;rsquo; 선택하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) RDS 스냅샷 생성 후 S3 Standard에 저장하는 람다 코드 작성하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;bull; 코드 &amp;gt; 코드 소스 &amp;gt; 다음과 같이 코드 작성 &amp;gt; Deploy &amp;gt; Test&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 코드: S3 버킷과 경로는 매일 백업되는 날짜와 시간에 맞춰서 동적으로 생성됨&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;테스트 진행 시에는 다음과 같이 특정 날짜를 하드코딩해 일별로 S3에 저장되도록 하 기&lt;/p&gt;
&lt;pre id=&quot;code_1754985295589&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import boto3 
import datetime 
 
def lambda_handler(event, context): 
    rds = boto3.client('rds') 
     
    # 하드코딩된 날짜를 2025년 8월 12일로 설정 
    fixed_date = datetime.datetime(2025, 8, 12) 
     
    snapshot_id = f&quot;snapshot-{fixed_date.strftime('%Y-%m-%d')}&quot; 
    db_instance_identifier = &quot;ddong-rds-instance&quot; 
 
    # 스냅샷 생성 
    print(&quot;before&quot;) 
    try: 
        rds.create_db_snapshot( 
            DBSnapshotIdentifier=snapshot_id, 
            DBInstanceIdentifier=db_instance_identifier 
        ) 
    except Exception as e: 
        print(f&quot;Error creating snapshot: {e}&quot;) 
        raise 
 
    print(&quot;after&quot;) 
    try: 
        # 스냅샷이 사용 가능해질 때까지 대기 
        waiter = rds.get_waiter('db_snapshot_available') 
        waiter.wait(DBSnapshotIdentifier=snapshot_id) 
    except Exception as e: 
        print(f&quot;Error waiting for snapshot: {e}&quot;) 
        raise 
 
    # 고유한 export_task_id 생성 (시간까지 포함하여 고유하게 생성) 
    now = datetime.datetime.now() 
    export_task_id = f&quot;export-task-{fixed_date.strftime('%Y-%m-%d')}{now.strftime('%H-%M-%S')}&quot;
    s3_bucket_name = &quot;ddongbackupbucket-x&quot; 
    s3_prefix = f&quot;August/12/&quot; 
 
    try: 
        # 스냅샷을 S3로 내보내기 
        rds.start_export_task( ExportTaskIdentifier=export_task_id, SourceArn=f&quot;arn:aws:rds:ap-northeast-2:767xxxxxxxx:snapshot:{snapshot_id}&quot;, S3BucketName=s3_bucket_name, IamRoleArn=&quot;arn:aws:iam::767828xxxxxx:role/ddong-RDS-S3-Role&quot;, S3Prefix=s3_prefix, KmsKeyId=&quot;arn:aws:kms:ap-northeast-2:76782xxxxx:key/9fc3667b-7028-4b75-9816-ab9405a6b398&quot;)
    except Exception as e: 
        print(f&quot;Error during export: {e}&quot;) 
        raise 
    return { 
    'statusCode': 200, 
    'body': f&quot;Snapshot {snapshot_id} exported to S3://{s3_bucket_name}/{s3_prefix}&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;&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;EventBridge 구성하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;bull; EventBridge를 사용하여 Lambda 함수를 정기적으로 실행하도록 규칙을 설정하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;bull; 새벽 2시에 람다 함수를 작동시키는 것이지만, 테스트 시에는 테스트하는 시간에 맞게 변경함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) EventBridge 설정하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;bull; Amazon EventBridge &amp;gt; 규칙 &amp;gt; 규칙 생성 &amp;gt; 다음과 같이 생성하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 규칙이름: ddong-Eventbridge&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1099&quot; data-origin-height=&quot;357&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oKumV/btsPO97RMgW/K6dRcXI3LdLMCkK1sz3Tmk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oKumV/btsPO97RMgW/K6dRcXI3LdLMCkK1sz3Tmk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oKumV/btsPO97RMgW/K6dRcXI3LdLMCkK1sz3Tmk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoKumV%2FbtsPO97RMgW%2FK6dRcXI3LdLMCkK1sz3Tmk%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;1099&quot; height=&quot;357&quot; data-origin-width=&quot;1099&quot; data-origin-height=&quot;357&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테스트용으로 1회실행해보겠다.&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-origin-width=&quot;748&quot; data-origin-height=&quot;838&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8kGDD/btsPO8gQcyG/dx1JFQwUQJdIi4j4WLxWq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8kGDD/btsPO8gQcyG/dx1JFQwUQJdIi4j4WLxWq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8kGDD/btsPO8gQcyG/dx1JFQwUQJdIi4j4WLxWq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8kGDD%2FbtsPO8gQcyG%2Fdx1JFQwUQJdIi4j4WLxWq1%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;748&quot; height=&quot;838&quot; data-origin-width=&quot;748&quot; data-origin-height=&quot;838&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;&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;</description>
      <category>인프라/AWS 3Tier Architecture</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/173</guid>
      <comments>https://kujung.tistory.com/entry/AWS-3-Tier-Architecture-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B0-2-11#entry173comment</comments>
      <pubDate>Wed, 13 Aug 2025 18:48:55 +0900</pubDate>
    </item>
    <item>
      <title>AWS 3 Tier Architecture 구축해보기 2-10</title>
      <link>https://kujung.tistory.com/entry/AWS-3-Tier-Architecture-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B0-2-10</link>
      <description>&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/estrellaSia/AWS_3Tier_Infra_Data_Pipeline/tree/main&quot;&gt;https://github.com/estrellaSia/AWS_3Tier_Infra_Data_Pipeline/tree/main&lt;/a&gt;&lt;br /&gt;참고&amp;nbsp;깃허브&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://velog.io/@tak980418/CICD%EB%A5%BC-%EA%B5%AC%EC%84%B1%ED%95%B4%EB%B3%B4%EC%9E%90-1-PLAN&quot;&gt;https://velog.io/@tak980418/CICD%EB%A5%BC-%EA%B5%AC%EC%84%B1%ED%95%B4%EB%B3%B4%EC%9E%90-1-PLAN&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;3-tier.drawio.png&quot; data-origin-width=&quot;1340&quot; data-origin-height=&quot;831&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXn7WF/btsPOnd56u1/v9QFFNfoKkKUlkB1bxKStK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXn7WF/btsPOnd56u1/v9QFFNfoKkKUlkB1bxKStK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXn7WF/btsPOnd56u1/v9QFFNfoKkKUlkB1bxKStK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXn7WF%2FbtsPOnd56u1%2Fv9QFFNfoKkKUlkB1bxKStK%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;1340&quot; height=&quot;831&quot; data-filename=&quot;3-tier.drawio.png&quot; data-origin-width=&quot;1340&quot; data-origin-height=&quot;831&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;406&quot; data-origin-height=&quot;283&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uLVjR/btsPPZYgw4q/OrIjHsOsy8Rr8AnJi9z0JK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uLVjR/btsPPZYgw4q/OrIjHsOsy8Rr8AnJi9z0JK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uLVjR/btsPPZYgw4q/OrIjHsOsy8Rr8AnJi9z0JK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuLVjR%2FbtsPPZYgw4q%2FOrIjHsOsy8Rr8AnJi9z0JK%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;406&quot; height=&quot;283&quot; data-origin-width=&quot;406&quot; data-origin-height=&quot;283&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;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;u&gt;&lt;b&gt;1. 모니터링&lt;/b&gt;&lt;/u&gt;&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1) SNS 설정하기 (Web)&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;SNS &amp;gt; 주제 &amp;gt; 주제 생성 &amp;gt; 다음과 같이 설정하기&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1095&quot; data-origin-height=&quot;382&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIbeg4/btsPPmsR9MC/Z3jTi3pCeciE3ZLqU9qsik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIbeg4/btsPPmsR9MC/Z3jTi3pCeciE3ZLqU9qsik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIbeg4/btsPPmsR9MC/Z3jTi3pCeciE3ZLqU9qsik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIbeg4%2FbtsPPmsR9MC%2FZ3jTi3pCeciE3ZLqU9qsik%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;1095&quot; height=&quot;382&quot; data-origin-width=&quot;1095&quot; data-origin-height=&quot;382&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Web ASG를 대상으로 경보 생성하도록 설정하기&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;bull; CloudWatch &amp;gt; 경보 &amp;gt; 경보 생성 &amp;gt;지표 선택&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;bull; &amp;lsquo;EC2 &amp;gt; Auto Scaling 그룹별&amp;rsquo; 선택 &amp;gt; Web 서버 ASG의 CPUUtilization 선택하기 &amp;gt; 지표 선택&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1704&quot; data-origin-height=&quot;374&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/We35N/btsPRxl0Fsf/hqnKKXUeHlZ8Xxro0QS4IK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/We35N/btsPRxl0Fsf/hqnKKXUeHlZ8Xxro0QS4IK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/We35N/btsPRxl0Fsf/hqnKKXUeHlZ8Xxro0QS4IK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWe35N%2FbtsPRxl0Fsf%2FhqnKKXUeHlZ8Xxro0QS4IK%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;1704&quot; height=&quot;374&quot; data-origin-width=&quot;1704&quot; data-origin-height=&quot;374&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; 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;955&quot; data-origin-height=&quot;828&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQItDq/btsPPSrcmw8/BnekBk9UTaGrWzuX1XOKb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQItDq/btsPPSrcmw8/BnekBk9UTaGrWzuX1XOKb0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQItDq/btsPPSrcmw8/BnekBk9UTaGrWzuX1XOKb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQItDq%2FbtsPPSrcmw8%2FBnekBk9UTaGrWzuX1XOKb0%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;955&quot; height=&quot;828&quot; data-origin-width=&quot;955&quot; data-origin-height=&quot;828&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;544&quot; data-origin-height=&quot;468&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6kpiA/btsPP2tyEi6/zzY4o0nskKK5JkKbTCcQ0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6kpiA/btsPP2tyEi6/zzY4o0nskKK5JkKbTCcQ0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6kpiA/btsPP2tyEi6/zzY4o0nskKK5JkKbTCcQ0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6kpiA%2FbtsPP2tyEi6%2FzzY4o0nskKK5JkKbTCcQ0k%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;544&quot; height=&quot;468&quot; data-origin-width=&quot;544&quot; data-origin-height=&quot;468&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;309&quot; data-origin-height=&quot;202&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EHyan/btsPQEe137G/1txKeDr6Kz5fBwhJZDXDN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EHyan/btsPQEe137G/1txKeDr6Kz5fBwhJZDXDN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EHyan/btsPQEe137G/1txKeDr6Kz5fBwhJZDXDN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEHyan%2FbtsPQEe137G%2F1txKeDr6Kz5fBwhJZDXDN0%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;309&quot; height=&quot;202&quot; data-origin-width=&quot;309&quot; data-origin-height=&quot;202&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;&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;&lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;2) Amazon Q Developer 구성하기 ( 구 Chatbot)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1078&quot; data-origin-height=&quot;390&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/12ZCX/btsPRD0LfQf/gUfmDdxSNAUosJtY7QgSSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/12ZCX/btsPRD0LfQf/gUfmDdxSNAUosJtY7QgSSK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/12ZCX/btsPRD0LfQf/gUfmDdxSNAUosJtY7QgSSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F12ZCX%2FbtsPRD0LfQf%2FgUfmDdxSNAUosJtY7QgSSK%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;1078&quot; height=&quot;390&quot; data-origin-width=&quot;1078&quot; data-origin-height=&quot;390&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;268&quot; data-origin-height=&quot;291&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sz371/btsPRmrvTmV/NGa0oNE2iO30kpZjTfNYe0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sz371/btsPRmrvTmV/NGa0oNE2iO30kpZjTfNYe0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sz371/btsPRmrvTmV/NGa0oNE2iO30kpZjTfNYe0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fsz371%2FbtsPRmrvTmV%2FNGa0oNE2iO30kpZjTfNYe0%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;268&quot; height=&quot;291&quot; data-origin-width=&quot;268&quot; data-origin-height=&quot;291&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&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;&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;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;- 구성 이름: ddong-slack-channel&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;퍼블릭 채널은 slack에서 만들기.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1048&quot; data-origin-height=&quot;812&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/r061V/btsPOlgjaz7/bkBPKkhVZhsASUk8uNpApK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/r061V/btsPOlgjaz7/bkBPKkhVZhsASUk8uNpApK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/r061V/btsPOlgjaz7/bkBPKkhVZhsASUk8uNpApK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fr061V%2FbtsPOlgjaz7%2FbkBPKkhVZhsASUk8uNpApK%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;1048&quot; height=&quot;812&quot; data-origin-width=&quot;1048&quot; data-origin-height=&quot;812&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SNS 주제의 리전 1: 도쿄&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SNS 주제의 주제 1: ddongTopic&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;p data-ke-size=&quot;size16&quot;&gt;3) 경보 확인하기 (Web)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;한 Web서버에 들어가서 스트레스 주기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;bull; EC2 &amp;gt; 서버 하나 선택 &amp;gt; 연결 &amp;gt; Session Manager &amp;gt; 연결&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;bull; stress 다운받기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sudo yum update&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sudo yum install stress&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;Web 서버에stress 주기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;stress -c 2 -t 6000&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;582&quot; data-origin-height=&quot;53&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cD2NNz/btsPNoLpfZe/ki0m35mhKae2e8pbqn8pU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cD2NNz/btsPNoLpfZe/ki0m35mhKae2e8pbqn8pU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cD2NNz/btsPNoLpfZe/ki0m35mhKae2e8pbqn8pU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcD2NNz%2FbtsPNoLpfZe%2Fki0m35mhKae2e8pbqn8pU0%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;582&quot; height=&quot;53&quot; data-origin-width=&quot;582&quot; data-origin-height=&quot;53&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Cloudwatch에서 경보 확인 가능&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1605&quot; data-origin-height=&quot;587&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KWEfj/btsPOHxjlod/QnTSU3KAdmFqVOQRq43Qk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KWEfj/btsPOHxjlod/QnTSU3KAdmFqVOQRq43Qk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KWEfj/btsPOHxjlod/QnTSU3KAdmFqVOQRq43Qk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKWEfj%2FbtsPOHxjlod%2FQnTSU3KAdmFqVOQRq43Qk0%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;1605&quot; height=&quot;587&quot; data-origin-width=&quot;1605&quot; data-origin-height=&quot;587&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;&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;Slack에서도 알람이 오게됨&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;807&quot; data-origin-height=&quot;390&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/S7Za5/btsPRHhOgjH/kNmKq1ai5dNdALteNX9p5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/S7Za5/btsPRHhOgjH/kNmKq1ai5dNdALteNX9p5k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/S7Za5/btsPRHhOgjH/kNmKq1ai5dNdALteNX9p5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FS7Za5%2FbtsPRHhOgjH%2FkNmKq1ai5dNdALteNX9p5k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;807&quot; height=&quot;390&quot; data-origin-width=&quot;807&quot; data-origin-height=&quot;390&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;</description>
      <category>인프라/AWS 3Tier Architecture</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/170</guid>
      <comments>https://kujung.tistory.com/entry/AWS-3-Tier-Architecture-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B0-2-10#entry170comment</comments>
      <pubDate>Tue, 12 Aug 2025 23:11:37 +0900</pubDate>
    </item>
    <item>
      <title>와이어샤크를 통한 프로토콜 분석 - 3way, 4way handshake</title>
      <link>https://kujung.tistory.com/entry/%EC%99%80%EC%9D%B4%EC%96%B4%EC%83%A4%ED%81%AC%EB%A5%BC-%ED%86%B5%ED%95%9C-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C-%EB%B6%84%EC%84%9D-3way-4way-handshake</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;IT 개발자나 네트워크 엔지니어에게 필요한 와이어샤크를 실습하면서 배워보려고 한다.&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;&lt;a href=&quot;https://www.youtube.com/watch?v=I_aCbbzORms&quot;&gt;https://www.youtube.com/watch?v=I_aCbbzORms&lt;/a&gt;&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;a href=&quot;https://github.com/kangtegong/self-learning-cs2&quot;&gt;https://github.com/kangtegong/self-learning-cs2&lt;/a&gt;&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;한빛미디어의 강의를 바탕으로 배운것들을 정리해본다.&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;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3-Way Handshake&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;542&quot; data-origin-height=&quot;372&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDqOlg/btsPNLLMUDU/lh0HoIy1Gvph0m6ZkqzDxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDqOlg/btsPNLLMUDU/lh0HoIy1Gvph0m6ZkqzDxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDqOlg/btsPNLLMUDU/lh0HoIy1Gvph0m6ZkqzDxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDqOlg%2FbtsPNLLMUDU%2Flh0HoIy1Gvph0m6ZkqzDxK%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;542&quot; height=&quot;372&quot; data-origin-width=&quot;542&quot; data-origin-height=&quot;372&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;b&gt;3-Way Handshake&lt;/b&gt;는 TCP 연결을 맺을 때 클라이언트와 서버가 &lt;b&gt;서로의 통신 준비 상태를 확인하고 동기화(Synchronization)&lt;/b&gt; 하는 과정입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TCP가 &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;3-way-handshake.pcapng&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;1190&quot; data-origin-height=&quot;77&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cnrAul/btsPOq1IKtf/LZeKms9W7gT09Id4rzyRAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cnrAul/btsPOq1IKtf/LZeKms9W7gT09Id4rzyRAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cnrAul/btsPOq1IKtf/LZeKms9W7gT09Id4rzyRAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcnrAul%2FbtsPOq1IKtf%2FLZeKms9W7gT09Id4rzyRAK%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;1190&quot; height=&quot;77&quot; data-origin-width=&quot;1190&quot; data-origin-height=&quot;77&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;944&quot; data-origin-height=&quot;344&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bO6SLs/btsPOIuvTJS/YJgKCpPk2pWQuEPb3KpuY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bO6SLs/btsPOIuvTJS/YJgKCpPk2pWQuEPb3KpuY1/img.png&quot; data-alt=&quot;1번 데이터&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bO6SLs/btsPOIuvTJS/YJgKCpPk2pWQuEPb3KpuY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbO6SLs%2FbtsPOIuvTJS%2FYJgKCpPk2pWQuEPb3KpuY1%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;944&quot; height=&quot;344&quot; data-origin-width=&quot;944&quot; data-origin-height=&quot;344&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;1번 데이터&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1번 데이터의 목적지를 보니 HTTP 통신임을 확인 할 수 있다.&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-end=&quot;341&quot; data-start=&quot;310&quot; data-ke-size=&quot;size23&quot;&gt;첫 번째: SYN (Synchronize)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;477&quot; data-start=&quot;342&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;358&quot; data-start=&quot;342&quot;&gt;&lt;b&gt;클라이언트 &amp;rarr; 서버&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;373&quot; data-start=&quot;359&quot;&gt;연결 요청 메시지 전송&lt;/li&gt;
&lt;li data-end=&quot;391&quot; data-start=&quot;374&quot;&gt;SYN 플래그 = 1&lt;/li&gt;
&lt;li data-end=&quot;437&quot; data-start=&quot;392&quot;&gt;클라이언트는 자신의 초기 시퀀스 번호(ISN, 예: Seq = x)를 보냄&lt;/li&gt;
&lt;li data-end=&quot;477&quot; data-start=&quot;438&quot;&gt;의미: &amp;ldquo;저 연결하고 싶어요, 그리고 제 시퀀스 번호는 x입니다.&amp;rdquo; (랜덤값)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;413&quot; data-origin-height=&quot;208&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Rykel/btsPOtc5Iao/SVRUh6O7AwSk9AH0j4zoJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Rykel/btsPOtc5Iao/SVRUh6O7AwSk9AH0j4zoJk/img.png&quot; data-alt=&quot;1번 데이터 flag&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Rykel/btsPOtc5Iao/SVRUh6O7AwSk9AH0j4zoJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRykel%2FbtsPOtc5Iao%2FSVRUh6O7AwSk9AH0j4zoJk%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;413&quot; height=&quot;208&quot; data-origin-width=&quot;413&quot; data-origin-height=&quot;208&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;1번 데이터 flag&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;255&quot; data-origin-height=&quot;26&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qzRxd/btsPMV9jw2h/m00ZWmBnv6DK67pKex1xQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qzRxd/btsPMV9jw2h/m00ZWmBnv6DK67pKex1xQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qzRxd/btsPMV9jw2h/m00ZWmBnv6DK67pKex1xQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqzRxd%2FbtsPMV9jw2h%2Fm00ZWmBnv6DK67pKex1xQ1%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;255&quot; height=&quot;26&quot; data-origin-width=&quot;255&quot; data-origin-height=&quot;26&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;h3 data-end=&quot;507&quot; data-start=&quot;484&quot; data-ke-size=&quot;size23&quot;&gt;두 번째: SYN + ACK&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;704&quot; data-start=&quot;508&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;524&quot; data-start=&quot;508&quot;&gt;&lt;b&gt;서버 &amp;rarr; 클라이언트&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;547&quot; data-start=&quot;525&quot;&gt;클라이언트의 SYN 요청에 대한 응답&lt;/li&gt;
&lt;li data-end=&quot;572&quot; data-start=&quot;548&quot;&gt;SYN = 1, ACK = 1&lt;/li&gt;
&lt;li data-end=&quot;615&quot; data-start=&quot;573&quot;&gt;서버도 자신의 초기 시퀀스 번호(ISN, 예: Seq = y)를 보냄&lt;/li&gt;
&lt;li data-end=&quot;654&quot; data-start=&quot;616&quot;&gt;ACK 번호 = 클라이언트 ISN + 1 (Ack = x+1)&lt;/li&gt;
&lt;li data-end=&quot;704&quot; data-start=&quot;655&quot;&gt;의미: &amp;ldquo;좋아요, 연결할게요. 제 시퀀스 번호는 y(랜덤값)이고, 당신 번호 x는 받았어요.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;388&quot; data-origin-height=&quot;197&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OUS7F/btsPNjB4Ycr/WRE2R32HB4N50tK0kdc9WK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OUS7F/btsPNjB4Ycr/WRE2R32HB4N50tK0kdc9WK/img.png&quot; data-alt=&quot;2번 데이터 flag&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OUS7F/btsPNjB4Ycr/WRE2R32HB4N50tK0kdc9WK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOUS7F%2FbtsPNjB4Ycr%2FWRE2R32HB4N50tK0kdc9WK%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;388&quot; height=&quot;197&quot; data-origin-width=&quot;388&quot; data-origin-height=&quot;197&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;2번 데이터 flag&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;297&quot; data-origin-height=&quot;26&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/985CO/btsPNl0VaJ6/khJ6SeA6Gnmm8UR1PXDKUk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/985CO/btsPNl0VaJ6/khJ6SeA6Gnmm8UR1PXDKUk/img.png&quot; data-alt=&quot;1번 데이터의 +1 값&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/985CO/btsPNl0VaJ6/khJ6SeA6Gnmm8UR1PXDKUk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F985CO%2FbtsPNl0VaJ6%2FkhJ6SeA6Gnmm8UR1PXDKUk%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;297&quot; height=&quot;26&quot; data-origin-width=&quot;297&quot; data-origin-height=&quot;26&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;1번 데이터의 +1 값&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;249&quot; data-origin-height=&quot;26&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Hud8O/btsPLCQoqyA/MgstNUw9Hz6DmJSG1xm3N0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Hud8O/btsPLCQoqyA/MgstNUw9Hz6DmJSG1xm3N0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Hud8O/btsPLCQoqyA/MgstNUw9Hz6DmJSG1xm3N0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHud8O%2FbtsPLCQoqyA%2FMgstNUw9Hz6DmJSG1xm3N0%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;249&quot; height=&quot;26&quot; data-origin-width=&quot;249&quot; data-origin-height=&quot;26&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;728&quot; data-start=&quot;711&quot; data-ke-size=&quot;size23&quot;&gt;세 번째: ACK&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;853&quot; data-start=&quot;729&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;745&quot; data-start=&quot;729&quot;&gt;&lt;b&gt;클라이언트 &amp;rarr; 서버&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;769&quot; data-start=&quot;746&quot;&gt;서버의 SYN+ACK에 대한 확인 응답&lt;/li&gt;
&lt;li data-end=&quot;783&quot; data-start=&quot;770&quot;&gt;ACK = 1&lt;/li&gt;
&lt;li data-end=&quot;819&quot; data-start=&quot;784&quot;&gt;ACK 번호 = 서버 ISN + 1 (Ack = y+1)&lt;/li&gt;
&lt;li data-end=&quot;853&quot; data-start=&quot;820&quot;&gt;의미: &amp;ldquo;네, 서버 번호 y 받았고 저도 준비됐습니다.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;405&quot; data-origin-height=&quot;216&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oqg6E/btsPNJHeBqc/COfKtC9EXz2RXeyPqfojGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oqg6E/btsPNJHeBqc/COfKtC9EXz2RXeyPqfojGk/img.png&quot; data-alt=&quot;3번 데이터 flag&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oqg6E/btsPNJHeBqc/COfKtC9EXz2RXeyPqfojGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Foqg6E%2FbtsPNJHeBqc%2FCOfKtC9EXz2RXeyPqfojGk%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;405&quot; height=&quot;216&quot; data-origin-width=&quot;405&quot; data-origin-height=&quot;216&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;3번 데이터 flag&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;255&quot; data-origin-height=&quot;23&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JQTXw/btsPNNizieO/GSz0Rsrefcl92fbewLKOI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JQTXw/btsPNNizieO/GSz0Rsrefcl92fbewLKOI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JQTXw/btsPNNizieO/GSz0Rsrefcl92fbewLKOI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJQTXw%2FbtsPNNizieO%2FGSz0Rsrefcl92fbewLKOI1%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;255&quot; height=&quot;23&quot; data-origin-width=&quot;255&quot; data-origin-height=&quot;23&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;277&quot; data-origin-height=&quot;24&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cIC688/btsPMDulcno/0PkibUGDV8mga30LjaUnh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cIC688/btsPMDulcno/0PkibUGDV8mga30LjaUnh0/img.png&quot; data-alt=&quot;ACK 의 +1 값&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cIC688/btsPMDulcno/0PkibUGDV8mga30LjaUnh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcIC688%2FbtsPMDulcno%2F0PkibUGDV8mga30LjaUnh0%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;277&quot; height=&quot;24&quot; data-origin-width=&quot;277&quot; data-origin-height=&quot;24&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;ACK 의 +1 값&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 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;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4-Way Handshake&lt;/b&gt;&lt;/h2&gt;
&lt;p data-end=&quot;135&quot; data-start=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;TCP는 &lt;b&gt;양방향 연결&lt;/b&gt;이라서, 종료도 양쪽 방향을 각각 닫아야 하기 때문에 3번이 아니라 4번의 단계가 필요합니다.&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;865&quot; data-origin-height=&quot;425&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cKX3YG/btsPNFE4tLE/SsBdN3pHa4j5kaDvwO5wZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cKX3YG/btsPNFE4tLE/SsBdN3pHa4j5kaDvwO5wZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cKX3YG/btsPNFE4tLE/SsBdN3pHa4j5kaDvwO5wZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcKX3YG%2FbtsPNFE4tLE%2FSsBdN3pHa4j5kaDvwO5wZ1%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;865&quot; height=&quot;425&quot; data-origin-width=&quot;865&quot; data-origin-height=&quot;425&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;connection-close.pcapng&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;754&quot; data-origin-height=&quot;97&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dGclOu/btsPN6oSopm/ai1MxeC4Hl4AUX68HMBsH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dGclOu/btsPN6oSopm/ai1MxeC4Hl4AUX68HMBsH0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dGclOu/btsPN6oSopm/ai1MxeC4Hl4AUX68HMBsH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdGclOu%2FbtsPN6oSopm%2Fai1MxeC4Hl4AUX68HMBsH0%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;754&quot; height=&quot;97&quot; data-origin-width=&quot;754&quot; data-origin-height=&quot;97&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;340&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zFR3L/btsPMV9jz9H/woBKQpOUHrS3AD0wJoBjKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zFR3L/btsPMV9jz9H/woBKQpOUHrS3AD0wJoBjKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zFR3L/btsPMV9jz9H/woBKQpOUHrS3AD0wJoBjKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzFR3L%2FbtsPMV9jz9H%2FwoBKQpOUHrS3AD0wJoBjKk%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;600&quot; height=&quot;340&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;340&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-end=&quot;347&quot; data-start=&quot;321&quot; data-ke-size=&quot;size23&quot;&gt;첫 번째: FIN (Finish)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;437&quot; data-start=&quot;348&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;437&quot; data-start=&quot;348&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;364&quot; data-start=&quot;348&quot;&gt;&lt;b&gt;클라이언트 &amp;rarr; 서버&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;389&quot; data-start=&quot;365&quot;&gt;클라이언트가 데이터 전송을 마쳤음을 알림&lt;/li&gt;
&lt;li data-end=&quot;412&quot; data-start=&quot;390&quot;&gt;FIN = 1, Seq = u&lt;/li&gt;
&lt;li data-end=&quot;437&quot; data-start=&quot;413&quot;&gt;의미: &quot;저 이제 보낼 데이터 없어요.&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;389&quot; data-origin-height=&quot;188&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0qprm/btsPNgk4UnQ/GdoWgSGskjXTPKJLjtsra0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0qprm/btsPNgk4UnQ/GdoWgSGskjXTPKJLjtsra0/img.png&quot; data-alt=&quot;1번 데이터&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0qprm/btsPNgk4UnQ/GdoWgSGskjXTPKJLjtsra0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0qprm%2FbtsPNgk4UnQ%2FGdoWgSGskjXTPKJLjtsra0%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;389&quot; height=&quot;188&quot; data-origin-width=&quot;389&quot; data-origin-height=&quot;188&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;1번 데이터&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;277&quot; data-origin-height=&quot;18&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OyjSE/btsPN7afq0n/ZHFWmXaS86S5IuVl7GsAW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OyjSE/btsPN7afq0n/ZHFWmXaS86S5IuVl7GsAW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OyjSE/btsPN7afq0n/ZHFWmXaS86S5IuVl7GsAW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOyjSE%2FbtsPN7afq0n%2FZHFWmXaS86S5IuVl7GsAW0%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;277&quot; height=&quot;18&quot; data-origin-width=&quot;277&quot; data-origin-height=&quot;18&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-end=&quot;442&quot; data-start=&quot;439&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;461&quot; data-start=&quot;444&quot; data-ke-size=&quot;size23&quot;&gt;두 번째: ACK&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;558&quot; data-start=&quot;462&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;478&quot; data-start=&quot;462&quot;&gt;&lt;b&gt;서버 &amp;rarr; 클라이언트&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;495&quot; data-start=&quot;479&quot;&gt;FIN을 잘 받았음을 확인&lt;/li&gt;
&lt;li data-end=&quot;520&quot; data-start=&quot;496&quot;&gt;ACK = 1, Ack = u+1&lt;/li&gt;
&lt;li data-end=&quot;558&quot; data-start=&quot;521&quot;&gt;의미: &quot;네, 알겠습니다. 하지만 저는 아직 보낼 게 있어요.&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;389&quot; data-origin-height=&quot;193&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSaaNZ/btsPMYx9Np3/fEZy5jvhbw1G9EKAIk4cl0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSaaNZ/btsPMYx9Np3/fEZy5jvhbw1G9EKAIk4cl0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSaaNZ/btsPMYx9Np3/fEZy5jvhbw1G9EKAIk4cl0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSaaNZ%2FbtsPMYx9Np3%2FfEZy5jvhbw1G9EKAIk4cl0%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;389&quot; height=&quot;193&quot; data-origin-width=&quot;389&quot; data-origin-height=&quot;193&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;280&quot; data-origin-height=&quot;23&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biVCNd/btsPO7OnZ6g/WVwJm1uI2o34n9DmOO1szk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biVCNd/btsPO7OnZ6g/WVwJm1uI2o34n9DmOO1szk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biVCNd/btsPO7OnZ6g/WVwJm1uI2o34n9DmOO1szk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiVCNd%2FbtsPO7OnZ6g%2FWVwJm1uI2o34n9DmOO1szk%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;280&quot; height=&quot;23&quot; data-origin-width=&quot;280&quot; data-origin-height=&quot;23&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;265&quot; data-origin-height=&quot;23&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ccrjp5/btsPMQtCcfK/LMZRFrI6XpG8nXJqY11Lx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ccrjp5/btsPMQtCcfK/LMZRFrI6XpG8nXJqY11Lx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ccrjp5/btsPMQtCcfK/LMZRFrI6XpG8nXJqY11Lx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fccrjp5%2FbtsPMQtCcfK%2FLMZRFrI6XpG8nXJqY11Lx0%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;265&quot; height=&quot;23&quot; data-origin-width=&quot;265&quot; data-origin-height=&quot;23&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-end=&quot;563&quot; data-start=&quot;560&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;582&quot; data-start=&quot;565&quot; data-ke-size=&quot;size23&quot;&gt;세 번째: FIN&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;674&quot; data-start=&quot;583&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;599&quot; data-start=&quot;583&quot;&gt;&lt;b&gt;서버 &amp;rarr; 클라이언트&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;630&quot; data-start=&quot;600&quot;&gt;서버도 더 이상 보낼 데이터가 없을 때 FIN 전송&lt;/li&gt;
&lt;li data-end=&quot;653&quot; data-start=&quot;631&quot;&gt;FIN = 1, Seq = v&lt;/li&gt;
&lt;li data-end=&quot;674&quot; data-start=&quot;654&quot;&gt;의미: &quot;저도 이제 끝났습니다.&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;389&quot; data-origin-height=&quot;192&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Cq2g5/btsPNLkLDEZ/StCsw8Unvhs4cdcl36ikaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Cq2g5/btsPNLkLDEZ/StCsw8Unvhs4cdcl36ikaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Cq2g5/btsPNLkLDEZ/StCsw8Unvhs4cdcl36ikaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCq2g5%2FbtsPNLkLDEZ%2FStCsw8Unvhs4cdcl36ikaK%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;389&quot; height=&quot;192&quot; data-origin-width=&quot;389&quot; data-origin-height=&quot;192&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;247&quot; data-origin-height=&quot;27&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Hb89G/btsPLCCQakw/cSyIjhG3Kfp2Go9RI9Wg6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Hb89G/btsPLCCQakw/cSyIjhG3Kfp2Go9RI9Wg6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Hb89G/btsPLCCQakw/cSyIjhG3Kfp2Go9RI9Wg6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHb89G%2FbtsPLCCQakw%2FcSyIjhG3Kfp2Go9RI9Wg6K%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;247&quot; height=&quot;27&quot; data-origin-width=&quot;247&quot; data-origin-height=&quot;27&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;302&quot; data-origin-height=&quot;28&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NNYN5/btsPLEtXgwl/iG4sc7v3Znn3aOlDzGlu21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NNYN5/btsPLEtXgwl/iG4sc7v3Znn3aOlDzGlu21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NNYN5/btsPLEtXgwl/iG4sc7v3Znn3aOlDzGlu21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNNYN5%2FbtsPLEtXgwl%2FiG4sc7v3Znn3aOlDzGlu21%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;302&quot; height=&quot;28&quot; data-origin-width=&quot;302&quot; data-origin-height=&quot;28&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;hr data-end=&quot;679&quot; data-start=&quot;676&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;698&quot; data-start=&quot;681&quot; data-ke-size=&quot;size23&quot;&gt;네 번째: ACK&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;779&quot; data-start=&quot;699&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;715&quot; data-start=&quot;699&quot;&gt;&lt;b&gt;클라이언트 &amp;rarr; 서버&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;729&quot; data-start=&quot;716&quot;&gt;서버의 FIN을 확인&lt;/li&gt;
&lt;li data-end=&quot;754&quot; data-start=&quot;730&quot;&gt;ACK = 1, Ack = v+1&lt;/li&gt;
&lt;li data-end=&quot;779&quot; data-start=&quot;755&quot;&gt;의미: &quot;네, 연결 완전히 종료합니다.&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;390&quot; data-origin-height=&quot;189&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m51Aw/btsPMXssPoU/imc3M9JPkCQZnXAWE5VucK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m51Aw/btsPMXssPoU/imc3M9JPkCQZnXAWE5VucK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m51Aw/btsPMXssPoU/imc3M9JPkCQZnXAWE5VucK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm51Aw%2FbtsPMXssPoU%2Fimc3M9JPkCQZnXAWE5VucK%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;390&quot; height=&quot;189&quot; data-origin-width=&quot;390&quot; data-origin-height=&quot;189&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;243&quot; data-origin-height=&quot;22&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2VUzJ/btsPM21DBUr/IsYVuA8fq9v0zJsEkP4gg1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2VUzJ/btsPM21DBUr/IsYVuA8fq9v0zJsEkP4gg1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2VUzJ/btsPM21DBUr/IsYVuA8fq9v0zJsEkP4gg1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2VUzJ%2FbtsPM21DBUr%2FIsYVuA8fq9v0zJsEkP4gg1%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;243&quot; height=&quot;22&quot; data-origin-width=&quot;243&quot; data-origin-height=&quot;22&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;294&quot; data-origin-height=&quot;20&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pTTXw/btsPO7HAYEp/vE7BpCnKS4nItrgnEWkOSk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pTTXw/btsPO7HAYEp/vE7BpCnKS4nItrgnEWkOSk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pTTXw/btsPO7HAYEp/vE7BpCnKS4nItrgnEWkOSk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpTTXw%2FbtsPO7HAYEp%2FvE7BpCnKS4nItrgnEWkOSk%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;294&quot; height=&quot;20&quot; data-origin-width=&quot;294&quot; data-origin-height=&quot;20&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;&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;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;TCP 재전송&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;473&quot; data-origin-height=&quot;423&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ljeat/btsPMCCdahz/SQ0P9DhVzKGCK7zLpmjuq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ljeat/btsPMCCdahz/SQ0P9DhVzKGCK7zLpmjuq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ljeat/btsPMCCdahz/SQ0P9DhVzKGCK7zLpmjuq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fljeat%2FbtsPMCCdahz%2FSQ0P9DhVzKGCK7zLpmjuq1%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;473&quot; height=&quot;423&quot; data-origin-width=&quot;473&quot; data-origin-height=&quot;423&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2번 과정에서 패킷이 유실됬다고 가정. 192.168.0.1의 확인 응답 번호를 10.10.10.1는 알지 못함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4번 과정에서 동일한 확인 응답 번호를 요청하며, 첫번째 중복 ACK 발생.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;440&quot; data-origin-height=&quot;466&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buDEZs/btsPLeWjGRP/oPDQ05ZNyDmDYWheCS7DXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buDEZs/btsPLeWjGRP/oPDQ05ZNyDmDYWheCS7DXK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buDEZs/btsPLeWjGRP/oPDQ05ZNyDmDYWheCS7DXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuDEZs%2FbtsPLeWjGRP%2FoPDQ05ZNyDmDYWheCS7DXK%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;440&quot; height=&quot;466&quot; data-origin-width=&quot;440&quot; data-origin-height=&quot;466&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5번 과정에서 10.10.10.1이 확인응답번호가 아닌 다른 순서번호를 보낸다고 가정 (TCP 파이프라인에 의해)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TCP 파이프라인(TCP pipelining)은 &lt;b&gt;TCP 연결 위에서 여러 개의 데이터 요청&amp;middot;응답을 순차적으로가 아니라 겹쳐서 처리하는 방식&lt;/b&gt;을 말합니다.&lt;br /&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;192.168.0.1은 확인 응답 번호를 받지 못했기 때문에 6번 과정에서 두번째 중복 ACK 보내게됨.&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;7번 과정에서도 TCP 파이프라인에 의해 다른 순서번호를 보냈다고 가정.&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;8번 과정에서 세번째 중복 ACK 발생.&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;9번 과정에서 10.10.10.1은 ACK를 중복 3번 받았기 때문에 빠른 재전송 발생.&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;tcp-retransmission.pcapng&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1018&quot; data-origin-height=&quot;188&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bj2sQo/btsPL28Vhc3/zY4UroM8pzJHJQ5VWkL6f0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bj2sQo/btsPL28Vhc3/zY4UroM8pzJHJQ5VWkL6f0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bj2sQo/btsPL28Vhc3/zY4UroM8pzJHJQ5VWkL6f0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbj2sQo%2FbtsPL28Vhc3%2FzY4UroM8pzJHJQ5VWkL6f0%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;1018&quot; height=&quot;188&quot; data-origin-width=&quot;1018&quot; data-origin-height=&quot;188&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;&amp;nbsp;&lt;/p&gt;</description>
      <category>네트워크/wireshark</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/172</guid>
      <comments>https://kujung.tistory.com/entry/%EC%99%80%EC%9D%B4%EC%96%B4%EC%83%A4%ED%81%AC%EB%A5%BC-%ED%86%B5%ED%95%9C-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C-%EB%B6%84%EC%84%9D-3way-4way-handshake#entry172comment</comments>
      <pubDate>Sun, 10 Aug 2025 23:35:32 +0900</pubDate>
    </item>
    <item>
      <title>와이어샤크를 통한 프로토콜 분석 - IPv4 단편화 + ICMP + UDP</title>
      <link>https://kujung.tistory.com/entry/%EC%99%80%EC%9D%B4%EC%96%B4%EC%83%A4%ED%81%AC%EB%A5%BC-%ED%86%B5%ED%95%9C-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C-%EB%B6%84%EC%84%9D-IPv4-%EB%8B%A8%ED%8E%B8%ED%99%94-ICMP-UDP</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;IT 개발자나 네트워크 엔지니어에게 필요한 와이어샤크를 실습하면서 배워보려고 한다.&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;&lt;a href=&quot;https://www.youtube.com/watch?v=I_aCbbzORms&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.youtube.com/watch?v=I_aCbbzORms&lt;/a&gt;&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;a href=&quot;https://github.com/kangtegong/self-learning-cs2&quot;&gt;https://github.com/kangtegong/self-learning-cs2&lt;/a&gt;&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;한빛미디어의 강의를 바탕으로 배운것들을 정리해본다.&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;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. IPv4 단편화&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IPv4 단편화(fragmentation)는 &lt;b&gt;IP 패킷이 네트워크를 통과할 때, 해당 네트워크의 최대 전송 단위(MTU, Maximum Transmission Unit)보다 커서 한 번에 전송할 수 없을 경우 패킷을 여러 조각으로 나누어 전송하는 과정&lt;/b&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 data-end=&quot;224&quot; data-start=&quot;179&quot;&gt;네트워크 장비(라우터, 스위치)나 링크 종류에 따라 &lt;b&gt;MTU 크기가 다름&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;286&quot; data-start=&quot;225&quot;&gt;예:
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;286&quot; data-start=&quot;234&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;260&quot; data-start=&quot;234&quot;&gt;Ethernet MTU: 1500 바이트&lt;/li&gt;
&lt;li data-end=&quot;286&quot; data-start=&quot;263&quot;&gt;PPPoE MTU: 1492 바이트&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;352&quot; data-start=&quot;287&quot;&gt;큰 패킷이 MTU 제한을 초과하면 그냥은 전송 불가 &amp;rarr; &lt;b&gt;IPv4는 패킷을 쪼개어(fragment) 전송&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;379&quot; data-start=&quot;359&quot; data-ke-size=&quot;size26&quot;&gt;단편화 동작 과정&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;591&quot; data-start=&quot;380&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;463&quot; data-start=&quot;380&quot;&gt;&lt;b&gt;원본 패킷이 MTU보다 큼&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;463&quot; data-start=&quot;407&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;463&quot; data-start=&quot;407&quot;&gt;예: MTU=1500인데, IP 헤더(20바이트) + 데이터 합이 4000바이트라면 단편화 필요.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;497&quot; data-start=&quot;464&quot;&gt;&lt;b&gt;라우터 또는 송신자가 패킷을 여러 조각으로 나눔&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;529&quot; data-start=&quot;498&quot;&gt;각 조각에는 &lt;b&gt;IP 헤더 + 일부 데이터&lt;/b&gt; 포함&lt;/li&gt;
&lt;li data-end=&quot;591&quot; data-start=&quot;530&quot;&gt;수신 측에서 &lt;b&gt;Identification 필드&lt;/b&gt;를 기반으로 원래 패킷으로 재조립(reassembly)&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;b&gt;IPv4도 DF(Don&amp;rsquo;t Fragment) 비트를 켜고 PMTUD(Path MTU Discovery)&lt;/b&gt; 방식으로 동작하는 게 사실상 표준입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;474&quot; data-start=&quot;457&quot; data-ke-size=&quot;size26&quot;&gt;PMTUD 동작 방식&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;706&quot; data-start=&quot;475&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;510&quot; data-start=&quot;475&quot;&gt;송신자가 &lt;b&gt;DF=1&lt;/b&gt;로 패킷 전송 (즉, 단편화 금지)&lt;/li&gt;
&lt;li data-end=&quot;611&quot; data-start=&quot;511&quot;&gt;경로 중간의 라우터가 MTU보다 큰 패킷을 받으면 전송 불가 &amp;rarr; &lt;b&gt;ICMP Type 3 Code 4 (&quot;Fragmentation Needed&quot;)&lt;/b&gt; 메시지를 송신자에게 보냄&lt;/li&gt;
&lt;li data-end=&quot;653&quot; data-start=&quot;612&quot;&gt;송신자는 이 ICMP 메시지를 보고 &lt;b&gt;패킷 크기를 줄여서 재전송&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;706&quot; data-start=&quot;654&quot;&gt;결국 해당 경로에서 전송 가능한 &lt;b&gt;최대 MTU 크기&lt;/b&gt;를 알아내서 계속 그 크기로 전송&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;725&quot; data-start=&quot;713&quot; data-ke-size=&quot;size26&quot;&gt;현실에서는?&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;948&quot; data-start=&quot;726&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;785&quot; data-start=&quot;726&quot;&gt;&lt;b&gt;대부분의 OS / 네트워크 장비&lt;/b&gt;: IPv4 전송 시 기본적으로 DF 비트를 켜고 PMTUD 사용&lt;/li&gt;
&lt;li data-end=&quot;834&quot; data-start=&quot;786&quot;&gt;&lt;b&gt;클라우드 환경(AWS, Azure, GCP)&lt;/b&gt;: 거의 다 DF+PMTUD 사용&lt;/li&gt;
&lt;li data-end=&quot;871&quot; data-start=&quot;835&quot;&gt;&lt;b&gt;기업망&lt;/b&gt;: 대역폭 효율과 보안을 위해 PMTUD 선호&lt;/li&gt;
&lt;li data-end=&quot;948&quot; data-start=&quot;872&quot;&gt;단, 일부 방화벽/ISP가 ICMP를 막아 PMTUD가 실패하는 경우가 있어, 이럴 때는 MSS Clamping 같은 우회 기법을 씀&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ipv4-fragmentation.pcapng&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(와이어샤크를 설치하고 깃허브 실습자료에서 자료를 받아 열기)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1168&quot; data-origin-height=&quot;270&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/chCYxt/btsPNIImioj/kYsbQyezXsrVKs1RQOhDb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/chCYxt/btsPNIImioj/kYsbQyezXsrVKs1RQOhDb0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/chCYxt/btsPNIImioj/kYsbQyezXsrVKs1RQOhDb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FchCYxt%2FbtsPNIImioj%2FkYsbQyezXsrVKs1RQOhDb0%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;1168&quot; height=&quot;270&quot; data-origin-width=&quot;1168&quot; data-origin-height=&quot;270&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;10.0.0.1 -&amp;gt; 10.0.0.2 IMCP&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;10.0.0.1 &amp;lt;- 10.0.0.2 IMCP&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;724&quot; data-origin-height=&quot;323&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vDltI/btsPNNv45en/keKZRSVICemTIMGWAKS5o1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vDltI/btsPNNv45en/keKZRSVICemTIMGWAKS5o1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vDltI/btsPNNv45en/keKZRSVICemTIMGWAKS5o1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvDltI%2FbtsPNNv45en%2FkeKZRSVICemTIMGWAKS5o1%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;724&quot; height=&quot;323&quot; data-origin-width=&quot;724&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;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;622&quot; data-start=&quot;598&quot; data-ke-size=&quot;size26&quot;&gt;IPv4 헤더의 단편화 관련 필드&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;816&quot; data-start=&quot;623&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;665&quot; data-start=&quot;623&quot;&gt;&lt;b&gt;Identification&lt;/b&gt;: 같은 패킷 조각임을 식별하는 ID&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;733&quot; data-origin-height=&quot;140&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAq6AM/btsPLiYHbJm/xbdQuVKMz6rabkf1VDPtok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAq6AM/btsPLiYHbJm/xbdQuVKMz6rabkf1VDPtok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAq6AM/btsPLiYHbJm/xbdQuVKMz6rabkf1VDPtok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAq6AM%2FbtsPLiYHbJm%2FxbdQuVKMz6rabkf1VDPtok%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;733&quot; height=&quot;140&quot; data-origin-width=&quot;733&quot; data-origin-height=&quot;140&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1~7번 데이타의&amp;nbsp; &lt;b&gt;Identification값이 같음.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;8~14번 데이타의 값이 같음.&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-end=&quot;816&quot; data-start=&quot;623&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;767&quot; data-start=&quot;666&quot;&gt;&lt;b&gt;Flags&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;767&quot; data-start=&quot;681&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;715&quot; data-start=&quot;681&quot;&gt;DF(Don&amp;rsquo;t Fragment): 1이면 단편화 금지&lt;/li&gt;
&lt;li data-end=&quot;767&quot; data-start=&quot;718&quot;&gt;MF(More Fragments): 마지막 조각이 아니면 1, 마지막 조각이면 0&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;345&quot; data-origin-height=&quot;29&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKaB30/btsPMVuGM7s/lORpED6Djn6MJdU8Xhu8rk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKaB30/btsPMVuGM7s/lORpED6Djn6MJdU8Xhu8rk/img.png&quot; data-alt=&quot;1~6번 데이터는 끝에 1&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKaB30/btsPMVuGM7s/lORpED6Djn6MJdU8Xhu8rk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKaB30%2FbtsPMVuGM7s%2FlORpED6Djn6MJdU8Xhu8rk%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;345&quot; height=&quot;29&quot; data-origin-width=&quot;345&quot; data-origin-height=&quot;29&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;1~6번 데이터는 끝에 1&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;385&quot; data-origin-height=&quot;35&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yBgCW/btsPO8Ngzqg/elcy6J8dPsO6dfMfl5zAeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yBgCW/btsPO8Ngzqg/elcy6J8dPsO6dfMfl5zAeK/img.png&quot; data-alt=&quot;7번 단편화의 끝 데이터는 0으로 표기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yBgCW/btsPO8Ngzqg/elcy6J8dPsO6dfMfl5zAeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyBgCW%2FbtsPO8Ngzqg%2Felcy6J8dPsO6dfMfl5zAeK%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;385&quot; height=&quot;35&quot; data-origin-width=&quot;385&quot; data-origin-height=&quot;35&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;7번 단편화의 끝 데이터는 0으로 표기&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;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;816&quot; data-start=&quot;623&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;816&quot; data-start=&quot;768&quot;&gt;&lt;b&gt;Fragment Offset&lt;/b&gt;: 원래 데이터에서의 시작 위치 (8바이트 단위)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;316&quot; data-origin-height=&quot;30&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oDgtT/btsPNcJFPJr/VGX1J7P2r826XIwUlkveuk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oDgtT/btsPNcJFPJr/VGX1J7P2r826XIwUlkveuk/img.png&quot; data-alt=&quot;1번 데이터는 시작이므로 0&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oDgtT/btsPNcJFPJr/VGX1J7P2r826XIwUlkveuk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoDgtT%2FbtsPNcJFPJr%2FVGX1J7P2r826XIwUlkveuk%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;316&quot; height=&quot;30&quot; data-origin-width=&quot;316&quot; data-origin-height=&quot;30&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;1번 데이터는 시작이므로 0&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;334&quot; data-origin-height=&quot;31&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5u0dY/btsPMKfSkVQ/uuy1SgvvrxEFPAXcubAeEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5u0dY/btsPMKfSkVQ/uuy1SgvvrxEFPAXcubAeEk/img.png&quot; data-alt=&quot;2번 데이터&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5u0dY/btsPMKfSkVQ/uuy1SgvvrxEFPAXcubAeEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5u0dY%2FbtsPMKfSkVQ%2Fuuy1SgvvrxEFPAXcubAeEk%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;334&quot; height=&quot;31&quot; data-origin-width=&quot;334&quot; data-origin-height=&quot;31&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;2번 데이터&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;320&quot; data-origin-height=&quot;35&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cpelpt/btsPOaY7d3Y/28ntWtsLk0ZDB2IYxkYOAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cpelpt/btsPOaY7d3Y/28ntWtsLk0ZDB2IYxkYOAK/img.png&quot; data-alt=&quot;7번 데이터 ( 값이 점차 증가)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cpelpt/btsPOaY7d3Y/28ntWtsLk0ZDB2IYxkYOAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcpelpt%2FbtsPOaY7d3Y%2F28ntWtsLk0ZDB2IYxkYOAK%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;320&quot; height=&quot;35&quot; data-origin-width=&quot;320&quot; data-origin-height=&quot;35&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;7번 데이터 ( 값이 점차 증가)&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 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;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;2. ICMP&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ICMP(Internet Control Message Protocol)는 IPv4와 IPv6에서 모두 쓰이는 &lt;b&gt;네트워크 제어/진단용 프로토콜&lt;/b&gt;입니다.&lt;br /&gt;쉽게 말하면, &lt;b&gt;IP 통신 중 발생하는 상황을 알려주는 &quot;메신저&quot;&lt;/b&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 data-end=&quot;475&quot; data-start=&quot;368&quot;&gt;&lt;b&gt;오류 보고&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;475&quot; data-start=&quot;386&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;424&quot; data-start=&quot;386&quot;&gt;목적지 도달 불가(Destination Unreachable)&lt;/li&gt;
&lt;li data-end=&quot;447&quot; data-start=&quot;428&quot;&gt;단편화 필요(DF 설정 시)&lt;/li&gt;
&lt;li data-end=&quot;475&quot; data-start=&quot;451&quot;&gt;시간 초과(Time Exceeded)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;605&quot; data-start=&quot;476&quot;&gt;&lt;b&gt;네트워크 진단&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;605&quot; data-start=&quot;496&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;554&quot; data-start=&quot;496&quot;&gt;ping: 호스트가 살아있는지 확인 (ICMP Echo Request / Echo Reply)&lt;/li&gt;
&lt;li data-end=&quot;605&quot; data-start=&quot;558&quot;&gt;traceroute: 경로 추적 (ICMP Time Exceeded 활용)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;698&quot; data-start=&quot;606&quot;&gt;&lt;b&gt;경로 MTU 발견 (PMTUD)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;698&quot; data-start=&quot;636&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;698&quot; data-start=&quot;636&quot;&gt;DF 비트 켜고 패킷 전송 &amp;rarr; MTU 초과 시 &quot;Fragmentation Needed&quot; ICMP 메시지 수신&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;741&quot; data-origin-height=&quot;177&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ch22Yd/btsPO5wfzrS/IPKLG0Gp1fYMEsY6mKKYDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ch22Yd/btsPO5wfzrS/IPKLG0Gp1fYMEsY6mKKYDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ch22Yd/btsPO5wfzrS/IPKLG0Gp1fYMEsY6mKKYDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fch22Yd%2FbtsPO5wfzrS%2FIPKLG0Gp1fYMEsY6mKKYDk%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;741&quot; height=&quot;177&quot; data-origin-width=&quot;741&quot; data-origin-height=&quot;177&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;&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;289&quot; data-origin-height=&quot;174&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/msGJg/btsPNn5vh6C/fk1iASxehSg2uUddfOpk3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/msGJg/btsPNn5vh6C/fk1iASxehSg2uUddfOpk3K/img.png&quot; data-alt=&quot;7번 데이터 (요청)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/msGJg/btsPNn5vh6C/fk1iASxehSg2uUddfOpk3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmsGJg%2FbtsPNn5vh6C%2Ffk1iASxehSg2uUddfOpk3K%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;289&quot; height=&quot;174&quot; data-origin-width=&quot;289&quot; data-origin-height=&quot;174&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;7번 데이터 (요청)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;265&quot; data-origin-height=&quot;58&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bemoYO/btsPNJf9AMQ/d53TBytWKdldRLqhlVt0iK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bemoYO/btsPNJf9AMQ/d53TBytWKdldRLqhlVt0iK/img.png&quot; data-alt=&quot;14번 데이터 (응답)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bemoYO/btsPNJf9AMQ/d53TBytWKdldRLqhlVt0iK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbemoYO%2FbtsPNJf9AMQ%2Fd53TBytWKdldRLqhlVt0iK%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;265&quot; height=&quot;58&quot; data-origin-width=&quot;265&quot; data-origin-height=&quot;58&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;14번 데이터 (응답)&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 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;ipv6-fragmentation.pcapng 파일 오픈하여 UDP 데이터그램을 보자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;435&quot; data-origin-height=&quot;173&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMDjAE/btsPLEUMenO/BnVHIhg1xsjWCjqPCUp5R1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMDjAE/btsPLEUMenO/BnVHIhg1xsjWCjqPCUp5R1/img.png&quot; data-alt=&quot;[] 대괄호에 있는 속성은 와이어 샤크가 임의로 만든 것이고, 실제 필드는 4개&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMDjAE/btsPLEUMenO/BnVHIhg1xsjWCjqPCUp5R1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMDjAE%2FbtsPLEUMenO%2FBnVHIhg1xsjWCjqPCUp5R1%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;435&quot; height=&quot;173&quot; data-origin-width=&quot;435&quot; data-origin-height=&quot;173&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;[] 대괄호에 있는 속성은 와이어 샤크가 임의로 만든 것이고, 실제 필드는 4개&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;TCP보다는 훨씬 간단한 구조이다.&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>네트워크/wireshark</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/171</guid>
      <comments>https://kujung.tistory.com/entry/%EC%99%80%EC%9D%B4%EC%96%B4%EC%83%A4%ED%81%AC%EB%A5%BC-%ED%86%B5%ED%95%9C-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C-%EB%B6%84%EC%84%9D-IPv4-%EB%8B%A8%ED%8E%B8%ED%99%94-ICMP-UDP#entry171comment</comments>
      <pubDate>Sun, 10 Aug 2025 22:48:11 +0900</pubDate>
    </item>
    <item>
      <title>AWS 3 Tier Architecture 구축해보기 2-9</title>
      <link>https://kujung.tistory.com/entry/AWS-3-Tier-Architecture-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B0-2-9</link>
      <description>&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/estrellaSia/AWS_3Tier_Infra_Data_Pipeline/tree/main&quot;&gt;https://github.com/estrellaSia/AWS_3Tier_Infra_Data_Pipeline/tree/main&lt;/a&gt;&lt;br /&gt;참고&amp;nbsp;깃허브&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://velog.io/@tak980418/CICD%EB%A5%BC-%EA%B5%AC%EC%84%B1%ED%95%B4%EB%B3%B4%EC%9E%90-1-PLAN&quot;&gt;https://velog.io/@tak980418/CICD%EB%A5%BC-%EA%B5%AC%EC%84%B1%ED%95%B4%EB%B3%B4%EC%9E%90-1-PLAN&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;참고 블로그&lt;/p&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 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-filename=&quot;3-tier.drawio.png&quot; data-origin-width=&quot;907&quot; data-origin-height=&quot;831&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/S6XHE/btsPPQzNr3o/gQHLSSmJQ5HsFni1ElcSrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/S6XHE/btsPPQzNr3o/gQHLSSmJQ5HsFni1ElcSrK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/S6XHE/btsPPQzNr3o/gQHLSSmJQ5HsFni1ElcSrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FS6XHE%2FbtsPPQzNr3o%2FgQHLSSmJQ5HsFni1ElcSrK%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;907&quot; height=&quot;831&quot; data-filename=&quot;3-tier.drawio.png&quot; data-origin-width=&quot;907&quot; data-origin-height=&quot;831&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;771&quot; data-origin-height=&quot;451&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lc7Wr/btsPNkBSiL9/ZPruY1Y5OapGq9nTkVf2c0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lc7Wr/btsPNkBSiL9/ZPruY1Y5OapGq9nTkVf2c0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lc7Wr/btsPNkBSiL9/ZPruY1Y5OapGq9nTkVf2c0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flc7Wr%2FbtsPNkBSiL9%2FZPruY1Y5OapGq9nTkVf2c0%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;771&quot; height=&quot;451&quot; data-origin-width=&quot;771&quot; data-origin-height=&quot;451&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;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;u&gt;&lt;b&gt;1. CI/CD구축하기&lt;/b&gt;&lt;/u&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;서버 배포 파이프라인의 구성&lt;/p&gt;
&lt;blockquote style=&quot;background-color: #f8f9fa; color: #212529; text-align: start;&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p style=&quot;color: #666666;&quot; data-ke-size=&quot;size16&quot;&gt;1. GitHub 리포지토리 생성 + .yml 파일 준비&lt;br /&gt;2. S3 버킷 생성&lt;br /&gt;3.&amp;nbsp;CodeBuild&amp;nbsp;프로젝트&amp;nbsp;생성&lt;br /&gt;4.&amp;nbsp;CodeDeploy&amp;nbsp;애플리케이션&amp;nbsp;&amp;amp;&amp;nbsp;배포&amp;nbsp;그룹&amp;nbsp;생성&lt;br /&gt;5.&amp;nbsp;CodePipeline&amp;nbsp;생성&amp;nbsp;(Source&amp;nbsp;&amp;rarr;&amp;nbsp;Build&amp;nbsp;&amp;rarr;&amp;nbsp;Deploy&amp;nbsp;연결)&lt;br /&gt;6. 서버 배포 하기&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f8f9fa; color: #666666; text-align: start;&quot;&gt;1. GitHub&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f8f9fa; color: #666666; text-align: start;&quot;&gt;리포지토리 생성 + .yml 파일 준비&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;YAML 구성&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;GitHub Actions는 GitHub 레포지토리에 저장되있는 파일을 통해 Workflow를 실행합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;따라서 GitHub Actions를 통한 CI/CD Workflow를 구성하기 위해서는 파일을 작성해 GitHub저장소에 저장해야 합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;아래와 같은 경로로 파일,폴더를 만들어 GitHub 저장소에 저장해주세요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;콘솔로도 가능하고 드래그&amp;amp;드롭으로도 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-origin-height=&quot;176&quot; data-origin-width=&quot;409&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dna/cfvMoG/btsPMKFHQTI/AAAAAAAAAAAAAAAAAAAAAJBaByECvG9DJPfLD6QCbowMFrD_fVzHPqKvt-Bh46_2/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;amp;expires=1756652399&amp;amp;allow_ip=&amp;amp;allow_referer=&amp;amp;signature=gWO764ZonoJlubg%2BK36o0pJMe60%3D&quot; width=&quot;409&quot; height=&quot;176&quot; data-phocus-index=&quot;5&quot; data-origin-height=&quot;176&quot; data-origin-width=&quot;409&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;appspec.yml 파일 만들기&lt;/p&gt;
&lt;pre id=&quot;code_1754654272241&quot; class=&quot;yaml&quot; style=&quot;background-color: #f8f8f8; color: #383a42;&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;version: 0.0 
os: linux 
files: 
  - source: / 
    destination: /usr/share/nginx/html/  
# HTML 파일을 복사할 배포할 웹 서버의 경로 
hooks: 
  BeforeInstall: 
    - location: scripts/before_install.sh 
      timeout: 300 
      runas: root 
  AfterInstall: 
    - location: scripts/update_metadata.sh 
      timeout: 300 
      runas: root&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;buildspec.yml 파일 만들기&lt;/p&gt;
&lt;pre id=&quot;code_1754654272242&quot; class=&quot;vim&quot; style=&quot;background-color: #f8f8f8; color: #383a42;&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;version: 0.2 
 
phases: 
  install: 
    runtime-versions: 
      nodejs: 12 # 예: Node.js가 필요하다면, 해당 부분은 필요에 따라 수정 
    commands: 
      - echo &quot;Nothing to install&quot; 
 
  pre_build: 
    commands: 
      - echo &quot;Nothing to pre-build&quot; 
 
  build: 
    commands: 
      - echo &quot;Build started on `date`&quot; 
      - echo &quot;No build step required for static HTML&quot; 
 
  post_build: 
    commands: 
      - echo &quot;Build completed on `date`&quot; 
 
artifacts: 
  files: 
    - '**/*'&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;before_install.sh 파일 만들기&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;기존 웹 서버에는 /usr/share/nginx/html/경로에 index.html 파일이 있음&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 index.html을 배포하기 위해서는 기존의 index.html을 삭제하고, 다시 배포해 야 함&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;따라서 before_install.sh을 만들어 기존 파일을 삭제하는 스크립트를 실행하기&lt;/p&gt;
&lt;pre id=&quot;code_1754654272243&quot; class=&quot;bash&quot; style=&quot;background-color: #f8f8f8; color: #383a42;&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#!/bin/bash 
# 기존 index.html 파일 삭제 
if [ -f /usr/share/nginx/html/index.html ]; then 
    rm /usr/share/nginx/html/index.html 
fi&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;update_metadata.sh 파일 만들기&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;HTML 파일에 메타데이터를 삽입하는 로직을 추가하기&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;배포 프로세스 중에 update_metadata.sh 스크립트가 실행되어 index.html 파일 을 동적으로 생성하고,&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 파일에 EC2 인스턴스의 실제 메타데이터 값을 삽입함&lt;/p&gt;
&lt;pre id=&quot;code_1754654272244&quot; class=&quot;django&quot; style=&quot;background-color: #f8f8f8; color: #383a42;&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#!/bin/bash 
 
# IMDSv2 토큰 발급 
TOKEN=$(curl -X PUT &quot;http://169.254.169.254/latest/api/token&quot; \
  -H &quot;X-aws-ec2-metadata-token-ttl-seconds: 21600&quot; -s)
 
# 메타데이터 조회 with 토큰 
REGION_AZ=$(curl -H &quot;X-aws-ec2-metadata-token: $TOKEN&quot; \
  -s http://169.254.169.254/latest/meta-data/placement/availability-zone) 
INSTANCE_ID=$(curl -H &quot;X-aws-ec2-metadata-token: $TOKEN&quot; \
  -s http://169.254.169.254/latest/meta-data/instance-id) 
PRIVATE_IP=$(curl -H &quot;X-aws-ec2-metadata-token: $TOKEN&quot; \
  -s http://169.254.169.254/latest/meta-data/local-ipv4)
 
# index.html 파일 생성 
cat &amp;lt;&amp;lt;EOF &amp;gt; /usr/share/nginx/html/index.html 
&amp;lt;!DOCTYPE html&amp;gt; 
&amp;lt;html&amp;gt; 
&amp;lt;head&amp;gt; 
    &amp;lt;title&amp;gt;Web Server2&amp;lt;/title&amp;gt; 
    &amp;lt;style&amp;gt; 
        body { 
            font-family: Arial, sans-serif; 
            font-size: 50px; 
            margin: 0; 
            padding: 20px; 
        } 
        h1 { 
            font-weight: bold; 
            font-size: 50px; 
            margin: 0 0 20px 0; 
            color: blue; 
        } 
        .info { 
            font-weight: normal; 
            font-size: 40px; 
            line-height: 1.5; 
        } 
        .info br { 
            margin-bottom: 10px; 
        } 
    &amp;lt;/style&amp;gt; 
&amp;lt;/head&amp;gt; 
&amp;lt;body&amp;gt; 
    &amp;lt;h1&amp;gt;Web Server V2&amp;lt;/h1&amp;gt; 
    &amp;lt;div class=&quot;info&quot;&amp;gt; 
        Region/AZ: $REGION_AZ&amp;lt;br&amp;gt; 
        Instance ID: $INSTANCE_ID&amp;lt;br&amp;gt; 
        Private IP: $PRIVATE_IP&amp;lt;br&amp;gt; 
    &amp;lt;/div&amp;gt; 
&amp;lt;/body&amp;gt; 
&amp;lt;/html&amp;gt; 
EOF&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f8f9fa; color: #666666; text-align: start;&quot;&gt;2. S3 버킷 생성&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;S3에서 버킷을 생성 한다. 이름은 고유해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CodeBuild가 S3 버킷에서 소스 아티팩트를 다운로드할 때 접근할 수 있도록 S3의 정책 먼저 생성하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;s3-&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0f141a; text-align: start;&quot;&gt;버킷 정책&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1754976855744&quot; class=&quot;json&quot; style=&quot;background-color: #f8f8f8; color: #383a42;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;{
&quot;Version&quot;: &quot;2012-10-17&quot;,
&quot;Statement&quot;: 
{
&quot;Effect&quot;: &quot;Allow&quot;,
&quot;Principal&quot;: {
&quot;Service&quot;: &quot;codebuild.amazonaws.com&quot;
},
&quot;Action&quot;: &quot;s3:*&quot;,
&quot;Resource&quot;: [
&quot;arn:aws:s3:::&amp;lt;본인-S3-Bucket-Name&amp;gt;&quot;,
&quot;arn:aws:s3:::&amp;lt;본인-S3-Bucket-Name&amp;gt;/*&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;&lt;span style=&quot;background-color: #f8f9fa; color: #666666; text-align: start;&quot;&gt;3.&amp;nbsp;CodeBuild&amp;nbsp;프로젝트&amp;nbsp;생성&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p 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;779&quot; data-origin-height=&quot;811&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Lff2h/btsPM0oWTNL/wdOTJ5yK7xeI1djSdkKUdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Lff2h/btsPM0oWTNL/wdOTJ5yK7xeI1djSdkKUdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Lff2h/btsPM0oWTNL/wdOTJ5yK7xeI1djSdkKUdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLff2h%2FbtsPM0oWTNL%2FwdOTJ5yK7xeI1djSdkKUdK%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;779&quot; height=&quot;811&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;779&quot; data-origin-height=&quot;811&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GitHub 내 계정과의 연결을 만들어 준다.&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;1147&quot; data-origin-height=&quot;337&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/M0yas/btsPKQ2hx12/qrucEHyE2TvAKs5WiUOZY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/M0yas/btsPKQ2hx12/qrucEHyE2TvAKs5WiUOZY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/M0yas/btsPKQ2hx12/qrucEHyE2TvAKs5WiUOZY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FM0yas%2FbtsPKQ2hx12%2FqrucEHyE2TvAKs5WiUOZY0%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;1147&quot; height=&quot;337&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1147&quot; data-origin-height=&quot;337&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;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;790&quot; data-origin-height=&quot;736&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xn1uS/btsPOGQFbP4/qTpZZx4wuCEXfxQkgDixWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xn1uS/btsPOGQFbP4/qTpZZx4wuCEXfxQkgDixWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xn1uS/btsPOGQFbP4/qTpZZx4wuCEXfxQkgDixWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fxn1uS%2FbtsPOGQFbP4%2FqTpZZx4wuCEXfxQkgDixWk%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;790&quot; height=&quot;736&quot; data-origin-width=&quot;790&quot; data-origin-height=&quot;736&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;794&quot; data-origin-height=&quot;867&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxVkYS/btsPLfHtFSc/LTg4r7my3PjqQPJaKEaO21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxVkYS/btsPLfHtFSc/LTg4r7my3PjqQPJaKEaO21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxVkYS/btsPLfHtFSc/LTg4r7my3PjqQPJaKEaO21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxVkYS%2FbtsPLfHtFSc%2FLTg4r7my3PjqQPJaKEaO21%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;794&quot; height=&quot;867&quot; data-origin-width=&quot;794&quot; data-origin-height=&quot;867&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;&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;350&quot; data-origin-height=&quot;369&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSE4LO/btsPMOIY64Y/KnCTP7BlqYYlpS2Cb6Soyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSE4LO/btsPMOIY64Y/KnCTP7BlqYYlpS2Cb6Soyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSE4LO/btsPMOIY64Y/KnCTP7BlqYYlpS2Cb6Soyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSE4LO%2FbtsPMOIY64Y%2FKnCTP7BlqYYlpS2Cb6Soyk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;350&quot; height=&quot;369&quot; data-origin-width=&quot;350&quot; data-origin-height=&quot;369&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;&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;IAM 정책 추가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전에 생성한 &lt;span style=&quot;background-color: #fcfcfd; color: #0f141a; text-align: start;&quot;&gt;codebuild-codeBuild-service-role&lt;/span&gt; 역할에 권한 추가하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #fcfcfd; color: #0f141a; text-align: start;&quot;&gt;codebuild-codeBuild-service-role&lt;/span&gt; 선택 &amp;gt; 서비스 역할 &amp;gt; 권한 탭 &amp;gt; 권한 추가 &amp;gt; 인라인 정책 생성 &amp;gt; JSON &amp;gt; 다음 코드 입력 &amp;gt; 정책 이름 &amp;gt; 정책 생성&lt;/p&gt;
&lt;pre id=&quot;code_1754977211788&quot; class=&quot;json&quot; style=&quot;background-color: #f8f8f8; color: #383a42;&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
    &quot;Version&quot;: &quot;2012-10-17&quot;,
    &quot;Statement&quot;: [
        {
            &quot;Effect&quot;: &quot;Allow&quot;,
            &quot;Action&quot;: [
                &quot;codedeploy:*&quot;,
                &quot;s3:GetObject&quot;,
                &quot;s3:GetObjectVersion&quot;,
                &quot;s3:GetBucketLocation&quot;,
                &quot;s3:PutObject&quot;
            ],
            &quot;Resource&quot;: &quot;*&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;&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;IAM 사용자, 역할 차이&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;125&quot; data-start=&quot;105&quot; data-ke-size=&quot;size26&quot;&gt;IAM 사용자 (User)&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;338&quot; data-start=&quot;127&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;169&quot; data-start=&quot;127&quot;&gt;&lt;b&gt;사람(또는 애플리케이션)을 위한 고정된 신원(identity)&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;206&quot; data-start=&quot;170&quot;&gt;AWS 계정 내에서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;지속적으로 존재하는 사용자 계정&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;252&quot; data-start=&quot;207&quot;&gt;로그인용 아이디와 암호(비밀번호)를 가질 수 있고, 액세스 키도 발급 가능&lt;/li&gt;
&lt;li data-end=&quot;306&quot; data-start=&quot;253&quot;&gt;주로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;개발자, 운영자 등 실제 사람&lt;/b&gt;이 AWS 콘솔이나 CLI/API 사용 시 할당&lt;/li&gt;
&lt;li data-end=&quot;338&quot; data-start=&quot;307&quot;&gt;권한(Policy)을 붙여서 그 사용자만의 권한 부여&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;346&quot; data-start=&quot;340&quot; data-ke-size=&quot;size23&quot;&gt;특징&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;427&quot; data-start=&quot;348&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;380&quot; data-start=&quot;348&quot;&gt;고유한 자격 증명(ID, PW, 액세스 키)을 가짐&lt;/li&gt;
&lt;li data-end=&quot;403&quot; data-start=&quot;381&quot;&gt;AWS 계정 내에 영구적으로 존재&lt;/li&gt;
&lt;li data-end=&quot;427&quot; data-start=&quot;404&quot;&gt;직접 로그인 및 AWS 자원 접근 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;453&quot; data-start=&quot;434&quot; data-ke-size=&quot;size26&quot;&gt;[IAM 역할 (Role)]&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;680&quot; data-start=&quot;455&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;500&quot; data-start=&quot;455&quot;&gt;&lt;b&gt;사람, 서비스, 애플리케이션 등에 임시로 권한을 위임하기 위한 신원&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;550&quot; data-start=&quot;501&quot;&gt;고정된 신원은 아니고,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;필요할 때 &amp;ldquo;역할을 맡는(Assume 하는)&amp;rdquo; 형태&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;587&quot; data-start=&quot;551&quot;&gt;로그인용 계정 정보(비밀번호)가 없음 &amp;rarr; 직접 로그인 불가&lt;/li&gt;
&lt;li data-end=&quot;643&quot; data-start=&quot;588&quot;&gt;AWS 서비스(예: EC2, Lambda), 또는 다른 계정의 사용자에게 권한 위임 시 사용&lt;/li&gt;
&lt;li data-end=&quot;680&quot; data-start=&quot;644&quot;&gt;임시 보안 토큰을 통해 권한을 획득해 일정 시간만 권한을 가짐&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;688&quot; data-start=&quot;682&quot; data-ke-size=&quot;size23&quot;&gt;특징&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;841&quot; data-start=&quot;690&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;715&quot; data-start=&quot;690&quot;&gt;직접 로그인 불가,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;역할 위임용&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;759&quot; data-start=&quot;716&quot;&gt;EC2 인스턴스, Lambda 함수 등에 역할 부여해서 권한 위임 가능&lt;/li&gt;
&lt;li data-end=&quot;805&quot; data-start=&quot;760&quot;&gt;타 AWS 계정 사용자도 역할을 맡을 수 있음(크로스 어카운트 권한 위임)&lt;/li&gt;
&lt;li data-end=&quot;841&quot; data-start=&quot;806&quot;&gt;보안상 권장되는 권한 위임 방법 (액세스 키 노출 위험 &amp;darr;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot; data-start=&quot;105&quot; data-end=&quot;125&quot;&gt;&amp;nbsp;&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;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;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;AWS 서비스(CodeBuild, CodePipeline 등)와 외부 코드 저장소(GitHub)을&lt;br /&gt;&lt;b&gt;안전하게 연결해 주는 브리지 역할을 추가해야 합니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;codebuild-codeBuild-service-role에서 codeconnections:UseConnection 권한을 추가해줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1593&quot; data-origin-height=&quot;353&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biQZRJ/btsPNnYtqA1/BsCCBq3QL4fNjAmWK37Avk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biQZRJ/btsPNnYtqA1/BsCCBq3QL4fNjAmWK37Avk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biQZRJ/btsPNnYtqA1/BsCCBq3QL4fNjAmWK37Avk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiQZRJ%2FbtsPNnYtqA1%2FBsCCBq3QL4fNjAmWK37Avk%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;1593&quot; height=&quot;353&quot; data-origin-width=&quot;1593&quot; data-origin-height=&quot;353&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인라인 정책 설정 클릭&lt;/p&gt;
&lt;pre id=&quot;code_1754976855745&quot; class=&quot;json&quot; style=&quot;background-color: #f8f8f8; color: #383a42;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;{
    &quot;Version&quot;: &quot;2012-10-17&quot;,
    &quot;Statement&quot;: [
        {
            &quot;Effect&quot;: &quot;Allow&quot;,
            &quot;Action&quot;: &quot;codeconnections:UseConnection&quot;,
            &quot;Resource&quot;: &quot;arn:aws:codeconnections:ap-northeast-2:&amp;lt;&amp;lt;MY UUID를 넣으세요&amp;gt;&amp;gt;&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;해당 정책 추가.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[UUID 확인법]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(AWS 콘솔 &amp;rarr;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Developer Tools &amp;rarr; Connections &amp;rarr; 해당 연결 클릭&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;rarr; ARN에 표시)&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;1094&quot; data-origin-height=&quot;572&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FTuAz/btsPKSTmefV/5kMtvQUbkmmX9DV5QF1HAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FTuAz/btsPKSTmefV/5kMtvQUbkmmX9DV5QF1HAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FTuAz/btsPKSTmefV/5kMtvQUbkmmX9DV5QF1HAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFTuAz%2FbtsPKSTmefV%2F5kMtvQUbkmmX9DV5QF1HAK%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;1094&quot; height=&quot;572&quot; data-origin-width=&quot;1094&quot; data-origin-height=&quot;572&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1178&quot; data-origin-height=&quot;336&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WKDGq/btsPLYLVHyA/ZE9ntr11J9nbDJhE7hh6PK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WKDGq/btsPLYLVHyA/ZE9ntr11J9nbDJhE7hh6PK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WKDGq/btsPLYLVHyA/ZE9ntr11J9nbDJhE7hh6PK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWKDGq%2FbtsPLYLVHyA%2FZE9ntr11J9nbDJhE7hh6PK%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;1178&quot; height=&quot;336&quot; data-origin-width=&quot;1178&quot; data-origin-height=&quot;336&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&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 style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f8f9fa; color: #666666; text-align: start;&quot;&gt;4.&amp;nbsp;CodeDeploy&amp;nbsp;애플리케이션&amp;nbsp;&amp;amp;&amp;nbsp;배포&amp;nbsp;그룹&amp;nbsp;생성&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;822&quot; data-origin-height=&quot;597&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eD8oMG/btsPLEMJlko/qJVuz63MZTgBS0LLQEswf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eD8oMG/btsPLEMJlko/qJVuz63MZTgBS0LLQEswf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eD8oMG/btsPLEMJlko/qJVuz63MZTgBS0LLQEswf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeD8oMG%2FbtsPLEMJlko%2FqJVuz63MZTgBS0LLQEswf1%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;822&quot; height=&quot;597&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;822&quot; data-origin-height=&quot;597&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;CodeDeploy를 사용하여 애플리케이션을 배포하기 전에 배포 그룹을 생성해야 하기 때문에, 배포 그룹도 생성해줍니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; 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;813&quot; data-origin-height=&quot;646&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cSWnZN/btsPKgzoj6n/ATw4pX0m00bn67pKu7o33K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cSWnZN/btsPKgzoj6n/ATw4pX0m00bn67pKu7o33K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cSWnZN/btsPKgzoj6n/ATw4pX0m00bn67pKu7o33K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcSWnZN%2FbtsPKgzoj6n%2FATw4pX0m00bn67pKu7o33K%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;813&quot; height=&quot;646&quot; data-origin-width=&quot;813&quot; data-origin-height=&quot;646&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;804&quot; data-origin-height=&quot;867&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xZAMS/btsPPZcNleE/LFjhvFjUfXw1RVS8g55Lg1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xZAMS/btsPPZcNleE/LFjhvFjUfXw1RVS8g55Lg1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xZAMS/btsPPZcNleE/LFjhvFjUfXw1RVS8g55Lg1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxZAMS%2FbtsPPZcNleE%2FLFjhvFjUfXw1RVS8g55Lg1%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;804&quot; height=&quot;867&quot; data-origin-width=&quot;804&quot; data-origin-height=&quot;867&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;811&quot; data-origin-height=&quot;582&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beyozh/btsPOJV15bd/wXh7iNFccoZYMhV9Wh0KK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beyozh/btsPOJV15bd/wXh7iNFccoZYMhV9Wh0KK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beyozh/btsPOJV15bd/wXh7iNFccoZYMhV9Wh0KK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbeyozh%2FbtsPOJV15bd%2FwXh7iNFccoZYMhV9Wh0KK1%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;811&quot; height=&quot;582&quot; data-origin-width=&quot;811&quot; data-origin-height=&quot;582&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CodeDeploy 에이전트는 테라폼으로 구축 시 설치되게끔 구성함&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f8f9fa; color: #666666; text-align: start;&quot;&gt;5.&amp;nbsp;CodePipeline&amp;nbsp;생성&amp;nbsp;(Source&amp;nbsp;&amp;rarr;&amp;nbsp;Build&amp;nbsp;&amp;rarr;&amp;nbsp;Deploy&amp;nbsp;연결)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CodePipeline &amp;gt; 파이프라인 &amp;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;837&quot; data-origin-height=&quot;348&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/x2VdT/btsPMYdH8E4/3f2ev6TGUbHG99HYrgFUE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/x2VdT/btsPMYdH8E4/3f2ev6TGUbHG99HYrgFUE0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/x2VdT/btsPMYdH8E4/3f2ev6TGUbHG99HYrgFUE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fx2VdT%2FbtsPMYdH8E4%2F3f2ev6TGUbHG99HYrgFUE0%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;837&quot; height=&quot;348&quot; data-origin-width=&quot;837&quot; data-origin-height=&quot;348&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;953&quot; data-origin-height=&quot;698&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dqrtH6/btsPLJalxkD/ZCkcg5ZbtEArxczTFelh8k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dqrtH6/btsPLJalxkD/ZCkcg5ZbtEArxczTFelh8k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dqrtH6/btsPLJalxkD/ZCkcg5ZbtEArxczTFelh8k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdqrtH6%2FbtsPLJalxkD%2FZCkcg5ZbtEArxczTFelh8k%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;953&quot; height=&quot;698&quot; data-origin-width=&quot;953&quot; data-origin-height=&quot;698&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 소스 코드는 git에서만 가져오며, 배포 또한 각 서버에 배포 되어 있도록 설정되어 있기 때문에 병렬이 아닌 대기로 선택함&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;802&quot; data-origin-height=&quot;416&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lA9MI/btsPM12sr4E/OHCIDEdROhhqQ0KLKP5Op1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lA9MI/btsPM12sr4E/OHCIDEdROhhqQ0KLKP5Op1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lA9MI/btsPM12sr4E/OHCIDEdROhhqQ0KLKP5Op1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlA9MI%2FbtsPM12sr4E%2FOHCIDEdROhhqQ0KLKP5Op1%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;802&quot; height=&quot;416&quot; data-origin-width=&quot;802&quot; data-origin-height=&quot;416&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;782&quot; data-origin-height=&quot;675&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGW7NC/btsPMndLZWY/hwFGKmnJ8FGCw4m9FJtrw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGW7NC/btsPMndLZWY/hwFGKmnJ8FGCw4m9FJtrw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGW7NC/btsPMndLZWY/hwFGKmnJ8FGCw4m9FJtrw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGW7NC%2FbtsPMndLZWY%2FhwFGKmnJ8FGCw4m9FJtrw0%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;782&quot; height=&quot;675&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;782&quot; data-origin-height=&quot;675&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;799&quot; data-origin-height=&quot;794&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vkAPB/btsPN7gIO5f/N2xjq97YI6IkFn5qKSon4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vkAPB/btsPN7gIO5f/N2xjq97YI6IkFn5qKSon4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vkAPB/btsPN7gIO5f/N2xjq97YI6IkFn5qKSon4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvkAPB%2FbtsPN7gIO5f%2FN2xjq97YI6IkFn5qKSon4k%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;799&quot; height=&quot;794&quot; data-origin-width=&quot;799&quot; data-origin-height=&quot;794&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;779&quot; data-origin-height=&quot;669&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/B70fY/btsPNoJPFyC/IN7YOwBgfO5YClHNrePvvk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/B70fY/btsPNoJPFyC/IN7YOwBgfO5YClHNrePvvk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/B70fY/btsPNoJPFyC/IN7YOwBgfO5YClHNrePvvk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FB70fY%2FbtsPNoJPFyC%2FIN7YOwBgfO5YClHNrePvvk%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;779&quot; height=&quot;669&quot; data-origin-width=&quot;779&quot; data-origin-height=&quot;669&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;pipeline IAM 역할에 권한 추가&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 data-end=&quot;245&quot; data-start=&quot;195&quot;&gt;&lt;b&gt;IAM 콘솔&lt;/b&gt; &amp;rarr; Roles &amp;rarr; codepipeline-role 선택&lt;/li&gt;
&lt;li data-end=&quot;312&quot; data-start=&quot;246&quot;&gt;&lt;b&gt;권한(permissions)&lt;/b&gt; 탭에서 Add permissions &amp;rarr; Attach policies&lt;/li&gt;
&lt;li data-end=&quot;312&quot; data-start=&quot;246&quot;&gt;&lt;b&gt;AWSCodeDeployFullAccess 권한 추가&lt;/b&gt;&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;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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f8f9fa; color: #666666; text-align: start;&quot;&gt;6. 서버 배포 하기&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;코드를 commit하면 자동으로 AWS CodePipeline이 작동됨&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;서버 한 개씩 배포되는 것으로 설정.&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;서버 한 개 배포시 다음과 같은 과정에 거쳐 진행됨.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;257&quot; data-origin-height=&quot;387&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bj2E3n/btsPPXe1CJe/DEv0acDtBZdDSS2y3ebOjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bj2E3n/btsPPXe1CJe/DEv0acDtBZdDSS2y3ebOjK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bj2E3n/btsPPXe1CJe/DEv0acDtBZdDSS2y3ebOjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbj2E3n%2FbtsPPXe1CJe%2FDEv0acDtBZdDSS2y3ebOjK%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;257&quot; height=&quot;387&quot; data-origin-width=&quot;257&quot; data-origin-height=&quot;387&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-end=&quot;241&quot; data-start=&quot;211&quot; data-ke-size=&quot;size26&quot;&gt;CodeDeploy EC2 배포 이벤트 순서&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1055&quot; data-start=&quot;258&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;360&quot; data-start=&quot;258&quot;&gt;&lt;b&gt;BeforeBlockTraffic&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;360&quot; data-start=&quot;289&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;319&quot; data-start=&quot;289&quot;&gt;기존 인스턴스에 새 트래픽이 들어오기 전에 실행&lt;/li&gt;
&lt;li data-end=&quot;360&quot; data-start=&quot;323&quot;&gt;로드 밸런서에서 인스턴스 연결을 끊기 전에 필요한 작업 수행&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;417&quot; data-start=&quot;362&quot;&gt;&lt;b&gt;BlockTraffic&lt;/b&gt; (자동 수행)
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;417&quot; data-start=&quot;397&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;417&quot; data-start=&quot;397&quot;&gt;로드 밸런서에서 인스턴스 분리&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;499&quot; data-start=&quot;419&quot;&gt;&lt;b&gt;AfterBlockTraffic&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;499&quot; data-start=&quot;449&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;465&quot; data-start=&quot;449&quot;&gt;트래픽 차단 직후 실행&lt;/li&gt;
&lt;li data-end=&quot;499&quot; data-start=&quot;469&quot;&gt;DB 연결 종료, 세션 저장 등 안전 종료 처리&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;576&quot; data-start=&quot;501&quot;&gt;&lt;b&gt;BeforeInstall&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;576&quot; data-start=&quot;527&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;547&quot; data-start=&quot;527&quot;&gt;새 버전을 설치하기 전에 실행&lt;/li&gt;
&lt;li data-end=&quot;576&quot; data-start=&quot;551&quot;&gt;이전 파일 삭제, 백업, 환경변수 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;653&quot; data-start=&quot;578&quot;&gt;&lt;b&gt;Install&lt;/b&gt; (자동 수행)
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;653&quot; data-start=&quot;608&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;653&quot; data-start=&quot;608&quot;&gt;S3나 GitHub에서 새 애플리케이션 파일 다운로드 후 지정 경로로 복사&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;723&quot; data-start=&quot;655&quot;&gt;&lt;b&gt;AfterInstall&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;723&quot; data-start=&quot;680&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;692&quot; data-start=&quot;680&quot;&gt;설치 직후 실행&lt;/li&gt;
&lt;li data-end=&quot;723&quot; data-start=&quot;696&quot;&gt;권한 변경, 의존성 설치, 설정 파일 수정&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;793&quot; data-start=&quot;725&quot;&gt;&lt;b&gt;ApplicationStart&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;793&quot; data-start=&quot;754&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;767&quot; data-start=&quot;754&quot;&gt;애플리케이션 시작&lt;/li&gt;
&lt;li data-end=&quot;793&quot; data-start=&quot;771&quot;&gt;서비스 재시작, 서버 실행 명령어&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;866&quot; data-start=&quot;795&quot;&gt;&lt;b&gt;ValidateService&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;866&quot; data-start=&quot;823&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;845&quot; data-start=&quot;823&quot;&gt;애플리케이션 정상 동작 여부 확인&lt;/li&gt;
&lt;li data-end=&quot;866&quot; data-start=&quot;849&quot;&gt;헬스 체크 스크립트 실행&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;921&quot; data-start=&quot;868&quot;&gt;&lt;b&gt;BeforeAllowTraffic&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;921&quot; data-start=&quot;899&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;921&quot; data-start=&quot;899&quot;&gt;트래픽 허용 전 마지막 준비 작업&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;980&quot; data-start=&quot;923&quot;&gt;&lt;b&gt;AllowTraffic&lt;/b&gt; (자동 수행)
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;980&quot; data-start=&quot;960&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;980&quot; data-start=&quot;960&quot;&gt;로드 밸런서에서 인스턴스 연결&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1055&quot; data-start=&quot;982&quot;&gt;&lt;b&gt;AfterAllowTraffic&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1055&quot; data-start=&quot;1014&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1030&quot; data-start=&quot;1014&quot;&gt;트래픽 허용 직후 실행&lt;/li&gt;
&lt;li data-end=&quot;1055&quot; data-start=&quot;1035&quot;&gt;모니터링 시작, 알림 전송 등&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;+ 참고용&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;CodeDeploy에서는 S3파일을 다운로드하고 ALB에 속해있는 EC2에 배포할 수 있는 권한이 필요합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;따라서 역할을 생성하여 이후 CodeDeploy 구성시 해당 역할을 사용할 수 있도록 할 계획입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;역할에는 앞서 말한것 처럼&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1. EC2에 배포 할 수 있는 권한,&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2. S3파일을 다운로드 할 수 있는 권한이 존재해야 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1313&quot; data-origin-height=&quot;613&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DmVw4/btsPLKTweyM/lPhRfI5zlbbrK00CVA6J0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DmVw4/btsPLKTweyM/lPhRfI5zlbbrK00CVA6J0K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DmVw4/btsPLKTweyM/lPhRfI5zlbbrK00CVA6J0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDmVw4%2FbtsPLKTweyM%2FlPhRfI5zlbbrK00CVA6J0K%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;1313&quot; height=&quot;613&quot; data-origin-width=&quot;1313&quot; data-origin-height=&quot;613&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;h2 data-end=&quot;125&quot; data-start=&quot;105&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&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;952&quot; data-origin-height=&quot;229&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kwFYf/btsPLi4bU89/2zRTctXRHqrp4aiQYUDA8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kwFYf/btsPLi4bU89/2zRTctXRHqrp4aiQYUDA8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kwFYf/btsPLi4bU89/2zRTctXRHqrp4aiQYUDA8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkwFYf%2FbtsPLi4bU89%2F2zRTctXRHqrp4aiQYUDA8K%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;952&quot; height=&quot;229&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;229&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;다음을 누르게 되면, 보이는 것 처럼 CodeDeploy에 대한 권한이 기본적으로 들어가 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;저희는 S3 파일을 다운로드 할 수 있는 권한만 추가해주면 되겠습니다.&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;1080&quot; data-origin-height=&quot;391&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjbDdo/btsPKgF6qXQ/tcvKytsa1w7V6TYp28xiE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjbDdo/btsPKgF6qXQ/tcvKytsa1w7V6TYp28xiE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjbDdo/btsPKgF6qXQ/tcvKytsa1w7V6TYp28xiE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjbDdo%2FbtsPKgF6qXQ%2FtcvKytsa1w7V6TYp28xiE1%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;1080&quot; height=&quot;391&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;391&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;span style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;S3 파일을 다운로드 할 수 있는 권한은 생성 후 추가해줄 것이기 때문에, 일단 해당 역할을 생성해줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1109&quot; data-origin-height=&quot;265&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QUR08/btsPLJG3XbO/gKdHmS7g4xuKPowxZPxwYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QUR08/btsPLJG3XbO/gKdHmS7g4xuKPowxZPxwYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QUR08/btsPLJG3XbO/gKdHmS7g4xuKPowxZPxwYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQUR08%2FbtsPLJG3XbO%2FgKdHmS7g4xuKPowxZPxwYk%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;1109&quot; height=&quot;265&quot; data-origin-width=&quot;1109&quot; data-origin-height=&quot;265&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;생성한 역할을 클릭하면 다음과 같은 화면이 나오게 됩니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;여기서 S3ReadOnlyAccess 권한 추가를 통하여 S3에 대한 읽기 권한을 추가해 줍니다.&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 style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;3) ASG에 속해있는 EC2&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;EC2에서는 CodeDeploy를 위한 역할을 설정해주어야 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;여기부분은 이미 terraform으로 적용되있으니 흐름만 이해해주세요.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1090&quot; data-origin-height=&quot;629&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZSnnT/btsPKPVxYqX/oD2x2Pzbd0oduv41OUV4Ok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZSnnT/btsPKPVxYqX/oD2x2Pzbd0oduv41OUV4Ok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZSnnT/btsPKPVxYqX/oD2x2Pzbd0oduv41OUV4Ok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZSnnT%2FbtsPKPVxYqX%2FoD2x2Pzbd0oduv41OUV4Ok%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;1090&quot; height=&quot;629&quot; data-origin-width=&quot;1090&quot; data-origin-height=&quot;629&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;922&quot; data-origin-height=&quot;350&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bL5W1A/btsPKFFAKWe/NcJ3cvMajcRAUMgjAjU7i0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bL5W1A/btsPKFFAKWe/NcJ3cvMajcRAUMgjAjU7i0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bL5W1A/btsPKFFAKWe/NcJ3cvMajcRAUMgjAjU7i0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbL5W1A%2FbtsPKFFAKWe%2FNcJ3cvMajcRAUMgjAjU7i0%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;922&quot; height=&quot;350&quot; data-origin-width=&quot;922&quot; data-origin-height=&quot;350&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;권한에 AmazonEC2RoleForCodeDeploy를 추가해줍니다.&lt;/p&gt;
&lt;blockquote style=&quot;background-color: #f8f9fa; color: #212529; text-align: start;&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 정책을 추가해주는 이유는 결국 EC2에 S3에 존재하는 파일을 읽어 가져와야 하기 때문입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 정책은 +로 코드를 보면 S3 버킷 읽기 권한을 가지고 있습니다.&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;b&gt;해당 역할은 이후 ASG에속한 EC2의 생성 시 사용할 예정입니다.&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1128&quot; data-origin-height=&quot;370&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FbMEz/btsPLmMla99/rYtK5J3k5gXsnWV3iGn3y0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FbMEz/btsPLmMla99/rYtK5J3k5gXsnWV3iGn3y0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FbMEz/btsPLmMla99/rYtK5J3k5gXsnWV3iGn3y0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFbMEz%2FbtsPLmMla99%2FrYtK5J3k5gXsnWV3iGn3y0%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;1128&quot; height=&quot;370&quot; data-origin-width=&quot;1128&quot; data-origin-height=&quot;370&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성된 역할을 시작템플릿에 적용하고, 롤링업데이트로 기존EC2들을 버전 업데이트를 해야합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;549&quot; data-origin-height=&quot;642&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oHwkF/btsPKGxLxPs/KwTYKHRKr4aXOTsdc48bc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oHwkF/btsPKGxLxPs/KwTYKHRKr4aXOTsdc48bc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oHwkF/btsPKGxLxPs/KwTYKHRKr4aXOTsdc48bc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoHwkF%2FbtsPKGxLxPs%2FKwTYKHRKr4aXOTsdc48bc1%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;549&quot; height=&quot;642&quot; data-origin-width=&quot;549&quot; data-origin-height=&quot;642&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 ASG에 연결된 EC2에 해당 역할이 적용되있으니, 추가로 적용할 필요는 없습니다.&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>인프라/AWS 3Tier Architecture</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/168</guid>
      <comments>https://kujung.tistory.com/entry/AWS-3-Tier-Architecture-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B0-2-9#entry168comment</comments>
      <pubDate>Sun, 10 Aug 2025 12:58:19 +0900</pubDate>
    </item>
    <item>
      <title>AWS 3 Tier Architecture 구축해보기 2-8</title>
      <link>https://kujung.tistory.com/entry/AWS-3-Tier-Architecture-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B0-2-8</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/estrellaSia/AWS_3Tier_Infra_Data_Pipeline/tree/main&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/estrellaSia/AWS_3Tier_Infra_Data_Pipeline/tree/main&lt;/a&gt;&lt;br /&gt;참고&amp;nbsp;깃허브&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://velog.io/@tak980418/CICD%EB%A5%BC-%EA%B5%AC%EC%84%B1%ED%95%B4%EB%B3%B4%EC%9E%90-1-PLAN&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://velog.io/@tak980418/CICD%EB%A5%BC-%EA%B5%AC%EC%84%B1%ED%95%B4%EB%B3%B4%EC%9E%90-1-PLAN&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고 블로그&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;523&quot; data-origin-height=&quot;831&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjplp6/btsPFDBk5mt/P18kDfC08CJT2vG02eKvKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjplp6/btsPFDBk5mt/P18kDfC08CJT2vG02eKvKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjplp6/btsPFDBk5mt/P18kDfC08CJT2vG02eKvKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbjplp6%2FbtsPFDBk5mt%2FP18kDfC08CJT2vG02eKvKk%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;523&quot; height=&quot;831&quot; data-origin-width=&quot;523&quot; data-origin-height=&quot;831&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;u&gt;&lt;b&gt;1. 인프라 정상 접속 확인하기&lt;/b&gt;&lt;/u&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;route53에서 발급받은 값을 도메인 사이트에서 입력했더라도 적용까지 하루 이틀 소요됩니다.&lt;/p&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 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1) Web, WAS, DB 접속 확인하기&lt;/p&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 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;# Web 서버 접속하기&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;도메인으로 https 보안 접속하기&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;새로고침하여 ALB가 정상 작동하는지 확인&lt;/p&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;831&quot; data-origin-height=&quot;517&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZolLx/btsPLZ37ilF/jEHf4edvQ4jboTfZfmt7g0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZolLx/btsPLZ37ilF/jEHf4edvQ4jboTfZfmt7g0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZolLx/btsPLZ37ilF/jEHf4edvQ4jboTfZfmt7g0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZolLx%2FbtsPLZ37ilF%2FjEHf4edvQ4jboTfZfmt7g0%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;831&quot; height=&quot;517&quot; data-origin-width=&quot;831&quot; data-origin-height=&quot;517&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;903&quot; data-origin-height=&quot;358&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HfKWV/btsPKqhowB1/7kjzeQTEhVcUrTieDbOjqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HfKWV/btsPKqhowB1/7kjzeQTEhVcUrTieDbOjqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HfKWV/btsPKqhowB1/7kjzeQTEhVcUrTieDbOjqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHfKWV%2FbtsPKqhowB1%2F7kjzeQTEhVcUrTieDbOjqk%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;903&quot; height=&quot;358&quot; data-origin-width=&quot;903&quot; data-origin-height=&quot;358&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&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 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&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 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;# WAS 서버 접속하기&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1325&quot; data-origin-height=&quot;301&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JD2mU/btsPJYySH5W/nCLVWhPiIZ0Kk93UJVb0OK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JD2mU/btsPJYySH5W/nCLVWhPiIZ0Kk93UJVb0OK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JD2mU/btsPJYySH5W/nCLVWhPiIZ0Kk93UJVb0OK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJD2mU%2FbtsPJYySH5W%2FnCLVWhPiIZ0Kk93UJVb0OK%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;1325&quot; height=&quot;301&quot; data-origin-width=&quot;1325&quot; data-origin-height=&quot;301&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&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 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&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 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;# DB 서버 접속하기&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;508&quot; data-origin-height=&quot;202&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TkrIZ/btsPJF0q7LX/LlRQ820xk5NV6aO5zxNGc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TkrIZ/btsPJF0q7LX/LlRQ820xk5NV6aO5zxNGc0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TkrIZ/btsPJF0q7LX/LlRQ820xk5NV6aO5zxNGc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTkrIZ%2FbtsPJF0q7LX%2FLlRQ820xk5NV6aO5zxNGc0%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;508&quot; height=&quot;202&quot; data-origin-width=&quot;508&quot; data-origin-height=&quot;202&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;&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;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;u&gt;&lt;b&gt;2. CI/CD 구축 계획 수립&lt;/b&gt;&lt;/u&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;CI/CD는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;지속적 통합(Continuous Integration)&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;과&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;지속적 배포(Continuous Deployment)&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;를 합친 말로, 소프트웨어 개발과 배포를 자동화하고 효율화 하는 방식입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버 배포 파이프라인의 구성&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;771&quot; data-origin-height=&quot;451&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lc7Wr/btsPNkBSiL9/ZPruY1Y5OapGq9nTkVf2c0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lc7Wr/btsPNkBSiL9/ZPruY1Y5OapGq9nTkVf2c0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lc7Wr/btsPNkBSiL9/ZPruY1Y5OapGq9nTkVf2c0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flc7Wr%2FbtsPNkBSiL9%2FZPruY1Y5OapGq9nTkVf2c0%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;771&quot; height=&quot;451&quot; data-origin-width=&quot;771&quot; data-origin-height=&quot;451&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote style=&quot;background-color: #f8f9fa; color: #212529; text-align: start;&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f8f9fa; color: #666666; text-align: start;&quot;&gt;1. GitHub 리포지토리 생성 + .yml 파일 준비&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f8f9fa; color: #666666; text-align: start;&quot;&gt;2. S3 버킷 생성&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f8f9fa; color: #666666; text-align: start;&quot;&gt;3.&amp;nbsp;CodeBuild&amp;nbsp;프로젝트&amp;nbsp;생성&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f8f9fa; color: #666666; text-align: start;&quot;&gt;4.&amp;nbsp;CodeDeploy&amp;nbsp;애플리케이션&amp;nbsp;&amp;amp;&amp;nbsp;배포&amp;nbsp;그룹&amp;nbsp;생성&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f8f9fa; color: #666666; text-align: start;&quot;&gt;5.&amp;nbsp;CodePipeline&amp;nbsp;생성&amp;nbsp;(Source&amp;nbsp;&amp;rarr;&amp;nbsp;Build&amp;nbsp;&amp;rarr;&amp;nbsp;Deploy&amp;nbsp;연결)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f8f9fa; color: #666666; text-align: start;&quot;&gt;6. 서버 배포 하기&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;현재 프로젝트는 GitHub를 원격저장소로 활용하고 있다고 가정합니다.&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&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;</description>
      <category>인프라/AWS 3Tier Architecture</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/169</guid>
      <comments>https://kujung.tistory.com/entry/AWS-3-Tier-Architecture-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B0-2-8#entry169comment</comments>
      <pubDate>Sat, 9 Aug 2025 12:59:48 +0900</pubDate>
    </item>
    <item>
      <title>AWS 3 Tier Architecture 구축해보기 2-7</title>
      <link>https://kujung.tistory.com/entry/AWS-3-Tier-Architecture-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B0-2-7</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/estrellaSia/AWS_3Tier_Infra_Data_Pipeline/tree/main&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/estrellaSia/AWS_3Tier_Infra_Data_Pipeline/tree/main&lt;/a&gt;&lt;br /&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-origin-width=&quot;523&quot; data-origin-height=&quot;831&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dy1Fhf/btsPGET2Eid/eUasOkY4egSeamRKVqWYZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dy1Fhf/btsPGET2Eid/eUasOkY4egSeamRKVqWYZk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dy1Fhf/btsPGET2Eid/eUasOkY4egSeamRKVqWYZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdy1Fhf%2FbtsPGET2Eid%2FeUasOkY4egSeamRKVqWYZk%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;523&quot; height=&quot;831&quot; data-origin-width=&quot;523&quot; data-origin-height=&quot;831&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;저번 시간 테라텀 코드를 apply 하였다. 콘솔로 접속하여 제대로 실행됬는지 확인 해보자.&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;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;u&gt;&lt;b&gt;1. 구축 결과 확인하기&lt;/b&gt;&lt;/u&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;1) VPC&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;573&quot; data-origin-height=&quot;166&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZvlzp/btsPIdVv5TF/5dn8LK18ESiZPAz6f066uk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZvlzp/btsPIdVv5TF/5dn8LK18ESiZPAz6f066uk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZvlzp/btsPIdVv5TF/5dn8LK18ESiZPAz6f066uk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZvlzp%2FbtsPIdVv5TF%2F5dn8LK18ESiZPAz6f066uk%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;573&quot; height=&quot;166&quot; data-origin-width=&quot;573&quot; data-origin-height=&quot;166&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) 인터넷 게이트웨이&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;611&quot; data-origin-height=&quot;150&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qCvdO/btsPHNJxsck/ulKH3xEAGBUAhYqJ8ftHg1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qCvdO/btsPHNJxsck/ulKH3xEAGBUAhYqJ8ftHg1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qCvdO/btsPHNJxsck/ulKH3xEAGBUAhYqJ8ftHg1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqCvdO%2FbtsPHNJxsck%2FulKH3xEAGBUAhYqJ8ftHg1%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;611&quot; height=&quot;150&quot; data-origin-width=&quot;611&quot; data-origin-height=&quot;150&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;3) NAT Gateway&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;816&quot; data-origin-height=&quot;109&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byXVjG/btsPHjWvJba/CCbfcleCxWVI5CyjF9C0Pk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byXVjG/btsPHjWvJba/CCbfcleCxWVI5CyjF9C0Pk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byXVjG/btsPHjWvJba/CCbfcleCxWVI5CyjF9C0Pk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyXVjG%2FbtsPHjWvJba%2FCCbfcleCxWVI5CyjF9C0Pk%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;816&quot; height=&quot;109&quot; data-origin-width=&quot;816&quot; data-origin-height=&quot;109&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;&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;4) 서브넷, 라우팅 테이블&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;bull; Public subnet 2개, Private subnet 6개&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;753&quot; data-origin-height=&quot;366&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqXImS/btsPHkA316m/TEIwIzfOZazzLgMaRaUE81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqXImS/btsPHkA316m/TEIwIzfOZazzLgMaRaUE81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqXImS/btsPHkA316m/TEIwIzfOZazzLgMaRaUE81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqXImS%2FbtsPHkA316m%2FTEIwIzfOZazzLgMaRaUE81%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;753&quot; height=&quot;366&quot; data-origin-width=&quot;753&quot; data-origin-height=&quot;366&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;548&quot; data-origin-height=&quot;273&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b6L6Om/btsPHWGk92t/WGXUwkZGgJcVaSQaFNGCnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b6L6Om/btsPHWGk92t/WGXUwkZGgJcVaSQaFNGCnK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b6L6Om/btsPHWGk92t/WGXUwkZGgJcVaSQaFNGCnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb6L6Om%2FbtsPHWGk92t%2FWGXUwkZGgJcVaSQaFNGCnK%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;273&quot; data-origin-width=&quot;548&quot; data-origin-height=&quot;273&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5)ALB, ALB SG&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;489&quot; data-origin-height=&quot;245&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NmFTz/btsPGF6yfnp/AT6lzcoRbprvg7si9WPm0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NmFTz/btsPGF6yfnp/AT6lzcoRbprvg7si9WPm0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NmFTz/btsPGF6yfnp/AT6lzcoRbprvg7si9WPm0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNmFTz%2FbtsPGF6yfnp%2FAT6lzcoRbprvg7si9WPm0k%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;489&quot; height=&quot;245&quot; data-origin-width=&quot;489&quot; data-origin-height=&quot;245&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;510&quot; data-origin-height=&quot;213&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDpRcX/btsPIwtRenJ/ibzg90cKt3zBUZhrQtodT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDpRcX/btsPIwtRenJ/ibzg90cKt3zBUZhrQtodT1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDpRcX/btsPIwtRenJ/ibzg90cKt3zBUZhrQtodT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDpRcX%2FbtsPIwtRenJ%2Fibzg90cKt3zBUZhrQtodT1%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;510&quot; height=&quot;213&quot; data-origin-width=&quot;510&quot; data-origin-height=&quot;213&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;&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;6) 시작 템플릿&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;558&quot; data-origin-height=&quot;211&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cvOwOL/btsPFixsn8d/reBLJHgKkYbqo72pXsmN50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cvOwOL/btsPFixsn8d/reBLJHgKkYbqo72pXsmN50/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cvOwOL/btsPFixsn8d/reBLJHgKkYbqo72pXsmN50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcvOwOL%2FbtsPFixsn8d%2FreBLJHgKkYbqo72pXsmN50%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;558&quot; height=&quot;211&quot; data-origin-width=&quot;558&quot; data-origin-height=&quot;211&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;&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;7) Target Group&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;503&quot; data-origin-height=&quot;219&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cmUmcz/btsPHOuS3u5/ykwhK0qURWAMjMUBFMypV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cmUmcz/btsPHOuS3u5/ykwhK0qURWAMjMUBFMypV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cmUmcz/btsPHOuS3u5/ykwhK0qURWAMjMUBFMypV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcmUmcz%2FbtsPHOuS3u5%2FykwhK0qURWAMjMUBFMypV0%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;503&quot; height=&quot;219&quot; data-origin-width=&quot;503&quot; data-origin-height=&quot;219&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;&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;8)Auto Scaling Group, Auto Scaling Group SG&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;664&quot; data-origin-height=&quot;268&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/omGPs/btsPHGcNY78/66oN60dSLkyRc1psvNWtF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/omGPs/btsPHGcNY78/66oN60dSLkyRc1psvNWtF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/omGPs/btsPHGcNY78/66oN60dSLkyRc1psvNWtF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FomGPs%2FbtsPHGcNY78%2F66oN60dSLkyRc1psvNWtF0%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;664&quot; height=&quot;268&quot; data-origin-width=&quot;664&quot; data-origin-height=&quot;268&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;489&quot; data-origin-height=&quot;256&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bViLAL/btsPHFkHLMO/Zbp55y8Th1ugCnkpPvjXy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bViLAL/btsPHFkHLMO/Zbp55y8Th1ugCnkpPvjXy1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bViLAL/btsPHFkHLMO/Zbp55y8Th1ugCnkpPvjXy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbViLAL%2FbtsPHFkHLMO%2FZbp55y8Th1ugCnkpPvjXy1%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;489&quot; height=&quot;256&quot; data-origin-width=&quot;489&quot; data-origin-height=&quot;256&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;9) DB SG, DB Subnet Group&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;435&quot; data-origin-height=&quot;192&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4MqKV/btsPEGk1YIK/3UCpR2GAsCJYsCKivhKwck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4MqKV/btsPEGk1YIK/3UCpR2GAsCJYsCKivhKwck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4MqKV/btsPEGk1YIK/3UCpR2GAsCJYsCKivhKwck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4MqKV%2FbtsPEGk1YIK%2F3UCpR2GAsCJYsCKivhKwck%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;435&quot; height=&quot;192&quot; data-origin-width=&quot;435&quot; data-origin-height=&quot;192&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;452&quot; data-origin-height=&quot;216&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/D4XfQ/btsPHZiJ99j/uJ0WKUfoelIqvqpu3A5Fwk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/D4XfQ/btsPHZiJ99j/uJ0WKUfoelIqvqpu3A5Fwk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/D4XfQ/btsPHZiJ99j/uJ0WKUfoelIqvqpu3A5Fwk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FD4XfQ%2FbtsPHZiJ99j%2FuJ0WKUfoelIqvqpu3A5Fwk%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;452&quot; height=&quot;216&quot; data-origin-width=&quot;452&quot; data-origin-height=&quot;216&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;10) RDS 파라미터 그룹, RDS&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;418&quot; data-origin-height=&quot;337&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdw5y4/btsPHQM3bhM/QlK63lID8k9pWaQcAKjyL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdw5y4/btsPHQM3bhM/QlK63lID8k9pWaQcAKjyL0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdw5y4/btsPHQM3bhM/QlK63lID8k9pWaQcAKjyL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbdw5y4%2FbtsPHQM3bhM%2FQlK63lID8k9pWaQcAKjyL0%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;418&quot; height=&quot;337&quot; data-origin-width=&quot;418&quot; data-origin-height=&quot;337&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;354&quot; data-origin-height=&quot;186&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UYRLE/btsPFBQ7MLE/1QGFJqzicF7ulHkDqjsHOk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UYRLE/btsPFBQ7MLE/1QGFJqzicF7ulHkDqjsHOk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UYRLE/btsPFBQ7MLE/1QGFJqzicF7ulHkDqjsHOk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUYRLE%2FbtsPFBQ7MLE%2F1QGFJqzicF7ulHkDqjsHOk%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;354&quot; height=&quot;186&quot; data-origin-width=&quot;354&quot; data-origin-height=&quot;186&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;&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;11) Output&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;Terraform으로 구축완료시 다음과 같이 rds-endponit와 web-alb-dns&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;확인하기&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;628&quot; data-origin-height=&quot;70&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cWLGbC/btsPHGYbAXE/tOYTWeLTPOVF04895vL1J0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cWLGbC/btsPHGYbAXE/tOYTWeLTPOVF04895vL1J0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cWLGbC/btsPHGYbAXE/tOYTWeLTPOVF04895vL1J0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWLGbC%2FbtsPHGYbAXE%2FtOYTWeLTPOVF04895vL1J0%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;628&quot; height=&quot;70&quot; data-origin-width=&quot;628&quot; data-origin-height=&quot;70&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;&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;u&gt;&lt;b&gt;2. ROUTE53 도메인 등록하기&lt;/b&gt;&lt;/u&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AWS에서 서버를 구축하고 외부에서 도메인으로 접속하려면, Route 53을 통해 도메인을 호스팅(관리)하는 것이 일반적인 방법입니다.&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;1)여러 사이트에서 도메인 구입 가능. 비교 후 구입&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Route 53 &amp;gt; 호스팅 영역 &amp;gt; 호스팅 영역 생성 &amp;gt; 구매한 도메인 이름&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1164&quot; data-origin-height=&quot;502&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cTXIW0/btsPFCCtEJc/RppkZxxMiKadqNDVVLEemK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cTXIW0/btsPFCCtEJc/RppkZxxMiKadqNDVVLEemK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cTXIW0/btsPFCCtEJc/RppkZxxMiKadqNDVVLEemK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcTXIW0%2FbtsPFCCtEJc%2FRppkZxxMiKadqNDVVLEemK%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;1164&quot; height=&quot;502&quot; data-origin-width=&quot;1164&quot; data-origin-height=&quot;502&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;2)Name Server 등록하기&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;생성된 호스팅 영역에는 NS와 SOA가 자동으로 생성됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #424650; text-align: start;&quot;&gt;값/트래픽 라우팅 대상을 구매한 도메인 사이트 가서 입력해주면됨.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1218&quot; data-origin-height=&quot;533&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvUIBm/btsPE6qws3C/iVvRoOHGtGovcZX5cJYm7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvUIBm/btsPE6qws3C/iVvRoOHGtGovcZX5cJYm7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvUIBm/btsPE6qws3C/iVvRoOHGtGovcZX5cJYm7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvUIBm%2FbtsPE6qws3C%2FiVvRoOHGtGovcZX5cJYm7k%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;1218&quot; height=&quot;533&quot; data-origin-width=&quot;1218&quot; data-origin-height=&quot;533&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3) &lt;b&gt;Alias 레코드 등록&lt;/b&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;1650&quot; data-origin-height=&quot;652&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUlVGP/btsPId84HPo/PeaZcskW1bacj5LSIQlOdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUlVGP/btsPId84HPo/PeaZcskW1bacj5LSIQlOdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUlVGP/btsPId84HPo/PeaZcskW1bacj5LSIQlOdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUlVGP%2FbtsPId84HPo%2FPeaZcskW1bacj5LSIQlOdK%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;1650&quot; height=&quot;652&quot; data-origin-width=&quot;1650&quot; data-origin-height=&quot;652&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-end=&quot;427&quot; data-start=&quot;387&quot; data-ke-size=&quot;size20&quot;&gt;Application Load Balancer에 연결된 경우&lt;/h4&gt;
&lt;p data-end=&quot;464&quot; data-start=&quot;428&quot; data-ke-size=&quot;size16&quot;&gt;Route 53에서는 &lt;b&gt;Alias 레코드&lt;/b&gt;를 사용해야 합니다:&lt;/p&gt;
&lt;p data-end=&quot;464&quot; data-start=&quot;428&quot; data-ke-size=&quot;size16&quot;&gt;Alias &amp;ndash; AWS 리소스로 트래픽 라우팅&lt;/p&gt;
&lt;p data-end=&quot;464&quot; data-start=&quot;428&quot; data-ke-size=&quot;size16&quot;&gt;즉, ALB로 트래픽 라우팅 해줌.&lt;/p&gt;
&lt;p data-end=&quot;464&quot; data-start=&quot;428&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;464&quot; data-start=&quot;428&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;</description>
      <category>인프라/AWS 3Tier Architecture</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/167</guid>
      <comments>https://kujung.tistory.com/entry/AWS-3-Tier-Architecture-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B0-2-7#entry167comment</comments>
      <pubDate>Wed, 6 Aug 2025 22:57:29 +0900</pubDate>
    </item>
    <item>
      <title>AWS 3 Tier Architecture 구축해보기 2-6</title>
      <link>https://kujung.tistory.com/entry/AWS-3-Tier-Architecture-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B0-2-6</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/estrellaSia/AWS_3Tier_Infra_Data_Pipeline/tree/main&quot;&gt;https://github.com/estrellaSia/AWS_3Tier_Infra_Data_Pipeline/tree/main&lt;/a&gt;&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;523&quot; data-origin-height=&quot;831&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HEJVR/btsPF7oANxl/XbjYP45DEWvcssXL7hp0k1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HEJVR/btsPF7oANxl/XbjYP45DEWvcssXL7hp0k1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HEJVR/btsPF7oANxl/XbjYP45DEWvcssXL7hp0k1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHEJVR%2FbtsPF7oANxl%2FXbjYP45DEWvcssXL7hp0k1%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;523&quot; height=&quot;831&quot; data-origin-width=&quot;523&quot; data-origin-height=&quot;831&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;현재까지 인프라 구축을 위한 terraform 코드 작성은 완료되었고, AWS에 적용시켜보겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;sidebar&quot;&gt;
&lt;div id=&quot;mCSB_1&quot;&gt;
&lt;div id=&quot;mCSB_1_scrollbar_vertical&quot;&gt;
&lt;div id=&quot;mCSB_1_dragger_vertical&quot;&gt;
&lt;div&gt;&lt;u style=&quot;color: #000000; font-size: 1.62em; letter-spacing: -1px;&quot;&gt;&lt;b&gt;1.AWS&amp;nbsp;IAM&amp;nbsp;액세스키&amp;nbsp;생성&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IAM&amp;nbsp;-&amp;gt;&amp;nbsp;사용자&amp;nbsp;-&amp;gt;&amp;nbsp;본인&amp;nbsp;계정&amp;nbsp;선택&amp;nbsp;-&amp;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;생성된&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1098&quot; data-origin-height=&quot;802&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FhXwC/btsPHGX75OQ/xmhCa9DUkz8lCXKzqNfmo1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FhXwC/btsPHGX75OQ/xmhCa9DUkz8lCXKzqNfmo1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FhXwC/btsPHGX75OQ/xmhCa9DUkz8lCXKzqNfmo1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFhXwC%2FbtsPHGX75OQ%2FxmhCa9DUkz8lCXKzqNfmo1%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;1098&quot; height=&quot;802&quot; data-origin-width=&quot;1098&quot; data-origin-height=&quot;802&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;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;u&gt;&lt;b&gt;2. &lt;b&gt;AWS CLI 설치 (윈도우 경우, amazon ec2면 이미 설치)&lt;/b&gt; &lt;/b&gt;&lt;/u&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;u&gt;&lt;b&gt; &lt;u&gt;&lt;b&gt;&lt;b&gt;&lt;a href=&quot;https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/getting-started-install.html&quot;&gt;https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/getting-started-install.html&lt;/a&gt;&lt;/b&gt;&lt;/b&gt;&lt;/u&gt; &lt;br /&gt;&lt;/b&gt;&lt;/u&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;일반적으로 Terraform으로 AWS에 리소스를 적용하려면 AWS CLI는 &quot;직접적으로는 필수는 아니지만&quot;, AWS 자격 증명 설정을 위해 거의 항상 함께 사용됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;181&quot; data-start=&quot;150&quot; data-ke-size=&quot;size23&quot;&gt;Terraform이 AWS 리소스를 조작하려면&lt;/h3&gt;
&lt;p data-end=&quot;274&quot; data-start=&quot;182&quot; data-ke-size=&quot;size16&quot;&gt;Terraform은 AWS API를 통해 리소스를 생성/변경/삭제합니다. 이때 &lt;b&gt;AWS 인증 정보 (Access Key / Secret Key)&lt;/b&gt; 가 필요합니다.&lt;/p&gt;
&lt;p data-end=&quot;299&quot; data-start=&quot;276&quot; data-ke-size=&quot;size16&quot;&gt;이를 설정하는 방법은 여러 가지가 있는데:&lt;/p&gt;
&lt;p data-end=&quot;299&quot; data-start=&quot;276&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;299&quot; data-start=&quot;276&quot; data-ke-size=&quot;size16&quot;&gt;가장 일반적인 사용 흐름으로는&lt;br /&gt;AWS CLI 설치&lt;br /&gt;aws configure 입력해서 Access Key, Secret Key, Region 입력&lt;br /&gt;terraform&amp;nbsp;init&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;terraform&amp;nbsp;apply &lt;br /&gt;이 흐름에서는 AWS CLI가 자격증명 파일을 만들어주는 도구 역할을 합니다.&lt;/p&gt;
&lt;p data-end=&quot;299&quot; data-start=&quot;276&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로컬 개발 환경 (Windows on-premise 등)에서는 &lt;b&gt;AWS CLI 설치 후 aws configure 사용하는 방식이 가장 편하고 안전&lt;/b&gt;합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;환경변수 설정도 가능하지만, 반복성과 관리 편의성은 CLI 방식이 더 좋습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Terraform 자체는 AWS CLI 없이도 동작합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 &lt;b&gt;자격 증명 설정을 위해 AWS CLI 설치가 거의 필수처럼 사용&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;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;u&gt;&lt;b&gt;3.&lt;span&gt; &lt;b&gt;AWS configure&lt;/b&gt; &lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;테라폼에서 사용할 tf 파일에 IAM key를 작성하는 방식은 보안상 올바르지 않습니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;aws configure를 이용해 민감한 정보를 로컬에서 받아올 수 있게 명령어로 aws key를 등록합니다.&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_1754304307714&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;aws configure

AWS Access Key ID [None]: Own Access key
AWS Secret Access Key [None]: Own Secret Key
Default region name [None]: ap-northeast-2
Default output format [None]:&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;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;u&gt;&lt;b&gt;4.&lt;span&gt;&lt;span&gt; main.tf 설정 추가&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;b&gt;&lt;span&gt;&lt;span&gt;terraform provider, region를 명시합니다. &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1754305189457&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;terraform {
  required_providers {
    aws = {
      source  = &quot;hashicorp/aws&quot;
      version = &quot;~&amp;gt; 6.7.0&quot; # 로컬에 설치한 최신 버전으로 변경
    }
  }
}
provider &quot;aws&quot; {
  region     = &quot;ap-northeast-2&quot;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;136&quot; data-start=&quot;88&quot; data-ke-size=&quot;size26&quot;&gt;terraform providers 명령어 사용하여 version 조회&lt;/h2&gt;
&lt;p data-end=&quot;172&quot; data-start=&quot;138&quot; data-ke-size=&quot;size16&quot;&gt;터미널에서 프로젝트 디렉터리 안에서 위 명령어를 실행한 후&amp;nbsp; terraform.lock.hcl 파일에서 확인 ( terraform init 되있어야함)&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;172&quot; data-start=&quot;138&quot; data-ke-size=&quot;size16&quot;&gt;현재 기준 6.7.0입니다.&lt;/p&gt;
&lt;p data-end=&quot;172&quot; data-start=&quot;138&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;172&quot; data-start=&quot;138&quot; data-ke-size=&quot;size16&quot;&gt;예시 출력&lt;/p&gt;
&lt;p data-end=&quot;172&quot; data-start=&quot;138&quot; data-ke-size=&quot;size16&quot;&gt;Providers&amp;nbsp;required&amp;nbsp;by&amp;nbsp;configuration: &lt;br /&gt;. &lt;br /&gt;├──&amp;nbsp;provider[registry.terraform.io/hashicorp/aws]&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;172&quot; data-start=&quot;138&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;172&quot; data-start=&quot;138&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;172&quot; data-start=&quot;138&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;172&quot; data-start=&quot;138&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;u&gt;&lt;b&gt;5.&lt;span&gt; &lt;b&gt;Terraform 실행&lt;/b&gt; &lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) &lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;terraform init&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;.tf 파일이 위치한 디렉토리에서 실행해주세요&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-042da950-8d4d-4e64-aa51-4804dbbac312&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;기본 설정 구성 및 필요한 모든 파일과 설정을 저장하기 위한 .terraform 디렉토리를&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-041d138d-e7fd-42e4-b3da-e31c3ea0f877&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;생성합니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;562&quot; data-origin-height=&quot;216&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btjMng/btsPETdptIY/VkxHnKgKWEdCDikb1j4Ke0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btjMng/btsPETdptIY/VkxHnKgKWEdCDikb1j4Ke0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btjMng/btsPETdptIY/VkxHnKgKWEdCDikb1j4Ke0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtjMng%2FbtsPETdptIY%2FVkxHnKgKWEdCDikb1j4Ke0%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;562&quot; height=&quot;216&quot; data-origin-width=&quot;562&quot; data-origin-height=&quot;216&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;span style=&quot;color: #000000;&quot;&gt;2) &lt;b&gt;terraform plan&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-c8306e14-f540-4e1c-9acb-702702d449f6&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;테라폼 설정 파일에 정의된 변경 사항을 미리 예측하고 검토하는데 사용됩니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: left;&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;833&quot; data-origin-height=&quot;154&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqucJu/btsPE98cOib/sWskKjJtNFjLqptwBf2hXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqucJu/btsPE98cOib/sWskKjJtNFjLqptwBf2hXK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqucJu/btsPE98cOib/sWskKjJtNFjLqptwBf2hXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcqucJu%2FbtsPE98cOib%2FsWskKjJtNFjLqptwBf2hXK%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;833&quot; height=&quot;154&quot; data-origin-width=&quot;833&quot; data-origin-height=&quot;154&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;3) &lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;terraform apply&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-9528cf09-3a81-4b03-a40e-f6a9c5325bf4&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;'terraform apply' 명령어는 terraform 설정 파일에 정의된 인프라 변경 사항을 실제&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-a5269e8f-776d-4e32-9f37-afee216f1b25&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;클라우드 환경에 적용하는데 사용됩니다.&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-3f1adc18-0d3d-4103-9d44-d9ba545d9991&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt; terraform apply -&amp;gt; yes -&amp;gt; 구축 완료&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;참고로 AWS RDS는 요금이 많이 청구되기 때문에 쓰지 않을때에는 일지정지를 해주세요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-cd5c9dd0-e3ee-423f-9ba1-606287fda631&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;- 포털에서 인프라 확인&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-04426b2d-166f-4a7a-bb79-19fe640a2771&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;다음 글에서 AWS Console에 접속하여 인프라가 정상 구축되었음을 확인합니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;4)&amp;nbsp; &lt;/b&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;terraform destroy&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Terraform으로 생성한 리소스 삭제&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-08c09705-6282-4b07-869e-b3f2d5f0790e&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;해당 명령어로 생성한 모든 인프라 리소스를 제거합니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;나중에 삭제하실때 위 명령어로 하시면 됩니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>인프라/AWS 3Tier Architecture</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/166</guid>
      <comments>https://kujung.tistory.com/entry/AWS-3-Tier-Architecture-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B0-2-6#entry166comment</comments>
      <pubDate>Wed, 6 Aug 2025 21:43:30 +0900</pubDate>
    </item>
    <item>
      <title>AWS 3 Tier Architecture 구축해보기 2-5</title>
      <link>https://kujung.tistory.com/entry/AWS-3-Tier-Architecture-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B0-2-5</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/estrellaSia/AWS_3Tier_Infra_Data_Pipeline/tree/main&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/estrellaSia/AWS_3Tier_Infra_Data_Pipeline/tree/main&lt;/a&gt;&lt;br /&gt;참고&amp;nbsp;깃허브&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;u&gt;&lt;b&gt;1.web-user-data.sh 스크립트 작성&lt;/b&gt;&lt;/u&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1754255766109&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#!/bin/bash
# Amazon Linux 2 userdata script for setting up Nginx with ProxyPass
# Update packages
sudo yum update -y
# Install Nginx
sudo yum install -y nginx
# Start and enable Nginx
sudo systemctl start nginx
sudo systemctl enable nginx
# Install SSM Agent
sudo yum install -y amazon-ssm-agent
# Start and enable SSM Agent
sudo systemctl start amazon-ssm-agent
sudo systemctl enable amazon-ssm-agent
# Configure ProxyPass in Nginx

# 도메인servername으로 접근해오는 트래픽을 ALB로 proxy해줌.
cat &amp;lt;&amp;lt; EOF &amp;gt; /etc/nginx/conf.d/proxy.conf
server {
listen 80;
server_name ddongteacher.xyz;
# Proxy path configuration (e.g., /app)
location /app {
proxy_pass http://${alb_dns}/;
}
# Log settings (optional)
error_log /var/log/nginx/mark_error.log;
access_log /var/log/nginx/mark_access.log combined;
}
server {
listen 443;
server_name ddongteacher.xyz;
# Proxy path configuration (e.g., /app)
location /app {
proxy_pass http://${alb_dns}/;
}
# Log settings (optional)
error_log /var/log/nginx/mark_error.log;
access_log /var/log/nginx/mark_access.log combined;
}
EOF
# 토큰 생성
TOKEN=$(curl -X PUT &quot;http://169.254.169.254/latest/api/token&quot; \
  -H &quot;X-aws-ec2-metadata-token-ttl-seconds: 21600&quot; -s)
# 메타데이터 사용하여 각 정보 조회
RZAZ=$(curl -H &quot;X-aws-ec2-metadata-token: $TOKEN&quot; \
  -s http://169.254.169.254/latest/meta-data/placement/availability-zone)
IID=$(curl -H &quot;X-aws-ec2-metadata-token: $TOKEN&quot; \
  -s http://169.254.169.254/latest/meta-data/instance-id)
LIP=$(curl -H &quot;X-aws-ec2-metadata-token: $TOKEN&quot; \
  -s http://169.254.169.254/latest/meta-data/local-ipv4)
  
# HTML 파일에 정보 삽입
cat &amp;lt;&amp;lt; EOF &amp;gt; /usr/share/nginx/html/index.html
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;title&amp;gt;Web Server&amp;lt;/title&amp;gt;
&amp;lt;style&amp;gt;
body {
font-family: Arial, sans-serif; /* 폰트 스타일 */
font-size: 50px; /* 기본 폰트 크기 */
margin: 0;
padding: 20px; /* 내용과 화면 가장자리 사이에 간격 추가 */
}
h1 {
font-weight: bold; /* h1 태그는 볼드체 */
font-size: 50px; /* h1 태그의 폰트 크기 */
margin: 0 0 20px 0; /* 제목 아래에 여백 추가 */
}
.info {
font-weight: normal; /* 정보 텍스트는 일반 두께 */
font-size: 40px; /* 정보 텍스트의 폰트 크기 */
line-height: 1.5; /* 줄 간격 설정 */
}
.info br {
margin-bottom: 10px; /* &amp;lt;br&amp;gt; 태그 아래 마진 추가 */
}
&amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;h1&amp;gt;Web Server&amp;lt;/h1&amp;gt; &amp;lt;!-- 제목은 볼드체로 왼쪽 상단에 표시 --&amp;gt;
&amp;lt;div class=&quot;info&quot;&amp;gt;
Region/AZ: $RZAZ&amp;lt;br&amp;gt;
Instance ID: $IID&amp;lt;br&amp;gt;
Private IP: $LIP&amp;lt;br&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
EOF
# Nginx 재시작
sudo systemctl restart nginx&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;u&gt;&lt;b&gt;2.app-user-data.sh 스크립트 작성&lt;/b&gt;&lt;/u&gt;&lt;u&gt;&lt;b&gt;&lt;/b&gt;&lt;/u&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1754255902153&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#!/bin/bash
# Use this for your user data (script from top to bottom)
# install nginx, php (Amazon Linux 2 version)
bash
# Update packages
sudo yum update -y
# Install Apache and PHP
sudo yum install -y nginx php php-mysqlnd
# Enable necessary Apache modules
sudo systemctl start nginx
sudo systemctl enable nginx
# Install SSM Agent
sudo yum install -y amazon-ssm-agent
# Start and enable SSM Agent
sudo systemctl start amazon-ssm-agent
sudo systemctl enable amazon-ssm-agent
# Install MySQL client
sudo yum install -y mariadb105
echo &quot;rds = ${rds_endpoint}&quot;
echo &quot;${host}&quot;
# RDS 에 접속하여 쿼리 실행
mysql -h &quot;${host}&quot; -P 3306 -u &quot;${username}&quot; -p${password} &quot;${db}&quot; -e &quot;CREATE
TABLE IF NOT EXISTS info (
name VARCHAR(50) PRIMARY KEY,
email VARCHAR(50),
age INT
);&quot;
mysql -h &quot;${host}&quot; -P 3306 -u &quot;${username}&quot; -p${password} &quot;${db}&quot; -e &quot;INSERT
INTO info (name, email, age) VALUES ('mk', 'mk@google.com', 23);&quot;
cat &amp;lt;&amp;lt; EOF &amp;gt; /usr/share/nginx/html/test.php
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;utf8&quot;&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;?php
phpinfo();
?&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
EOF
cat &amp;lt;&amp;lt; EOF &amp;gt; /usr/share/nginx/html/db.php
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;utf-8&quot;&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;h1&amp;gt;DB page&amp;lt;/h1&amp;gt;
&amp;lt;?php
// 데이터베이스 연결
\$conn = new mysqli(&quot;${host}&quot;, &quot;${username}&quot;, &quot;${password}&quot;, &quot;${db}&quot;,
3306);
// 연결 확인
if (\$conn-&amp;gt;connect_error) {
die(&quot;Connection failed: &quot; . \$conn-&amp;gt;connect_error);
}
\$sql = &quot;SELECT name, email, age FROM info&quot;;
\$result = \$conn-&amp;gt;query(\$sql);
if (\$result-&amp;gt;num_rows &amp;gt; 0) {
// 결과 행을 출력
while(\$row = \$result-&amp;gt;fetch_assoc()) {
echo &quot;Name: &quot; . \$row[&quot;name&quot;] . &quot; - Email: &quot; . \$row[&quot;email&quot;] . &quot;
- Age: &quot; . \$row[&quot;age&quot;] . &quot;&amp;lt;br&amp;gt;&quot;;
}
}
else {
echo &quot;0 results&quot;;
}
// 연결 닫기
\$conn-&amp;gt;close();
?&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
EOF
# Restart Nginx
sudo systemctl restart nginx&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>인프라/AWS 3Tier Architecture</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/165</guid>
      <comments>https://kujung.tistory.com/entry/AWS-3-Tier-Architecture-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B0-2-5#entry165comment</comments>
      <pubDate>Tue, 5 Aug 2025 07:21:02 +0900</pubDate>
    </item>
    <item>
      <title>AWS 3 Tier Architecture 구축해보기 2-4</title>
      <link>https://kujung.tistory.com/entry/AWS-3-Tier-Architecture-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B0-2-4</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/estrellaSia/AWS_3Tier_Infra_Data_Pipeline/tree/main&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/estrellaSia/AWS_3Tier_Infra_Data_Pipeline/tree/main&lt;/a&gt;&lt;br /&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;523&quot; data-origin-height=&quot;831&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ACYZz/btsPGnD4Kp6/AokHJlQi7ZAXb4R8uTbAv0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ACYZz/btsPGnD4Kp6/AokHJlQi7ZAXb4R8uTbAv0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ACYZz/btsPGnD4Kp6/AokHJlQi7ZAXb4R8uTbAv0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FACYZz%2FbtsPGnD4Kp6%2FAokHJlQi7ZAXb4R8uTbAv0%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;523&quot; height=&quot;831&quot; data-origin-width=&quot;523&quot; data-origin-height=&quot;831&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;&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;201&quot; data-origin-height=&quot;188&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vRmp1/btsPE6cb63f/WRle39yn1NvwWBJhUZb6l0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vRmp1/btsPE6cb63f/WRle39yn1NvwWBJhUZb6l0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vRmp1/btsPE6cb63f/WRle39yn1NvwWBJhUZb6l0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvRmp1%2FbtsPE6cb63f%2FWRle39yn1NvwWBJhUZb6l0%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;201&quot; height=&quot;188&quot; data-origin-width=&quot;201&quot; data-origin-height=&quot;188&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Main.tf 작성하기(4)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;u&gt;&lt;b&gt;1.Route&amp;nbsp;53,&amp;nbsp;ACM&lt;/b&gt;&lt;/u&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1754248913269&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# ACM 흐름
# aws_acm_certificate &amp;rarr; 인증서 요청 (DNS 인증 방식)
# data &quot;aws_route53_zone&quot; &amp;rarr; 해당 도메인의 호스팅 영역 정보 조회
# aws_route53_record  &amp;rarr; 인증에 필요한 CNAME 레코드 자동 생성
# aws_acm_certificate_validation &amp;rarr; DNS가 제대로 설정됐는지 확인 &amp;rarr; 인증 완료

# ACM 인증서 생성
resource &quot;aws_acm_certificate&quot; &quot;example&quot; {
domain_name = &quot;ddongteacher.xyz&quot;
# 인증서를 발급받을 도메인 이름
# 도메인은 구해오셔야함.
validation_method = &quot;DNS&quot;
#도메인 소유권을 DNS 레코드를 통해 검증함
# aws_acm_certificate가 실행되면 AWS가 검증용 CNAME 레코드를 생성하라고 알려줌.
# 도메인 등록업체(예: Route 53) DNS에 해당 CNAME 레코드를 추가해야 함.
# ACM이 그 DNS 레코드를 확인한 후 인증서를 발급함.
# 이후 이 인증서는 ALB(로드밸런서)나 CloudFront 등에 붙여서 HTTPS 사용 가능.
# DNS 검증은 한 번 설정하면 이후 자동 갱신되므로 추천 방식입니다.
# 인증서는 무료이며, 자동으로 만료 전에 갱신됩니다 (DNS 설정이 살아 있다면).
}
# ACM 검증
resource &quot;aws_acm_certificate_validation&quot; &quot;example&quot; {
certificate_arn = aws_acm_certificate.example.arn
}
data &quot;aws_route53_zone&quot; &quot;example&quot; {
name = &quot;ddongteacher.xyz&quot;
private_zone = false
}
# ACM 검증을 위한 CNAME 레코드 생성
resource &quot;aws_route53_record&quot; &quot;example&quot; {
for_each = {
for dvo in aws_acm_certificate.example.domain_validation_options :
dvo.domain_name =&amp;gt; {
name = dvo.resource_record_name
record = dvo.resource_record_value
type = dvo.resource_record_type
}
}
allow_overwrite = true
name = each.value.name
records = [each.value.record]
ttl = 60
type = each.value.type
zone_id = data.aws_route53_zone.example.zone_id
}

#Route 53에서 도메인 ddongteacher.xyz를 ALB로 연결하는 A 레코드를 만드는 설정
resource &quot;aws_route53_record&quot; &quot;web&quot; {
zone_id = data.aws_route53_zone.example.zone_id
#&quot;ddongteacher.xyz&quot; 도메인을 Route 53에서 이미 호스팅하고 있어야 함
name = &quot;ddongteacher.xyz&quot;
type = &quot;A&quot; # ALIAS 레코드는 A 또는 AAAA 타입을 사용합니다.
alias {
#이건 &quot;ALIAS 레코드&quot;라고 해서 Route 53에서만 지원하는 특별한 A 레코드입니다.
#ALB 같은 AWS 리소스는 IP가 자주 바뀌기 때문에 DNS 이름으로 연결할 수 있게 해줍니다.
name = aws_lb.alb-web.dns_name
#name: 연결할 대상의 DNS 이름 &amp;rarr; ALB의 DNS 이름 (예: my-alb-123456.ap-northeast-2.elb.amazonaws.com)
zone_id = aws_lb.alb-web.zone_id
#ALB가 소속된 Route 53 존 ID (ALB 마다 고유)
evaluate_target_health = true
}
# ttl = 86400 # ALIAS 레코드에는 필요하지 않지만, 일관성을 위해 기재 가능
}

#ddongteacher.xyz 라는 도메인을 Route53에서 관리하고 있고,
#사용자가 이 도메인으로 접속하면,
#트래픽이 ALB(aws_lb.alb-web) 으로 전달됩니다.
#ALB 뒤에는 EC2, ECS, 또는 Lambda 등이 붙어 있을 수 있습니다.&lt;/code&gt;&lt;/pre&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;u&gt;&lt;b&gt;2.&amp;nbsp;Output&lt;/b&gt;&lt;/u&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정&amp;nbsp;값이나&amp;nbsp;속성을&amp;nbsp;테라폼&amp;nbsp;실행&amp;nbsp;결과의&amp;nbsp;출력으로&amp;nbsp;내보내기&amp;nbsp;위해&amp;nbsp;사용&lt;/p&gt;
&lt;pre id=&quot;code_1754249003219&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;output &quot;web-alb-dns&quot; {
value = aws_lb.alb-web.dns_name
}
output &quot;rds-endpoint&quot; {
value = data.aws_db_instance.my_rds.endpoint&lt;/code&gt;&lt;/pre&gt;</description>
      <category>인프라/AWS 3Tier Architecture</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/164</guid>
      <comments>https://kujung.tistory.com/entry/AWS-3-Tier-Architecture-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B0-2-4#entry164comment</comments>
      <pubDate>Tue, 5 Aug 2025 05:23:33 +0900</pubDate>
    </item>
    <item>
      <title>AWS 3 Tier Architecture 구축해보기 2-3</title>
      <link>https://kujung.tistory.com/entry/AWS-3-Tier-Architecture-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B0-2-3</link>
      <description>&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/estrellaSia/AWS_3Tier_Infra_Data_Pipeline/tree/main&quot;&gt;https://github.com/estrellaSia/AWS_3Tier_Infra_Data_Pipeline/tree/main&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;참고 깃허브&lt;/p&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 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;523&quot; data-origin-height=&quot;660&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2c1kt/btsPF9ssN0e/fLMOuGvvF9aIby7YjfPtxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2c1kt/btsPF9ssN0e/fLMOuGvvF9aIby7YjfPtxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2c1kt/btsPF9ssN0e/fLMOuGvvF9aIby7YjfPtxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2c1kt%2FbtsPF9ssN0e%2FfLMOuGvvF9aIby7YjfPtxK%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;523&quot; height=&quot;660&quot; data-origin-width=&quot;523&quot; data-origin-height=&quot;660&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;368&quot; data-origin-height=&quot;98&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/G2cs2/btsPHdBbFmr/ijO9I343AWPVQW67IzGoDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/G2cs2/btsPHdBbFmr/ijO9I343AWPVQW67IzGoDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/G2cs2/btsPHdBbFmr/ijO9I343AWPVQW67IzGoDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FG2cs2%2FbtsPHdBbFmr%2FijO9I343AWPVQW67IzGoDk%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;368&quot; height=&quot;98&quot; data-origin-width=&quot;368&quot; data-origin-height=&quot;98&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Main.tf 작성하기(3)&lt;/h2&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;u&gt;&lt;b&gt;1. Target Group&lt;/b&gt;&lt;/u&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1754247864211&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# TG-Web
resource &quot;aws_lb_target_group&quot; &quot;tg-web&quot; {
name = &quot;ddong-tg-web&quot;
port = 80
protocol = &quot;HTTP&quot;
vpc_id = aws_vpc.vpc.id
health_check {
path = &quot;/&quot;
matcher = &quot;200-299&quot;
# health check 위해 기대되는 http 응답 코드 범위(200~299: 성공적인 응답)
interval = 5 # 5 초마다 health check 수행
timeout = 3 # 3 초 내에 반환하지 않으면 실패로 간주
healthy_threshold = 3
# 성공적인 health check 횟수(연속적으로 건강한 것으로 간주되기 위함)
unhealthy_threshold = 5
# 실패한 health check 횟수(연속적으로 비건강한 것으로 간주되기 위함)
}
}
## HTTPS 프로토콜을 사용하므로 이를 받아줄 리스너
## default action 으로 404 페이지 출력
resource &quot;aws_lb_listener&quot; &quot;myhttps&quot; {
load_balancer_arn = aws_lb.alb-web.arn
port = 443
protocol = &quot;HTTPS&quot;
ssl_policy = &quot;ELBSecurityPolicy-2016-08&quot;
certificate_arn = aws_acm_certificate.example.arn
# By default, return a simple 404 page
default_action {
type = &quot;fixed-response&quot; # 고정된 응답을 반환
fixed_response {
content_type = &quot;text/plain&quot;
message_body = &quot;404: page not found - MK&quot;
status_code = 404
# 요청이 왔는데 매칭되는 rule이 없다면
#그냥 404: page not found - MK 라는 텍스트를 응답으로 보내요.
}
}
}
## HTTPS 리스너 규칙 생성
## Target 그룹으로 포워딩
# ALB 요청 흐름 구조
# 클라이언트 요청
#     &amp;darr;
# ALB (aws_lb)
#     &amp;darr;
# Listener (aws_lb_listener)
#     &amp;darr;
# Listener Rule (aws_lb_listener_rule)
#     &amp;darr;
# Target Group (aws_lb_target_group)
#     &amp;darr;
# EC2 등 실제 서버
resource &quot;aws_lb_listener_rule&quot; &quot;https-rule&quot; {
listener_arn = aws_lb_listener.myhttps.arn
# 어떤 리스너에 규칙을 붙일지 지정 (여기선 HTTPS 443 포트 리스너)
priority = 100
# 규칙의 우선순위 (낮을수록 먼저 평가됨)
condition {
path_pattern { # 요청의 경로 패턴에 따라 규칙을 적용할지 결정
values = [&quot;*&quot;] # 모든 경로(*)에 대해 이 규칙을 적용
# (이 리스너로 들어오는 모든 요청에 대해 이 규칙이 적용)
}
}
action {
type = &quot;forward&quot;
target_group_arn = aws_lb_target_group.tg-web.arn
}
}
## HTTP 프로토콜 리스너(모든 HTTP 트래픽을 HTTPS 로 리디렉션)
## default action 으로 404 페이지 출력
resource &quot;aws_lb_listener&quot; &quot;myhttp&quot; {
load_balancer_arn = aws_lb.alb-web.arn
port = 80
protocol = &quot;HTTP&quot;
# By default, return a simple 404 page
default_action {
type = &quot;redirect&quot; # 트래픽을 다른 위치로 리디렉션
redirect {
port = &quot;443&quot;
protocol = &quot;HTTPS&quot;
status_code = &quot;HTTP_301&quot; # 301 상태 코드는 영구적인 리디렉션
}
}
}
# TG-WAS
resource &quot;aws_lb_target_group&quot; &quot;tg-was&quot; {
name = &quot;ddong-tg-was&quot;
port = 80
protocol = &quot;HTTP&quot;
vpc_id = aws_vpc.vpc.id
health_check {
path = &quot;/&quot;
matcher = &quot;200-299&quot;
interval = 5
timeout = 3
healthy_threshold = 3
unhealthy_threshold = 5
}
}
resource &quot;aws_lb_listener&quot; &quot;alb_listener-was&quot; {
load_balancer_arn = aws_lb.alb-was.arn
port = &quot;80&quot;
protocol = &quot;HTTP&quot;
default_action {
type = &quot;forward&quot;
target_group_arn = aws_lb_target_group.tg-was.arn
}
}&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;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;u&gt;&lt;b&gt;2.&lt;span&gt; Auto&amp;nbsp;Scaling&amp;nbsp;Group,&amp;nbsp;Auto&amp;nbsp;Scaling&amp;nbsp;Group&amp;nbsp;SG&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1754247931482&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# ASG-Web
resource &quot;aws_autoscaling_group&quot; &quot;asg-web&quot; {
name =  &quot;ddong-asg-web&quot;
desired_capacity = 2
max_size = 4
min_size = 2
target_group_arns = [aws_lb_target_group.tg-web.arn]
health_check_type = &quot;EC2&quot;
vpc_zone_identifier = [aws_subnet.web-sub1.id, aws_subnet.web-sub2.id]
tag {
key = &quot;asg-web-key&quot;
value = &quot;asg-web-value&quot;
propagate_at_launch = true
# ASG 에서 생성된 EC2 인스턴스에 태그를 자동으로 적용할지에 대한 여부 지정
}
launch_template {
id = aws_launch_template.template-web.id
version = aws_launch_template.template-web.latest_version
}
instance_refresh {
strategy = &quot;Rolling&quot;
preferences {
min_healthy_percentage = 50
}
triggers = [&quot;tag&quot;]
# Terraform은 기본적으로 리소스의 설정(속성값)이 바뀔 때만 변경 작업을 합니다.
# 그런데 외부 환경이나 코드 외의 조건에 따라 강제로 실행하고 싶을 때가 있어요.
# 이때 triggers를 써서 &quot;이 값이 바뀌면 무조건 다시 실행해라&quot; 라고 알려줍니다.
}
}
# ASG-Web-SG
resource &quot;aws_security_group&quot; &quot;asg-sg-web&quot; {
name = &quot;ddong-asg-sg-web&quot;
description = &quot;ASG Security Group&quot;
vpc_id = aws_vpc.vpc.id
ingress {
description = &quot;HTTP from ALB&quot;
from_port = 80
to_port = 80
protocol = &quot;tcp&quot;
security_groups = [aws_security_group.alb-sg-web.id]
}
ingress {
description = &quot;SSH From Anywhere or Your-IP&quot;
# 원격으로 서버 접속해 SW 업데이트, 구성 변경 등
from_port = 22
to_port = 22
protocol = &quot;tcp&quot;
cidr_blocks = [&quot;0.0.0.0/0&quot;]
}
egress {
from_port = 0
to_port = 0
protocol = &quot;-1&quot;
cidr_blocks = [&quot;0.0.0.0/0&quot;]
}
tags = {
Name = &quot;ddong-asg-sg-web&quot;
}
}
# ASG-WAS
resource &quot;aws_autoscaling_group&quot; &quot;asg-was&quot; {
name = &quot;ddong-asg-was&quot;
desired_capacity = 2
max_size = 4
min_size = 2
target_group_arns = [aws_lb_target_group.tg-was.arn]
health_check_type = &quot;EC2&quot;
vpc_zone_identifier = [aws_subnet.was-sub1.id, aws_subnet.was-sub2.id]
tag {
key = &quot;asg-app-Key&quot;
value = &quot;asg-app-Value&quot;
propagate_at_launch = true
}
launch_template {
id = aws_launch_template.template-was.id
version = aws_launch_template.template-was.latest_version
}
instance_refresh {
strategy = &quot;Rolling&quot;
preferences {
min_healthy_percentage = 50
# 인스턴스 갱신 중에 항상 최소 50%의 인스턴스가 정상 상태를 유지하도록 설정
}
triggers = [&quot;tag&quot;]
}
}
# ASG-WAS-SG
resource &quot;aws_security_group&quot; &quot;asg-sg-was&quot; {
name =  &quot;ddong-asg-sg-was&quot;
description = &quot;ASG Security Group&quot;
vpc_id = aws_vpc.vpc.id
ingress {
description = &quot;HTTP from ALB&quot;
from_port = 80
to_port = 80
protocol = &quot;tcp&quot;
security_groups = [aws_security_group.alb-sg-was.id] # was alb sg 에서 오는 트래픽
}
ingress {
description = &quot;SSH From Anywhere or Your-IP&quot;
from_port = 22
to_port = 22
protocol = &quot;tcp&quot;
security_groups = [aws_security_group.asg-sg-web.id] # web asg sg 에서 오는 트래픽
}
egress {
from_port = 0
to_port = 0
protocol = &quot;-1&quot;
cidr_blocks = [&quot;0.0.0.0/0&quot;]
}
tags = {
Name = &quot;ddong-asg-sg-was&quot;
}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;u&gt;3.DB&amp;nbsp;SG,&amp;nbsp;DB&amp;nbsp;Subnet&amp;nbsp;Group&lt;/u&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1754248005203&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# DB-SG
resource &quot;aws_security_group&quot; &quot;db-sg&quot; {
name = &quot;ddong-db-sg&quot;
description = &quot;DB Security Group&quot;
vpc_id = aws_vpc.vpc.id
ingress {
from_port = 3306
to_port = 3306
protocol = &quot;tcp&quot;
security_groups = [aws_security_group.asg-sg-was.id]
}
egress {
from_port = 0
to_port = 0
protocol = &quot;-1&quot;
cidr_blocks = [&quot;0.0.0.0/0&quot;]
}
tags = {
Name = &quot;ddong-db-sg&quot;
}
}
# DB-Subnet-Group
resource &quot;aws_db_subnet_group&quot; &quot;db-sub-grp&quot; {
name = &quot;ddong-db-sub-grp&quot;
subnet_ids = [aws_subnet.db-sub1.id,aws_subnet.db-sub2.id]
tags = {
Name = &quot;ddong-db-sub-grp&quot;
}
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;u&gt;4.RDS 파라미터 그룹, RDS&lt;/u&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1754248028359&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# RDS 파라미터 그룹
resource &quot;aws_db_parameter_group&quot; &quot;mk-par-grp&quot; {
name = &quot;ddong-par-grp&quot;
family = &quot;mysql8.0&quot;
description = &quot;Example parameter group for mysql8.0&quot;
parameter {
name = &quot;character_set_server&quot;
value = &quot;utf8mb4&quot;
}
#MySQL 서버의 기본 문자셋을 utf8mb4로 설정
#(4바이트 UTF-8: 이모지 등도 저장 가능)
parameter {
name = &quot;collation_server&quot;
value = &quot;utf8mb4_unicode_ci&quot;
#기본 collation (문자 정렬 방식)을 utf8mb4_unicode_ci로 설정
#(문자 비교 시 대소문자 구분 없이 유니코드 기준으로 정렬)
}
}
# RDS
## RDS 데이터 소스 정의
data &quot;aws_db_instance&quot; &quot;my_rds&quot; {
db_instance_identifier = aws_db_instance.rds-db.identifier
}
resource &quot;aws_db_instance&quot; &quot;rds-db&quot; {
allocated_storage = 20
db_name = &quot;ddongdb&quot;
engine = &quot;mysql&quot;
engine_version = &quot;8.0&quot;
storage_type = &quot;gp3&quot; // General Purpose SSD (gp3)
instance_class = &quot;db.t3.micro&quot;
username = &quot;ddong&quot;
password = &quot;ddong1234567890&quot;
parameter_group_name = aws_db_parameter_group.mk-par-grp.name
multi_az = true
db_subnet_group_name = aws_db_subnet_group.db-sub-grp.name
vpc_security_group_ids = [aws_security_group.db-sg.id]
skip_final_snapshot = true
identifier = &quot;ddong-rds-instance&quot; // RDS 인스턴스의 이름 지정
}&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;</description>
      <category>인프라/AWS 3Tier Architecture</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/163</guid>
      <comments>https://kujung.tistory.com/entry/AWS-3-Tier-Architecture-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B0-2-3#entry163comment</comments>
      <pubDate>Tue, 5 Aug 2025 05:20:35 +0900</pubDate>
    </item>
    <item>
      <title>AWS 3 Tier Architecture 구축해보기 2-2</title>
      <link>https://kujung.tistory.com/entry/AWS-3-Tier-Architecture-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B0-2-2</link>
      <description>&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/estrellaSia/AWS_3Tier_Infra_Data_Pipeline/tree/main&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/estrellaSia/AWS_3Tier_Infra_Data_Pipeline/tree/main&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;참고 깃허브&lt;/p&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;523&quot; data-origin-height=&quot;660&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Co6Yd/btsPExBhQhr/9y7zFGjrAWz7c31nSeNJNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Co6Yd/btsPExBhQhr/9y7zFGjrAWz7c31nSeNJNK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Co6Yd/btsPExBhQhr/9y7zFGjrAWz7c31nSeNJNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCo6Yd%2FbtsPExBhQhr%2F9y7zFGjrAWz7c31nSeNJNK%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;523&quot; height=&quot;660&quot; data-origin-width=&quot;523&quot; data-origin-height=&quot;660&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;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Main.tf 작성하기(2)&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;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;u&gt;&lt;b&gt;1. ALB, ALB SG&lt;/b&gt;&lt;/u&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1754247510835&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# ALB
resource &quot;aws_lb&quot; &quot;alb-web&quot; {
name = &quot;ddong-alb-web&quot;
internal = false
load_balancer_type = &quot;application&quot; # Application Load Balancer
security_groups = [aws_security_group.alb-sg-web.id]
subnets = [aws_subnet.pub-sub1.id, aws_subnet.pub-sub2.id]
}
resource &quot;aws_lb&quot; &quot;alb-was&quot; {
name = &quot;ddong-alb-was&quot;
internal = true
load_balancer_type = &quot;application&quot;
security_groups = [aws_security_group.alb-sg-was.id]
subnets = [aws_subnet.was-sub1.id, aws_subnet.was-sub2.id]
}
# ALB SG
resource &quot;aws_security_group&quot; &quot;alb-sg-web&quot; { # Web ALB SG
name = &quot;ddong-alb-sg-web&quot;
description = &quot;ALB Security Group&quot;
vpc_id = aws_vpc.vpc.id
ingress {
description = &quot;HTTP from Web Tier&quot;
from_port = 80
to_port = 80
protocol = &quot;tcp&quot;
cidr_blocks = [&quot;0.0.0.0/0&quot;]
}
ingress {
description = &quot;HTTPS from Web Tier&quot;
from_port = 443
to_port = 443
protocol = &quot;tcp&quot;
cidr_blocks = [&quot;0.0.0.0/0&quot;]
}
egress {
from_port = 0
to_port = 0
protocol = &quot;-1&quot;
cidr_blocks = [&quot;0.0.0.0/0&quot;]
}
tags = {
Name = &quot;ddong-alb-sg-web&quot;
}
}
resource &quot;aws_security_group&quot; &quot;alb-sg-was&quot; { # WAS ALB SG
name = &quot;ddong-alb-sg-was&quot;
description = &quot;ALB Security Group&quot;
vpc_id = aws_vpc.vpc.id
ingress {
description = &quot;HTTP from Internet&quot;
from_port = 80
to_port = 80
protocol = &quot;tcp&quot;
security_groups = [aws_security_group.asg-sg-web.id]
# asg-security-group-web 이라는 SG 에 속한 인스턴스만이 이 포트를 통해 ALB 에
# 접근할 수 있도록 제한하기
}
egress {
from_port = 0
to_port = 0
protocol = &quot;-1&quot;
cidr_blocks = [&quot;0.0.0.0/0&quot;]
}
tags = {
Name = &quot;ddong-alb-sg-was&quot;
}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;u&gt;&lt;b&gt;2.&amp;nbsp;SSM 접속 위한 IAM&lt;/b&gt;&lt;/u&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1754247548669&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;resource &quot;aws_iam_role&quot; &quot;ec2_ssm_role&quot; {
name = &quot;ddong-EC2SSM&quot;
assume_role_policy = jsonencode({
Version = &quot;2012-10-17&quot;
Statement = [
{
Action = &quot;sts:AssumeRole&quot;
Effect = &quot;Allow&quot;
Principal = {
Service = &quot;ec2.amazonaws.com&quot;
}
}
]
})
}
# IAM 역할 정책 연결
resource &quot;aws_iam_role_policy_attachment&quot; &quot;ec2_ssm_policy_attachment&quot; {
for_each = toset([
&quot;arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess&quot;,
&quot;arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore&quot;,
&quot;arn:aws:iam::aws:policy/service-role/AWSCodeDeployRole&quot;
])
role = aws_iam_role.ec2_ssm_role.name
policy_arn = each.key
}
# EC2 인스턴스 프로파일 생성
## EC2 인스턴스를 구분하고 그 인스턴스에 권한을 주기 위한 개념
# 인스턴스 프로파일이 지정된 EC2 는 시작 시 역할 정보를 받아오고 해당 역할로 필요한
# 권한들을 얻게 됨
resource &quot;aws_iam_instance_profile&quot; &quot;ec2_ssm_instance_profile&quot; {
name = &quot;ddong-EC2SSM-Instance-Profile&quot;
role = aws_iam_role.ec2_ssm_role.name
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;u&gt;&lt;b&gt;3.&amp;nbsp;시작 템플릿&lt;/b&gt;&lt;/u&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1754247645606&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Launch template- Web
resource &quot;aws_launch_template&quot; &quot;template-web&quot; {
name = &quot;ddong-launch-template-web&quot;
image_id = &quot;ami-0fc8aeaa301af7663&quot; # 최신 amazon linux2 ami-id
#ami-id는 계속 바뀌기 때문에 확인필요
instance_type = &quot;t2.micro&quot;
# 인스턴스 안에서 메타데이터 사용가능
metadata_options {
http_endpoint = &quot;enabled&quot;
# 인스턴스 메타데이터에 HTTP 엔드포인트를 사용하도록 설정
# 메타데이터 서비스 사용 허용할지 여부
# enabled: curl 명령으로 메타데이터를 조회 가능
http_tokens = &quot;required&quot;
# http_tokens: 메타데이터 요청에 대해 토큰을 필요로 함 (보안 강화)
http_put_response_hop_limit = 1
# 메타데이터 서비스에 대한 PUT 응답의 네트워크 홉 제한을 1 로 설정
# (메타데이터 서비스로의 PUT 요청이 다른 중간 네트워크 장치를 거치지 않고 바로
# 인스턴스로 전달됨. 이를 통해 외부에서의 비정상적인 접근을 방지할 수 있음)
# 직접적인 내부 요청만 허용해서 보안 강화됨
instance_metadata_tags = &quot;enabled&quot;
# 인스턴스에 붙인 태그 정보도 메타데이터로 조회 가능
}
network_interfaces {
device_index = 0 #첫 번째 네트워크 인터페이스(0)를 지정
security_groups = [aws_security_group.asg-sg-web.id]
}
iam_instance_profile {
//EC2 인스턴스에 IAM Role을 붙일 수 있도록 해주는 &quot;껍데기 역할&quot;
//EC2는 직접 Role을 붙이지 못하고, 반드시 이 &quot;Instance Profile&quot; 을 통해 역할을 위임받습니다.
name = aws_iam_instance_profile.ec2_ssm_instance_profile.name
}
user_data = base64encode(templatefile(&quot;web-user-data.sh&quot;,{
# 사용자 데이터 스크립트는 인스턴스가 처음 시작할 때 실행됨.
# 이 스크립트는 &quot;web-user-data.sh&quot; 파일을 사용하고, 이 파일은 ALB 의 DNS 이름을
# 인자로 받아 인코딩된 형태로 제공
# &quot;web-user-data.sh&quot; 파일은 Terraform 코드가 실행되는 로컬 디렉터리 안에 있어야 합니다.
alb_dns = &quot;${aws_lb.alb-was.dns_name}&quot;
}))
depends_on = [
aws_lb.alb-web # alb-web 리소스가 생성된 후에 실행되도록 설정
]
tag_specifications {
resource_type = &quot;instance&quot;
tags = {
Name = &quot;ddong-web-instances&quot;
}
}
}
# Launch Template - WAS
resource &quot;aws_launch_template&quot; &quot;template-was&quot; {
name = &quot;ddong-launch-template-was&quot;
image_id = &quot;ami-0fc8aeaa301af7663&quot; # 최신 amazon linux2 ami-id
instance_type = &quot;t2.micro&quot;
network_interfaces {
device_index = 0
security_groups = [aws_security_group.asg-sg-was.id]
}
iam_instance_profile {
name = aws_iam_instance_profile.ec2_ssm_instance_profile.name
}
## 인스턴스 안에서 메타데이터 사용가능
metadata_options {
http_endpoint = &quot;enabled&quot;
http_tokens = &quot;required&quot;
http_put_response_hop_limit = 1
instance_metadata_tags = &quot;enabled&quot;
}
## 인스턴스가 올바른 데이터베이스와 연결되도록 환경 변수를 설정
user_data = base64encode(templatefile(&quot;app-user-data.sh&quot;,{
host = &quot;${local.host}&quot;
rds_endpoint = &quot;${data.aws_db_instance.my_rds.endpoint}&quot;
username = &quot;${&quot;ddong&quot;}&quot;
password = &quot;${&quot;ddong1234567890&quot;}&quot;
db = &quot;${&quot;ddongdb&quot;}&quot;
}))
depends_on = [
aws_db_instance.rds-db
]
tag_specifications {
    //태그를 어떤 AWS 리소스에 붙일지 정의하는 블록
resource_type = &quot;instance&quot;
// EC2 인스턴스에 적용됨을 의미
tags = {
Name = &quot;ddong-was-instances&quot;
}// EC2 인스턴스를 콘솔이나 CLI에서 볼 때:
// 이름(Name)이 &quot;ddong-was-instances&quot; 라고 표시됩니다.
}
}
## locals 블록을 사용하여 로컬 변수를 정의
## 코드 내에서 재사용할 값을 정의
## 지역 변수를 선언하는 곳이에요.
# 한 번 정의하면, 같은 .tf 파일이나 다른 블록에서 local.변수명으로 사용할 수 있어요.

locals {
rds_endpoint = &quot;${data.aws_db_instance.my_rds.endpoint}&quot;
# AWS RDS 인스턴스의 엔드포인트 값을 할당받기
# (이 값은 보통 RDS 인스턴스에 접속하기 위한 주소와 포트 번호 포함)
host = replace(local.rds_endpoint, &quot;:3306&quot;, &quot;&quot;)
# local.rds_endpoint 에서 포트 번호 (:3306)를 제거하여 생성
}&lt;/code&gt;&lt;/pre&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>인프라/AWS 3Tier Architecture</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/162</guid>
      <comments>https://kujung.tistory.com/entry/AWS-3-Tier-Architecture-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B0-2-2#entry162comment</comments>
      <pubDate>Mon, 4 Aug 2025 04:01:00 +0900</pubDate>
    </item>
    <item>
      <title>AWS 3 Tier Architecture 구축해보기 2-1</title>
      <link>https://kujung.tistory.com/entry/AWS-3-Tier-Architecture-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B0-2-1</link>
      <description>&lt;p&gt;&lt;img style=&quot;text-align: center; caret-color: transparent; letter-spacing: 0px;&quot; src=&quot;https://blog.kakaocdn.net/dna/DdTMi/btsPFhkaSRI/AAAAAAAAAAAAAAAAAAAAAHKzRpxfBPzw3cgDIl8d7h_m0WD5z3onP58PQsdiPyFx/img.webp?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;amp;expires=1756652399&amp;amp;allow_ip=&amp;amp;allow_referer=&amp;amp;signature=sa1NhJjv1osozUAKAj6RiNYsyeQ%3D&quot; data-origin-width=&quot;1022&quot; data-origin-height=&quot;1051&quot; data-is-animation=&quot;false&quot; /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금까지 위 3-Tier를 구현 하였다. 더나아가 실무에 가깝고 aws의 여러 기능을 추가한 아키텍처를 찾는 도중 깃허브에 올라온 아키텍처를 찾았다.&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;a href=&quot;https://github.com/estrellaSia/AWS_3Tier_Infra_Data_Pipeline/tree/main&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/estrellaSia/AWS_3Tier_Infra_Data_Pipeline/tree/main&lt;/a&gt;&lt;br /&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;위 깃허브는 aws 다양한 서비스를 학습하기 좋았다.&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;팀프로젝트를 진행하신 것 같아보이고, 따라해보며 aws 실습을 해보면 좋을것이다.&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;큰 틀은 Terraform 을 이용해 구현한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재까지 따라 완성한 구성도는 아래와 같다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;3-tier.drawio.png&quot; data-origin-width=&quot;1340&quot; data-origin-height=&quot;897&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RYFYr/btsPO4leKmF/YSw6FGMYnH4bSYVQaL5W51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RYFYr/btsPO4leKmF/YSw6FGMYnH4bSYVQaL5W51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RYFYr/btsPO4leKmF/YSw6FGMYnH4bSYVQaL5W51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRYFYr%2FbtsPO4leKmF%2FYSw6FGMYnH4bSYVQaL5W51%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;1340&quot; height=&quot;897&quot; data-filename=&quot;3-tier.drawio.png&quot; data-origin-width=&quot;1340&quot; data-origin-height=&quot;897&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;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;u&gt;&lt;b&gt;1.Terraform 환경 구성(Windows, VS Code)&lt;/b&gt;&lt;/u&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; 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 data-end=&quot;222&quot; data-start=&quot;176&quot;&gt;&lt;a data-end=&quot;222&quot; data-start=&quot;178&quot;&gt;VS Code 설치&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VS Code설치가 완료되었으면, 추가적으로&amp;nbsp;필요한&amp;nbsp;Extensions&amp;nbsp;도구들을&amp;nbsp;추가로&amp;nbsp;설치해&amp;nbsp;준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;276&quot; data-origin-height=&quot;425&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biclAk/btsPE5ddzLt/ifjTiO7rzgmeQhZvB5jA0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biclAk/btsPE5ddzLt/ifjTiO7rzgmeQhZvB5jA0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biclAk/btsPE5ddzLt/ifjTiO7rzgmeQhZvB5jA0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiclAk%2FbtsPE5ddzLt%2FifjTiO7rzgmeQhZvB5jA0k%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;276&quot; height=&quot;425&quot; data-origin-width=&quot;276&quot; data-origin-height=&quot;425&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;이 중 HashiCorp Terraform을 설치해준다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;이제 확장자명이 (. tf)인 파일을 하나 생성한 후 임의의 코드를 작성해보면 하이라이트 및 자동완성 등 효율적으로 코드를 작성하기 위한 기능들이 정상적으로 동작하는 것을 확인할 수 있다.&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;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;Terraform&lt;span&gt; 프로그램도 따로 설치필요하다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;292&quot; data-start=&quot;223&quot;&gt;&lt;a data-end=&quot;292&quot; data-start=&quot;225&quot;&gt;Terraform 설치&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&lt;a href=&quot;https://developer.hashicorp.com/terraform/install&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://developer.hashicorp.com/terraform/install&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;Terraform 설치 후 &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;압축을 풀어준 후 나온 파일을 C드라이브 하단의 임의의 폴더(C:\Terraform)를 생성한 후 넣어준다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;779&quot; data-origin-height=&quot;263&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/soJbm/btsPEpDbh6i/bLktjlw7BitFvfkLx76Ew0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/soJbm/btsPEpDbh6i/bLktjlw7BitFvfkLx76Ew0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/soJbm/btsPEpDbh6i/bLktjlw7BitFvfkLx76Ew0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsoJbm%2FbtsPEpDbh6i%2FbLktjlw7BitFvfkLx76Ew0%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;779&quot; height=&quot;263&quot; data-origin-width=&quot;779&quot; data-origin-height=&quot;263&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;해당 경로에 terraform.exe 파일을 넣었으면 어느 경로에 있더라도 사용할 수 있도록 환경 변수를 등록해 준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;555&quot; data-origin-height=&quot;55&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b29YYL/btsPDW81X3V/0htcNvjOHrMuer2sr15KAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b29YYL/btsPDW81X3V/0htcNvjOHrMuer2sr15KAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b29YYL/btsPDW81X3V/0htcNvjOHrMuer2sr15KAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb29YYL%2FbtsPDW81X3V%2F0htcNvjOHrMuer2sr15KAk%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;555&quot; height=&quot;55&quot; data-origin-width=&quot;555&quot; data-origin-height=&quot;55&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;338&quot; data-origin-height=&quot;697&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bweqaG/btsPHly6lnx/TyB8OZ7woRinSLXp0SmDK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bweqaG/btsPHly6lnx/TyB8OZ7woRinSLXp0SmDK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bweqaG/btsPHly6lnx/TyB8OZ7woRinSLXp0SmDK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbweqaG%2FbtsPHly6lnx%2FTyB8OZ7woRinSLXp0SmDK1%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;338&quot; height=&quot;697&quot; data-origin-width=&quot;338&quot; data-origin-height=&quot;697&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;앞서&amp;nbsp;terraform.exe&amp;nbsp;파일을&amp;nbsp;넣어두었던&amp;nbsp;폴더&amp;nbsp;경로를&amp;nbsp;새로&amp;nbsp;추가해준&amp;nbsp;후&amp;nbsp;확인을&amp;nbsp;눌러&amp;nbsp;적용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;376&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dqVIrj/btsPFwg531d/VsCBzzARbasfhzMzuagRuk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dqVIrj/btsPFwg531d/VsCBzzARbasfhzMzuagRuk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dqVIrj/btsPFwg531d/VsCBzzARbasfhzMzuagRuk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdqVIrj%2FbtsPFwg531d%2FVsCBzzARbasfhzMzuagRuk%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;580&quot; height=&quot;376&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;376&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;u&gt;&lt;b&gt;2.&lt;/b&gt;&lt;/u&gt;&lt;u&gt;&lt;b&gt;Network Architecture&lt;/b&gt;&lt;/u&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;523&quot; data-origin-height=&quot;660&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7h2Xj/btsPFCaAQTL/kKIgiPZ2OOgydSPqCkiZd1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7h2Xj/btsPFCaAQTL/kKIgiPZ2OOgydSPqCkiZd1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7h2Xj/btsPFCaAQTL/kKIgiPZ2OOgydSPqCkiZd1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7h2Xj%2FbtsPFCaAQTL%2FkKIgiPZ2OOgydSPqCkiZd1%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;523&quot; height=&quot;660&quot; data-origin-width=&quot;523&quot; data-origin-height=&quot;660&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;h2 data-ke-size=&quot;size26&quot;&gt;Main.tf 작성하기&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;1)VPC 구성&lt;/p&gt;
&lt;pre id=&quot;code_1754213395345&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;resource &quot;aws_vpc&quot; &quot;vpc&quot; {
cidr_block = &quot;10.0.0.0/16&quot;
enable_dns_support = true
# Amazon 의 DNS 서버가 VPC 내부에서 DNS 쿼리를 해석할 수 있도록 함
enable_dns_hostnames = true
# VPC 에서 인스턴스에 대해 DNS 호스트 이름을 할당할 수 있는지 여부를 결정
tags = {
Name = &quot;ddong-vpc&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;resource&amp;nbsp;&quot;aws_vpc&quot;&amp;nbsp;&quot;vpc&quot;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;... &lt;br /&gt;} &lt;br /&gt;resource: Terraform에서 실제 리소스를 생성할 때 사용하는 블록입니다.&lt;br /&gt;&quot;aws_vpc&quot;: AWS의 VPC 리소스를 의미합니다.&lt;br /&gt;&quot;vpc&quot;: 이 리소스를 Terraform 내부에서 참조할 때 사용할 이름입니다.&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;cidr_block&lt;br /&gt;생성할&amp;nbsp;VPC의&amp;nbsp;IP&amp;nbsp;주소&amp;nbsp;범위&amp;nbsp;(CIDR)입니다. &lt;br /&gt;&lt;br /&gt;enable_dns_support&amp;nbsp;=&amp;nbsp;true &lt;br /&gt;true면 Amazon DNS 서버가 VPC 내부에서 DNS 쿼리를 해석할 수 있도록 허가합니다.&lt;br /&gt;보통&amp;nbsp;VPC&amp;nbsp;안의&amp;nbsp;EC2&amp;nbsp;인스턴스에서&amp;nbsp;도메인&amp;nbsp;이름을&amp;nbsp;사용하려면&amp;nbsp;이&amp;nbsp;옵션을&amp;nbsp;켜야&amp;nbsp;합니다. &lt;br /&gt;&lt;br /&gt;enable_dns_hostnames&amp;nbsp;=&amp;nbsp;true &lt;br /&gt;true면 VPC에서 생성된 인스턴스들에 DNS 호스트 이름 (예: ip-10-0-0-1.ap-northeast-2.compute.internal)을 할당할 수 있습니다.&lt;br /&gt;이것도&amp;nbsp;일반적으로&amp;nbsp;DNS&amp;nbsp;사용을&amp;nbsp;위해&amp;nbsp;켜놓는&amp;nbsp;게&amp;nbsp;좋습니다. &lt;br /&gt;&lt;br /&gt;tags&amp;nbsp;=&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;Name&lt;br /&gt;} &lt;br /&gt;VPC&amp;nbsp;리소스에&amp;nbsp;태그를&amp;nbsp;붙입니다. &lt;br /&gt;&lt;br /&gt;Name이라는 키에 변수 값을 넣습니다.&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) 인터넷 게이트웨이&lt;/p&gt;
&lt;pre id=&quot;code_1754215156216&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;resource &quot;aws_internet_gateway&quot; &quot;igw&quot; {
vpc_id = aws_vpc.vpc.id # igw 를 해당 vpc 에 attatch
tags = {
Name = &quot;ddong-igw&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;3) NAT 게이트웨이&lt;/p&gt;
&lt;pre id=&quot;code_1754215301210&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;resource &quot;aws_eip&quot; &quot;eip1&quot; {
domain = &quot;vpc&quot; # 해당 EIP 가 VPC 내에서만 사용 가능하도록 설정
}
resource &quot;aws_eip&quot; &quot;eip2&quot; {
domain = &quot;vpc&quot;
}
resource &quot;aws_nat_gateway&quot; &quot;nat-gw1&quot; {
allocation_id = aws_eip.eip1.id # EIP 할당
connectivity_type = &quot;public&quot; # NATGW 에 대한 연결 유형
subnet_id = aws_subnet.pub-sub1.id # NATGW 를 생성할 서브넷
tags = {
Name = &quot;ddong-nat-gw1&quot;
}
depends_on = [aws_internet_gateway.igw]
# 리소스 간 생성 순서 보장(IGW 생성 후 NATGW 생성되게)
}
resource &quot;aws_nat_gateway&quot; &quot;nat-gw2&quot; {
allocation_id = aws_eip.eip2.id
connectivity_type = &quot;public&quot;
subnet_id = aws_subnet.pub-sub2.id
tags = {
Name = &quot;ddong-nat-gw2&quot;
}
depends_on = [aws_internet_gateway.igw]
}&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;4)서브넷, 라우팅 테이블&lt;/p&gt;
&lt;pre id=&quot;code_1754217998482&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Public Subnet, Public Routing Table
resource &quot;aws_subnet&quot; &quot;pub-sub1&quot; {
vpc_id = aws_vpc.vpc.id
cidr_block = &quot;10.0.1.0/24&quot;
availability_zone = &quot;ap-northeast-2a&quot;
map_public_ip_on_launch = true # 퍼블릭 IP 주소를 자동으로 할당
tags = {
Name = &quot;ddong-pub-sub1&quot;
}
}
resource &quot;aws_subnet&quot; &quot;pub-sub2&quot; {
vpc_id = aws_vpc.vpc.id
cidr_block = &quot;10.0.2.0/24&quot;
availability_zone = &quot;ap-northeast-2c&quot;
map_public_ip_on_launch = true
tags = {
Name = &quot;ddong-pub-sub2&quot;
}
}
resource &quot;aws_route_table&quot; &quot;pub-rt&quot; {
vpc_id = aws_vpc.vpc.id
route {
cidr_block = &quot;0.0.0.0/0&quot;
gateway_id = aws_internet_gateway.igw.id # 모든 트래픽은 IGW 로 향하게 설정해 인터넷 연결
}
tags = {
Name = &quot;ddong-pub-rt&quot;
}
}
resource &quot;aws_route_table_association&quot; &quot;pub-rt-asso1&quot; {
# public subnet 들을 public rt 에 연결
subnet_id = aws_subnet.pub-sub1.id
route_table_id = aws_route_table.pub-rt.id
}
resource &quot;aws_route_table_association&quot; &quot;pub-rt-asso2&quot; {
subnet_id = aws_subnet.pub-sub2.id
route_table_id = aws_route_table.pub-rt.id
}
# Private Subnet, Private Routing Table
resource &quot;aws_subnet&quot; &quot;web-sub1&quot; {
vpc_id = aws_vpc.vpc.id
cidr_block = &quot;10.0.4.0/22&quot;
availability_zone = &quot;ap-northeast-2a&quot;
map_public_ip_on_launch = false
tags = {
Name = &quot;ddong-web-sub1&quot;
}
}
resource &quot;aws_subnet&quot; &quot;web-sub2&quot; {
vpc_id = aws_vpc.vpc.id
cidr_block = &quot;10.0.8.0/22&quot;
availability_zone = &quot;ap-northeast-2c&quot;
map_public_ip_on_launch = false
tags = {
Name = &quot;ddong-web-sub2&quot;
}
}
resource &quot;aws_subnet&quot; &quot;was-sub1&quot; {
vpc_id = aws_vpc.vpc.id
cidr_block = &quot;10.0.12.0/22&quot;
availability_zone = &quot;ap-northeast-2a&quot;
map_public_ip_on_launch = false
tags = {
Name = &quot;ddong-was-sub1&quot;
}
}
resource &quot;aws_subnet&quot; &quot;was-sub2&quot; {
vpc_id = aws_vpc.vpc.id
cidr_block = &quot;10.0.16.0/22&quot;
availability_zone = &quot;ap-northeast-2c&quot;
map_public_ip_on_launch = false
tags = {
Name = &quot;ddong-was-sub2&quot;
}
}
resource &quot;aws_subnet&quot; &quot;db-sub1&quot; {
vpc_id = aws_vpc.vpc.id
cidr_block = &quot;10.0.20.0/22&quot;
availability_zone = &quot;ap-northeast-2a&quot;
map_public_ip_on_launch = false
tags = {
Name = &quot;ddong-db-sub1&quot;
}
}
resource &quot;aws_subnet&quot; &quot;db-sub2&quot; {
vpc_id = aws_vpc.vpc.id
cidr_block = &quot;10.0.24.0/22&quot;
availability_zone = &quot;ap-northeast-2c&quot;
map_public_ip_on_launch = false
tags = {
Name = &quot;ddong-db-sub2&quot;
}
}
resource &quot;aws_route_table&quot; &quot;pri-rt1&quot; {
vpc_id = aws_vpc.vpc.id
route {
cidr_block = &quot;0.0.0.0/0&quot;
gateway_id = aws_nat_gateway.nat-gw1.id
# 모든 트래픽은 NAT GATEWAY1로 가라
}
tags = {
Name = &quot;ddong-pri-rt1&quot;
}
}
resource &quot;aws_route_table&quot; &quot;pri-rt2&quot; {
vpc_id = aws_vpc.vpc.id
route {
cidr_block = &quot;0.0.0.0/0&quot;
gateway_id = aws_nat_gateway.nat-gw2.id
# 모든 트래픽은 NAT GATEWAY2로 가라
}
tags = {
Name = &quot;ddong-pri-rt2&quot;
}
}
resource &quot;aws_route_table_association&quot; &quot;pri-rt-asso1&quot; { # WEB
subnet_id = aws_subnet.web-sub1.id
route_table_id = aws_route_table.pri-rt1.id
}
resource &quot;aws_route_table_association&quot; &quot;pri-rt-asso2&quot; {
subnet_id = aws_subnet.web-sub2.id
route_table_id = aws_route_table.pri-rt2.id
}
resource &quot;aws_route_table_association&quot; &quot;pri-rt-asso3&quot; { # WAS
subnet_id = aws_subnet.was-sub1.id
route_table_id = aws_route_table.pri-rt1.id
}
resource &quot;aws_route_table_association&quot; &quot;pri-rt-asso4&quot; {
subnet_id = aws_subnet.was-sub2.id
route_table_id = aws_route_table.pri-rt2.id
}&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;</description>
      <category>인프라/AWS 3Tier Architecture</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/161</guid>
      <comments>https://kujung.tistory.com/entry/AWS-3-Tier-Architecture-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B0-2-1#entry161comment</comments>
      <pubDate>Sun, 3 Aug 2025 19:58:51 +0900</pubDate>
    </item>
    <item>
      <title>AWS 3 Tier Architecture 구축해보기 1-4</title>
      <link>https://kujung.tistory.com/entry/AWS-3-Tier-Architecture-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B0-1-4</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;참고 블로그&amp;nbsp;&lt;a href=&quot;https://seongnyeon.tistory.com/104&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://seongnyeon.tistory.com/104&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;u&gt;&lt;b&gt;5. Tier3: Database Tier(Data Storage &amp;amp; Retrieval)&lt;/b&gt;&lt;/u&gt;&lt;/h2&gt;
&lt;blockquote style=&quot;background-color: #ffffff; color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;모든 Application은 중요한 데이터들을 저장할 공간이 필요하고, Application Servers는 필요한 작업을 수행하고 Web Tier와 사용자에게 적절한 콘텐츠와 서비스를 제공하기 위해 데이터베이스를 읽고 쓸 수 있어야 한다. 그렇기 때문에 MySQL을 사용하는 RDS를 생성할 것이다.&lt;/b&gt;&lt;/blockquote&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;217&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GLnhE/btsPFvoXuDo/J8sjkjF6aFdNaAHflR7CD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GLnhE/btsPFvoXuDo/J8sjkjF6aFdNaAHflR7CD0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GLnhE/btsPFvoXuDo/J8sjkjF6aFdNaAHflR7CD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGLnhE%2FbtsPFvoXuDo%2FJ8sjkjF6aFdNaAHflR7CD0%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;737&quot; height=&quot;211&quot; data-origin-width=&quot;758&quot; data-origin-height=&quot;217&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style6&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.1. DB Security Group 생성&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Application Server에서 Database로 접속해야 하기에, 첫 번째로 보안그룹을 생성 후 Application Servers로부터 오는 inbound traffic을 허용 해준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;995&quot; data-origin-height=&quot;379&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/czYqx5/btsPDHxnoql/iVI5dUcvg4Q8CWEO2KG5m1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/czYqx5/btsPDHxnoql/iVI5dUcvg4Q8CWEO2KG5m1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/czYqx5/btsPDHxnoql/iVI5dUcvg4Q8CWEO2KG5m1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FczYqx5%2FbtsPDHxnoql%2FiVI5dUcvg4Q8CWEO2KG5m1%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;995&quot; height=&quot;379&quot; data-origin-width=&quot;995&quot; data-origin-height=&quot;379&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;inbound/outbound 규칙에서 Application Server와 요청을 주고 받을 수 있도록 MYSQL/Aurora(포트번호: 3306)을 추가해준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1065&quot; data-origin-height=&quot;356&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4kUj8/btsPGmSBcIe/AKbCGc5QtLYpNYx6vhPjFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4kUj8/btsPGmSBcIe/AKbCGc5QtLYpNYx6vhPjFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4kUj8/btsPGmSBcIe/AKbCGc5QtLYpNYx6vhPjFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4kUj8%2FbtsPGmSBcIe%2FAKbCGc5QtLYpNYx6vhPjFk%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;1065&quot; height=&quot;356&quot; data-origin-width=&quot;1065&quot; data-origin-height=&quot;356&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.2. Application Sever Security Group 규칙 추가&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;appServer 보안 그룹에도 위와 같이 MYSQL/Aurora를 inbound/outbound에 추가해준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1570&quot; data-origin-height=&quot;330&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pwH0k/btsPGIacKr2/oq8J2GPH0Vr2ZgHS6ZCErK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pwH0k/btsPGIacKr2/oq8J2GPH0Vr2ZgHS6ZCErK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pwH0k/btsPGIacKr2/oq8J2GPH0Vr2ZgHS6ZCErK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpwH0k%2FbtsPGIacKr2%2Foq8J2GPH0Vr2ZgHS6ZCErK%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;1570&quot; height=&quot;330&quot; data-origin-width=&quot;1570&quot; data-origin-height=&quot;330&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1529&quot; data-origin-height=&quot;246&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dfbnDi/btsPGp9BFby/IqQUr9O401zUYOVb6q1lTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dfbnDi/btsPGp9BFby/IqQUr9O401zUYOVb6q1lTK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dfbnDi/btsPGp9BFby/IqQUr9O401zUYOVb6q1lTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdfbnDi%2FbtsPGp9BFby%2FIqQUr9O401zUYOVb6q1lTK%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;1529&quot; height=&quot;246&quot; data-origin-width=&quot;1529&quot; data-origin-height=&quot;246&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.3. DB Subnet Group 추가&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1188&quot; data-origin-height=&quot;457&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bG9EIt/btsPEwvx8Qu/fX44YjvqB3kuPCJOslmtGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bG9EIt/btsPEwvx8Qu/fX44YjvqB3kuPCJOslmtGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bG9EIt/btsPEwvx8Qu/fX44YjvqB3kuPCJOslmtGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbG9EIt%2FbtsPEwvx8Qu%2FfX44YjvqB3kuPCJOslmtGK%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;1188&quot; height=&quot;457&quot; data-origin-width=&quot;1188&quot; data-origin-height=&quot;457&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; 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;1462&quot; data-origin-height=&quot;557&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Fjudp/btsPFW0VhTE/HOXZFbdp9w8BfnP6yKa1h1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Fjudp/btsPFW0VhTE/HOXZFbdp9w8BfnP6yKa1h1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Fjudp/btsPFW0VhTE/HOXZFbdp9w8BfnP6yKa1h1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFjudp%2FbtsPFW0VhTE%2FHOXZFbdp9w8BfnP6yKa1h1%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;1462&quot; height=&quot;557&quot; data-origin-width=&quot;1462&quot; data-origin-height=&quot;557&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.4. RDS 생성&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;888&quot; data-origin-height=&quot;603&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mqoRB/btsPFicgzut/dQRXwpDneNLRj7ROih8owk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mqoRB/btsPFicgzut/dQRXwpDneNLRj7ROih8owk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mqoRB/btsPFicgzut/dQRXwpDneNLRj7ROih8owk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmqoRB%2FbtsPFicgzut%2FdQRXwpDneNLRj7ROih8owk%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;888&quot; height=&quot;603&quot; data-origin-width=&quot;888&quot; data-origin-height=&quot;603&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;863&quot; data-origin-height=&quot;691&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DrJLW/btsPFf0RSqk/hEsJmjKOM2KYkZSPYoKvGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DrJLW/btsPFf0RSqk/hEsJmjKOM2KYkZSPYoKvGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DrJLW/btsPFf0RSqk/hEsJmjKOM2KYkZSPYoKvGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDrJLW%2FbtsPFf0RSqk%2FhEsJmjKOM2KYkZSPYoKvGk%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;863&quot; height=&quot;691&quot; data-origin-width=&quot;863&quot; data-origin-height=&quot;691&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;865&quot; data-origin-height=&quot;745&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVa49I/btsPHktpB3r/Bi3Knd08GgKDsjGhkArZeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVa49I/btsPHktpB3r/Bi3Knd08GgKDsjGhkArZeK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVa49I/btsPHktpB3r/Bi3Knd08GgKDsjGhkArZeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVa49I%2FbtsPHktpB3r%2FBi3Knd08GgKDsjGhkArZeK%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;865&quot; height=&quot;745&quot; data-origin-width=&quot;865&quot; data-origin-height=&quot;745&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;VPC 선택 후 앞서 생성한 Database Subnet Group 할당 / 퍼블릭 액세스는 허용하지 않는다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;863&quot; data-origin-height=&quot;492&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PlULD/btsPDE1R8bR/Svr6IKeMpfd7RlGNxuHVf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PlULD/btsPDE1R8bR/Svr6IKeMpfd7RlGNxuHVf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PlULD/btsPDE1R8bR/Svr6IKeMpfd7RlGNxuHVf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPlULD%2FbtsPDE1R8bR%2FSvr6IKeMpfd7RlGNxuHVf1%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;863&quot; height=&quot;492&quot; data-origin-width=&quot;863&quot; data-origin-height=&quot;492&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;사전에 생성한 DB 보안 그룹을 할당&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.5. DB 접속&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;DB가 생성된 이후 (시간소요), App Server로부터 커넥션을 establish 하기 위해서는 Database Endpoint가 필요하다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;431&quot; data-origin-height=&quot;586&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7z1g9/btsPFD8m9bm/iRXtMUNKkbWUJOX42FPTR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7z1g9/btsPFD8m9bm/iRXtMUNKkbWUJOX42FPTR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7z1g9/btsPFD8m9bm/iRXtMUNKkbWUJOX42FPTR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7z1g9%2FbtsPFD8m9bm%2FiRXtMUNKkbWUJOX42FPTR0%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;431&quot; height=&quot;586&quot; data-origin-width=&quot;431&quot; data-origin-height=&quot;586&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;position: absolute;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Bastion Host에서 SSH를 통해 App server에 접속한 상태에서 mysql command를 사용해 접속이 되는지 확인한다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;[ec2-user@ip-10-0-138-143 ~]$ mysql -h dong-webapp-db.cdq2ms2mynwg.ap-northeast-2.rds.amazonaws.com -P 3306 -u admin -p&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;972&quot; data-origin-height=&quot;172&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FVJYL/btsPGt5exI1/knyUkgPIDoG8Ibg7K4R2k0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FVJYL/btsPGt5exI1/knyUkgPIDoG8Ibg7K4R2k0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FVJYL/btsPGt5exI1/knyUkgPIDoG8Ibg7K4R2k0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFVJYL%2FbtsPGt5exI1%2FknyUkgPIDoG8Ibg7K4R2k0%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;972&quot; height=&quot;172&quot; data-origin-width=&quot;972&quot; data-origin-height=&quot;172&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;위와같이 Application Server로부터 Database에 성공적으로 접속한 모습을 확인할 수 있다.&lt;/p&gt;</description>
      <category>인프라/AWS 3Tier Architecture</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/160</guid>
      <comments>https://kujung.tistory.com/entry/AWS-3-Tier-Architecture-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B0-1-4#entry160comment</comments>
      <pubDate>Sun, 3 Aug 2025 13:13:39 +0900</pubDate>
    </item>
    <item>
      <title>AWS 3 Tier Architecture 구축해보기 1-3</title>
      <link>https://kujung.tistory.com/entry/AWS-3-Tier-Architecture-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B0-1-3</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;참고&amp;nbsp;블로그&amp;nbsp;&lt;a href=&quot;https://seongnyeon.tistory.com/104&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://seongnyeon.tistory.com/104&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;u&gt;&lt;b&gt;3. Tier2: Application Tier (Backend)&lt;/b&gt;&lt;/u&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;799&quot; data-origin-height=&quot;558&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2S1Se/btsPGGKeIqq/3gskBUqCnPkKKpiFJwTDV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2S1Se/btsPGGKeIqq/3gskBUqCnPkKKpiFJwTDV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2S1Se/btsPGGKeIqq/3gskBUqCnPkKKpiFJwTDV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2S1Se%2FbtsPGGKeIqq%2F3gskBUqCnPkKKpiFJwTDV1%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;687&quot; height=&quot;480&quot; data-origin-width=&quot;799&quot; data-origin-height=&quot;558&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style6&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.1. Application Server Launch Template 생성&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;백엔드 서비스가 사용할 EC2 인스턴스를 정의하기 위한 template를 생성한다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이전에 만들었던 webServer-template와 동일한 설정으로 생성을 할 것이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;833&quot; data-origin-height=&quot;402&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FqD1q/btsPEuR5VDe/S7hIJEYBGMRtknZ7tAWyqK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FqD1q/btsPEuR5VDe/S7hIJEYBGMRtknZ7tAWyqK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FqD1q/btsPEuR5VDe/S7hIJEYBGMRtknZ7tAWyqK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFqD1q%2FbtsPEuR5VDe%2FS7hIJEYBGMRtknZ7tAWyqK%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;833&quot; height=&quot;402&quot; data-origin-width=&quot;833&quot; data-origin-height=&quot;402&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;1213&quot; data-origin-height=&quot;682&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7ytvt/btsPDt0m6AP/jmiK4MUk1UVUwJEg3zZXJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7ytvt/btsPDt0m6AP/jmiK4MUk1UVUwJEg3zZXJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7ytvt/btsPDt0m6AP/jmiK4MUk1UVUwJEg3zZXJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7ytvt%2FbtsPDt0m6AP%2FjmiK4MUk1UVUwJEg3zZXJ0%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;1213&quot; height=&quot;682&quot; data-origin-width=&quot;1213&quot; data-origin-height=&quot;682&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;1148&quot; data-origin-height=&quot;377&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cgCgiK/btsPDF0M4lI/oKlfAMGbqGTDVksc0khJ20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cgCgiK/btsPDF0M4lI/oKlfAMGbqGTDVksc0khJ20/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cgCgiK/btsPDF0M4lI/oKlfAMGbqGTDVksc0khJ20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcgCgiK%2FbtsPDF0M4lI%2FoKlfAMGbqGTDVksc0khJ20%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;1148&quot; height=&quot;377&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;377&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;531&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sXX1I/btsPDMemdEe/uXtjoGf1rRzG7kok6KUJq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sXX1I/btsPDMemdEe/uXtjoGf1rRzG7kok6KUJq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sXX1I/btsPDMemdEe/uXtjoGf1rRzG7kok6KUJq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsXX1I%2FbtsPDMemdEe%2FuXtjoGf1rRzG7kok6KUJq0%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;1049&quot; height=&quot;531&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;531&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Web Server로부터 Application Server로 ping을 보낼 수 있도록 webServer Security Group으로부터 ICMP-IPv4를 허용해준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1208&quot; data-origin-height=&quot;503&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTKii3/btsPDZR2rDD/1IjUPK1nnFEnQu0wKgFUbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTKii3/btsPDZR2rDD/1IjUPK1nnFEnQu0wKgFUbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTKii3/btsPDZR2rDD/1IjUPK1nnFEnQu0wKgFUbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTKii3%2FbtsPDZR2rDD%2F1IjUPK1nnFEnQu0wKgFUbK%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;1208&quot; height=&quot;503&quot; data-origin-width=&quot;1208&quot; data-origin-height=&quot;503&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이후에 Application Server로부터 Database에 접속을 하여야 하기 때문에 각각의 인스턴스로부터 mySQL 패키지를 install 해준다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;Advanced details&amp;rdquo; 아래에 &amp;ldquo;사용자 데이터&amp;rdquo; 필드에 아래 스크립트를 추가해준다.&lt;/p&gt;
&lt;pre id=&quot;code_1754187048504&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#mysql 설치
sudo dnf install mariadb105&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.2. Auto Scaling Group(ASG) 생성&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1267&quot; data-origin-height=&quot;708&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uDP0d/btsPHkUtsDr/tSKrqvfkGi6Z5IydL9Kie0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uDP0d/btsPHkUtsDr/tSKrqvfkGi6Z5IydL9Kie0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uDP0d/btsPHkUtsDr/tSKrqvfkGi6Z5IydL9Kie0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuDP0d%2FbtsPHkUtsDr%2FtSKrqvfkGi6Z5IydL9Kie0%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;1267&quot; height=&quot;708&quot; data-origin-width=&quot;1267&quot; data-origin-height=&quot;708&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;1269&quot; data-origin-height=&quot;615&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bujyBw/btsPGub1AdO/bADMXrI1kLsFbW002azSYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bujyBw/btsPGub1AdO/bADMXrI1kLsFbW002azSYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bujyBw/btsPGub1AdO/bADMXrI1kLsFbW002azSYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbujyBw%2FbtsPGub1AdO%2FbADMXrI1kLsFbW002azSYK%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;1269&quot; height=&quot;615&quot; data-origin-width=&quot;1269&quot; data-origin-height=&quot;615&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.3. Application Load Balancer(ALB) 생성&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Web Tier 에서 Application Tier로 트래픽을 라우팅 하는 새로운 ALB를 생성해준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1273&quot; data-origin-height=&quot;822&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ge7As/btsPFgrZNkM/MsZJo9kxuE59VLkTmeKN00/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ge7As/btsPFgrZNkM/MsZJo9kxuE59VLkTmeKN00/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ge7As/btsPFgrZNkM/MsZJo9kxuE59VLkTmeKN00/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGe7As%2FbtsPFgrZNkM%2FMsZJo9kxuE59VLkTmeKN00%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;1273&quot; height=&quot;822&quot; data-origin-width=&quot;1273&quot; data-origin-height=&quot;822&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;*이번에는 로드 밸런서 체계에서 반드시 &amp;ldquo;Internal&amp;rdquo;을 선택 해주어야 한다. 또한 새로운 target group(ksn-appServer-tg)을 생성해준다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;EC2, Load Balancer, VPC 같은 AWS 서비스에서 자주 나오는 개념인 &quot;Internal&quot;과 &quot;Internet-facing&quot;의 차이는 &lt;b&gt;외부 인터넷과의 연결 유무&lt;/b&gt;입니다.&lt;/p&gt;
&lt;h3 data-end=&quot;510&quot; data-start=&quot;470&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Internet-facing Load Balancer&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;572&quot; data-start=&quot;511&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;524&quot; data-start=&quot;511&quot;&gt;퍼블릭 서브넷에 배치&lt;/li&gt;
&lt;li data-end=&quot;551&quot; data-start=&quot;525&quot;&gt;외부 사용자가 인터넷을 통해 직접 접속 가능&lt;/li&gt;
&lt;li data-end=&quot;572&quot; data-start=&quot;552&quot;&gt;예: 쇼핑몰 홈페이지, 블로그 등&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;607&quot; data-start=&quot;574&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Internal Load Balancer&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;682&quot; data-start=&quot;608&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;622&quot; data-start=&quot;608&quot;&gt;프라이빗 서브넷에 배치&lt;/li&gt;
&lt;li data-end=&quot;649&quot; data-start=&quot;623&quot;&gt;같은 VPC 안의 EC2 등에서만 접근 가능&lt;/li&gt;
&lt;li data-end=&quot;682&quot; data-start=&quot;650&quot;&gt;예: 내부 API, DB 연동, 마이크로서비스 간 통신&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1277&quot; data-origin-height=&quot;616&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/T9zld/btsPFjvvNSs/zSZdd6J9OqizxP8PNvZTD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/T9zld/btsPFjvvNSs/zSZdd6J9OqizxP8PNvZTD1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/T9zld/btsPFjvvNSs/zSZdd6J9OqizxP8PNvZTD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FT9zld%2FbtsPFjvvNSs%2FzSZdd6J9OqizxP8PNvZTD1%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;1277&quot; height=&quot;616&quot; data-origin-width=&quot;1277&quot; data-origin-height=&quot;616&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.4. Web 서버로부터 연동 확인&lt;/b&gt;&lt;/h3&gt;
&lt;blockquote style=&quot;background-color: #ffffff; color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;Application Server가 실행중이므로 Connectivity를 검증하기 위해서 Web Server로부터 Application Server로 Ping을 날린다.&lt;/blockquote&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;우선, SSH로 Web Server EC2로 접속한 뒤, App Server EC2 중 하나로 private IP 주소로 ping을 날릴 것이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1627&quot; data-origin-height=&quot;402&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mayPn/btsPF8tq5uU/26chfjgrjV9JT5cvG2qTYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mayPn/btsPF8tq5uU/26chfjgrjV9JT5cvG2qTYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mayPn/btsPF8tq5uU/26chfjgrjV9JT5cvG2qTYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmayPn%2FbtsPF8tq5uU%2F26chfjgrjV9JT5cvG2qTYk%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;1627&quot; height=&quot;402&quot; data-origin-width=&quot;1627&quot; data-origin-height=&quot;402&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;504&quot; data-origin-height=&quot;109&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eiWwIR/btsPE3TS5vt/ku31vjG5bxhfZnpdVFpJek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eiWwIR/btsPE3TS5vt/ku31vjG5bxhfZnpdVFpJek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eiWwIR/btsPE3TS5vt/ku31vjG5bxhfZnpdVFpJek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeiWwIR%2FbtsPE3TS5vt%2Fku31vjG5bxhfZnpdVFpJek%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;504&quot; height=&quot;109&quot; data-origin-width=&quot;504&quot; data-origin-height=&quot;109&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;정상적으로 작동한다면 위와 같은 결과를 볼 수 있을 것이다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style5&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;u&gt;&lt;b&gt;4. Bastion Host 생성&lt;/b&gt;&lt;/u&gt;&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Application Tier를 잠재적인 외부 액세스로 부터 보호하기 위해서 ASG 외부의 Web Tier에 EC2 instance(Bastion Host)를 생성할 것이다. 위 서버는 App Server의 Gateway로 사용될 것이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1087&quot; data-origin-height=&quot;628&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dstRFw/btsPD1hZi52/FDSePkr7PFOPSl8zuOdhfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dstRFw/btsPD1hZi52/FDSePkr7PFOPSl8zuOdhfk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dstRFw/btsPD1hZi52/FDSePkr7PFOPSl8zuOdhfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdstRFw%2FbtsPD1hZi52%2FFDSePkr7PFOPSl8zuOdhfk%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;1087&quot; height=&quot;628&quot; data-origin-width=&quot;1087&quot; data-origin-height=&quot;628&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1083&quot; data-origin-height=&quot;409&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCDSHS/btsPE2Ok2F6/U7WxAuKcDqo7IHxK0eKKLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCDSHS/btsPE2Ok2F6/U7WxAuKcDqo7IHxK0eKKLk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCDSHS/btsPE2Ok2F6/U7WxAuKcDqo7IHxK0eKKLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCDSHS%2FbtsPE2Ok2F6%2FU7WxAuKcDqo7IHxK0eKKLk%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;1083&quot; height=&quot;409&quot; data-origin-width=&quot;1083&quot; data-origin-height=&quot;409&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1053&quot; data-origin-height=&quot;827&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sjfVg/btsPGqAH9Yy/TKJQsbNIojyHgQA2dNnTJ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sjfVg/btsPGqAH9Yy/TKJQsbNIojyHgQA2dNnTJ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sjfVg/btsPGqAH9Yy/TKJQsbNIojyHgQA2dNnTJ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsjfVg%2FbtsPGqAH9Yy%2FTKJQsbNIojyHgQA2dNnTJ1%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;1053&quot; height=&quot;827&quot; data-origin-width=&quot;1053&quot; data-origin-height=&quot;827&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Public Subnet을 선택해주어야 한다. 또한 보안 그룹을 생성해 오직 내 IP를 통해 접속하는 SSH를 추가해준다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style6&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4.1. Application Server Security Group 설정&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;appServer 보안 그룹에 inbound rules에서 SSH가 오로지 Bastion Host Server로부터만 접속이 가능하도록 설정을 해준다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;기존 SSH 정책을 삭제하고 아래 같이&amp;nbsp; &lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;Bastion Host Server의 보안그룹을 &lt;/span&gt;추가한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1604&quot; data-origin-height=&quot;268&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lyxs9/btsPF8GY7ey/ykcKN8jeyDx8by2Ukr8CmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lyxs9/btsPF8GY7ey/ykcKN8jeyDx8by2Ukr8CmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lyxs9/btsPF8GY7ey/ykcKN8jeyDx8by2Ukr8CmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flyxs9%2FbtsPF8GY7ey%2FykcKN8jeyDx8by2Ukr8CmK%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;1604&quot; height=&quot;268&quot; data-origin-width=&quot;1604&quot; data-origin-height=&quot;268&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4.2. Connection Test&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Bastion Host를 통해서 Application Server에 접속이 가능한지 테스트한다.&lt;/p&gt;
&lt;blockquote style=&quot;background-color: #ffffff; color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;Application Server로 SSH 하기 위해서는 키페어가 BastionHost에 존재해야 한다.&lt;br /&gt;private키 파일을 로컬 PC에서 Bastion에 업로드 &lt;br /&gt;&lt;/b&gt;&lt;/blockquote&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;308&quot; data-start=&quot;212&quot;&gt;Git for Windows 설치:&lt;br /&gt;&lt;a href=&quot;https://git-scm.com/download/win&quot;&gt;https://git-scm.com/download/win&lt;/a&gt;&lt;/li&gt;
&lt;li data-end=&quot;333&quot; data-start=&quot;310&quot;&gt;설치 후 &lt;b&gt;Git Bash 실행&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;333&quot; data-start=&quot;310&quot;&gt;편의상 privatekey를 C드라이브 폴더로 옮겨주세요&lt;/li&gt;
&lt;li data-end=&quot;333&quot; data-start=&quot;310&quot;&gt;Git Bash에서 Windows 드라이브 경로 쓸 때는 이렇게 씁니다:&lt;/li&gt;
&lt;li data-end=&quot;333&quot; data-start=&quot;310&quot;&gt;/c/Study_Ubuntu.pem&lt;/li&gt;
&lt;li data-end=&quot;333&quot; data-start=&quot;310&quot;&gt;scp -i [접속할bationhost의 keypair] [복사할keypair] ec2-user@&amp;lt;EC2-Public-IP&amp;gt;:~&lt;/li&gt;
&lt;li data-end=&quot;333&quot; data-start=&quot;310&quot;&gt;scp&amp;nbsp;-i&amp;nbsp;/c/Study_Ubuntu.pem&amp;nbsp;/c/Study_Ubuntu.pem&amp;nbsp;ec2-user@52.79.230.224:~&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;bastion에 들어가서 확인, private 키가 잘 들어갔다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;251&quot; data-origin-height=&quot;35&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c7L2MN/btsPE8HzwrE/1RR7GIh3MGUxzMVHYL1eDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c7L2MN/btsPE8HzwrE/1RR7GIh3MGUxzMVHYL1eDK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c7L2MN/btsPE8HzwrE/1RR7GIh3MGUxzMVHYL1eDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc7L2MN%2FbtsPE8HzwrE%2F1RR7GIh3MGUxzMVHYL1eDK%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;251&quot; height=&quot;35&quot; data-origin-width=&quot;251&quot; data-origin-height=&quot;35&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;bastion에서 private ec2에 접속한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0f141a; text-align: start;&quot;&gt;sudo ssh -i &quot;Study_Ubuntu.pem&quot; ec2-user@10.0.138.143&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;665&quot; data-origin-height=&quot;262&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cMEziH/btsPEC3nyQC/DVT1VdVYZKfU1KKd27P501/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cMEziH/btsPEC3nyQC/DVT1VdVYZKfU1KKd27P501/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cMEziH/btsPEC3nyQC/DVT1VdVYZKfU1KKd27P501/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcMEziH%2FbtsPEC3nyQC%2FDVT1VdVYZKfU1KKd27P501%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;665&quot; height=&quot;262&quot; data-origin-width=&quot;665&quot; data-origin-height=&quot;262&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 Application Tier가 구축된 것을 확인할 수 있다.&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;</description>
      <category>인프라/AWS 3Tier Architecture</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/159</guid>
      <comments>https://kujung.tistory.com/entry/AWS-3-Tier-Architecture-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B0-1-3#entry159comment</comments>
      <pubDate>Sun, 3 Aug 2025 12:37:37 +0900</pubDate>
    </item>
    <item>
      <title>AWS 3 Tier Architecture 구축해보기 1-2</title>
      <link>https://kujung.tistory.com/entry/AWS-3-Tier-Architecture-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B0-1-2</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;참고 블로그 &lt;a href=&quot;https://seongnyeon.tistory.com/104&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://seongnyeon.tistory.com/104&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;u&gt;&lt;b&gt;2. Tier1: Web Tier (Frontend)&lt;/b&gt;&lt;/u&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1856&quot; data-origin-height=&quot;802&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTKMBn/btsPDstFthL/LiyHdPeg9P4bmaRijK46HK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTKMBn/btsPDstFthL/LiyHdPeg9P4bmaRijK46HK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTKMBn/btsPDstFthL/LiyHdPeg9P4bmaRijK46HK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTKMBn%2FbtsPDstFthL%2FLiyHdPeg9P4bmaRijK46HK%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;1856&quot; height=&quot;802&quot; data-origin-width=&quot;1856&quot; data-origin-height=&quot;802&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style6&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.1. Web Server Launch Template 생성&lt;/b&gt;&lt;/h3&gt;
&lt;blockquote style=&quot;background-color: #ffffff; color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;ASG가 Public Subnet에서 EC2 인스턴스를 동적으로 사용하는데 필요한 Template를 생성할 것이다.&lt;/b&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;872&quot; data-origin-height=&quot;554&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZUPmZ/btsPF0WvAYD/aHQ4QolJbY8x3kf3d4gLZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZUPmZ/btsPF0WvAYD/aHQ4QolJbY8x3kf3d4gLZk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZUPmZ/btsPF0WvAYD/aHQ4QolJbY8x3kf3d4gLZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZUPmZ%2FbtsPF0WvAYD%2FaHQ4QolJbY8x3kf3d4gLZk%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;872&quot; height=&quot;554&quot; data-origin-width=&quot;872&quot; data-origin-height=&quot;554&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote style=&quot;background-color: #ffffff; color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;AMI: &lt;span style=&quot;background-color: #ffffff; color: #0f141a; text-align: start;&quot;&gt;Amazon Linux 2023 kernel-6.1 AMI&lt;/span&gt; / Instance Type: t2.micro / Key Pair&lt;/b&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1252&quot; data-origin-height=&quot;779&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QraG5/btsPHemsbFe/4FKFTumgHx7D9ncCvAkTXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QraG5/btsPHemsbFe/4FKFTumgHx7D9ncCvAkTXK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QraG5/btsPHemsbFe/4FKFTumgHx7D9ncCvAkTXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQraG5%2FbtsPHemsbFe%2F4FKFTumgHx7D9ncCvAkTXK%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;1252&quot; height=&quot;779&quot; data-origin-width=&quot;1252&quot; data-origin-height=&quot;779&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1247&quot; data-origin-height=&quot;234&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SQAHE/btsPGlTFvwS/CXg16CoGaZUCkU5gK6QV5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SQAHE/btsPGlTFvwS/CXg16CoGaZUCkU5gK6QV5K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SQAHE/btsPGlTFvwS/CXg16CoGaZUCkU5gK6QV5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSQAHE%2FbtsPGlTFvwS%2FCXg16CoGaZUCkU5gK6QV5K%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;1247&quot; height=&quot;234&quot; data-origin-width=&quot;1247&quot; data-origin-height=&quot;234&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1257&quot; data-origin-height=&quot;202&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dKY0QX/btsPEE1aCgL/KEsISXfAhinEMz5ActoJm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dKY0QX/btsPEE1aCgL/KEsISXfAhinEMz5ActoJm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dKY0QX/btsPEE1aCgL/KEsISXfAhinEMz5ActoJm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdKY0QX%2FbtsPEE1aCgL%2FKEsISXfAhinEMz5ActoJm1%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;1257&quot; height=&quot;202&quot; data-origin-width=&quot;1257&quot; data-origin-height=&quot;202&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;새로운 보안 그룹을 생성한 뒤, inbound SSH, HTTP, and HTTPS rules을 추가해준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1221&quot; data-origin-height=&quot;747&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sZN4u/btsPERzc7pn/eJIQiE2Qg3YjOSTH1SiiU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sZN4u/btsPERzc7pn/eJIQiE2Qg3YjOSTH1SiiU1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sZN4u/btsPERzc7pn/eJIQiE2Qg3YjOSTH1SiiU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsZN4u%2FbtsPERzc7pn%2FeJIQiE2Qg3YjOSTH1SiiU1%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;1221&quot; height=&quot;747&quot; data-origin-width=&quot;1221&quot; data-origin-height=&quot;747&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Apache Web Server와 basic HTML web page를 실행하기 위해 유저 데이터 섹션에 아래 스크립트를 추가해준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;366&quot; data-origin-height=&quot;57&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cb8gmN/btsPDE1Q6dh/aZ539ULTo3YgpogXHhI2gk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cb8gmN/btsPDE1Q6dh/aZ539ULTo3YgpogXHhI2gk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cb8gmN/btsPDE1Q6dh/aZ539ULTo3YgpogXHhI2gk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcb8gmN%2FbtsPDE1Q6dh%2FaZ539ULTo3YgpogXHhI2gk%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;366&quot; height=&quot;57&quot; data-origin-width=&quot;366&quot; data-origin-height=&quot;57&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1754181536958&quot; class=&quot;bash&quot; style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;#!/bin/bash

#install apache
sudo yum -y install httpd

#enable and start apache
sudo systemctl enable httpd
sudo systemctl start httpd


# 퍼블릭 IP 가져오기
PUBLIC_IP=$(curl -s http://checkip.amazonaws.com)

# HTML 파일 작성
sudo tee /var/www/html/index.html &amp;gt; /dev/null &amp;lt;&amp;lt;EOF
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang=&quot;en&quot;&amp;gt;
&amp;lt;head&amp;gt;
  &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
  &amp;lt;title&amp;gt;Welcome to My EC2&amp;lt;/title&amp;gt;
  &amp;lt;style&amp;gt;
    body {
      font-family: sans-serif;
      background-color: #f5f5f5;
      text-align: center;
      padding-top: 100px;
    }
    h1 {
      color: #333;
    }
    .ip {
      font-size: 1.5rem;
      color: #007acc;
    }
  &amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
  &amp;lt;h1&amp;gt;Welcome to my EC2 Apache Server!&amp;lt;/h1&amp;gt;
  &amp;lt;p&amp;gt;Your server is running on:&amp;lt;/p&amp;gt;
  &amp;lt;p class=&quot;ip&quot;&amp;gt;http://$PUBLIC_IP&amp;lt;/p&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
EOF&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;Apache 웹서버가 설치되며 간단하게 자신의 IP를 출력해주는 index 페이지가 출력된다.&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.2. Auto Scaling Group(ASG) 생성&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;웹의 고가용성을 보장하기 위해서 public subnet 여러 AZ에서 EC2 인스턴스를 동적으로 프로비저닝 하는 ASG를 생성할 것이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1756&quot; data-origin-height=&quot;876&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bi4713/btsPENX2aSf/FqEKC9HK6AMM6TBxbXTG3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bi4713/btsPENX2aSf/FqEKC9HK6AMM6TBxbXTG3K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bi4713/btsPENX2aSf/FqEKC9HK6AMM6TBxbXTG3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbi4713%2FbtsPENX2aSf%2FFqEKC9HK6AMM6TBxbXTG3K%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;1756&quot; height=&quot;876&quot; data-origin-width=&quot;1756&quot; data-origin-height=&quot;876&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span data-alt=&quot;사전에 만들어 놓은 템플릿 사용&quot; data-phocus=&quot;https://blog.kakaocdn.net/dna/buwp8D/btsOY6KURKh/AAAAAAAAAAAAAAAAAAAAAMAy4yvR-RmgP-M4mOnSbegjvkOkuGbTqQt4FMtWwIve/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;amp;expires=1756652399&amp;amp;allow_ip=&amp;amp;allow_referer=&amp;amp;signature=2Wr7D1jyW2Wj0gQwi3t2m2eARTk%3D&quot; data-url=&quot;https://blog.kakaocdn.net/dna/buwp8D/btsOY6KURKh/AAAAAAAAAAAAAAAAAAAAAMAy4yvR-RmgP-M4mOnSbegjvkOkuGbTqQt4FMtWwIve/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;amp;expires=1756652399&amp;amp;allow_ip=&amp;amp;allow_referer=&amp;amp;signature=2Wr7D1jyW2Wj0gQwi3t2m2eARTk%3D&quot;&gt;&lt;/span&gt;사전에 만들어 놓은 템플릿 사용&lt;span data-alt=&quot;두 개의 퍼블릭 서브넷 선택&quot; data-phocus=&quot;https://blog.kakaocdn.net/dna/H9tXO/btsOYGlRnmY/AAAAAAAAAAAAAAAAAAAAAPDlCIfmkL17CN64F9BQk-QFVBbpF64bN9XO4rlsFaHd/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;amp;expires=1756652399&amp;amp;allow_ip=&amp;amp;allow_referer=&amp;amp;signature=bLnhTMHuoywc9a%2FDK2CNVKJtDYs%3D&quot; data-url=&quot;https://blog.kakaocdn.net/dna/H9tXO/btsOYGlRnmY/AAAAAAAAAAAAAAAAAAAAAPDlCIfmkL17CN64F9BQk-QFVBbpF64bN9XO4rlsFaHd/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;amp;expires=1756652399&amp;amp;allow_ip=&amp;amp;allow_referer=&amp;amp;signature=bLnhTMHuoywc9a%2FDK2CNVKJtDYs%3D&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;638&quot; data-origin-height=&quot;479&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nfQZa/btsPFE7eQCl/cfdNuJLECBfNCPCWLosolk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nfQZa/btsPFE7eQCl/cfdNuJLECBfNCPCWLosolk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nfQZa/btsPFE7eQCl/cfdNuJLECBfNCPCWLosolk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnfQZa%2FbtsPFE7eQCl%2FcfdNuJLECBfNCPCWLosolk%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;638&quot; height=&quot;479&quot; data-origin-width=&quot;638&quot; data-origin-height=&quot;479&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span data-alt=&quot;두 개의 퍼블릭 서브넷 선택&quot; data-phocus=&quot;https://blog.kakaocdn.net/dna/H9tXO/btsOYGlRnmY/AAAAAAAAAAAAAAAAAAAAAPDlCIfmkL17CN64F9BQk-QFVBbpF64bN9XO4rlsFaHd/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;amp;expires=1756652399&amp;amp;allow_ip=&amp;amp;allow_referer=&amp;amp;signature=bLnhTMHuoywc9a%2FDK2CNVKJtDYs%3D&quot; data-url=&quot;https://blog.kakaocdn.net/dna/H9tXO/btsOYGlRnmY/AAAAAAAAAAAAAAAAAAAAAPDlCIfmkL17CN64F9BQk-QFVBbpF64bN9XO4rlsFaHd/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;amp;expires=1756652399&amp;amp;allow_ip=&amp;amp;allow_referer=&amp;amp;signature=bLnhTMHuoywc9a%2FDK2CNVKJtDYs%3D&quot;&gt;&lt;/span&gt;두 개의 퍼블릭 서브넷 선택&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.3. Application Load Balancer (ALB) 생성&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;incoming HTTP 트래픽을 적절한 targets(EC2)으로 분배하기 위해서 ALB를 생성한다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;HTTP 트래픽을 기준으로 로드 밸런서를 하기 때문에 ALB를 선택한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1275&quot; data-origin-height=&quot;823&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Wau7f/btsPFBWUMbu/WTNhSIh1pUBLNyohVlwLQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Wau7f/btsPFBWUMbu/WTNhSIh1pUBLNyohVlwLQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Wau7f/btsPFBWUMbu/WTNhSIh1pUBLNyohVlwLQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWau7f%2FbtsPFBWUMbu%2FWTNhSIh1pUBLNyohVlwLQ0%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;1275&quot; height=&quot;823&quot; data-origin-width=&quot;1275&quot; data-origin-height=&quot;823&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;로드 밸런서 체계에서 &amp;ldquo;Internet-facing&amp;rdquo;을 선택한다. 그러면 HTTP/S 요청들을 listen 할 수 있게 된다. 또한 ALB에서 EC2 instance로 라우팅 하기 위해서 HTTP protocol과 포트 번호 80번 및 target group을 설정해준다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;blockquote style=&quot;background-color: #ffffff; color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;ASG interface에서 ALB를 생성하면 자동으로 default security group이 ALB로 attach 되기 때문에, ASG 설정을 완료한 뒤 load balancer로 돌아가 알맞은 Security Group이 Attached 되었는지 확인해야 한다.&lt;/b&gt;&lt;/blockquote&gt;
&lt;p style=&quot;background-color: #ffffff; 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;1622&quot; data-origin-height=&quot;180&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6uV1F/btsPEvJ487r/ssgRoiKMJ0IcofM6jvLVC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6uV1F/btsPEvJ487r/ssgRoiKMJ0IcofM6jvLVC0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6uV1F/btsPEvJ487r/ssgRoiKMJ0IcofM6jvLVC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6uV1F%2FbtsPEvJ487r%2FssgRoiKMJ0IcofM6jvLVC0%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;1622&quot; height=&quot;180&quot; data-origin-width=&quot;1622&quot; data-origin-height=&quot;180&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;EC2 인스턴스의 스케일 업 또는 스케일 다운 크기 조정 정책을 설정해준다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;CPU 사용률이 50%를 넘을 시 자동으로 instance를 더 생성하게 설정해준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1312&quot; data-origin-height=&quot;283&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/s29BQ/btsPDsNTT4l/J1WLE6vgnkuevJ2XaYPpQK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/s29BQ/btsPDsNTT4l/J1WLE6vgnkuevJ2XaYPpQK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/s29BQ/btsPDsNTT4l/J1WLE6vgnkuevJ2XaYPpQK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fs29BQ%2FbtsPDsNTT4l%2FJ1WLE6vgnkuevJ2XaYPpQK%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;1312&quot; height=&quot;283&quot; data-origin-width=&quot;1312&quot; data-origin-height=&quot;283&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1316&quot; data-origin-height=&quot;735&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDXwSM/btsPFBo7gmw/afcWkGI12vci1mcDRWZG30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDXwSM/btsPFBo7gmw/afcWkGI12vci1mcDRWZG30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDXwSM/btsPFBo7gmw/afcWkGI12vci1mcDRWZG30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDXwSM%2FbtsPFBo7gmw%2FafcWkGI12vci1mcDRWZG30%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;1316&quot; height=&quot;735&quot; data-origin-width=&quot;1316&quot; data-origin-height=&quot;735&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.4. Web Server 접속 확인&lt;/b&gt;&lt;/h3&gt;
&lt;blockquote style=&quot;background-color: #ffffff; color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;ASG 설정 및 생성이 완료된 뒤, ALB가 traffic을 잘 라우팅 하는지 확인하기 위해서 퍼블릭 DNS를 통해 EC2 Launch Template에서 생성한 웹사이트가 접속이 가능한지 확인한다.&lt;/b&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1644&quot; data-origin-height=&quot;815&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sDrYh/btsPGtYs7wA/JWpOhSminRw6sHeIIB6gjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sDrYh/btsPGtYs7wA/JWpOhSminRw6sHeIIB6gjK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sDrYh/btsPGtYs7wA/JWpOhSminRw6sHeIIB6gjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsDrYh%2FbtsPGtYs7wA%2FJWpOhSminRw6sHeIIB6gjK%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;1644&quot; height=&quot;815&quot; data-origin-width=&quot;1644&quot; data-origin-height=&quot;815&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;1028&quot; data-origin-height=&quot;537&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/F6TVo/btsPEu5wMv9/jx5ZlpXh2TulwthkRvMnkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/F6TVo/btsPEu5wMv9/jx5ZlpXh2TulwthkRvMnkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/F6TVo/btsPEu5wMv9/jx5ZlpXh2TulwthkRvMnkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FF6TVo%2FbtsPEu5wMv9%2Fjx5ZlpXh2TulwthkRvMnkk%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;1028&quot; height=&quot;537&quot; data-origin-width=&quot;1028&quot; data-origin-height=&quot;537&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;&amp;nbsp;&lt;/p&gt;</description>
      <category>인프라/AWS 3Tier Architecture</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/158</guid>
      <comments>https://kujung.tistory.com/entry/AWS-3-Tier-Architecture-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B0-1-2#entry158comment</comments>
      <pubDate>Sun, 3 Aug 2025 10:39:32 +0900</pubDate>
    </item>
    <item>
      <title>AWS 3 Tier Architecture 구축해보기 1-1</title>
      <link>https://kujung.tistory.com/entry/AWS-3-Tier-Architecture-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B0-1-1</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;3 Tier Architecture 는 가장 기본적인 구조로, 클라우드를 어느정도 배웠다면, 실습하기에 좋다.&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;기존에 여러 블로그에 작성되있는 3 Tier 게시물을 참고하여 살을 덧붙여 보겠다.&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;a href=&quot;https://seongnyeon.tistory.com/104&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://seongnyeon.tistory.com/104&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;1022&quot; data-origin-height=&quot;1051&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7MKeF/btsPErATsIJ/kxk7g2AXx9sXFldBWOfCe1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7MKeF/btsPErATsIJ/kxk7g2AXx9sXFldBWOfCe1/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7MKeF/btsPErATsIJ/kxk7g2AXx9sXFldBWOfCe1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7MKeF%2FbtsPErATsIJ%2Fkxk7g2AXx9sXFldBWOfCe1%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1022&quot; height=&quot;1051&quot; data-origin-width=&quot;1022&quot; data-origin-height=&quot;1051&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;u&gt;&lt;b&gt;1. Network Architecture&lt;/b&gt;&lt;/u&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1038&quot; data-origin-height=&quot;1008&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfIVhJ/btsPDruEbCV/aC4qwVsZKFy48ocVlawPk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfIVhJ/btsPDruEbCV/aC4qwVsZKFy48ocVlawPk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfIVhJ/btsPDruEbCV/aC4qwVsZKFy48ocVlawPk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfIVhJ%2FbtsPDruEbCV%2FaC4qwVsZKFy48ocVlawPk1%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;857&quot; height=&quot;832&quot; data-origin-width=&quot;1038&quot; data-origin-height=&quot;1008&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 1개의 VPC&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 2개의 AZ에 각각 1개의 Public Subnet (Web Tier)&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 2개의 AZ에 각각 1개의 Private Subnet(Application Tier)&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- Internet Gateway에 연결하기 위한 1개의 Public Route Table&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- Application Tier Private Subnets과 NAT Gateway에 연결하기 위한 1개의 Private Route Table&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style6&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.1. VPC 설정&lt;/b&gt;&lt;/h3&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;576&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cHwsGf/btsPFfNjJoX/oZ5hK51tFVO8ukJQ1bwbVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cHwsGf/btsPFfNjJoX/oZ5hK51tFVO8ukJQ1bwbVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cHwsGf/btsPFfNjJoX/oZ5hK51tFVO8ukJQ1bwbVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcHwsGf%2FbtsPFfNjJoX%2FoZ5hK51tFVO8ukJQ1bwbVK%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;576&quot; data-origin-width=&quot;502&quot; data-origin-height=&quot;576&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;506&quot; data-origin-height=&quot;792&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwzZDP/btsPE3l1kUt/OjKpli0iUtiKKNoAil6iok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwzZDP/btsPE3l1kUt/OjKpli0iUtiKKNoAil6iok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwzZDP/btsPE3l1kUt/OjKpli0iUtiKKNoAil6iok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwzZDP%2FbtsPE3l1kUt%2FOjKpli0iUtiKKNoAil6iok%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;506&quot; height=&quot;792&quot; data-origin-width=&quot;506&quot; data-origin-height=&quot;792&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;우선, VPC 콘솔에서 VPC 생성을 해준다. &amp;lsquo;VPC and more&amp;rsquo; 옵션과 이름을 설정한 뒤, CIDR 블록은 10.0.0.0/16으로 설정해준다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Application 가용성을 높여주기 위해서 두 개의 가용영역(us-east-1a and us-east-1b)을 사용할 것이다. 위 가용영역에 2개의 퍼블릭 서브넷과 2개의 프리이빗 서브넷을 생성해줄 것이다..&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;NatGateway는 별도로 생성해줄 예정이다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.2. Network Preview (AWS 제공)&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1323&quot; data-origin-height=&quot;517&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buIPO0/btsPDsApjeN/BszGckEt7jVIEjuRcQVQAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buIPO0/btsPDsApjeN/BszGckEt7jVIEjuRcQVQAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buIPO0/btsPDsApjeN/BszGckEt7jVIEjuRcQVQAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuIPO0%2FbtsPDsApjeN%2FBszGckEt7jVIEjuRcQVQAK%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;1323&quot; height=&quot;517&quot; data-origin-width=&quot;1323&quot; data-origin-height=&quot;517&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;Preview를 확인하고 VPC 생성을 마친다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.3. Public IPv4 주소 자동 할당&lt;/b&gt;&lt;/h3&gt;
&lt;blockquote style=&quot;background-color: #ffffff; color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;기본적인 네트워크 환경 구성이 완료된 뒤, 인터넷을 통해 리소스에 접속할 수 있도록 두 개의 Public Subnets에서 Public IPv4 주소 자동 할당 활성화를 해주어야 한다.&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1478&quot; data-origin-height=&quot;187&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ATI9u/btsPGncRaPi/qOREhhe7ZafXuPTWhbS6ZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ATI9u/btsPGncRaPi/qOREhhe7ZafXuPTWhbS6ZK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ATI9u/btsPGncRaPi/qOREhhe7ZafXuPTWhbS6ZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FATI9u%2FbtsPGncRaPi%2FqOREhhe7ZafXuPTWhbS6ZK%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;1478&quot; height=&quot;187&quot; data-origin-width=&quot;1478&quot; data-origin-height=&quot;187&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;848&quot; data-origin-height=&quot;759&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/s5rdp/btsPDs1tHVD/KxDIKEtLVZWUiW9R2HNcx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/s5rdp/btsPDs1tHVD/KxDIKEtLVZWUiW9R2HNcx1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/s5rdp/btsPDs1tHVD/KxDIKEtLVZWUiW9R2HNcx1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fs5rdp%2FbtsPDs1tHVD%2FKxDIKEtLVZWUiW9R2HNcx1%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;848&quot; height=&quot;759&quot; data-origin-width=&quot;848&quot; data-origin-height=&quot;759&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.4. 기본 라우팅 테이블 설정&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;VPC가 생성되면 default route table이 &amp;lsquo;main table&amp;rsquo;로 설정된다.&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;230&quot; data-origin-height=&quot;75&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEpJLI/btsPEwIZdrp/dSqJxbPenU06LuA2ePcxO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEpJLI/btsPEwIZdrp/dSqJxbPenU06LuA2ePcxO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEpJLI/btsPEwIZdrp/dSqJxbPenU06LuA2ePcxO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEpJLI%2FbtsPEwIZdrp%2FdSqJxbPenU06LuA2ePcxO1%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;230&quot; height=&quot;75&quot; data-origin-width=&quot;230&quot; data-origin-height=&quot;75&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;그렇기 때문에 public-rtb를 main table로 사용하기 위해 위 설정을 해준다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;872&quot; data-origin-height=&quot;263&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/B9kol/btsPEQmKOCZ/qMklQx60dIebafrH34NGO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/B9kol/btsPEQmKOCZ/qMklQx60dIebafrH34NGO0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/B9kol/btsPEQmKOCZ/qMklQx60dIebafrH34NGO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FB9kol%2FbtsPEQmKOCZ%2FqMklQx60dIebafrH34NGO0%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;872&quot; height=&quot;263&quot; data-origin-width=&quot;872&quot; data-origin-height=&quot;263&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;position: absolute;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;position: absolute;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.5. NAT Gateway 설정&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1293&quot; data-origin-height=&quot;796&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjUp54/btsPEL0bKzz/xAkM7e32quWVdRmcGS645k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjUp54/btsPEL0bKzz/xAkM7e32quWVdRmcGS645k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjUp54/btsPEL0bKzz/xAkM7e32quWVdRmcGS645k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjUp54%2FbtsPEL0bKzz%2FxAkM7e32quWVdRmcGS645k%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;1293&quot; height=&quot;796&quot; data-origin-width=&quot;1293&quot; data-origin-height=&quot;796&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.6. Private Route Table 구성&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;VPC 구성 시 6개의 서브넷을 만들었기 때문에 기본적으로 route table 또한 6 개가 생성이 된다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;4개의 private subnet중 하나의 private subnet(for the Application Tier Subnets)만 필요하다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;임의의 private route table을 하나 선택한 후, 서브넷 연결을 편집 해준다. (-subnet-private1,-subnet-private2,subnet-private-3,-subnet-private4)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1724&quot; data-origin-height=&quot;576&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1WHdf/btsPF8GVCvX/IPBr23HVVxmQhiDQSBlph1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1WHdf/btsPF8GVCvX/IPBr23HVVxmQhiDQSBlph1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1WHdf/btsPF8GVCvX/IPBr23HVVxmQhiDQSBlph1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1WHdf%2FbtsPF8GVCvX%2FIPBr23HVVxmQhiDQSBlph1%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;1724&quot; height=&quot;576&quot; data-origin-width=&quot;1724&quot; data-origin-height=&quot;576&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;또한 private route table 라우팅에 NAT gateway를 반드시 포함 시켜주어야 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1634&quot; data-origin-height=&quot;328&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cEth1H/btsPDokAy4s/S1nDKb64XihjJsnluEJZY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cEth1H/btsPDokAy4s/S1nDKb64XihjJsnluEJZY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cEth1H/btsPDokAy4s/S1nDKb64XihjJsnluEJZY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcEth1H%2FbtsPDokAy4s%2FS1nDKb64XihjJsnluEJZY0%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;1634&quot; height=&quot;328&quot; data-origin-width=&quot;1634&quot; data-origin-height=&quot;328&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;public route table 또한 위와 같이 설정해준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1722&quot; data-origin-height=&quot;532&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqYENP/btsPFE0onAz/UGuTgHgak4JY73yHtWQl20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqYENP/btsPFE0onAz/UGuTgHgak4JY73yHtWQl20/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqYENP/btsPFE0onAz/UGuTgHgak4JY73yHtWQl20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqYENP%2FbtsPFE0onAz%2FUGuTgHgak4JY73yHtWQl20%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;1722&quot; height=&quot;532&quot; data-origin-width=&quot;1722&quot; data-origin-height=&quot;532&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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style5&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;</description>
      <category>인프라/AWS 3Tier Architecture</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/157</guid>
      <comments>https://kujung.tistory.com/entry/AWS-3-Tier-Architecture-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B0-1-1#entry157comment</comments>
      <pubDate>Sat, 2 Aug 2025 23:03:20 +0900</pubDate>
    </item>
    <item>
      <title>[k8s] Application 기능으로 이해하기-PVC/PV, Deployment, Service, HPA</title>
      <link>https://kujung.tistory.com/entry/k8s-Application-%EA%B8%B0%EB%8A%A5%EC%9C%BC%EB%A1%9C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-PVCPV-Deployment-Service-HPA</link>
      <description>&lt;p data-end=&quot;382&quot; data-start=&quot;238&quot; data-ke-size=&quot;size16&quot;&gt;Kubernetes는 다양한 리소스를 통해 컨테이너 기반 애플리케이션을 유연하게 관리합니다. 하지만 처음 접하면 각각의 개념이 따로 노는 것처럼 느껴질 수 있죠. 이 글에서는 &lt;b&gt;기능 관점&lt;/b&gt;에서 Kubernetes의 핵심 리소스들을 연결 지어 설명해볼게요.&lt;/p&gt;
&lt;hr data-end=&quot;387&quot; data-start=&quot;384&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;428&quot; data-start=&quot;389&quot; data-ke-size=&quot;size26&quot;&gt;PVC &amp;amp; PV: 애플리케이션이 데이터를 저장하는 공간&lt;/h2&gt;
&lt;p data-end=&quot;569&quot; data-start=&quot;430&quot; data-ke-size=&quot;size16&quot;&gt;컨테이너는 기본적으로 휘발성입니다. 재시작하거나 재배포되면 내부 데이터가 사라지죠. 이럴 때 **Persistent Volume(PV)**와 **Persistent Volume Claim(PVC)**을 사용하면 안정적인 저장소를 확보할 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;748&quot; data-start=&quot;571&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;663&quot; data-start=&quot;571&quot;&gt;&lt;b&gt;PV (PersistentVolume)&lt;/b&gt;&lt;br /&gt;클러스터에서 미리 만들어 놓은 물리적 또는 가상 저장소입니다. (예: NFS, AWS EBS, Ceph 등)&lt;/li&gt;
&lt;li data-end=&quot;748&quot; data-start=&quot;665&quot;&gt;&lt;b&gt;PVC (PersistentVolumeClaim)&lt;/b&gt;&lt;br /&gt;사용자가 필요한 스토리지의 용량과 접근 모드를 정의해 PV를 요청하는 객체입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;760&quot; data-start=&quot;750&quot; data-ke-size=&quot;size16&quot;&gt;비유하면,&lt;/p&gt;
&lt;blockquote data-end=&quot;854&quot; data-start=&quot;761&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;854&quot; data-start=&quot;763&quot; data-ke-size=&quot;size16&quot;&gt;PV는 &quot;빈 창고&quot;, PVC는 &quot;이런 창고가 필요해요!&quot;라고 요청하는 양식입니다.&lt;br /&gt;PVC를 내면 Kubernetes가 조건에 맞는 PV를 찾아 연결해줍니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;테스트 환경에서 통상 노드를 임시 스토리지 볼륨으로 많이 사용합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이때&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;hostPath&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 쓰거나&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;PV&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;의&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;local&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;속성을 쓰는데, 그러다보니 이 기능들이&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;임시저장 용도&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;인줄&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;오해&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하는 사람들이 많아요.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;PVC, PV&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1264&quot; data-origin-height=&quot;634&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SMmrM/btsOZUQGV4O/R2kGklMGOkHWKqewevNfc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SMmrM/btsOZUQGV4O/R2kGklMGOkHWKqewevNfc0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SMmrM/btsOZUQGV4O/R2kGklMGOkHWKqewevNfc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSMmrM%2FbtsOZUQGV4O%2FR2kGklMGOkHWKqewevNfc0%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;1264&quot; height=&quot;634&quot; data-origin-width=&quot;1264&quot; data-origin-height=&quot;634&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; 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;886&quot; data-origin-height=&quot;322&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/F153E/btsOZidF1vV/9fkIsJln00Lgz0cNcTVU3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/F153E/btsOZidF1vV/9fkIsJln00Lgz0cNcTVU3K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/F153E/btsOZidF1vV/9fkIsJln00Lgz0cNcTVU3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FF153E%2FbtsOZidF1vV%2F9fkIsJln00Lgz0cNcTVU3K%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;886&quot; height=&quot;322&quot; data-origin-width=&quot;886&quot; data-origin-height=&quot;322&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이번엔 볼륨에 Secret이 아닌 PVC를 연결합니다. 그러면 PVC에&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;resource, accessModes&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;와 같은 속성이 있고 PV에도 비슷한 내용이 있는데, 이번 강의에서는 이 내용이&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실제 볼륨 속성으로 적용되지는 않아요. 필수 값이라서 넣은 것.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;근데 쓰이진 않더라도 이&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;두 속성이 같은 값으로 들어가져 있긴 해야되요&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. 현재 이 두 오브젝트는 selector랑 label로 연결이 되어 있지만, 두 속성의 내용이 같지 않으면 연결이 안되거든요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; 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;272&quot; data-origin-height=&quot;352&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biWzAN/btsOYNFeR87/KunCbB3DGkwtksXsurDvBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biWzAN/btsOYNFeR87/KunCbB3DGkwtksXsurDvBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biWzAN/btsOYNFeR87/KunCbB3DGkwtksXsurDvBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiWzAN%2FbtsOYNFeR87%2FKunCbB3DGkwtksXsurDvBk%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;272&quot; height=&quot;352&quot; data-origin-width=&quot;272&quot; data-origin-height=&quot;352&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이제 본격적으로 배울 내용으로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;local&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이라는 속성이 있고, 내용으로는 path가 들어가는데 이 속성이 어떻게 노드를 스토리지로 사용할 수 있게 되는지 설명을 드릴게요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;local을 쓰면&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;필수로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;nodeAffinity라는 속성을 꼭 사용&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하게 되어 있고, 이게 어느 노드에 Pod를 생성 할 건지를 정하는 속성인데 좀 복잡해 보일순 있지만, PV의 local을 쓸 때, 사용하는 루틴이라고 생각을 하시고 색이 있는 내용만 잘 보면 어떻게 쓰는지 직관적으로 알 수가 있죠.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; 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;930&quot; data-origin-height=&quot;542&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SPLPL/btsOZWuf3lR/kvICXDnP6OcW5c8pMTks9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SPLPL/btsOZWuf3lR/kvICXDnP6OcW5c8pMTks9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SPLPL/btsOZWuf3lR/kvICXDnP6OcW5c8pMTks9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSPLPL%2FbtsOZWuf3lR%2FkvICXDnP6OcW5c8pMTks9k%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;930&quot; height=&quot;542&quot; data-origin-width=&quot;930&quot; data-origin-height=&quot;542&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;우리가 마스터 노드를 만들 때, 기본적으로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Node라는 오브젝트&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가 만들어지고&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;label이 달려 있어요&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. 만약에 여러 워커노드를 만든다면, 각각 label이 달려 있을 거구요. 이&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;nodeAffinity 속성&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 있는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;PV에 연결된&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Pod는 이 노드 위에 만들어지게 됩니다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;테스트 환경에서 별도의 스토리지를 구축하기가 번거롭기 때문에 쿠버네티스 노드중에 한 곳을 임시 스토리지로 정해놓고 쓰는거고 쿠버네티스가 노드의 path와 컨테이너 path를 연결을 해줘요. 그리고 마스터 노드의 이 path를 만들어 놓고 Pod가 다른 노드에 생성되면 안되니까 nodeAffinity라는 속성이 꼭 필요합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; 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;947&quot; data-origin-height=&quot;443&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdMEWj/btsOZdwFIaf/T62YK4IrRXx4ddL9HluDaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdMEWj/btsOZdwFIaf/T62YK4IrRXx4ddL9HluDaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdMEWj/btsOZdwFIaf/T62YK4IrRXx4ddL9HluDaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdMEWj%2FbtsOZdwFIaf%2FT62YK4IrRXx4ddL9HluDaK%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;947&quot; height=&quot;443&quot; data-origin-width=&quot;947&quot; data-origin-height=&quot;443&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그리고&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;근본적으로&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;이렇게 PVC와 PV를 써서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;별도의 스토리지 공간을 만들어 놔야 되는 이유&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는, App이 컨테이너 안에다가만 파일을 저장해 놓으면&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Pod가 죽었을 때, 파일도 같이 삭제&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가 되서 그래요. 물론 그래도되는 임시파일이면 상관이 없는데 영구적으로 보관해야 되는 파일이면 Pod가 죽었다 다시 만들어지더라도 기존의 파일들을 그대로 볼 수 있어야 겠죠?&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그래서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;PVC, PV를 사용하면&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;컨테이너 path 에다가 파일을 만들면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실제 파일은 노드에 저장&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 되고 이 파일은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Pod가 죽더라도 데이터는 유지&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가 되기 때문에 새 Pod가 만들어지면 쿠버네티스가 기존과 똑같이 path를 연결하고 새로 만들어진 App은 기존의 파일들을 그대로 볼 수가 있게 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; 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;1215&quot; data-origin-height=&quot;420&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n4YAB/btsOZTYKU67/PkHe8FVNAKYkI5b5TSFlJ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n4YAB/btsOZTYKU67/PkHe8FVNAKYkI5b5TSFlJ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n4YAB/btsOZTYKU67/PkHe8FVNAKYkI5b5TSFlJ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn4YAB%2FbtsOZTYKU67%2FPkHe8FVNAKYkI5b5TSFlJ1%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;1215&quot; height=&quot;420&quot; data-origin-width=&quot;1215&quot; data-origin-height=&quot;420&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;사실 PVC와 PV를 설명 드리려고 이 속성을 쓴 거지&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;더 쉬운 방법&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 있어요!&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;바로 Pod에 볼륨으로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;hostPath&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;라는 속성을 쓰는 건데, 이렇게&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;똑같이 path를 지정할 수 있는 내용&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 있고요.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Pod에 nodeSelector라는 속성을 주면 똑같이 노드를 지정&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;할 수가 있거든요. 그래서 이렇게 쓰는게 더 간결하기도 하고 더 많이 써요&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; 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;785&quot; data-origin-height=&quot;168&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dc7u4G/btsO0zecO76/xKxkF39PFvikXJwFEsp5F0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dc7u4G/btsO0zecO76/xKxkF39PFvikXJwFEsp5F0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dc7u4G/btsO0zecO76/xKxkF39PFvikXJwFEsp5F0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdc7u4G%2FbtsO0zecO76%2FxKxkF39PFvikXJwFEsp5F0%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;785&quot; height=&quot;168&quot; data-origin-width=&quot;785&quot; data-origin-height=&quot;168&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;주의사항&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이건 쿠버네티스 문서 내용을 그대로 가지고 온 거고요. 이렇게&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[가능하면 hostPath를 사용하지 않는 게 좋다]&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;라는 경고가 있거든요. 테스트용으로 쓰기 편해서 이 속성을 저장 용도 라고 생각하기 쉬운데,&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;원래는 노드에 있는 정보를 App이 조회하는 용도&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;로 쓰는 거에요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; 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;748&quot; data-origin-height=&quot;544&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dp0w1h/btsO0ujOG4Z/Pb3Tc3zw3mAF1Wa3apjoW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dp0w1h/btsO0ujOG4Z/Pb3Tc3zw3mAF1Wa3apjoW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dp0w1h/btsO0ujOG4Z/Pb3Tc3zw3mAF1Wa3apjoW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdp0w1h%2FbtsO0ujOG4Z%2FPb3Tc3zw3mAF1Wa3apjoW0%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;748&quot; height=&quot;544&quot; data-origin-width=&quot;748&quot; data-origin-height=&quot;544&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예를 들어, 우리가 지금까지 Grafana에서 Loki를 통해서 모든 App들의 로그를 봤었잖아요? 실제 Pod들의 log는 노드에 이 path로 저장이 되고 있고, Loki의 promtail이라는 Pod가 hostPath로 이 경로를 조회하고 있었기 때문에 우리는 모든 Pod의 log들을 Loki를 통해서 볼 수 있었던 거예요. 그래서 여기에 필요한 파일 또는 디렉토리 범위만 정하고 ReadOnly로 마운팅 하라고 써있는 거구요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그래서 hostPath는 노드의 정보를 이용해야 되는 기능의 App인 경우에 사용하라는 거고, 그래도 테스트 환경에서는 간단하게 쓸 스토리지가 있으면 편하기 때문에 임시 저장용으로 많이 써요&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; 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;837&quot; data-origin-height=&quot;369&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VDF7r/btsOYP30yr5/aJbMKuFTSzGYBZbisk7Uz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VDF7r/btsOYP30yr5/aJbMKuFTSzGYBZbisk7Uz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VDF7r/btsOYP30yr5/aJbMKuFTSzGYBZbisk7Uz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVDF7r%2FbtsOYP30yr5%2FaJbMKuFTSzGYBZbisk7Uz1%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;837&quot; height=&quot;369&quot; data-origin-width=&quot;837&quot; data-origin-height=&quot;369&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;쿠버네티스 개념적으로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Pod를 만드는 주체는 개발자&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예요. 볼륨 솔루션들에는 여러가지가 있고 각각의 기능에 따라서 써야되는 속성도 달라지기 때문에, 개발자가 Pod를 만들면서 이것까지 신경쓰는건 좀 아니라고 생각을 한거죠. 그래서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;인프라 담당자가 볼륨 솔루션들을 관리하는 컨셉으로 PV라는 오브젝트를 만드는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;거고요.&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;PVC는 Pod에서 필요한 자원을 요청하는 용도로 개발자&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가 만드는데, 이렇게 인터페이스 역할을 해주는 게 있어야지 PV 에 솔루션이 변경되더라도 Pod까지 손을 대는 일은 없어지게 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그래서 PVC와 PV라는 오브젝트가 있는 건데, 현재는 모두가 쿠버네티스를 다 아는 게 아니기 때문에 개발자와 인프라 담당자 할 것 없이&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그냥 쿠버네티스를 아는 사람이 다 하고 있어서 이런 컨셉이 와닿지는 않을 거예요 :)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-start=&quot;861&quot; data-end=&quot;896&quot; data-ke-size=&quot;size26&quot;&gt;2. Deployment: 애플리케이션 실행의 설계도&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-start=&quot;898&quot; data-end=&quot;1022&quot; data-ke-size=&quot;size16&quot;&gt;컨테이너 이미지를 그냥 실행할 수도 있지만, 실제 운영 환경에서는 신뢰성 있게&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;배포&lt;/b&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;재시작&lt;/b&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;롤백&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등을 자동으로 처리해줄 무언가가 필요하죠.&lt;br /&gt;그 역할을 하는 게 바로 Deployment입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot; data-start=&quot;1024&quot; data-end=&quot;1086&quot;&gt;
&lt;li data-start=&quot;1024&quot; data-end=&quot;1048&quot;&gt;원하는 수의 Pod을 유지하도록 보장&lt;/li&gt;
&lt;li data-start=&quot;1049&quot; data-end=&quot;1068&quot;&gt;변경 시 롤링 업데이트 지원&lt;/li&gt;
&lt;li data-start=&quot;1069&quot; data-end=&quot;1086&quot;&gt;장애 시 자동으로 새로 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1751357601775&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-deploy
spec:
  replicas: 3
  template:
    spec:
      containers:
        - name: web
          image: myapp:latest&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;Deployment&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1213&quot; data-origin-height=&quot;583&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/C79ua/btsOYNSKo7Q/qLJlxGqKlrKxdgVo20jAN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/C79ua/btsOYNSKo7Q/qLJlxGqKlrKxdgVo20jAN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/C79ua/btsOYNSKo7Q/qLJlxGqKlrKxdgVo20jAN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FC79ua%2FbtsOYNSKo7Q%2FqLJlxGqKlrKxdgVo20jAN1%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;1213&quot; height=&quot;583&quot; data-origin-width=&quot;1213&quot; data-origin-height=&quot;583&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;RollingUpdate만을 가지고 Recreate와 Blue/Green에 가까운 효과를 낼 수가 있습니다. 강의 영상에서 저도 종종 사용하는 방법을 공유 드려요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;1348&quot; data-start=&quot;1320&quot; data-ke-size=&quot;size26&quot;&gt;3. Service: 외부와의 연결 통로&lt;/h2&gt;
&lt;p data-end=&quot;1420&quot; data-start=&quot;1350&quot; data-ke-size=&quot;size16&quot;&gt;Pod은 IP가 계속 바뀌기 때문에 직접 접근하기 어렵습니다. 이때 &lt;b&gt;Service&lt;/b&gt;를 통해 안정적인 접근점을 제공합니다.&lt;/p&gt;
&lt;h3 data-end=&quot;1431&quot; data-start=&quot;1422&quot; data-ke-size=&quot;size23&quot;&gt;주요 기능&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1525&quot; data-start=&quot;1432&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1473&quot; data-start=&quot;1432&quot;&gt;내부 혹은 외부 클라이언트가 특정 포트를 통해 애플리케이션에 접근 가능&lt;/li&gt;
&lt;li data-end=&quot;1506&quot; data-start=&quot;1474&quot;&gt;Pod의 IP가 바뀌어도 항상 고정된 DNS 주소 제공&lt;/li&gt;
&lt;li data-end=&quot;1525&quot; data-start=&quot;1507&quot;&gt;여러 Pod에 로드밸런싱 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1751357638874&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: Service
metadata:
  name: web-service
spec:
  selector:
    app: web
  ports:
    - port: 80
      targetPort: 8080&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;Service&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1230&quot; data-origin-height=&quot;566&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cyiLD9/btsOY6Eumtw/1KvkkgHym1tpskcb2yGgS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cyiLD9/btsOY6Eumtw/1KvkkgHym1tpskcb2yGgS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cyiLD9/btsOY6Eumtw/1KvkkgHym1tpskcb2yGgS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcyiLD9%2FbtsOY6Eumtw%2F1KvkkgHym1tpskcb2yGgS0%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;1230&quot; height=&quot;566&quot; data-origin-width=&quot;1230&quot; data-origin-height=&quot;566&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;쿠버네티스에서 Service에 대한 개념을 잡는게 가장 어려운데, 이유는 이 Service가 해주는 역할이 많아서 그래요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;1774&quot; data-start=&quot;1724&quot; data-ke-size=&quot;size26&quot;&gt;4. HPA (Horizontal Pod Autoscaler): 자동 확장 관리&lt;/h2&gt;
&lt;p data-end=&quot;1863&quot; data-start=&quot;1776&quot; data-ke-size=&quot;size16&quot;&gt;서비스에 트래픽이 몰릴 때, 수동으로 Pod 수를 늘리기보다 &lt;b&gt;자동으로 늘어나는 기능&lt;/b&gt;이 있으면 좋겠죠?&lt;br /&gt;바로 이걸 해주는 것이 &lt;b&gt;HPA&lt;/b&gt;입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1915&quot; data-start=&quot;1865&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1898&quot; data-start=&quot;1865&quot;&gt;CPU 또는 메모리 사용률 기준으로 Pod 수 자동 조절&lt;/li&gt;
&lt;li data-end=&quot;1915&quot; data-start=&quot;1899&quot;&gt;트래픽 감소 시 자동 축소&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1751357713051&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: web-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: web-deploy
  minReplicas: 2
  maxReplicas: 10
  metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          type: Utilization
          averageUtilization: 70&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;HPA&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1231&quot; data-origin-height=&quot;583&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnl0tI/btsO0VOLbYC/VgQzybsL40XES09K3GU0Gk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnl0tI/btsO0VOLbYC/VgQzybsL40XES09K3GU0Gk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnl0tI/btsO0VOLbYC/VgQzybsL40XES09K3GU0Gk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbnl0tI%2FbtsO0VOLbYC%2FVgQzybsL40XES09K3GU0Gk%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;1231&quot; height=&quot;583&quot; data-origin-width=&quot;1231&quot; data-origin-height=&quot;583&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;CPU에 대한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[이상적인 스케일링]&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그래프는 사실 &quot;쿠버네티스를 쓰면 자동으로 스케일링도 해주고 좋아요&quot;라는 홍보를 할 때나 볼 수 있는 내용입니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #00a760;&quot;&gt;해당 블로그 내용은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #00a760;&quot;&gt;[쿠버네티스 어나더 클래스]&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #00a760;&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;인프런&amp;nbsp;&lt;/span&gt;강의를 정리한 것입니다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: unset;&quot;&gt;&lt;span style=&quot;color: #343a40;&quot;&gt;강의 링크 :&lt;/span&gt;&lt;span style=&quot;color: #00a760;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://inf.run/NzKy&quot;&gt;https://inf.run/NzKy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>인프라/쿠버네티스</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/156</guid>
      <comments>https://kujung.tistory.com/entry/k8s-Application-%EA%B8%B0%EB%8A%A5%EC%9C%BC%EB%A1%9C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-PVCPV-Deployment-Service-HPA#entry156comment</comments>
      <pubDate>Thu, 3 Jul 2025 18:08:48 +0900</pubDate>
    </item>
    <item>
      <title>[k8s]Application 기능으로 이해하기 - Configmap, Secret</title>
      <link>https://kujung.tistory.com/entry/k8sApplication-%EA%B8%B0%EB%8A%A5%EC%9C%BC%EB%A1%9C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-Configmap-Secret</link>
      <description>&lt;p data-end=&quot;304&quot; data-start=&quot;162&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;304&quot; data-start=&quot;162&quot; data-ke-size=&quot;size16&quot;&gt;애플리케이션을 Kubernetes 위에 올려 운영하다 보면, 외부 설정 값이나 민감한 정보를 컨테이너 내부에 직접 하드코딩하지 않고 전달해야 하는 상황이 많습니다. 이때 유용하게 사용하는 리소스가 바로 &lt;b&gt;ConfigMap&lt;/b&gt;과 &lt;b&gt;Secret&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-end=&quot;378&quot; data-start=&quot;306&quot; data-ke-size=&quot;size16&quot;&gt;이 둘은 기능이 비슷해 보이지만, 목적과 사용 방식에 약간의 차이가 있습니다. 각각 어떤 역할을 하고 어떻게 쓰는지 정리해볼게요.&lt;/p&gt;
&lt;hr data-end=&quot;383&quot; data-start=&quot;380&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;430&quot; data-start=&quot;385&quot; data-ke-size=&quot;size26&quot;&gt;ConfigMap: 환경 설정을 위한 일반적인 Key-Value 저장소&lt;/h2&gt;
&lt;p data-end=&quot;554&quot; data-start=&quot;432&quot; data-ke-size=&quot;size16&quot;&gt;ConfigMap은 &lt;b&gt;애플리케이션이 필요로 하는 설정 값들을 외부에서 주입하기 위한 리소스&lt;/b&gt;입니다.&lt;br /&gt;예를 들어, DB 연결 정보(host, port), 외부 API 주소, 기능 플래그 등을 담는 데 사용하죠.&lt;/p&gt;
&lt;h3 data-end=&quot;565&quot; data-start=&quot;556&quot; data-ke-size=&quot;size23&quot;&gt;주요 특징&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;650&quot; data-start=&quot;566&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;589&quot; data-start=&quot;566&quot;&gt;Key-Value 쌍으로 데이터를 저장&lt;/li&gt;
&lt;li data-end=&quot;613&quot; data-start=&quot;590&quot;&gt;민감하지 않은 정보를 저장하는 데 적합&lt;/li&gt;
&lt;li data-end=&quot;650&quot; data-start=&quot;614&quot;&gt;환경 변수, 커맨드라인, 마운트 방식으로 컨테이너에 주입 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1751356567937&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  DB_HOST: mysql-service
  DB_PORT: &quot;3306&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-end=&quot;808&quot; data-start=&quot;779&quot; data-ke-size=&quot;size26&quot;&gt;Secret: 민감한 정보를 안전하게 관리&lt;/h2&gt;
&lt;p data-end=&quot;942&quot; data-start=&quot;810&quot; data-ke-size=&quot;size16&quot;&gt;Secret은 이름 그대로 &lt;b&gt;비밀번호, 인증 토큰, TLS 인증서 등 민감한 데이터&lt;/b&gt;를 관리하기 위한 리소스입니다.&lt;br /&gt;ConfigMap과 구조는 비슷하지만, base64로 인코딩된 형태로 저장되며 접근 제어가 좀 더 엄격합니다.&lt;/p&gt;
&lt;h3 data-end=&quot;953&quot; data-start=&quot;944&quot; data-ke-size=&quot;size23&quot;&gt;주요 특징&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1030&quot; data-start=&quot;954&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;980&quot; data-start=&quot;954&quot;&gt;민감한 정보를 base64로 인코딩하여 저장&lt;/li&gt;
&lt;li data-end=&quot;999&quot; data-start=&quot;981&quot;&gt;RBAC으로 접근을 제한 가능&lt;/li&gt;
&lt;li data-end=&quot;1030&quot; data-start=&quot;1000&quot;&gt;컨테이너 내에 환경 변수나 볼륨 마운트로 전달 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1751356591927&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: Secret
metadata:
  name: db-secret
type: Opaque
data:
  username: YWRtaW4=   # base64 인코딩된 'admin'
  password: c2VjcmV0   # base64 인코딩된 'secret'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ConfigMap과 Secret 생성 예&lt;/p&gt;
&lt;pre id=&quot;code_1751356718611&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;kubectl create configmap app-config --from-literal=DB_HOST=mysql
kubectl create secret generic db-secret --from-literal=username=admin --from-literal=password=secret&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Deployment에 주입 예&lt;/p&gt;
&lt;pre id=&quot;code_1751356727100&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;env:
- name: DB_HOST
  valueFrom:
    configMapKeyRef:
      name: app-config
      key: DB_HOST
- name: DB_USER
  valueFrom:
    secretKeyRef:
      name: db-secret
      key: username&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;h3 style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;Configmap, Secret 개념 설명&lt;/span&gt;&lt;/h3&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;889&quot; data-origin-height=&quot;209&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dHLvrh/btsO0tynEji/tUWKdaFQNmN5vJMKs6rRkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dHLvrh/btsO0tynEji/tUWKdaFQNmN5vJMKs6rRkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dHLvrh/btsO0tynEji/tUWKdaFQNmN5vJMKs6rRkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdHLvrh%2FbtsO0tynEji%2FtUWKdaFQNmN5vJMKs6rRkk%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;889&quot; height=&quot;209&quot; data-origin-width=&quot;889&quot; data-origin-height=&quot;209&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Configmap과 Secret은 Pod에 바로 연결되고요. Object에 속성들을 보면 둘 다 데이터를 담을 수 있어요. 그래서 사용자가 데이터를 넣고 Pod에 값을 주입 시킬 수가 있는데, Pod에 연결되는 속성 이름을 보면 어떤 방식으로 들어가는지 알 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;envFrom은 Pod안에 환경변수로 들어가게 하는 속성&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이고, 그래서 Configmap을 연결하고 Pod 안에 들어가서 env라는 명령을 쳐보면, 이 Configmap의 data가 주입 된 걸 볼 수가 있어요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Volume은 Pod와 특정 저장소를 연결하는 속성&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이고, Secret을 연결하고 Pod 안에 들어가서 마운팅 된 Path를 조회해보면, 이 Secret의 stringData가 있는 걸 볼 수가 있고요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;특별히 어려운 내용은 없죠?&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아무리 처음 쿠버네티스를 공부하시는 분이더라도 환경변수와 마운팅의 개념은 기존에도 써왔기 때문에 쉽게 이해할 수 있어요. 그리고 Secret은 이름 부터가 뭔가 비밀스럽게 데이터를 처리해 줄 것 같은 느낌이 있으니까. 쿠버네티스에서 데이터에 어느 정도 보안을 적용해주는 가보다 생각할 수 있죠.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;Configmap 기능 설명&lt;/span&gt;&lt;/h3&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1209&quot; data-origin-height=&quot;497&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c9QvqH/btsO0Wtjk9w/lxQxwUfzUEdGgaUErx4PD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c9QvqH/btsO0Wtjk9w/lxQxwUfzUEdGgaUErx4PD1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c9QvqH/btsO0Wtjk9w/lxQxwUfzUEdGgaUErx4PD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc9QvqH%2FbtsO0Wtjk9w%2FlxQxwUfzUEdGgaUErx4PD1%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;1209&quot; height=&quot;497&quot; data-origin-width=&quot;1209&quot; data-origin-height=&quot;497&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Configmap의 데이터가&amp;nbsp; Pod에 환경변수&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;로 들어간다고 얘기했는데, 환경변수에 들어가는 값은 다양하고요. Data에 내용을 보면 Key, Value 형식으로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;spring-profiles-active에 dev&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가 있죠? 환경 변수로 흔히 들어가는 값인데, 인프라에 다양한 환경 개발/검증/운영 등에 환경이 있고, 이&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;App이 어느 환경에서 돌아가는 건지&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;App이 기동되는 시점에 알려주기 위한 변수에요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다음 환경변수에는&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Application Role&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이라는게 있고. 말 그대로 이&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;App에 역할을 지정&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하는 건데, 예를 들어 한 App에 3가지 기능이 있는데,&amp;nbsp;App 하나만 띄어서 모든 기능을 다 쓰기도 하고요. 스케일링 모드라고 해서 이 App을 기능별로 3개를 띄우고 부하가 많은 기능만 별도로 더 띄워요. 요즘은 마이크로 서비스 아케텍쳐를 반영해서 이렇게 만들어진 오픈소스도 많습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;밑에&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;postgresql-filepath&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는 또 다른 예인데, 이건 여기 Secret 데이터로 연결할 파일에 경로에요. 이 경로는 Pod에 mountPath에서 정하거든요. 그리고 이 경로 DB 정보를 환경변수로 주면, App은 기동 될 때 이걸 읽어서 DB에 접속할 수 있도록 로직이 되있는데, 이 경로를 이렇게 환경변수로 입력해야 Pod에서 이 경로를 바꾸게 됐을 때 App을 다시 빌드해서 새 이미지를 만들지 않고, Configmap만 수정해서 App이 변경된 경로를 인식할 수 있도록 할 수 있겠죠?&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이렇게&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;외부에 변경되는 환경이 생길 때, 그걸 App에 전달해 주기 위한 값&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;들도 있는거고, App 내부적으로 기동되는 시점에 이 환경변수 값에 따라 다르게 처리되는 로직이 있어야 되요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자 그럼 이제 이 내용을 Pod랑 연결을 하고&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Pod가 생성됐을 때&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;상황을 얘기 해볼께요. 처음에&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Configmap에 있는 data&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;의 모든 내용이&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;컨테이너 내부 환경에 환경변수로 주입&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 됩니다. 그리고 이 이미지를 만들 때 이런 자바파일 실행 명령을 넣어놨거든요. 이미지를 만드는건 sprint2에서 배울꺼고 이 명령이 컨테이너 생성 후에 자동으로 동작하게 되고, 이때 환경변수 값이 들어가는데, 만약에 환경변수로 spring-profiles-active가 없었다면 null값이 들어가게 되요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;Secret 기능 설명&lt;/span&gt;&lt;/h3&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1209&quot; data-origin-height=&quot;497&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsvWMe/btsO0UI11b6/5v9Utmu82s6g909YZsPpi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsvWMe/btsO0UI11b6/5v9Utmu82s6g909YZsPpi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsvWMe/btsO0UI11b6/5v9Utmu82s6g909YZsPpi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsvWMe%2FbtsO0UI11b6%2F5v9Utmu82s6g909YZsPpi0%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;1209&quot; height=&quot;497&quot; data-origin-width=&quot;1209&quot; data-origin-height=&quot;497&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;동작 확인&lt;/span&gt;&lt;/h3&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1209&quot; data-origin-height=&quot;497&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XK24Z/btsOY3VkgVj/OPzZhRDEbZk5hTodn2tDMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XK24Z/btsOY3VkgVj/OPzZhRDEbZk5hTodn2tDMK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XK24Z/btsOY3VkgVj/OPzZhRDEbZk5hTodn2tDMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXK24Z%2FbtsOY3VkgVj%2FOPzZhRDEbZk5hTodn2tDMK%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;1209&quot; height=&quot;497&quot; data-origin-width=&quot;1209&quot; data-origin-height=&quot;497&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;영역 파괴의 주범 ConfigMap&lt;/span&gt;&lt;/h3&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1209&quot; data-origin-height=&quot;588&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dyA3Ua/btsO0NXuQt2/GbIghNwjXTJtPkGBn7zvH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dyA3Ua/btsO0NXuQt2/GbIghNwjXTJtPkGBn7zvH1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dyA3Ua/btsO0NXuQt2/GbIghNwjXTJtPkGBn7zvH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdyA3Ua%2FbtsO0NXuQt2%2FGbIghNwjXTJtPkGBn7zvH1%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;1209&quot; height=&quot;588&quot; data-origin-width=&quot;1209&quot; data-origin-height=&quot;588&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기존 VM환경이랑 쿠버네티스 환경의 배포 차이를 보면서 영역 파괴의 주범인 ConfigMap에 대한 얘기를 해볼께요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; 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;648&quot; data-origin-height=&quot;364&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xFRGI/btsO0IB4Ui0/CInMyza5USQnPN5fhoGrpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xFRGI/btsO0IB4Ui0/CInMyza5USQnPN5fhoGrpk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xFRGI/btsO0IB4Ui0/CInMyza5USQnPN5fhoGrpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxFRGI%2FbtsO0IB4Ui0%2FCInMyza5USQnPN5fhoGrpk%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;648&quot; height=&quot;364&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;364&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;각 환경마다 Pod가 만들어지고, 이 Pod에 들어가는 컨테이너는 dockerhub에서 모두 같은 이미지를 다운 받았어요. 하지만 환경마다 다른 값을 주려고 각각에 Configmap을 만들죠. 그리고 이미지 안에 변수값을 받아서 실행하는 명령어가 들어 있어요.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;324&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cnGA7y/btsOZYldSMM/zizq9dVK7dnjutJlaDKxV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cnGA7y/btsOZYldSMM/zizq9dVK7dnjutJlaDKxV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cnGA7y/btsOZYldSMM/zizq9dVK7dnjutJlaDKxV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcnGA7y%2FbtsOZYldSMM%2Fzizq9dVK7dnjutJlaDKxV1%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;480&quot; height=&quot;324&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;324&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이제 개발환경을 보면 이렇게 spring으로 개발을 하고&amp;nbsp;여기서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[개발자]&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Properties 파일들이 만들고 관리&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 해요. 그리고&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Github로 소스를 커밋&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하면, 여기서부터는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[데브옵스 엔지니어]&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Jenkins&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;에서 이 소스를 받아서&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;파이프라인을 구성&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하는데,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;소스 빌드&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;와&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;컨테이너 빌드&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;과정에서&amp;nbsp;컨테이너 이미지가 도커 허브로 올라가요. 그리고 컨테이너 빌드 후에 개발환경을 바로 이어서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;배포&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 할 수 있고, qa와 prod는 필요할 때 배포 버튼을 따로 누르게 구성해 놨다고 해보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; 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;810&quot; data-origin-height=&quot;293&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bj4WHn/btsO0Fk7gtB/m9wk2SDy2Mzu0ltYEfpYfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bj4WHn/btsO0Fk7gtB/m9wk2SDy2Mzu0ltYEfpYfk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bj4WHn/btsO0Fk7gtB/m9wk2SDy2Mzu0ltYEfpYfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbj4WHn%2FbtsO0Fk7gtB%2Fm9wk2SDy2Mzu0ltYEfpYfk%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;810&quot; height=&quot;293&quot; data-origin-width=&quot;810&quot; data-origin-height=&quot;293&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그럼 VM 환경의 배포는 어떤지 보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;개발 환경과 CI/CD 환경은 비슷하고,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[인프라 담당자]&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;환경별로 서버를 세팅&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;해 놓습니다. 각 환경별로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;OpenJDK도 설치&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;해 놓고요. 이 과정에서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;VM 내부에서 사용할 환경변수들을 관리&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 하죠.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; 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;816&quot; data-origin-height=&quot;309&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FrhCU/btsO0fmICdO/q2NKcJeBckRvle8NUKdkB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FrhCU/btsO0fmICdO/q2NKcJeBckRvle8NUKdkB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FrhCU/btsO0fmICdO/q2NKcJeBckRvle8NUKdkB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFrhCU%2FbtsO0fmICdO%2Fq2NKcJeBckRvle8NUKdkB1%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;816&quot; height=&quot;309&quot; data-origin-width=&quot;816&quot; data-origin-height=&quot;309&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그리고 배포는 이렇게 되는데,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Jar 패키지 파일을 VM 환경에 복사&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;해놓고,&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실행 명령&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;을 직접 날리는데 이때&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[데브옵스 관리자]&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;App에 환경이나 목적에 맞는 변수&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 넣어요. 그리고 환경이나 목적에 맞게 변수값이 채워진 스크립트를 실행시킵니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그래서 여기까지 보면 쿠버네티스 환경&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이전에는&amp;nbsp;각자의 영역에서 담당자들이 관리하는 환경변수&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;들이 있었는데,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;쿠버네티스가 나오고 이 ConfigMap에서 모든 역할&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;을 다 할 수가 있게 된 거죠. 그래서 ConfigMap을 담당하는 사람이 다른 영역을 넘나들 수 있게 되고 이런 소지를 주는 Configmap을 좀 과격한 표현으로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;영역 파괴의 주범&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이라고 표현을 한 건데.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;물론 이 전체를 혼자 다하는 슈퍼 개발자도 있겠지만, 프로젝트가 클 수록 각 영역에 담당자들이 있고요. 현재 이 모두가 쿠버네티스를 다 다룰 줄 아는게 아니기 때문에 만약 개발자가 쿠버네티스를 잘하면, 이 Properties 값들 중에 Pod를 재생성하기만 하면, 다시 빌드하지 않고 바로 반영될 수 있는 값들을 많이 집어넣겠죠? 그러다가 다른 영역에 있는 값들도 넣으면서 일을 주도하게 될꺼예요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하지만 다른 담당자 입장에서는 본인의 영역을 침범 당한다고 생각할 수 있는데, 참 별거 아닌 기능이지만, 여러 영역에 걸쳐 있는 기능이기 때문에 의견을 잘 조율을 해서 써야 되는 점 주의하시길 바랄께요&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;해당&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;&lt;a href=&quot;https://inf.run/NzKy&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://inf.run/NzKy&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>인프라/쿠버네티스</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/155</guid>
      <comments>https://kujung.tistory.com/entry/k8sApplication-%EA%B8%B0%EB%8A%A5%EC%9C%BC%EB%A1%9C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-Configmap-Secret#entry155comment</comments>
      <pubDate>Wed, 2 Jul 2025 22:48:51 +0900</pubDate>
    </item>
    <item>
      <title>[k8s] Application 기능으로 이해하기-Pod(probe)</title>
      <link>https://kujung.tistory.com/entry/k8s-Application-%EA%B8%B0%EB%8A%A5%EC%9C%BC%EB%A1%9C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-Podprobe</link>
      <description>&lt;h3 style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;Pod (probe) - 프로브 기본 개념&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Kubernetes에서는 &lt;b&gt;Pod의 상태를 주기적으로 검증&lt;/b&gt;하기 위해 probe라는 메커니즘을 사용합니다. 이 기능을 통해 컨테이너의 상태를 API 호출로 확인할 수 있어, 시스템의 가용성과 신뢰성을 높여줍니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;129&quot; data-start=&quot;116&quot; data-ke-size=&quot;size26&quot;&gt;1. Pod란?&lt;/h2&gt;
&lt;h3 data-end=&quot;141&quot; data-start=&quot;131&quot; data-ke-size=&quot;size23&quot;&gt;정의:&lt;/h3&gt;
&lt;p data-end=&quot;265&quot; data-start=&quot;142&quot; data-ke-size=&quot;size16&quot;&gt;Pod는 Kubernetes에서 &lt;b&gt;가장 작은 배포 단위&lt;/b&gt;입니다.&lt;br /&gt;1개 이상의 **컨테이너(Container)**를 감싸고 있으며, 이 컨테이너들은 **동일한 네트워크(IP)**와 &lt;b&gt;스토리지 볼륨&lt;/b&gt;을 공유합니다.&lt;/p&gt;
&lt;h3 data-end=&quot;286&quot; data-start=&quot;267&quot; data-ke-size=&quot;size23&quot;&gt;왜 Pod가 필요할까?&lt;/h3&gt;
&lt;p data-end=&quot;393&quot; data-start=&quot;287&quot; data-ke-size=&quot;size16&quot;&gt;Docker 같은 환경에서는 컨테이너 단위로 실행했지만, Kubernetes에서는 &lt;b&gt;컨테이너를 Pod로 감싸 관리&lt;/b&gt;합니다.&lt;br /&gt;&amp;rarr; 관리 단위를 컨테이너보다 한 단계 높게 만든 개념입니다.&lt;/p&gt;
&lt;h3 data-end=&quot;407&quot; data-start=&quot;395&quot; data-ke-size=&quot;size23&quot;&gt;주요 특징&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;527&quot; data-start=&quot;408&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;457&quot; data-start=&quot;408&quot;&gt;한 Pod 안의 컨테이너들은 &lt;b&gt;로컬호스트(127.0.0.1)&lt;/b&gt; 로 서로 통신 가능&lt;/li&gt;
&lt;li data-end=&quot;527&quot; data-start=&quot;458&quot;&gt;보통은 &lt;b&gt;1컨테이너 = 1Pod&lt;/b&gt;를 사용하지만, sidecar 패턴(예: log 수집기) 등으로 여러 컨테이너도 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;532&quot; data-start=&quot;529&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;549&quot; data-start=&quot;534&quot; data-ke-size=&quot;size26&quot;&gt;2. Probe란?&lt;/h2&gt;
&lt;h3 data-end=&quot;561&quot; data-start=&quot;551&quot; data-ke-size=&quot;size23&quot;&gt;정의:&lt;/h3&gt;
&lt;p data-end=&quot;687&quot; data-start=&quot;562&quot; data-ke-size=&quot;size16&quot;&gt;Probe는 &lt;b&gt;Kubernetes가 Pod 안의 컨테이너 상태를 검사하는 방법&lt;/b&gt;입니다.&lt;br /&gt;애플리케이션이 잘 &lt;b&gt;시작되었는지&lt;/b&gt;, 외부 요청을 &lt;b&gt;받을 준비가 되었는지&lt;/b&gt;, &lt;b&gt;정상 동작 중인지&lt;/b&gt;를 자동으로 확인합니다.&lt;/p&gt;
&lt;h3 data-end=&quot;179&quot; data-start=&quot;164&quot; data-ke-size=&quot;size23&quot;&gt;Probe의 종류&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;246&quot; data-start=&quot;180&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;201&quot; data-start=&quot;180&quot;&gt;&lt;b&gt;startupProbe&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;225&quot; data-start=&quot;202&quot;&gt;&lt;b&gt;readinessProbe&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;246&quot; data-start=&quot;226&quot;&gt;&lt;b&gt;livenessProbe&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1232&quot; data-origin-height=&quot;456&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/by6PaA/btsOWEtNGHi/CdtW0yrAq2zzKhmFHmbRvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/by6PaA/btsOWEtNGHi/CdtW0yrAq2zzKhmFHmbRvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/by6PaA/btsOWEtNGHi/CdtW0yrAq2zzKhmFHmbRvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fby6PaA%2FbtsOWEtNGHi%2FCdtW0yrAq2zzKhmFHmbRvK%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;1232&quot; height=&quot;456&quot; data-origin-width=&quot;1232&quot; data-origin-height=&quot;456&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; 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;531&quot; data-origin-height=&quot;198&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ShLRr/btsOVFmMBQh/N55oDDk3Hsr3pRDm9hMfJ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ShLRr/btsOVFmMBQh/N55oDDk3Hsr3pRDm9hMfJ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ShLRr/btsOVFmMBQh/N55oDDk3Hsr3pRDm9hMfJ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FShLRr%2FbtsOVFmMBQh%2FN55oDDk3Hsr3pRDm9hMfJ1%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;531&quot; height=&quot;198&quot; data-origin-width=&quot;531&quot; data-origin-height=&quot;198&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;probe에는 3가지 종류가 있고 모두 /ready라는 url을 8080포트에 10초 간격으로 날리는데, 각각 성공이랑 실패에 대한 수치는 위 그림처럼 되어있다고 가정.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;288&quot; data-start=&quot;253&quot; data-ke-size=&quot;size23&quot;&gt;1. startupProbe &amp;ndash; 시작 안정성 확인&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;409&quot; data-start=&quot;290&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;329&quot; data-start=&quot;290&quot;&gt;&lt;span&gt;Pod이 생성되면 가장 먼저 시작되어 /ready 같은 헬스 체크 API를 호출합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;369&quot; data-start=&quot;330&quot;&gt;&lt;span&gt;기본적으로 periodSeconds 간격으로 실행되며, 지정된 횟수(failureThreshold)만큼 실패하면 아직 준비되지 않은 것으로 간주합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;409&quot; data-start=&quot;370&quot;&gt;&lt;span&gt;만약 그 이전에 성공 응답이 오면 초기화가 완료된 것으로 인식하고 종료됩니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;454&quot; data-start=&quot;411&quot; data-ke-size=&quot;size23&quot;&gt;2. readinessProbe &amp;ndash; 외부 트래픽 수용 여부 판단&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;535&quot; data-start=&quot;456&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;495&quot; data-start=&quot;456&quot;&gt;&lt;span&gt;이 Probe가 성공하면 해당 컨테이너는 &lt;b&gt;서비스 요청을 받을 준비가 됐다&lt;/b&gt;고 간주되고,&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;535&quot; data-start=&quot;496&quot;&gt;&lt;span&gt;이 상태에 돌입한 이후부터는 외부 요청이 유입될 수 있게 됩니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;575&quot; data-start=&quot;537&quot; data-ke-size=&quot;size23&quot;&gt;3. livenessProbe &amp;ndash; 지속 동작 상태 확인&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;656&quot; data-start=&quot;577&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;616&quot; data-start=&quot;577&quot;&gt;&lt;span&gt;앱이 &lt;b&gt;계속해서 정상 동작 중인지&lt;/b&gt; 주기적으로 검증하고,&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;656&quot; data-start=&quot;617&quot;&gt;&lt;span&gt;지정된 횟수(failureThreshold) 만큼 실패할 경우 Kubernetes가 해당 Pod를 재시작합니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&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;1207&quot; data-origin-height=&quot;484&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cdy8fg/btsOXkuQaKS/Qz3bYIVrGOK43SHY0CnJS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cdy8fg/btsOXkuQaKS/Qz3bYIVrGOK43SHY0CnJS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cdy8fg/btsOXkuQaKS/Qz3bYIVrGOK43SHY0CnJS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcdy8fg%2FbtsOXkuQaKS%2FQz3bYIVrGOK43SHY0CnJS1%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;1207&quot; height=&quot;484&quot; data-origin-width=&quot;1207&quot; data-origin-height=&quot;484&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;컨테이너 안에 있는&amp;nbsp; App에서는 /ready라는 url이 사전에 만들어져 있어야 되고 Pod가 만들어지자마자 이 probe 기능들은 동작.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;App은 처음 기동 중인 상태&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가 있고, 이때&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;쿠버네티스가 startupProbe 기능을 동작&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;시키면서&amp;nbsp; 오브젝트 속성에 있는 대로 10초에 한 번씩 /ready라는 api를 App에 날린다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기동 중일 때는 응답을 받을 수 없으니까 계속 실패가 될꺼고&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;10번 실패하기 전에 한번이라도 응답이 오면 성공&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;으로 간주.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; 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;1206&quot; data-origin-height=&quot;485&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nttge/btsOV1QBy7X/92hbXpK60SMsdpziwfbLe0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nttge/btsOV1QBy7X/92hbXpK60SMsdpziwfbLe0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nttge/btsOV1QBy7X/92hbXpK60SMsdpziwfbLe0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fnttge%2FbtsOV1QBy7X%2F92hbXpK60SMsdpziwfbLe0%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;1206&quot; height=&quot;485&quot; data-origin-width=&quot;1206&quot; data-origin-height=&quot;485&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;startupProbe 가 성공&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하면,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;쿠버네티스는 startupProbe 기능을 중지&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;시키고&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;livenessProbe랑 readinessProbe기능을&amp;nbsp; 동작&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;시킨다. &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그리고 또 설정 한대로 두 probe는 /ready라는 api를 10초 간격으로 반복해서 날리는데 App이 살아있는 동안에는 계속&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #00a760;&quot;&gt;200 OK&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;결과를 리턴 해주면서 이&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;두 probe 동작은 반복&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;각각의 역할은 다른데,&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;readinessProbe&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는 성공했을 때&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;외부 트래픽을&amp;nbsp; Pod가 받을 수 있는 상태로&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;만들어 주면서&amp;nbsp; 서비스가 활성화 되고요.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;livenessProbe&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;app이 살아 있는지를 계속 체크&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하는 역할.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; 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;1208&quot; data-origin-height=&quot;486&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eFRnIg/btsOXIvuUZK/egMroDJcG9SZ4GdyzsDfEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eFRnIg/btsOXIvuUZK/egMroDJcG9SZ4GdyzsDfEk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eFRnIg/btsOXIvuUZK/egMroDJcG9SZ4GdyzsDfEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeFRnIg%2FbtsOXIvuUZK%2FegMroDJcG9SZ4GdyzsDfEk%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;1208&quot; height=&quot;486&quot; data-origin-width=&quot;1208&quot; data-origin-height=&quot;486&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;livenessProbe&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는 만약&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;App에 장애가 발생&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하게 되면, API는 실패를 하게 되고 설정에 따라 두 번을&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실패하게 되면 쿠버네티스는 App을 재기동&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;시킵니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;678&quot; data-start=&quot;663&quot; data-ke-size=&quot;size26&quot;&gt;실제 흐름 정리&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;902&quot; data-start=&quot;680&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;724&quot; data-start=&quot;680&quot;&gt;&lt;span&gt;&lt;b&gt;Pod 생성 &amp;rarr; startupProbe 가 먼저 실행&lt;/b&gt;, /ready 호출 시작&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;769&quot; data-start=&quot;725&quot;&gt;&lt;span&gt;앱이 초기화되지 않아 계속 실패하지만, 성공 응답이 오면 이를 종료&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;814&quot; data-start=&quot;770&quot;&gt;&lt;span&gt;이후 readinessProbe, livenessProbe가 일정 간격(periodSeconds)으로 /ready 호출&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;859&quot; data-start=&quot;815&quot;&gt;&lt;span&gt;readinessProbe가 성공하면 외부 트래픽 수용 가능&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;902&quot; data-start=&quot;860&quot;&gt;&lt;span&gt;livenessProbe 실패 시 앱 재시작 트리거&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-end=&quot;1365&quot; data-start=&quot;1346&quot; data-ke-size=&quot;size26&quot;&gt;Probe 설정 세부 팁&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1678&quot; data-start=&quot;1367&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1456&quot; data-start=&quot;1367&quot;&gt;&lt;span&gt;&lt;b&gt;startupProbe 실패로 인한 무한 재시작 회피&lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1456&quot; data-start=&quot;1415&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1456&quot; data-start=&quot;1415&quot;&gt;&lt;span&gt;초기화 시간이 길면 실패 임계치와 주기를 충분히 여유 있게 잡아야 합니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1547&quot; data-start=&quot;1458&quot;&gt;&lt;span&gt;&lt;b&gt;불필요한 재시작 방지&lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1547&quot; data-start=&quot;1506&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1547&quot; data-start=&quot;1506&quot;&gt;&lt;span&gt;readiness와 liveness의 주기를 차별화하여, 잠깐 부하가 걸릴 때 useless 리스타트를 막을 수 있습니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1678&quot; data-start=&quot;1549&quot;&gt;&lt;span&gt;&lt;b&gt;다양한 검사 방법 지원&lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1678&quot; data-start=&quot;1597&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1678&quot; data-start=&quot;1597&quot;&gt;&lt;span&gt;HTTP(GET), TCP 소켓 연결, 커맨드 실행(ExecAction) 등 probe 방식 다양화 가능&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;Pod (probe) - 실습 로그 분석&lt;/span&gt;&lt;/h3&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1241&quot; data-origin-height=&quot;614&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cXnYML/btsOXVVFjiZ/BMebVmXCz6t586vvdc8fuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cXnYML/btsOXVVFjiZ/BMebVmXCz6t586vvdc8fuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cXnYML/btsOXVVFjiZ/BMebVmXCz6t586vvdc8fuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcXnYML%2FbtsOXVVFjiZ%2FBMebVmXCz6t586vvdc8fuK%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;1241&quot; height=&quot;614&quot; data-origin-width=&quot;1241&quot; data-origin-height=&quot;614&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이제부터 실습 후 로그를 함께 분석해보자.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; 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;1280&quot; data-origin-height=&quot;513&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cd2M83/btsOYdPjRAR/rPKKa0EvphmAL8ZnCKsi8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cd2M83/btsOYdPjRAR/rPKKa0EvphmAL8ZnCKsi8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cd2M83/btsOYdPjRAR/rPKKa0EvphmAL8ZnCKsi8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcd2M83%2FbtsOYdPjRAR%2FrPKKa0EvphmAL8ZnCKsi8K%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;1280&quot; height=&quot;513&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;513&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;먼저&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;App이 초기화 되기 시작&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;했고, Spring이랑 Servlet을 초기화 과정이 있다고 하자. 다음으로 Database를 연결하는데 실제 DB가 있는 건 아니고 그냥 코드에 로그만 찍어 놓은 것이다. 그리고 이렇게&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;App이 기동되는 동안 startupProbe는 계속&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #fa5252;&quot;&gt;실패&lt;span style=&quot;color: #000000;&quot;&gt;하며&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; startupProbe가 찍히는 주기는 설정 해놓은대로 5초 간격이다. 그리고&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기동이 완료되면 startupProbe는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #00a760;&quot;&gt;성공&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;을 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; 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;1280&quot; data-origin-height=&quot;458&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uX3Dv/btsOVcko0Zf/7TajPo0gWCpCe7Kj8sGJ2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uX3Dv/btsOVcko0Zf/7TajPo0gWCpCe7Kj8sGJ2K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uX3Dv/btsOVcko0Zf/7TajPo0gWCpCe7Kj8sGJ2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuX3Dv%2FbtsOVcko0Zf%2F7TajPo0gWCpCe7Kj8sGJ2K%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;1280&quot; height=&quot;458&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;458&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;근데 이 로그들은 startupProbe가 찍히는 걸 보여드리기 위해서 임의로 코드를 구성했기 때문에 로그가 보이는 것이다. 무슨 말이냐면, 실제 App 상황에서는 쿠버네티스는 Pod가 생성되자마자 startupProbe를 작동 시키기 때문에 사실 처음부터 API는 실패 되고 있었다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이렇게 App이 기동 되기 전에는 API를 받지 못하기 때문에 실제로는 startupProbe에 로그가 찍힐 수가 없고, 만약에 Was로 tomcat을 썼다면 startupprobe가 찍히는 건 access.log 에서만 볼 수 있게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그래서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 로그는 임의로 코드를 구성한 학습적인 상황&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; 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;951&quot; data-origin-height=&quot;289&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ak2CI/btsOW7ib2Dm/uti9MdOiyAovTdHFPjIx80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ak2CI/btsOW7ib2Dm/uti9MdOiyAovTdHFPjIx80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ak2CI/btsOW7ib2Dm/uti9MdOiyAovTdHFPjIx80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAk2CI%2FbtsOW7ib2Dm%2Futi9MdOiyAovTdHFPjIx80%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;951&quot; height=&quot;289&quot; data-origin-width=&quot;951&quot; data-origin-height=&quot;289&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이제 기동이 완료&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가 됐고, [ConfigMap data is loading]은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;사용자가 App이 기동 된 후에 외부에 데이터를 가져와서 추가적으로 시스템을 초기화 시키려는 상황.&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 그리고 밑에 livenessProbe랑 readinessProbe도 찍히기 시작했다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;때&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;readinessProbe는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #fa5252;&quot;&gt;실패&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;했고,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;livenessProbe만&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #00a760;&quot;&gt;성공&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;을 했다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그림 제일 하단에&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;livenessProbe랑 readinessProbe는&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;계속 찍히고 있는데, 이제&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;둘 다&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #00a760;&quot;&gt;성공&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;을 했다. 그리고&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;호출 주기는 10초.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;근데 여기 보면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;readinessProbe가 한번&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #fa5252;&quot;&gt;실패&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 했다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이건&lt;/span&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;사용자 초기화 구간에는 readinessProbe가 실패 하도록 일부러 만든 것.&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;그래서 의도 한대로 현재 기능이 정확하게 동작을 해준 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;928&quot; data-start=&quot;909&quot; data-ke-size=&quot;size26&quot;&gt;실습&amp;middot;시나리오 기반 이해&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1147&quot; data-start=&quot;930&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;973&quot; data-start=&quot;930&quot;&gt;&lt;span&gt;&lt;b&gt;초기화 단계&lt;/b&gt;에서 startupProbe만 실행되고 실패 발생&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1017&quot; data-start=&quot;974&quot;&gt;&lt;span&gt;이후 앱이 정상 기동되면 startupProbe가 성공하고 종료&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1061&quot; data-start=&quot;1018&quot;&gt;&lt;span&gt;&lt;b&gt;ConfigMap 같은 외부 데이터를 로드&lt;/b&gt;하는 과정에서는 readinessProbe를 일부러 실패시키며 외부 요청을 차단&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1105&quot; data-start=&quot;1062&quot;&gt;&lt;span&gt;데이터 로드 완료 후 readinessProbe도 성공 &amp;rarr; 요청 수용&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1147&quot; data-start=&quot;1106&quot;&gt;&lt;span&gt;그 동안 livenessProbe는 계속 동작하며 앱의 실행 상태를 감시&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1152&quot; data-start=&quot;1149&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1171&quot; data-start=&quot;1154&quot; data-ke-size=&quot;size26&quot;&gt;왜 이렇게 구성하나?&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1298&quot; data-start=&quot;1173&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1214&quot; data-start=&quot;1173&quot;&gt;&lt;span&gt;앱 초기화 과정 중에는 &lt;b&gt;외부 요청을 받지 않는 것이 안전&lt;/b&gt;합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1256&quot; data-start=&quot;1215&quot;&gt;&lt;span&gt;완전히 초기화된 상태에서만 클라이언트 트래픽을 허용하면서,&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1298&quot; data-start=&quot;1257&quot;&gt;&lt;span&gt;동작 중 문제가 생길 경우 &lt;b&gt;자동으로 재시작할 수 있도록&lt;/b&gt; 하는 흐름이 필요합니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1339&quot; data-start=&quot;1300&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;기존에는 L4 로드밸런서나 Nginx 등을 써야 했지만, Kubernetes에서는 probe를 통해 이 모든 과정을 제어할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;1339&quot; data-start=&quot;1300&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1339&quot; data-start=&quot;1300&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1339&quot; data-start=&quot;1300&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1339&quot; data-start=&quot;1300&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;Pod (probe) - Application 동작 중심의 프로브 이해&lt;/span&gt;&lt;/h3&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1233&quot; data-origin-height=&quot;564&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cEK06b/btsOUVDenIv/VZcW4OkUFerq4Svr4Ckpw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cEK06b/btsOUVDenIv/VZcW4OkUFerq4Svr4Ckpw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cEK06b/btsOUVDenIv/VZcW4OkUFerq4Svr4Ckpw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcEK06b%2FbtsOUVDenIv%2FVZcW4OkUFerq4Svr4Ckpw1%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;1233&quot; height=&quot;564&quot; data-origin-width=&quot;1233&quot; data-origin-height=&quot;564&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;쿠버네티스는 근본적으로 Application을 편하게 관리하기 위하여 만들어 진 것이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;732&quot; data-origin-height=&quot;48&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUh1z8/btsOZRFsOTA/XUQ4yIYaNuJWVWfEuwDJrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUh1z8/btsOZRFsOTA/XUQ4yIYaNuJWVWfEuwDJrK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUh1z8/btsOZRFsOTA/XUQ4yIYaNuJWVWfEuwDJrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUh1z8%2FbtsOZRFsOTA%2FXUQ4yIYaNuJWVWfEuwDJrK%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;732&quot; height=&quot;48&quot; data-origin-width=&quot;732&quot; data-origin-height=&quot;48&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;App 초기화, User 초기화, App기동 및 App 장애처리까지 자동화를 지원한다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;Pod (probe) - API 날려보며 프로브 동작 확인하기&lt;/span&gt;&lt;/h3&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1107&quot; data-origin-height=&quot;446&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l8YGB/btsOWl8J3ct/v9cJ554xQrRpX81T7J34cK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l8YGB/btsOWl8J3ct/v9cJ554xQrRpX81T7J34cK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l8YGB/btsOWl8J3ct/v9cJ554xQrRpX81T7J34cK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl8YGB%2FbtsOWl8J3ct%2Fv9cJ554xQrRpX81T7J34cK%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;1107&quot; height=&quot;446&quot; data-origin-width=&quot;1107&quot; data-origin-height=&quot;446&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그리고 API를 날려보면서 앞에 설명한 기능들을 확인.&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;list-style-type: decimal;&quot;&gt;정상상태에서 Pod 삭제시
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;list-style-type: decimal;&quot;&gt;livenessProbe is Succeed&lt;/li&gt;
&lt;li style=&quot;list-style-type: decimal;&quot;&gt;readinessProbe is Succeed&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li style=&quot;list-style-type: decimal;&quot;&gt;바로 파드가 다시 업됨
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;list-style-type: decimal;&quot;&gt;startupProbe 는 내부적으로 실행 중 하지만 로그가 찍히는 건 나중부터&lt;/li&gt;
&lt;li style=&quot;list-style-type: decimal;&quot;&gt;스프링 애플리케이션 시작 중&lt;/li&gt;
&lt;li style=&quot;list-style-type: decimal;&quot;&gt;App 초기화 완료&lt;/li&gt;
&lt;li style=&quot;list-style-type: decimal;&quot;&gt;완료(startupProbe 이때부터 찍히기 시작)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li style=&quot;list-style-type: decimal;&quot;&gt;데이터베이스 연결 완료&lt;/li&gt;
&lt;li style=&quot;list-style-type: decimal;&quot;&gt;App 시작됨&lt;/li&gt;
&lt;li style=&quot;list-style-type: decimal;&quot;&gt;startupProbe 성공이 찍힘 &amp;rarr; 더 이상 시도 안함&lt;/li&gt;
&lt;li style=&quot;list-style-type: decimal;&quot;&gt;이제 readinessProbe 는 실패 livenessProbe 는 성공&lt;/li&gt;
&lt;li style=&quot;list-style-type: decimal;&quot;&gt;ConfigMap 로딩완료&lt;/li&gt;
&lt;li style=&quot;list-style-type: decimal;&quot;&gt;Data 로딩 완료&lt;/li&gt;
&lt;li style=&quot;list-style-type: decimal;&quot;&gt;Started AppApplication in 60.11 sec &amp;rarr; 완전히 시작됨&lt;/li&gt;
&lt;li style=&quot;list-style-type: decimal;&quot;&gt;readinessProbe , livenessProbe 둘 다 성공&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #00a760;&quot;&gt;해당 블로그 내용은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #00a760;&quot;&gt;[쿠버네티스 어나더 클래스]&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #00a760;&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;인프런&amp;nbsp;&lt;/span&gt;강의를 정리한 것입니다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: unset;&quot;&gt;&lt;span style=&quot;color: #343a40;&quot;&gt;강의 링크 :&lt;/span&gt;&lt;span style=&quot;color: #00a760;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://inf.run/NzKy&quot;&gt;https://inf.run/NzKy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>인프라/쿠버네티스</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/152</guid>
      <comments>https://kujung.tistory.com/entry/k8s-Application-%EA%B8%B0%EB%8A%A5%EC%9C%BC%EB%A1%9C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-Podprobe#entry152comment</comments>
      <pubDate>Wed, 2 Jul 2025 21:20:40 +0900</pubDate>
    </item>
    <item>
      <title>[k8s] 쿠버네티스 첫 오브젝트 잘 끼우기</title>
      <link>https://kujung.tistory.com/entry/k8s-%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4-%EC%B2%AB-%EC%98%A4%EB%B8%8C%EC%A0%9D%ED%8A%B8-%EC%9E%98-%EB%81%BC%EC%9A%B0%EA%B8%B0</link>
      <description>&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #00a760;&quot;&gt;해당 블로그 내용은 &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #00a760;&quot;&gt;[쿠버네티스 어나더 클래스]&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #00a760;&quot;&gt;&lt;span&gt; 인프런&amp;nbsp;&lt;/span&gt;강의를 정리한 것입니다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: unset;&quot;&gt;&lt;span style=&quot;color: #343a40;&quot;&gt;강의 링크 :&lt;/span&gt;&lt;span style=&quot;color: #00a760;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;&lt;/span&gt;&lt;a href=&quot;https://inf.run/NzKy&quot;&gt;https://inf.run/NzKy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;Object 그려보며 이해하기&lt;/span&gt;&lt;/h3&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1031&quot; data-origin-height=&quot;578&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQbooo/btsOV05eH54/Xtp4vYayi9JaWQ9pkKjFfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQbooo/btsOV05eH54/Xtp4vYayi9JaWQ9pkKjFfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQbooo/btsOV05eH54/Xtp4vYayi9JaWQ9pkKjFfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQbooo%2FbtsOV05eH54%2FXtp4vYayi9JaWQ9pkKjFfK%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;1031&quot; height=&quot;578&quot; data-origin-width=&quot;1031&quot; data-origin-height=&quot;578&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: unset;&quot;&gt;인프런 강의 카페 실습 자료실 링크 (&lt;a style=&quot;color: #0969da;&quot; href=&quot;https://cafe.naver.com/kubeops/36&quot;&gt;link&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 단계에서는 위 강의 자료실에 실습으로 사용될 yaml 파일을 읽어보면서 오브젝트들을 하나씩 그려보고, 각 오브젝트들에 대한 역할이나 기능들을 정리한다.&lt;/span&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;761&quot; data-origin-height=&quot;461&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lEzlQ/btsOXUPYsqs/LEavESyeO8C1kHzwyakeXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lEzlQ/btsOXUPYsqs/LEavESyeO8C1kHzwyakeXk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lEzlQ/btsOXUPYsqs/LEavESyeO8C1kHzwyakeXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlEzlQ%2FbtsOXUPYsqs%2FLEavESyeO8C1kHzwyakeXk%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;761&quot; height=&quot;461&quot; data-origin-width=&quot;761&quot; data-origin-height=&quot;461&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; 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;위쪽부터 Namespace를 보면 Namespace는 Object들을 그룹핑 해주는 역할&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Deployment&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Pod를 만들고 업그레이드를 해주는 역할&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Deployment는 이 Namespace에 소속&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;한 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;namespace 안에서 이 이름은 중복이 되면 안됨.&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;replicas&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; pod 갯수를 조정&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;strategy&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는 업데이트 방식 조정, &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;RollingUpdate는 deployment 기능의 핵심&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;emplate 부터가 이 내용대로 pod가 만들어진다&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;고 보면 된다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;nodeSelector는 pod를 띄울 노드를 선택&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하는 거고 containers라는 속성이 있고 그 밑에 옵션들이 쭉 있다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;132&quot; data-start=&quot;106&quot; data-ke-size=&quot;size26&quot;&gt;Pod란? &amp;ndash; 쿠버네티스의 기본 단위&lt;/h2&gt;
&lt;p data-end=&quot;271&quot; data-start=&quot;134&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Pod&lt;/b&gt;는 쿠버네티스(Kubernetes)에서 &lt;b&gt;배포 가능한 가장 작은 컴퓨팅 단위&lt;/b&gt;입니다. 한 개 이상의 컨테이너(보통은 하나)를 하나의 논리적 단위로 묶은 것으로, 쿠버네티스에서 애플리케이션을 실행할 때 가장 기본이 되는 단위입니다.&lt;/p&gt;
&lt;p data-end=&quot;271&quot; data-start=&quot;134&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;293&quot; data-start=&quot;278&quot; data-ke-size=&quot;size23&quot;&gt;왜 Pod인가?&lt;/h3&gt;
&lt;p data-end=&quot;403&quot; data-start=&quot;295&quot; data-ke-size=&quot;size16&quot;&gt;Docker 컨테이너만으로는 다중 애플리케이션 간의 협업, 자원 공유, 네트워크 일관성 등을 관리하기 어렵습니다. 이를 해결하기 위해 쿠버네티스는 &lt;b&gt;Pod라는 추상화 계층&lt;/b&gt;을 제공합니다.&lt;/p&gt;
&lt;p data-end=&quot;461&quot; data-start=&quot;405&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Pod는 하나의 애플리케이션 인스턴스&lt;/b&gt;라고 볼 수 있으며, 그 안에는 다음 요소들이 포함됩니다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;529&quot; data-start=&quot;462&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;475&quot; data-start=&quot;462&quot;&gt;하나 이상의 컨테이너&lt;/li&gt;
&lt;li data-end=&quot;490&quot; data-start=&quot;476&quot;&gt;공유 스토리지 (볼륨)&lt;/li&gt;
&lt;li data-end=&quot;501&quot; data-start=&quot;491&quot;&gt;고유 IP 주소&lt;/li&gt;
&lt;li data-end=&quot;529&quot; data-start=&quot;502&quot;&gt;설정 정보 (환경변수, ConfigMap 등)&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;772&quot; data-origin-height=&quot;462&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HWFHI/btsOYgrJc8e/XKk57nPchJUKjJCeLRSuH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HWFHI/btsOYgrJc8e/XKk57nPchJUKjJCeLRSuH0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HWFHI/btsOYgrJc8e/XKk57nPchJUKjJCeLRSuH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHWFHI%2FbtsOYgrJc8e%2FXKk57nPchJUKjJCeLRSuH0%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;772&quot; height=&quot;462&quot; data-origin-width=&quot;772&quot; data-origin-height=&quot;462&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;그리고 밑에&amp;nbsp;envFrom가 있고&amp;nbsp;configmap과 연결이 되어 있는데,&amp;nbsp;Application에 환경 변수랑 관련된 부분이고 configmap은 그 값을 제공해 주는 역할&lt;/li&gt;
&lt;li&gt;그 밑에&amp;nbsp;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;프로브들이 3개&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가 있는데&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;startupProbe&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;App이 잘 기동이 됐는지 체크&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 하고 있다가 기동이 안 되면 App을 재기동&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;잘 됐으면 이 밑에 readinessProbe랑 livenessProbe를 시작&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;readinessProbe&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;App에 트래픽을 연결 할 건지를 결정&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하는 속성&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;livenessProbe&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;App이 정상이 아니면 재시작을 시킬 건지 판단&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하는 속성&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;resources&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;pod에 CPU랑 memory를&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 할당을 시킬 거고 최대 limit까지 쓸 수 있다는 설정이 있는데 이걸 설정하지 않으면 pod가 노드의 자원들을 모두 사용&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;volumeMounts&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;에서&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;mountPath&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; pod 내부에 만들어지는 디렉토리, &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 이름이랑 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;volumes에 이 이름이 매칭이&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;되서 실제&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;persistentVolumeClaim이라는 object랑 연결&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그리고 secret-datasource도 name으로 연결이 되면서 secret object랑 연결&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;772&quot; data-origin-height=&quot;462&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ddvrXI/btsOWLe22Db/N3gGEHXYDRSK7quaUdAA51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ddvrXI/btsOWLe22Db/N3gGEHXYDRSK7quaUdAA51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ddvrXI/btsOWLe22Db/N3gGEHXYDRSK7quaUdAA51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FddvrXI%2FbtsOWLe22Db%2FN3gGEHXYDRSK7quaUdAA51%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;772&quot; height=&quot;462&quot; data-origin-width=&quot;772&quot; data-origin-height=&quot;462&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다음으로 Service를 보자.&lt;/li&gt;
&lt;li&gt;namespace에 속한 object고 name이랑 labels이 있고, 그리고 밑에 selector랑 ports, type이 있는데, 이 Service의 역할은 pod한테 트래픽을 연결&lt;/li&gt;
&lt;li&gt;위에서 namespace안에는 이름이 중복되면 안 된다고 했었는데, 확히는 같은 종류의 object끼리에 해당 되는 말이다. 그래서 Service랑 Deployment는 서로 다른 object라 이름이 같아도 된다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ConfigMap&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;을 보면&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;pod의 환경변수 값을 제공하는 역할 &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이렇게 metadata 3세트랑 그리고 data가 있는데 이게 아까 언급했던 환경변수로 들어갈 값의 내용&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그리고 밑에 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Secret&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;도 ConfigMap이랑 비슷한데&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; pod에 좀 더 중요한 값을 제공하는 역할&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1028&quot; data-origin-height=&quot;576&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsJpXR/btsOWpce8vz/d7QOEbnM4kMldKP4SCnWsK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsJpXR/btsOWpce8vz/d7QOEbnM4kMldKP4SCnWsK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsJpXR/btsOWpce8vz/d7QOEbnM4kMldKP4SCnWsK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsJpXR%2FbtsOWpce8vz%2Fd7QOEbnM4kMldKP4SCnWsK%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;1028&quot; height=&quot;576&quot; data-origin-width=&quot;1028&quot; data-origin-height=&quot;576&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;그리고 PersistentVolumeClaim이 있고 pod에서 pv를 지정할 때 사용을 하는데, 밑에 저장 공간을 얼마나 사용할지 그리고 이 저장 공간의 accessModes로 읽기/쓰기가 가능하다는 옵션,&lt;/li&gt;
&lt;li&gt;그리고 &lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;PersistentVolume&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;인데,&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실제 Volume을 지정하는 역할&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;object들은 크게 두 분류&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;로 나뉘어요. Namespace랑 PersistentVolume은&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; Cluster Level의 Object&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Deployment랑 Service들은 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Namespace Level에 Object&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;라고 해요.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그리고 각 object들은 자신의 level이 있기 때문에 Deployment는 PV처럼 Cluster level에 만들어 질 수가 없다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;다시 PV로 돌아와서 , &lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;local&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 중요한데&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;path를 volume으로 사용&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하겠다는 내용 &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그리고 그 대상 노드는 밑에 nodeAffinity가 있는데, 좀 복잡해 보이지만, nodeSelector랑 똑같이 결국 Master Node를 지정한다는 내용, 그래서&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 여기에 path가 사전에 없으면 PV를 만들 때 문제가 생기기 때문에 디렉토리를 미리 만들어 준 것.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1030&quot; data-origin-height=&quot;577&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3EfZD/btsOVCDyJ1L/ntWWb8QmkkULuQRJoYaAXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3EfZD/btsOVCDyJ1L/ntWWb8QmkkULuQRJoYaAXK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3EfZD/btsOVCDyJ1L/ntWWb8QmkkULuQRJoYaAXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3EfZD%2FbtsOVCDyJ1L%2FntWWb8QmkkULuQRJoYaAXK%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;1030&quot; height=&quot;577&quot; data-origin-width=&quot;1030&quot; data-origin-height=&quot;577&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;마지막으로 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;HPA&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;인데,&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;부하에 따라 pod를 늘려주고 줄여주는 스케일링 역할&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;scaleTargetRef&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;로 그&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;스켈링 대상을 지정&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;을 하고,&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;min/maxReplicas&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;최소 두 개의 pod&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 유지를 하고 있다가&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;부하가 생기면 최대 4&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;개까지 늘어나도록 설정을 한 것.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그리고 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;metrics&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;라는 설정은 pod의&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;cpu가 평균 40%가 늘어나면 스케일 아웃&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그리고 밑에 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;behavior&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;pod가 한번 증가를 한 후&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;에&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;600초&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, 그러니까 10분 동안 또&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; pod가 추가적으로 늘어나지 않게 하는 설정&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;pod가 2개에서 3개로 늘어나자마자 부하가 더 증가한다고 해서 바로 4개로 늘리고 싶진 않을 때 이런 설정을 함.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;그리고 마지막으로 namespace에 대한 기능을 하나는 &lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;namespace를 삭제하면 이 안으로 만든 모든 object가 같이 삭제&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가 된다. PV는 namespace에 속하지 않기 때문에 별도로 한번 더 삭제를 해 줘야 된다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&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;</description>
      <category>인프라/쿠버네티스</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/151</guid>
      <comments>https://kujung.tistory.com/entry/k8s-%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4-%EC%B2%AB-%EC%98%A4%EB%B8%8C%EC%A0%9D%ED%8A%B8-%EC%9E%98-%EB%81%BC%EC%9A%B0%EA%B8%B0#entry151comment</comments>
      <pubDate>Tue, 1 Jul 2025 21:07:54 +0900</pubDate>
    </item>
    <item>
      <title>UTP 케이블의 종류와 특징</title>
      <link>https://kujung.tistory.com/entry/UTP-%EC%BC%80%EC%9D%B4%EB%B8%94%EC%9D%98-%EC%A2%85%EB%A5%98%EC%99%80-%ED%8A%B9%EC%A7%95</link>
      <description>&lt;h2 data-pm-slice=&quot;1 3 []&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;이더넷 케이블(Ethernet Cable)이란?&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이더넷 케이블은 근거리 통신망(LAN) 환경에서 가장 널리 사용되는 유선 네트워크 케이블입니다. 흔히 &lt;/span&gt;&lt;span&gt;&lt;b&gt;랜선&lt;/b&gt;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&lt;b&gt;UTP 케이블&lt;/b&gt;&lt;/span&gt;&lt;span&gt;이라고도 불리며, RJ-45 커넥터를 통해 컴퓨터, 공유기, 스위치 등 네트워크 장비를 서로 연결합니다.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;주요 특징&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;190&quot; data-origin-height=&quot;190&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mxUXo/btsOWn6tuP6/bIZzre4rJ2kPzy4Ve9QKjk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mxUXo/btsOWn6tuP6/bIZzre4rJ2kPzy4Ve9QKjk/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mxUXo/btsOWn6tuP6/bIZzre4rJ2kPzy4Ve9QKjk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmxUXo%2FbtsOWn6tuP6%2FbIZzre4rJ2kPzy4Ve9QKjk%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;190&quot; height=&quot;190&quot; data-origin-width=&quot;190&quot; data-origin-height=&quot;190&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;**4쌍(총 8가닥)**의 연선(Twisted Pair) 구성&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;TIA/EIA-568&lt;/b&gt;&lt;/span&gt;&lt;span&gt; 표준 기반으로 제작 (T568A, T568B)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;주로 &lt;/span&gt;&lt;span&gt;&lt;b&gt;RJ-45 단자&lt;/b&gt;&lt;/span&gt;&lt;span&gt; 사용&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;크로스 케이블&lt;/b&gt;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&lt;b&gt;다이렉트 케이블&lt;/b&gt;&lt;/span&gt;&lt;span&gt;로 구분 (현재 대부분의 장비는 양단 다이렉트 케이블로 제작시에도 정상 작동)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;케이블의 성능은 &lt;/span&gt;&lt;span&gt;&lt;b&gt;Category(Cat)&lt;/b&gt;&lt;/span&gt;&lt;span&gt; 등급으로 표현 (Cat 5e, 6, 7 등)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;구조와 배열&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;447&quot; data-origin-height=&quot;316&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mUE9o/btsOVroJocU/Q8r2c65aufcAiDeYmvysAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mUE9o/btsOVroJocU/Q8r2c65aufcAiDeYmvysAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mUE9o/btsOVroJocU/Q8r2c65aufcAiDeYmvysAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmUE9o%2FbtsOVroJocU%2FQ8r2c65aufcAiDeYmvysAk%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;447&quot; height=&quot;316&quot; data-origin-width=&quot;447&quot; data-origin-height=&quot;316&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;431&quot; data-origin-height=&quot;449&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ce3RmX/btsOUBdQAv8/3OOQUJr5Q3i0tTyTPLfCc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ce3RmX/btsOUBdQAv8/3OOQUJr5Q3i0tTyTPLfCc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ce3RmX/btsOUBdQAv8/3OOQUJr5Q3i0tTyTPLfCc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fce3RmX%2FbtsOUBdQAv8%2F3OOQUJr5Q3i0tTyTPLfCc1%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;431&quot; height=&quot;449&quot; data-origin-width=&quot;431&quot; data-origin-height=&quot;449&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;8가닥의 선은 4쌍으로 나뉘며, 각각 꼬여있어 &lt;/span&gt;&lt;span&gt;&lt;b&gt;노이즈 방지&lt;/b&gt;&lt;/span&gt;&lt;span&gt; 효과를 줍니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;꼬임이 유지되지 않으면 신호 손실이 커지고 속도 저하가 발생할 수 있습니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;케이블 단자 연결 방식:&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;다이렉트 케이블&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: 동일한 배열 (T568B-T568B)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;크로스 케이블&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: 교차 배열 (T568A-T568B)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;최근 대부분의 장비는 Auto MDI/MDI-X 기능을 통해 크로스/다이렉트를 자동 인식합니다.&lt;br /&gt;즉, 양쪽 모두 다이렉트 케이블로 제작하는 것이 보편적입니다.&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;차폐 방식에 따른 분류&lt;/span&gt;&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;비차폐&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;UTP&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;가장 일반적인 형태, 차폐 없음&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;호일 차폐&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;FTP&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;전체를 알루미늄 호일로 차폐&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;브레이딩 차폐&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;STP&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;금속 망으로 차폐하여 노이즈 방지 강화&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;이중 차폐&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;S/FTP&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;페어마다 호일, 외부는 금속망으로 이중 차폐&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;경험상 보편적인 네트워크 환경에서는 UTP를 사용합니다.&amp;nbsp;&lt;br /&gt;고속 네트워크 환경(Cat.7 이상)에서는 STP 혹은 S/FTP 형태를 사용하는 경우가 있습니다.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;카테고리별 성능 비교&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cEnUkW/btsOWehL8ae/0IPW4YzdWLwkDRnbOrL551/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cEnUkW/btsOWehL8ae/0IPW4YzdWLwkDRnbOrL551/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cEnUkW/btsOWehL8ae/0IPW4YzdWLwkDRnbOrL551/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcEnUkW%2FbtsOWehL8ae%2F0IPW4YzdWLwkDRnbOrL551%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;900&quot; height=&quot;500&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;613&quot; data-origin-height=&quot;443&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmy0z6/btsOWpJ2NCm/mUCcNMZ4FbNm3S9CvhbUG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmy0z6/btsOWpJ2NCm/mUCcNMZ4FbNm3S9CvhbUG1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmy0z6/btsOWpJ2NCm/mUCcNMZ4FbNm3S9CvhbUG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbmy0z6%2FbtsOWpJ2NCm%2FmUCcNMZ4FbNm3S9CvhbUG1%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;613&quot; height=&quot;443&quot; data-origin-width=&quot;613&quot; data-origin-height=&quot;443&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;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;⚠ Cat 6e는 공식 규격이 아닌 비공식 마케팅 명칭입니다.&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&amp;nbsp;PoE(Power over Ethernet)&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이더넷 케이블을 통해 **데이터와 전원(48V DC)**을 동시에 전달하는 기술입니다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;PoE 지원 장비: IP 카메라, VoIP 전화기, 무선 AP 등&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Cat.5 이상 케이블에서 사용 가능&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;랜 케이블 직접 제작&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;필요한 도구: RJ-45 단자, 케이블, 스트리퍼, 크림퍼(랜툴)&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span&gt;피복 제거 후, 8가닥 배열을 정렬&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;T568A 또는 T568B 배열에 따라 자르기&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;RJ-45 단자에 삽입 후 크림핑&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Cat.7 이상 케이블은 구조상 DIY가 어렵고, 사전 제작된 제품 사용 권장&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;요약&lt;/span&gt;&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;항목&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;설명&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;커넥터&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;RJ-45 (8P8C)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;내부선&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;4쌍(8가닥) Twisted Pair&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;케이블 유형&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;UTP, FTP, STP, S/FTP 등&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;배선 방식&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;다이렉트(T568B-T568B), 크로스(T568A-T568B)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;성능 기준&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;Cat 5e ~ Cat 8&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;전원 전송&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;PoE 가능 (Cat 5 이상)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description>
      <category>네트워크/Layer1</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/149</guid>
      <comments>https://kujung.tistory.com/entry/UTP-%EC%BC%80%EC%9D%B4%EB%B8%94%EC%9D%98-%EC%A2%85%EB%A5%98%EC%99%80-%ED%8A%B9%EC%A7%95#entry149comment</comments>
      <pubDate>Tue, 1 Jul 2025 18:00:48 +0900</pubDate>
    </item>
    <item>
      <title>사설망(Private Network)와 전용 회선, 그리고 VPN의 탄생</title>
      <link>https://kujung.tistory.com/entry/%EC%82%AC%EC%84%A4%EB%A7%9DPrivate-Network%EC%99%80-%EC%A0%84%EC%9A%A9-%ED%9A%8C%EC%84%A0-%EA%B7%B8%EB%A6%AC%EA%B3%A0-VPN%EC%9D%98-%ED%83%84%EC%83%9D</link>
      <description>&lt;h2 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;사설망(Private Network)와 전용 회선, 그리고 VPN의 탄생&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;인터넷의 급속한 확산은 IPv4 주소의 빠른 고갈을 불러왔습니다. 약 43억 개에 달하는 IPv4 주소는 처음엔 충분해 보였지만, 가정과 기업, 모바일 디바이스의 수요가 폭증하면서 점차 부족해지기 시작했죠. 이 문제를 해결하기 위해 등장한 것이 바로 &lt;/span&gt;&lt;span&gt;&lt;b&gt;사설망(Private Network)&lt;/b&gt;&lt;/span&gt;&lt;span&gt; 입니다.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;사설망이란?&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;사설망은 &lt;/span&gt;&lt;span&gt;&lt;b&gt;IPv4 주소 중 일부를 특정 용도로 제한하여 내부망에서만 사용할 수 있도록 한 네트워크 대역&lt;/b&gt;&lt;/span&gt;&lt;span&gt;입니다. 대표적인 사설 IP 주소 대역은 다음과 같습니다:&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;10.0.0.0 ~ 10.255.255.255&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;172.16.0.0 ~ 172.31.255.255&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;192.168.0.0 ~ 192.168.255.255&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;사설망의 핵심 장점은 단지 공인 IP를 아낄 수 있다는 것에 그치지 않습니다. &lt;/span&gt;&lt;span&gt;&lt;b&gt;외부 인터넷과의 분리로 보안성이 강화&lt;/b&gt;&lt;/span&gt;&lt;span&gt;되고, 내부 시스템을 독립적으로 운영할 수 있기 때문입니다. 데이터베이스, 서버, 프린터 등 외부에 노출될 필요가 없는 자원들은 사설 IP를 활용해 네트워크를 구성하게 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;전용 회선(Leased Line)의 등장&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;사설망이 널리 활용되면서, 서로 떨어진 지역 간의 사설망을 &lt;/span&gt;&lt;span&gt;&lt;b&gt;안전하게 연결할 수 있는 기술적 필요성&lt;/b&gt;&lt;/span&gt;&lt;span&gt;이 높아졌습니다. 이때 등장한 것이 &lt;/span&gt;&lt;span&gt;&lt;b&gt;전용 회선&lt;/b&gt;&lt;/span&gt;&lt;span&gt;입니다. 이는 통신사업자의 네트워크 중 일부를 전용으로 임대하여 본사와 지사를 안전하게 연결하는 방식입니다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;공인 인터넷을 거치지 않기 때문에 &lt;/span&gt;&lt;span&gt;&lt;b&gt;보안성이 뛰어남&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;사설 IP 기반으로 통신 가능&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;하지만 가장 큰 단점은 바로 &lt;/span&gt;&lt;span&gt;&lt;b&gt;비용&lt;/b&gt;&lt;/span&gt;&lt;span&gt;입니다. 회선 자체의 설치, 유지관리, 대역폭 사용량에 따라 발생하는 고비용은 기업에 상당한 부담으로 작용합니다.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;VPN(Virtual Private Network)의 탄생&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;고비용의 전용 회선을 대체할 수 있는 방법으로 &lt;/span&gt;&lt;span&gt;&lt;b&gt;VPN&lt;/b&gt;&lt;/span&gt;&lt;span&gt;이 등장했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;ldquo;VPN은 공공망(인터넷)을 이용해 사설망처럼 안전하게 통신할 수 있게 해주는 기술&amp;rdquo;입니다.&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;VPN의 핵심 목적 2가지&lt;/span&gt;&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span&gt;공인 인터넷을 사용하면서도 &lt;/span&gt;&lt;span&gt;&lt;b&gt;사설망과 사설망을 연결&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;인터넷이라는 불안정한 매체를 통해 &lt;/span&gt;&lt;span&gt;&lt;b&gt;암호화된 안전한 통신 제공&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이를 위해 &lt;/span&gt;&lt;span&gt;&lt;b&gt;캡슐화(Encapsulation)&lt;/b&gt;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&lt;b&gt;암호화(Encryption)&lt;/b&gt;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&lt;b&gt;터널링(Tunneling)&lt;/b&gt;&lt;/span&gt;&lt;span&gt; 기술이 사용됩니다. 이 과정에서 외부에서는 내부 데이터의 내용을 확인할 수 없고, 오로지 인증된 사용자와 장비만이 터널을 통해 통신할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;VPN의 분류&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;VPN은 다양한 기준으로 분류할 수 있지만, 가장 실무적인 기준은 &lt;/span&gt;&lt;span&gt;&lt;b&gt;접속 방식&lt;/b&gt;&lt;/span&gt;&lt;span&gt;입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;분류 기준종류&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;접속 방식&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;Site-to-Site / Client-to-Site&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;프로토콜&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;IPSec / SSL / PPTP / L2TP 등&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;통신 계층&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;L2 / L3 / L4 / L7 기반&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;여기서는 가장 많이 사용되는 두 가지 방식인 &lt;/span&gt;&lt;span&gt;&lt;b&gt;IPSec VPN&lt;/b&gt;&lt;/span&gt;&lt;span&gt;과 &lt;/span&gt;&lt;span&gt;&lt;b&gt;SSL VPN&lt;/b&gt;&lt;/span&gt;&lt;span&gt;을 중심으로 살펴봅니다.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;IPSec VPN (Site-to-Site)&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1042&quot; data-origin-height=&quot;336&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvlNTz/btsOVCcoO16/XgHSc1kcWkQzIR0loo9kqK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvlNTz/btsOVCcoO16/XgHSc1kcWkQzIR0loo9kqK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvlNTz/btsOVCcoO16/XgHSc1kcWkQzIR0loo9kqK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvlNTz%2FbtsOVCcoO16%2FXgHSc1kcWkQzIR0loo9kqK%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;1042&quot; height=&quot;336&quot; data-origin-width=&quot;1042&quot; data-origin-height=&quot;336&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;사용 용도: &lt;/span&gt;&lt;span&gt;&lt;b&gt;본사-지사 간 네트워크 연결&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;암호화 계층: L3 (Network Layer)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;터널링 프로토콜: IPSec&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;특징: 라우팅 중심, 네트워크 전체를 터널로 연결&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이 방식은 두 개 이상의 사설망을 안전하게 연결하는 데 사용되며, 외부에서 들어오는 사용자의 개별 인증은 필요하지 않습니다. 네트워크 간 트래픽 자체를 암호화하고, 내부 자산을 통째로 공유해야 할 때 주로 사용됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;SSL VPN (Client-to-Site)&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;757&quot; data-origin-height=&quot;285&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eCyBuN/btsOV0qBziz/hkn3hEajCeqU6FS9MkkwQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eCyBuN/btsOV0qBziz/hkn3hEajCeqU6FS9MkkwQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eCyBuN/btsOV0qBziz/hkn3hEajCeqU6FS9MkkwQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeCyBuN%2FbtsOV0qBziz%2Fhkn3hEajCeqU6FS9MkkwQ0%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;757&quot; height=&quot;285&quot; data-origin-width=&quot;757&quot; data-origin-height=&quot;285&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;사용 용도: &lt;/span&gt;&lt;span&gt;&lt;b&gt;외부 사용자(직원)가 사내망 접속 시&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;암호화 계층: L4&lt;/span&gt;&lt;span&gt;&lt;s&gt;L7 (Transport&lt;/s&gt;&lt;/span&gt;&lt;span&gt;Application Layer)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;터널링 프로토콜: SSL 또는 TLS&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;특징: 웹브라우저 기반 접근, 사용자 인증 필수&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;SSL VPN은 유연성이 높고 접근이 쉬워 &lt;/span&gt;&lt;span&gt;&lt;b&gt;재택근무, 출장 중 원격 접속&lt;/b&gt;&lt;/span&gt;&lt;span&gt;에 가장 널리 사용됩니다. 보통 사용자는 웹 브라우저나 전용 클라이언트를 통해 사내 시스템에 접속하고, 접근 권한은 사전에 부여된 인증 정보에 따라 달라집니다.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;정리하며&lt;/span&gt;&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;항목&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;전용 회선&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;VPN&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;비용&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;좋지 않음 (그림보다 비싸면)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;비교적으로 저렴&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;보안성&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;최고&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;다양한 것이 담당가능&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;구성 난이도&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;높음&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;조금 느려도 간단&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;접근성&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;제한적&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;높음 (여러 것이 가능)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;VPN은 사설망을 외부 환경에서도 안전하게 사용할 수 있게 만들어 주는 핵심 인프라이며, &lt;/span&gt;&lt;span&gt;&lt;b&gt;보안과 효율을 동시에 추구하는 현대 네트워크 환경의 필수 구성요소&lt;/b&gt;&lt;/span&gt;&lt;span&gt;입니다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>네트워크/Layer4</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/147</guid>
      <comments>https://kujung.tistory.com/entry/%EC%82%AC%EC%84%A4%EB%A7%9DPrivate-Network%EC%99%80-%EC%A0%84%EC%9A%A9-%ED%9A%8C%EC%84%A0-%EA%B7%B8%EB%A6%AC%EA%B3%A0-VPN%EC%9D%98-%ED%83%84%EC%83%9D#entry147comment</comments>
      <pubDate>Tue, 1 Jul 2025 17:15:50 +0900</pubDate>
    </item>
    <item>
      <title>[k8s] 쿠버네티스(v.1.27.2) 쉽고 빠르게 설치하자</title>
      <link>https://kujung.tistory.com/entry/k8s-%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4v1272-%EC%89%BD%EA%B3%A0-%EB%B9%A0%EB%A5%B4%EA%B2%8C-%EC%84%A4%EC%B9%98%ED%95%98%EC%9E%90</link>
      <description>&lt;h3 style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;쿠버네티스(v.1.27.2) 쉽고 빠르게 설치하는 방법&lt;/span&gt;&lt;/h3&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1227&quot; data-origin-height=&quot;557&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1PPKj/btsOZDHoOwT/Gk7xfkRKKvPpVwCEAtFf31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1PPKj/btsOZDHoOwT/Gk7xfkRKKvPpVwCEAtFf31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1PPKj/btsOZDHoOwT/Gk7xfkRKKvPpVwCEAtFf31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1PPKj%2FbtsOZDHoOwT%2FGk7xfkRKKvPpVwCEAtFf31%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;1227&quot; height=&quot;557&quot; data-origin-width=&quot;1227&quot; data-origin-height=&quot;557&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;list-style-type: unset;&quot;&gt;&lt;b&gt;Virtualbox 설치&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;(&lt;a style=&quot;color: #0969da;&quot; href=&quot;https://www.virtualbox.org/wiki/Downloads&quot;&gt;link&lt;/a&gt;)&lt;/li&gt;
&lt;li style=&quot;list-style-type: unset;&quot;&gt;&lt;b&gt;Vagrant 설치&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(&lt;a style=&quot;color: #0969da;&quot; href=&quot;https://developer.hashicorp.com/vagrant/downloads?product_intent=vagrant&quot;&gt;link&lt;/a&gt;)&lt;/li&gt;
&lt;li style=&quot;list-style-type: unset;&quot;&gt;&lt;b&gt;Vagrant 스크립트 실행 (&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;윈도우 &amp;gt; 실행 &amp;gt; cmd &amp;gt; 확인)&lt;/span&gt;&lt;/span&gt;
&lt;pre id=&quot;code_1751325739452&quot; class=&quot;taggerscript&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Vagrant 폴더 생성
C:\Users\사용자&amp;gt; mkdir k8s
C:\Users\사용자&amp;gt; cd k8s

# Vagrant 스크립트 다운로드
C:\Users\사용자\k8s&amp;gt; curl -O https://raw.githubusercontent.com/k8s-1pro/install/main/ground/k8s-1.27/vagrant-2.3.4/Vagrantfile

# Rocky Linux Repo 세팅
C:\Users\사용자\k8s&amp;gt; curl -O https://raw.githubusercontent.com/k8s-1pro/install/main/ground/k8s-1.27/vagrant-2.3.4/rockylinux-repo.json
C:\Users\사용자\k8s&amp;gt; vagrant box add rockylinux-repo.json

# Vagrant Disk 설정 Plugin 설치 
C:\Users\사용자\k8s&amp;gt; vagrant plugin install vagrant-disksize

# Vagrant 실행 (VM생성)
C:\Users\사용자\k8s&amp;gt; vagrant up&lt;/code&gt;&lt;/pre&gt;
&lt;span style=&quot;color: #000000;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: unset;&quot;&gt;&lt;b&gt;MobaXterm 설치&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(&lt;a style=&quot;color: #0969da;&quot; href=&quot;http://ttps//mobaxterm.mobatek.net/download-home-edition.html&quot;&gt;link&lt;/a&gt;)&lt;/li&gt;
&lt;li style=&quot;list-style-type: unset;&quot;&gt;&lt;b&gt;Master 원격 접속 :&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;192.168.56.30:22 (root/vagrant)&lt;/li&gt;
&lt;li style=&quot;list-style-type: unset;&quot;&gt;&lt;b&gt;&lt;b&gt;Pod 확인&lt;/b&gt;&lt;/b&gt;
&lt;pre id=&quot;code_1751325790320&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;kubectl get pods -A&lt;/code&gt;&lt;/pre&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: unset;&quot;&gt;&lt;b&gt;대시보드 접속 URI :&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;a style=&quot;color: #0969da;&quot; href=&quot;https://192.168.56.30:30000/#/login&quot;&gt;https&lt;span style=&quot;color: #9fba45;&quot;&gt;://&lt;/span&gt;&lt;span style=&quot;color: #f86634;&quot;&gt;192.168.56.30&lt;/span&gt;&lt;span style=&quot;color: #9fba45;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #f86634;&quot;&gt;30000&lt;/span&gt;&lt;span style=&quot;color: #9fba45;&quot;&gt;/&lt;/span&gt;#&lt;span style=&quot;color: #9fba45;&quot;&gt;/&lt;/span&gt;login&lt;/a&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: unset;&quot;&gt;&lt;b&gt;FAQ :&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;virtualbox 설치 안될 때 (&lt;a style=&quot;color: #0969da;&quot; href=&quot;https://cafe.naver.com/kubeops/25&quot;&gt;link&lt;/a&gt;), vagrant up 안될 때 (&lt;a style=&quot;color: #0969da;&quot; href=&quot;https://cafe.naver.com/kubeops/26&quot;&gt;link&lt;/a&gt;), dashboard 관련 (&lt;a style=&quot;color: #0969da;&quot; href=&quot;https://cafe.naver.com/kubeops/22&quot;&gt;link&lt;/a&gt;), virtualbox Host-Only Network cidr 변경 (&lt;a style=&quot;color: #0969da;&quot; href=&quot;https://cafe.naver.com/kubeops/27&quot;&gt;link&lt;/a&gt;)&lt;/li&gt;
&lt;li style=&quot;list-style-type: unset;&quot;&gt;&lt;b&gt;Cafe&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;: 쿠버네티스 빠른 설치 카페 참조 (&lt;a style=&quot;color: #0969da;&quot; href=&quot;https://cafe.naver.com/kubeops/21&quot;&gt;link&lt;/a&gt;)&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;쿠버네티스 무게감 있게 설치하는 방법 1/2&lt;/span&gt;&lt;/h3&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1227&quot; data-origin-height=&quot;546&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Onshe/btsOYEHywJe/2YKKnItzvXJIS1TZ2woo0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Onshe/btsOYEHywJe/2YKKnItzvXJIS1TZ2woo0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Onshe/btsOYEHywJe/2YKKnItzvXJIS1TZ2woo0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOnshe%2FbtsOYEHywJe%2F2YKKnItzvXJIS1TZ2woo0k%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;1227&quot; height=&quot;546&quot; data-origin-width=&quot;1227&quot; data-origin-height=&quot;546&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;497&quot; data-origin-height=&quot;517&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cn96Ro/btsOYFzGym7/P07LjjE8eQOb0ltFeZN0C1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cn96Ro/btsOYFzGym7/P07LjjE8eQOb0ltFeZN0C1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cn96Ro/btsOYFzGym7/P07LjjE8eQOb0ltFeZN0C1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcn96Ro%2FbtsOYFzGym7%2FP07LjjE8eQOb0ltFeZN0C1%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;497&quot; height=&quot;517&quot; data-origin-width=&quot;497&quot; data-origin-height=&quot;517&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;먼저 설명에 시작은 내 PC에 Virtaulbox랑 Vagrant를 설치한 상태고요. 제가 만든 Vagrant 설치 스크립트를 받으면 위에 내용이 나와요. 그리고 이 스크립트는 크게&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[Virtualbox로 Rocky Linux를 생성]&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하는 파트랑&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[kubernetes를 설치]&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하는 파트로 구분되는데 먼저 Virtualbox로 VM을 생성하는 걸 설명 드릴께요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; 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;884&quot; data-origin-height=&quot;230&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Xab2s/btsOZEGiRtA/7mgGwyfA3rAbXiGWTwKfC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Xab2s/btsOZEGiRtA/7mgGwyfA3rAbXiGWTwKfC1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Xab2s/btsOZEGiRtA/7mgGwyfA3rAbXiGWTwKfC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXab2s%2FbtsOZEGiRtA%2F7mgGwyfA3rAbXiGWTwKfC1%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;884&quot; height=&quot;230&quot; data-origin-width=&quot;884&quot; data-origin-height=&quot;230&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;우측 스크립트를 위에서 부터 보면, OS를&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[rocky linux 8]&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;버전으로 설치하라는 내용이고, 처음 설치할 때는 이 이미지를 다운 받는데 시간이 좀 걸려요. 그리고&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;[master-node]&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는 Virtualbox 입장에서 생성된 VM에 이름을 붙여주는 부분인데, Virtualbox UI 상으로 봤을 때 보이는 이름 이예요. 그리고 밑에 hostname 을 지정하는 부분이 있고,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[k8s-master]&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;라고 넣으면, 나중에 원격접속으로, 리눅스에 들어 갔을 때, 나오는 호스트 이름입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; 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;694&quot; data-origin-height=&quot;592&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uz9QN/btsOZz58cr6/RkjeeLotL1Fu1FK8kkwNVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uz9QN/btsOZz58cr6/RkjeeLotL1Fu1FK8kkwNVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uz9QN/btsOZz58cr6/RkjeeLotL1Fu1FK8kkwNVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fuz9QN%2FbtsOZz58cr6%2FRkjeeLotL1Fu1FK8kkwNVK%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;694&quot; height=&quot;592&quot; data-origin-width=&quot;694&quot; data-origin-height=&quot;592&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그리고 밑에&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[private_network]&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는 virtualbox에&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Host-Only Network&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;라고 해서,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;내 PC 에서만 사용할 수 있는 네트워크망&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;을 만들어 주고, 스크립트에서 IP를 주면 내 Linux에 그 IP가 할당됩니다. 그래서 우리는 내 PC에서 이 IP로 원격 접속을 하면 Linux OS에 들어갈 수 있게 되는 거고. 브라우저를 통해서 kubernetes dashboard에 접속 할 수도 있게 되요. 이렇게 이 스크립트 한 줄로 Host-Only Network가 만들어지고 IP가 할당 되는데, 스크립트에 넣지 않아도 Vagrant가 기본적으로 만들어주는 네트워크가 있어요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;바로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;NAT&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;라는 네트워크고 입니다. IP도 알아서&amp;nbsp; 할당 돼요. 이 NAT의 역할은 내 VM을&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;외부 인터넷이랑 연결&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;시켜줍니다. 그래서 이따가 쿠버네티스를 설치할 때 필요한 패키지들을 받는데 사용하고요&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; 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;684&quot; data-origin-height=&quot;279&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ccCPmk/btsOZwhq4ri/rIXodcwufgZ4JW0cDaWncK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ccCPmk/btsOZwhq4ri/rIXodcwufgZ4JW0cDaWncK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ccCPmk/btsOZwhq4ri/rIXodcwufgZ4JW0cDaWncK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FccCPmk%2FbtsOZwhq4ri%2FrIXodcwufgZ4JW0cDaWncK%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;684&quot; height=&quot;279&quot; data-origin-width=&quot;684&quot; data-origin-height=&quot;279&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실제&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;내 PC에 할당된 Network&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는 공유기에서 할당 받은 상태죠. 제 PC의 경우 [192.168.219.100]의 주소를 할당 받았고요. 제 공유기는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;192.168.219&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;까지는 고정이고, 뒤에 4번째 자리는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1~255&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;까지 만들 수 있는데 자동으로 100이 할당 된 거예요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;근데&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Host-Only Network&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 보면 디폴트로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;192.168&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;56&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;까지 고정이고, 네 번째는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1~255&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;까지 만들 수 있는 네트워크 입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;네트워크를 생성할 때 cidr 을 정하면, 이렇게 지정한 범위 내에서 IP가 할당 되는데,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;네트워크 원리는 잘 몰라도, 최소한 대역들이 겹치면 안된다는 건 알고 계셔야 돼요&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. 겹치게 되면 내 공유기랑 Virtualbox가 똑같은 IP 를 만들 수 있게 돼서 IP 충돌이 나요. 근데 이&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;공유기 환경이 개인 마다 다른 부분이라서 혹시 원격 접속이 안되시는 분은 본인에 Network 대역을 확인&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;해 보시고요. 부득이한 경우 Host-Only Network에 cidr 을 수정해 주면 돼요.&lt;/span&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;767&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zHZz1/btsOYTxGAan/50dxxL6dehCDjDkKwYfUjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zHZz1/btsOYTxGAan/50dxxL6dehCDjDkKwYfUjK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zHZz1/btsOYTxGAan/50dxxL6dehCDjDkKwYfUjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzHZz1%2FbtsOYTxGAan%2F50dxxL6dehCDjDkKwYfUjK%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;1280&quot; height=&quot;767&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;767&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이번엔 자원(resource)을 볼께요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;스크립트를 보면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;VM&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;에는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Memory&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;4G&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;고&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;CPU&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;4Core&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 잡았어요. 제 PC에 자원을 보면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;제 PC는&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;4Core&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;16G Memory&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;거든요. 여기서 분명 Memroy는 내 자원에서 나눠 주는 거라 VM에 자원 할당한 게 이해 되는데, CPU를 이렇게 다 줘버리면 내 PC는 괜찮을까 걱정되는 분이 계실 거예요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;근데 이 두 자원의 속성을 보면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Memory는 서로 할당된 공간을 침범하면 안돼요&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. A프로그램이 쓴 메모리 공간에 B프로그램이 침범해서 내용을 바꿔버리면 안되잖아요? 그래서 꼭 자원을 철저하게 분할해서 써야 되는 성격이라면,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;CPU는 필요로 하는 순간에 서로 나눠 쓰는 자원&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이예요. 그래서 현재 이 CPU 할당에 의미는 내 PC CPU가 필요할 때는 4 Core를 다 쓸 수도 있고. VM에서도 필요할 때도 최대 4Core를 다 쓸 수 있도록 설정 한 건데, 만약 둘 다 CPU가 필요한 상황이라면 이 4core 자원을 나눠쓰고요.&amp;nbsp;대신 처리속도는 좀 느려지지만 문제는 없어요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;참고로 쿠버네티스 설치 문서에 권고하는 CPU는 2Core 이상입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 CPU와 Memory에 대해서 제가 4 Core를 준 이유와 각자가 작업 유형에 맞게 변경을 하시라고 자세히 설명 드렸지만, 이 두 자원에 대한 성격은 쿠버네티스에도 Pod에 자원을 할당하거나 Pod가 늘어나는 설정을 할 때, 정말 중요하게 고려해야 되는 포인트라서&amp;nbsp;이 자원에 성격을 자세히 얘기 해봤어요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;쿠버네티스 무게감 있게 설치하는 방법 1/2 [구간별상태확인]&lt;/span&gt;&lt;/h3&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;568&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HVLBh/btsOYF7vft5/LKqqK6jZvcUPwgtA9YmkAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HVLBh/btsOYF7vft5/LKqqK6jZvcUPwgtA9YmkAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HVLBh/btsOYF7vft5/LKqqK6jZvcUPwgtA9YmkAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHVLBh%2FbtsOYF7vft5%2FLKqqK6jZvcUPwgtA9YmkAk%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;1280&quot; height=&quot;568&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;568&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; 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;span style=&quot;color: #333333; text-align: start;&quot;&gt;해당 챕터부터는&lt;span&gt; 내용이 방대하여 인프런 강사님의 &lt;/span&gt;&lt;/span&gt;카페글을 통해 확인해주시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://cafe.naver.com/f-e/cafes/30725715/articles/24?boardtype=L&amp;amp;menuid=13&amp;amp;referrerAllArticles=false&amp;amp;page=2&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://cafe.naver.com/f-e/cafes/30725715/articles/24?boardtype=L&amp;amp;menuid=13&amp;amp;referrerAllArticles=false&amp;amp;page=2&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;쿠버네티스 무게감 있게 설치하는 방법 2/2&lt;/span&gt;&lt;/h3&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1218&quot; data-origin-height=&quot;550&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mhdNd/btsOYUQYvQy/BTlVwmfqYUMkyUcu4csQaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mhdNd/btsOYUQYvQy/BTlVwmfqYUMkyUcu4csQaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mhdNd/btsOYUQYvQy/BTlVwmfqYUMkyUcu4csQaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmhdNd%2FbtsOYUQYvQy%2FBTlVwmfqYUMkyUcu4csQaK%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;1218&quot; height=&quot;550&quot; data-origin-width=&quot;1218&quot; data-origin-height=&quot;550&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;쿠버네티스 설치는 확실히 쿠버네티스 문서(&lt;/span&gt;&lt;/b&gt;&lt;a style=&quot;color: #0969da;&quot; href=&quot;https://kubernetes.io/docs/concepts/&quot;&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;link&lt;/span&gt;&lt;/a&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)를 보는게 좋습니다&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; 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;906&quot; data-origin-height=&quot;629&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RJuwz/btsOZu427wT/PhGNqftotkitoHUo7MIi60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RJuwz/btsOZu427wT/PhGNqftotkitoHUo7MIi60/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RJuwz/btsOZu427wT/PhGNqftotkitoHUo7MIi60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRJuwz%2FbtsOZu427wT%2FPhGNqftotkitoHUo7MIi60%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;906&quot; height=&quot;629&quot; data-origin-width=&quot;906&quot; data-origin-height=&quot;629&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;쿠버네티스 무게감 있게 설치하는 방법 2/2 [구간별상태확인]&lt;/span&gt;&lt;/h3&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1134&quot; data-origin-height=&quot;843&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dFFclY/btsOXGeXl3C/Vi9rHAw4vfJn2yS9UEE2mK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dFFclY/btsOXGeXl3C/Vi9rHAw4vfJn2yS9UEE2mK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dFFclY/btsOXGeXl3C/Vi9rHAw4vfJn2yS9UEE2mK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdFFclY%2FbtsOXGeXl3C%2FVi9rHAw4vfJn2yS9UEE2mK%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;1134&quot; height=&quot;843&quot; data-origin-width=&quot;1134&quot; data-origin-height=&quot;843&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 카페글을 통해 대부분 처리가 가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://cafe.naver.com/f-e/cafes/30725715/articles/28?menuid=13&amp;amp;referrerAllArticles=false&amp;amp;page=2&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://cafe.naver.com/f-e/cafes/30725715/articles/28?menuid=13&amp;amp;referrerAllArticles=false&amp;amp;page=2&lt;/a&gt;\&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #00a760;&quot;&gt;해당 블로그 내용은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #00a760;&quot;&gt;[쿠버네티스 어나더 클래스]&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #00a760;&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;인프런&amp;nbsp;&lt;/span&gt;강의를 정리한 것입니다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: unset;&quot;&gt;&lt;span style=&quot;color: #343a40;&quot;&gt;강의 링크 :&lt;/span&gt;&lt;span style=&quot;color: #00a760;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://inf.run/NzKy&quot;&gt;https://inf.run/NzKy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>인프라/쿠버네티스</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/154</guid>
      <comments>https://kujung.tistory.com/entry/k8s-%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4v1272-%EC%89%BD%EA%B3%A0-%EB%B9%A0%EB%A5%B4%EA%B2%8C-%EC%84%A4%EC%B9%98%ED%95%98%EC%9E%90#entry154comment</comments>
      <pubDate>Tue, 1 Jul 2025 11:29:29 +0900</pubDate>
    </item>
    <item>
      <title>[k8s] 쿠버네티스 컨테이너 한방 정리</title>
      <link>https://kujung.tistory.com/entry/k8s-%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-%ED%95%9C%EB%B0%A9-%EC%A0%95%EB%A6%AC</link>
      <description>&lt;h3 style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;기술의 흐름으로 이해하는 컨테이너&lt;/span&gt;&lt;/h3&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1229&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JBdQP/btsOZhR9Gpp/DKiMzdSTUZUptrCElCMZVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JBdQP/btsOZhR9Gpp/DKiMzdSTUZUptrCElCMZVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JBdQP/btsOZhR9Gpp/DKiMzdSTUZUptrCElCMZVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJBdQP%2FbtsOZhR9Gpp%2FDKiMzdSTUZUptrCElCMZVK%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;1229&quot; height=&quot;600&quot; data-origin-width=&quot;1229&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;쿠버네티스&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는 이제&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[컨테이너]&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;랑&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[가상화]&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;그리고&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[데브옵스]속에 깊숙히 자리잡고 있습니다.&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;그래서 이 세 가지를 알아야 쿠버네티스를 더 잘 알 수 있게 되는데,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 단어들은&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;정말 큰 개념이라서 그냥&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;용어 설명으로는 이해하기 힘들어요&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. 그래서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기술에 전반적인 배경을 이해하는 게 중요하다고 생각합니다&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;263&quot; data-start=&quot;227&quot; data-ke-size=&quot;size23&quot;&gt;Kubernetes = 컨테이너 오케스트레이션 플랫폼&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;383&quot; data-start=&quot;265&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;343&quot; data-start=&quot;265&quot;&gt;&lt;span&gt;Kubernetes는 단순한 컨테이너 실행을 넘어서 &lt;b&gt;자동 배포, 확장, 장애 복구, 상태 관리&lt;/b&gt;를 책임지며, 클러스터 내 컨테이너들의 상태를 선언적 방식으로 유지합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;383&quot; data-start=&quot;344&quot;&gt;&lt;span&gt;즉, &amp;ldquo;원하는 상태&amp;rdquo;를 정의하면 Kubernetes가 자동으로 맞춰 줍니다.&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;383&quot; data-start=&quot;344&quot;&gt;&lt;span&gt; &lt;span&gt;Kubernetes는 마치 **&amp;ldquo;연주자(컨테이너)들이 지휘자(k8s) 아래 협연하는 오케스트라&amp;rdquo;**와 같습니다:&lt;/span&gt;&lt;br /&gt;&lt;span&gt;개별 컨테이너는 연주자처럼 작동하고, Kubernetes는 전체 조화를 책임지는 지휘자 역할을 합니다&lt;/span&gt; &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000;&quot; data-start=&quot;390&quot; data-end=&quot;406&quot; data-ke-size=&quot;size23&quot;&gt;클러스터 아키텍처&lt;/h3&gt;
&lt;h4 style=&quot;color: #000000;&quot; data-start=&quot;408&quot; data-end=&quot;438&quot; data-ke-size=&quot;size20&quot;&gt;Control Plane (마스터 노드)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot; data-start=&quot;439&quot; data-end=&quot;648&quot;&gt;
&lt;li data-start=&quot;439&quot; data-end=&quot;480&quot;&gt;&lt;span&gt;&lt;b&gt;API Server&lt;/b&gt;: 사용자 요청과 kubectl 명령을 받음&lt;/span&gt;&lt;/li&gt;
&lt;li data-start=&quot;481&quot; data-end=&quot;522&quot;&gt;&lt;span&gt;&lt;b&gt;Scheduler&lt;/b&gt;: Pod를 어느 노드에 배치할지 결정&lt;/span&gt;&lt;/li&gt;
&lt;li data-start=&quot;523&quot; data-end=&quot;564&quot;&gt;&lt;span&gt;&lt;b&gt;Controller Manager&lt;/b&gt;: 정의된 상태를 지속적으로 유지하기 위한 루프 수행&lt;/span&gt;&lt;/li&gt;
&lt;li data-start=&quot;565&quot; data-end=&quot;648&quot;&gt;&lt;span&gt;&lt;b&gt;etcd&lt;/b&gt;: 클러스터 상태를 저장하는 키-밸류 DB&lt;/span&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 style=&quot;color: #000000;&quot; data-start=&quot;650&quot; data-end=&quot;669&quot; data-ke-size=&quot;size20&quot;&gt;Worker Node&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot; data-start=&quot;670&quot; data-end=&quot;839&quot;&gt;
&lt;li data-start=&quot;670&quot; data-end=&quot;713&quot;&gt;&lt;span&gt;&lt;b&gt;kubelet&lt;/b&gt;: Pod의 상태를 감지하고 컨테이너 런타임에게 실행을 요청&lt;/span&gt;&lt;/li&gt;
&lt;li data-start=&quot;714&quot; data-end=&quot;757&quot;&gt;&lt;span&gt;&lt;b&gt;kube-proxy&lt;/b&gt;: 네트워크 라우팅 및 로드 밸런싱 담당&lt;/span&gt;&lt;/li&gt;
&lt;li data-start=&quot;758&quot; data-end=&quot;839&quot;&gt;&lt;span&gt;&lt;b&gt;Container Runtime&lt;/b&gt;: Docker, containerd, CRI-O 등 컨테이너 실행 환경&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;157&quot; data-start=&quot;130&quot; data-ke-size=&quot;size26&quot;&gt;1. &lt;b&gt;컨테이너(Container)&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-end=&quot;168&quot; data-start=&quot;159&quot; data-ke-size=&quot;size23&quot;&gt;정의&lt;/h3&gt;
&lt;p data-end=&quot;297&quot; data-start=&quot;169&quot; data-ke-size=&quot;size16&quot;&gt;컨테이너는 **애플리케이션과 실행 환경(라이브러리, 설정 등)**을 하나의 패키지로 묶어서 &lt;b&gt;어디서든 실행 가능하게 해주는 기술&lt;/b&gt;입니다.&lt;br /&gt;가볍고 빠르게 실행되며, 서버 간 **이식성(portability)**이 뛰어납니다.&lt;/p&gt;
&lt;p data-end=&quot;297&quot; data-start=&quot;169&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-start=&quot;75&quot; data-end=&quot;100&quot; data-ke-size=&quot;size23&quot;&gt;기술 흐름 속에서 바라본 컨테이너&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot; data-start=&quot;102&quot; data-end=&quot;220&quot;&gt;
&lt;li data-start=&quot;102&quot; data-end=&quot;141&quot;&gt;&lt;span&gt;컨테이너는 가볍고 빠른 격리 환경을 제공하는 기술로, OS의 격리&amp;middot;자원 제어 핵심 기능(namespace, cgroup, chroot)을 활용합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li data-start=&quot;142&quot; data-end=&quot;220&quot;&gt;&lt;span&gt;이러한 리눅스 커널 기능을 모아 &amp;lsquo;LXC(Linux Container)&amp;rsquo;라는 초기 컨테이너 기술이 탄생했고, 이후 Docker 같은 사용 편의성이 뛰어난 도구들이 등장하며 널리 보급되었습니다&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;308&quot; data-start=&quot;299&quot; data-ke-size=&quot;size23&quot;&gt;특징&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;408&quot; data-start=&quot;309&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;333&quot; data-start=&quot;309&quot;&gt;OS 커널을 &lt;b&gt;공유&lt;/b&gt;해서 가볍고 빠름&lt;/li&gt;
&lt;li data-end=&quot;348&quot; data-start=&quot;334&quot;&gt;빠른 시작, 빠른 종료&lt;/li&gt;
&lt;li data-end=&quot;376&quot; data-start=&quot;349&quot;&gt;독립적 실행 &amp;rarr; 충돌 없이 여러 개 실행 가능&lt;/li&gt;
&lt;li data-end=&quot;408&quot; data-start=&quot;377&quot;&gt;대표 도구: &lt;b&gt;Docker&lt;/b&gt;, &lt;b&gt;Podman&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;419&quot; data-start=&quot;410&quot; data-ke-size=&quot;size23&quot;&gt;비유&lt;/h3&gt;
&lt;blockquote data-end=&quot;511&quot; data-start=&quot;420&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;511&quot; data-start=&quot;422&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;컨테이너는 도시락&amp;rdquo;&lt;br /&gt;애플리케이션이 음식이라면, 컨테이너는 그 음식이 망가지지 않도록 담긴 도시락통입니다. 어떤 식탁(서버)에서도 열면 바로 먹을 수 있죠.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;516&quot; data-start=&quot;513&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;549&quot; data-start=&quot;518&quot; data-ke-size=&quot;size26&quot;&gt;2. &lt;b&gt;가상화(Virtualization)&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-end=&quot;560&quot; data-start=&quot;551&quot; data-ke-size=&quot;size23&quot;&gt;정의&lt;/h3&gt;
&lt;p data-end=&quot;637&quot; data-start=&quot;561&quot; data-ke-size=&quot;size16&quot;&gt;하나의 물리 서버(하드웨어) 위에서 **여러 개의 가상 머신(운영체제 포함)**을 실행시켜 마치 여러 대의 서버처럼 활용하는 기술입니다.&lt;/p&gt;
&lt;h3 data-end=&quot;648&quot; data-start=&quot;639&quot; data-ke-size=&quot;size23&quot;&gt;종류&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;723&quot; data-start=&quot;649&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;688&quot; data-start=&quot;649&quot;&gt;&lt;b&gt;서버 가상화&lt;/b&gt; (ex. VMware, Hyper-V, KVM)&lt;/li&gt;
&lt;li data-end=&quot;703&quot; data-start=&quot;689&quot;&gt;&lt;b&gt;데스크탑 가상화&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;723&quot; data-start=&quot;704&quot;&gt;&lt;b&gt;네트워크/스토리지 가상화&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;734&quot; data-start=&quot;725&quot; data-ke-size=&quot;size23&quot;&gt;특징&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;810&quot; data-start=&quot;735&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;769&quot; data-start=&quot;735&quot;&gt;VM은 **자기만의 운영체제(게스트 OS)**를 갖고 있음&lt;/li&gt;
&lt;li data-end=&quot;794&quot; data-start=&quot;770&quot;&gt;자원(메모리, CPU 등)을 분할해 사용&lt;/li&gt;
&lt;li data-end=&quot;810&quot; data-start=&quot;795&quot;&gt;보안적으로 격리성이 높음&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;1002&quot; data-start=&quot;999&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1028&quot; data-start=&quot;1004&quot; data-ke-size=&quot;size26&quot;&gt;3. &lt;b&gt;데브옵스(DevOps)&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-end=&quot;1041&quot; data-start=&quot;1030&quot; data-ke-size=&quot;size23&quot;&gt;정의&lt;/h3&gt;
&lt;p data-end=&quot;1146&quot; data-start=&quot;1042&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;DevOps = Development(개발) + Operations(운영)&lt;/b&gt;&lt;br /&gt;개발자와 운영팀이 협업하여, &lt;b&gt;빠르고 안정적인 서비스 배포&lt;/b&gt;를 목표로 하는 문화이자 방법론입니다.&lt;/p&gt;
&lt;h3 data-end=&quot;1160&quot; data-start=&quot;1148&quot; data-ke-size=&quot;size23&quot;&gt;핵심 목표&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1299&quot; data-start=&quot;1161&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1192&quot; data-start=&quot;1161&quot;&gt;&lt;b&gt;자동화&lt;/b&gt;: 테스트, 배포, 모니터링 등을 자동화&lt;/li&gt;
&lt;li data-end=&quot;1237&quot; data-start=&quot;1193&quot;&gt;&lt;b&gt;지속적 통합/배포(CI/CD)&lt;/b&gt;: 빠르게 코드 수정 &amp;rarr; 테스트 &amp;rarr; 배포&lt;/li&gt;
&lt;li data-end=&quot;1257&quot; data-start=&quot;1238&quot;&gt;&lt;b&gt;협업과 커뮤니케이션 향상&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;1299&quot; data-start=&quot;1258&quot;&gt;&lt;b&gt;인프라를 코드로 관리(Infrastructure as Code)&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1313&quot; data-start=&quot;1301&quot; data-ke-size=&quot;size23&quot;&gt;주요 도구&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1465&quot; data-start=&quot;1314&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1364&quot; data-start=&quot;1314&quot;&gt;&lt;b&gt;CI/CD 도구&lt;/b&gt;: Jenkins, GitHub Actions, GitLab CI&lt;/li&gt;
&lt;li data-end=&quot;1403&quot; data-start=&quot;1365&quot;&gt;&lt;b&gt;컨테이너/오케스트레이션&lt;/b&gt;: Docker, Kubernetes&lt;/li&gt;
&lt;li data-end=&quot;1433&quot; data-start=&quot;1404&quot;&gt;&lt;b&gt;IaC&lt;/b&gt;: Terraform, Ansible&lt;/li&gt;
&lt;li data-end=&quot;1465&quot; data-start=&quot;1434&quot;&gt;&lt;b&gt;모니터링&lt;/b&gt;: Prometheus, Grafana&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1476&quot; data-start=&quot;1467&quot; data-ke-size=&quot;size23&quot;&gt;비유&lt;/h3&gt;
&lt;blockquote data-end=&quot;1562&quot; data-start=&quot;1477&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1562&quot; data-start=&quot;1479&quot; data-ke-size=&quot;size16&quot;&gt;예전에는 개발자와 운영팀이 따로 놀았는데, 데브옵스는 둘이 한 팀이 되어 &amp;ldquo;기계처럼 매일 안정적으로 배포하는 시스템&amp;rdquo;을 만드는 것이라고 보면 됩니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;1. Linux OS 흐름&lt;/span&gt;&lt;/h3&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1229&quot; data-origin-height=&quot;181&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ummyw/btsOY1WwLws/VQ8xh7eLf7s3I1pMoEVW8k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ummyw/btsOY1WwLws/VQ8xh7eLf7s3I1pMoEVW8k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ummyw/btsOY1WwLws/VQ8xh7eLf7s3I1pMoEVW8k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUmmyw%2FbtsOY1WwLws%2FVQ8xh7eLf7s3I1pMoEVW8k%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;1229&quot; height=&quot;181&quot; data-origin-width=&quot;1229&quot; data-origin-height=&quot;181&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;컨테이너를 잘 알기 위해서는 Linux에 대해서 먼저 알 필요가 있습니다.&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;최초에 OS로 unix가 있었고, &amp;nbsp;한참 시간이 지나고 linux가 나왔어요. 그리고 이 linux를 기반으로 현재까지도 엄청 많은 배포판들이 만들어지고 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;230&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mwcZV/btsOZSj3SUP/Sej5ka7CvmWGgAwtTtaxd1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mwcZV/btsOZSj3SUP/Sej5ka7CvmWGgAwtTtaxd1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mwcZV/btsOZSj3SUP/Sej5ka7CvmWGgAwtTtaxd1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmwcZV%2FbtsOZSj3SUP%2FSej5ka7CvmWGgAwtTtaxd1%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;602&quot; height=&quot;230&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;230&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하지만, 다행이도 우리는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 두 가지 배포판만 알고 있어도 충분해요.debian&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이랑&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;redhat&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;계열인데, debian linux는 커뮤니티용이라고 해서 무료고요. redhat linux는 redhat 이라는 기업에서 만들었고, 유료에요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; 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;497&quot; data-origin-height=&quot;231&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b6VniJ/btsOXQBxWo1/iZPXx0gatpezgTF2kUsIkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b6VniJ/btsOXQBxWo1/iZPXx0gatpezgTF2kUsIkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b6VniJ/btsOXQBxWo1/iZPXx0gatpezgTF2kUsIkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb6VniJ%2FbtsOXQBxWo1%2FiZPXx0gatpezgTF2kUsIkk%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;497&quot; height=&quot;231&quot; data-origin-width=&quot;497&quot; data-origin-height=&quot;231&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;쿠버네티스를 설치&lt;/b&gt;할 때도&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이렇게&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 두가지 배포판을 기준으로 설치 가이드를 제공&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;합니다. 데비안과 레드햇 계열에 대한 자세한 얘기는 강의 중에 설명드리고, 여기선 기업용으로 쓰는 redhat에 대해 좀 얘기를 해볼께요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; 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;335&quot; data-origin-height=&quot;83&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UGBFZ/btsOYEtYQ6x/QkiisEsiYwD3zCkFqNkDTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UGBFZ/btsOYEtYQ6x/QkiisEsiYwD3zCkFqNkDTK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UGBFZ/btsOYEtYQ6x/QkiisEsiYwD3zCkFqNkDTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUGBFZ%2FbtsOYEtYQ6x%2FQkiisEsiYwD3zCkFqNkDTK%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;335&quot; height=&quot;83&quot; data-origin-width=&quot;335&quot; data-origin-height=&quot;83&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;redhat&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;에서 linux&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;배포판이 만들어지는 순서&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가 있어요. 최초에는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;fedora&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;linux라고 해서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;새로운 기능을 개발&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하는 버전이 있고, 이건 무료고요. 이 기능들이&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;안정화되면 redhat&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;linux로 이름을 바꿔서 릴리즈를 합니다. 기업은 이걸 설치하면&amp;nbsp;유지보수 비용을 내야되는 유료 버전이고, redhat enterprise linux 앞자만 따서 RHEL, 렐 이라고도 통상 불러요. 그래서 이걸로 기업들이 설치를 하면 유지보수 비용을 내야 되는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;유료 버전&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;이고, 그리고&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이걸 복사해서 만든 게 centOS&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;배포판 이예요. rhel이랑 똑같이 안정화 버전인데,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;무료&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;로 쓸 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; 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;611&quot; data-origin-height=&quot;144&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dAFHsK/btsOXUREVFM/aHilc9bifMAq1WufhTLKA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dAFHsK/btsOXUREVFM/aHilc9bifMAq1WufhTLKA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dAFHsK/btsOXUREVFM/aHilc9bifMAq1WufhTLKA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdAFHsK%2FbtsOXUREVFM%2FaHilc9bifMAq1WufhTLKA0%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;611&quot; height=&quot;144&quot; data-origin-width=&quot;611&quot; data-origin-height=&quot;144&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;기업에서는 주로&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;redhat 계열을 많이 쓰고, 특히 centOS의 점유율이 높은데&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;centOS 8은 2021년에 지원을 종료&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;했고,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;centOS 7은 2024년도에 지원이 종료&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가 되거든요. 이 centOS가 종료되는 배경을 좀 말씀을 드리면 시장 점유율이 ubuntu가 압도적이고. 다음은 centOS랑 debian이 2, 3위를 왔다갔다 해요. redhat은 2%지만, 이 수치가 그래도 기업 배포판 중에 1위고요. 이 1위가 된 배경에는 사람들한테 centOS를 무료로 쓰게 해주면서 자연스럽게 redhat을 선택하게 하는 그런 전략이 있었거든요. 근데 현재 redhat은 IBM에 인수가 된 상태예요. 그리고 IBM의 새로운 전략은 centOS에 점유율을 rhel로 당기려는거 같아요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;왜나하면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;현재&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;redhat 배포판을 만드는 순서&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가 이렇게&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;변경&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;됐거든요.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;346&quot; data-origin-height=&quot;69&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7y6Dj/btsOY5LiiNp/XOeVNej8pMHhDj1obe0MHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7y6Dj/btsOY5LiiNp/XOeVNej8pMHhDj1obe0MHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7y6Dj/btsOY5LiiNp/XOeVNej8pMHhDj1obe0MHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7y6Dj%2FbtsOY5LiiNp%2FXOeVNej8pMHhDj1obe0MHK%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;346&quot; height=&quot;69&quot; data-origin-width=&quot;346&quot; data-origin-height=&quot;69&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;처음엔 마찬가지로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;fedora&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 통해서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기능 개발&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;을 하고,&amp;nbsp;centOS대신&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;centOS Stream&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이라고해서 이 기능들을 테스트하는 배포판이 생겼어요.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;테스트 배포판(테스트베드)&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이라고 생각을 하면 되는데 여전히 무료지만, 이 배포판에서는 바이너리 호환성 보장 안될 수 있다는 얘기를 해요. 무슨 내용인지 몰라도 이제 쓰면 안되나 싶은 생각이 들죠?&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그리고 테스트 과정이 끝나면,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;안정화 버전인 Redhat&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Linux가 됩니다. 이렇게 배포판을 만드는 프로세스가 바꿨어요. 그래서 기존에 centOS를 쓰던 기업들은&amp;nbsp;앞으로 고민을 좀 해봐야 되는 게 지금 상황이고요. 아래와 같이 4가지 방법이 있는데 아래와 같습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;622&quot; data-origin-height=&quot;144&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wSIMC/btsOXiLO2Pl/YnOG2jIE2N3ojoK1yL4Z1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wSIMC/btsOXiLO2Pl/YnOG2jIE2N3ojoK1yL4Z1K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wSIMC/btsOXiLO2Pl/YnOG2jIE2N3ojoK1yL4Z1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwSIMC%2FbtsOXiLO2Pl%2FYnOG2jIE2N3ojoK1yL4Z1K%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;622&quot; height=&quot;144&quot; data-origin-width=&quot;622&quot; data-origin-height=&quot;144&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이렇게 4가지 선택지 중에 전 4번을 선택을 했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 AlmaLinux와 RockyLinux 중에서 Rocky Linux를 선택한 이유는 아래와 같아요.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: unset;&quot;&gt;구글 트렌드에서 키워드 검색량 확인 (&lt;a style=&quot;color: #0969da;&quot; href=&quot;https://trends.google.co.kr/trends/explore?date=today%205-y&amp;amp;q=%2Fg%2F11n06bvk58,alma%20linux&amp;amp;hl=en&quot;&gt;link&lt;/a&gt;)&lt;/li&gt;
&lt;li style=&quot;list-style-type: unset;&quot;&gt;CentOS 공동설립자 중 한명 만들었음 (&lt;a style=&quot;color: #0969da;&quot; href=&quot;https://namu.wiki/w/Rocky%20Linux&quot;&gt;link&lt;/a&gt;)&lt;/li&gt;
&lt;li style=&quot;list-style-type: unset;&quot;&gt;클라우드 서비스에서 VM 생성을 Rocky Linux로 하는 사례들 확인&lt;/li&gt;
&lt;li style=&quot;list-style-type: unset;&quot;&gt;Github Watch/Fork/Start 비교 (&lt;a style=&quot;color: #0969da;&quot; href=&quot;https://github.com/rocky-linux/rocky&quot;&gt;rocky link&lt;/a&gt;), (&lt;a style=&quot;color: #0969da;&quot; href=&quot;https://github.com/AlmaLinux/almalinux-deploy&quot;&gt;alma link&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;2. Container 흐름&lt;br /&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1229&quot; data-origin-height=&quot;299&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/copUJ0/btsOZfUzbYW/kOKKzM4WUK5BRQBZ79X341/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/copUJ0/btsOZfUzbYW/kOKKzM4WUK5BRQBZ79X341/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/copUJ0/btsOZfUzbYW/kOKKzM4WUK5BRQBZ79X341/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcopUJ0%2FbtsOZfUzbYW%2FkOKKzM4WUK5BRQBZ79X341%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;1229&quot; height=&quot;299&quot; data-origin-width=&quot;1229&quot; data-origin-height=&quot;299&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자, 이제 컨테이너에 대해서 얘기를 해 볼꺼예요. 지금까지 봐듯이&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;linux는 꾸준히 발전&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;을 했고,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;내부적으로도 많은 코어 기술들이 개발&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 됐는데&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그중 하나가 격리 기술&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이예요.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;423&quot; data-origin-height=&quot;109&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dkElHX/btsOYdXKOcp/oeoCQtJeQTaKM0J4kIES81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dkElHX/btsOYdXKOcp/oeoCQtJeQTaKM0J4kIES81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dkElHX/btsOYdXKOcp/oeoCQtJeQTaKM0J4kIES81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdkElHX%2FbtsOYdXKOcp%2FoeoCQtJeQTaKM0J4kIES81%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;423&quot; height=&quot;109&quot; data-origin-width=&quot;423&quot; data-origin-height=&quot;109&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;chroot&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;라고 해서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;사용자 격리&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 시작으로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;파일이나 네트워크를 분리&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하는 기술들이 만들어 졌고요. 한참 지난 후에&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;cgroup&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이라고해서 각각에&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;App마다 cpu나 memory를 할당&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;을 할 수 있게 됐어요.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;namespace&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는 보통 App 하나가 하나의 프로세스를 차지하거든요. 이&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;프로세스를 격리&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;시켜주는 기술이 만들어 지면서 우리는 이제 각각의 App을 소위 말하는 [독립적인 환경]에서 실행을 시킬 수 있게 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그리고 다음으로 이 기술들을 집약해서 정리한게 LXC라고 해서 linux container에 줄임말 이예요. 이 컨테이너의 어머니이자, 최초의 컨테이너죠. 그리고 이 기술을 기반으로 만들어진 이번엔 컨테이너에 대명사죠. Docker, 요즘은 위세가 많이 죽긴 했어요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; 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;520&quot; data-origin-height=&quot;126&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SYsU0/btsOWKIBJA7/7mkp4MrYUxCu84pBPhnKNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SYsU0/btsOWKIBJA7/7mkp4MrYUxCu84pBPhnKNK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SYsU0/btsOWKIBJA7/7mkp4MrYUxCu84pBPhnKNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSYsU0%2FbtsOWKIBJA7%2F7mkp4MrYUxCu84pBPhnKNK%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;520&quot; height=&quot;126&quot; data-origin-width=&quot;520&quot; data-origin-height=&quot;126&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이전까지 컨테이너 기술은&amp;nbsp;저 같은 평범한 개발자들이 쓰기엔 좀 어려웠다면 docker는 이걸 누구나 쓰기 쉬운 형태로 만들었습니다. 요즘 잘 정리된 블로그 몇 개만 봐도 대강 이해해서 내 OS에 컨테이너를 띄울 수 있죠.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;docker가 나오고 rkt라고 rocket이라는 컨테이너가 나와요. docker가 보안에 안 좋은 점이 좀 있는데, 이 부분을 공략을 하면서 더 안정적인 컨테이너를 강조를 했고 실제 docker보다 성능도 더 좋다고 해요.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;docker가 보안에 안 좋은 점은 root권한으로 설치하고 실행을 해야 되기 때문인데, 현재는 rootless 설치 모드가 생겨서 보안이 강화가 됐습니다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;한편&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;쿠버네티스는 점점 표준으로 정착&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 되고 있고,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;현재는 컨테이너간의 싸움 중&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;입니다. 초반에 docker가 보안에 약하다는 것 까지는&amp;nbsp;사실 docker 대세에 크게 문제가 없었거든요. 시간이 지나면 충분히 보완 될꺼라는 기대도 있었고 실제로 보완이 됐죠. 근데 docker 위세가 조금씩 꺽이기 시작한 이유가 뭐냐면, 쿠버네티스에서 docker가 빠진 다는 얘기가 계속 있었어서 그래요. 그 이유는&amp;nbsp;docker가 쿠버네티스와 인터페이스가 잘 안 맞아서 그렇거든요. 물론 처음엔 docker를 메인으로 쿠버네티스가 만들어졌죠. 근데&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;쿠버네티스가 표준화가 될 수록&amp;nbsp;docker가 걸림돌이 되고 있는 상황&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이예요.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이제 누가 쿠버네티스랑 호환성이 좋은지가 컨테이너를 선택하는 중요한 결정요소&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가 됐습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그 이후에 나온 대표적인 컨테이너가 containerd랑 cri-o고요. containerd는 docker에서 컨테이너를 만들어주는 기능이 분리된 거예요. docker가 설치할 땐 간단해 보여도&amp;nbsp;엄청 많은 기능들이 녹아진 엔진이거든요. 그 큰 엔진에서 containerd 프로젝트만 분리 되서 나왔고 CNCF에 기부 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;385&quot; data-origin-height=&quot;287&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7sREL/btsOY1hVTzF/4eYWIORpwCUCtLFGp5vk90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7sREL/btsOY1hVTzF/4eYWIORpwCUCtLFGp5vk90/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7sREL/btsOY1hVTzF/4eYWIORpwCUCtLFGp5vk90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7sREL%2FbtsOY1hVTzF%2F4eYWIORpwCUCtLFGp5vk90%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;385&quot; height=&quot;287&quot; data-origin-width=&quot;385&quot; data-origin-height=&quot;287&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; 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;129&quot; data-origin-height=&quot;94&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pcZis/btsOXOKqTIO/trBZIYjKn7MGRjv4rpK401/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pcZis/btsOXOKqTIO/trBZIYjKn7MGRjv4rpK401/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pcZis/btsOXOKqTIO/trBZIYjKn7MGRjv4rpK401/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpcZis%2FbtsOXOKqTIO%2FtrBZIYjKn7MGRjv4rpK401%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;129&quot; height=&quot;94&quot; data-origin-width=&quot;129&quot; data-origin-height=&quot;94&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;번외로, docker는 현재 mirantis라는 회사에 인수된 상태예요. docker를 정말 많이 쓰지만 기술 투자 대비해서 수익이 큰 편은 아니었던 거 같아요. 그래서 mirantis라는 회사에 인수가 됐고 이 mirantis는 openstack 프로젝트를 하고 있는 회사 거든요. 이 openstack이 뭐냐면, kubernetes 이전에, 가상화에 대세라고 하긴 좀 그렇고, 가장 큰 가능성으로 가상화 시장을 선도한게 openstack 이예요. 저도 개인적으로 한 3년 정도 openstack 관련된 일을 했었고, 그래서 다음 가상화를 설명하는 강의에서&amp;nbsp;최대한 재미있게 얘기를 해 드릴께요. 여튼&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;docker가 mirantis에 인수된 이후부터 이 kubernetes 인터페이스를 잘 맞추려고 하고 있기 때문에 쿠버네티스에서 docker는 빠지진 않게 됩니다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;3. Container Orchestration과 Container 흐름&lt;/span&gt;&lt;/h3&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1229&quot; data-origin-height=&quot;552&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/X0nXN/btsOWFHcaSX/WG67fmk52AQW7ffKo6CnKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/X0nXN/btsOWFHcaSX/WG67fmk52AQW7ffKo6CnKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/X0nXN/btsOWFHcaSX/WG67fmk52AQW7ffKo6CnKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FX0nXN%2FbtsOWFHcaSX%2FWG67fmk52AQW7ffKo6CnKk%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;1229&quot; height=&quot;552&quot; data-origin-width=&quot;1229&quot; data-origin-height=&quot;552&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;강의 영상에서 컨테이너 오케스트레이션(쿠버네티스)과 컨테이너(컨테이너 런타임) 간에 한 단계 더 깊은 흐름을 이야기 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1102&quot; data-origin-height=&quot;384&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cn5CMs/btsOYQtXnv6/kgRQ7SICmIghhOt8ansRK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cn5CMs/btsOYQtXnv6/kgRQ7SICmIghhOt8ansRK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cn5CMs/btsOYQtXnv6/kgRQ7SICmIghhOt8ansRK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcn5CMs%2FbtsOYQtXnv6%2FkgRQ7SICmIghhOt8ansRK1%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;1102&quot; height=&quot;384&quot; data-origin-width=&quot;1102&quot; data-origin-height=&quot;384&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;가장 핵심&lt;/b&gt;은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;쿠버네티스의 kubelet 변화&lt;/b&gt;와 그리고 이에 따른&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;컨테이너 런타임들 간의 흐름&lt;/b&gt;이예요. 바로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;CRI&lt;/b&gt;가 어떤&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;배경&lt;/b&gt;에서 만들어졌고, 쿠버네티스 버전이 올라가면서 CRI가 어떤 방향으로 바뀌는지, 그리고 그에 따른 컨테이너 런타임들 간의 변화를 설명드립니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; 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;1007&quot; data-origin-height=&quot;263&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qLq0M/btsOZeVBlBf/oPkKribiMkNuOSAxKL8V5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qLq0M/btsOZeVBlBf/oPkKribiMkNuOSAxKL8V5k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qLq0M/btsOZeVBlBf/oPkKribiMkNuOSAxKL8V5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqLq0M%2FbtsOZeVBlBf%2FoPkKribiMkNuOSAxKL8V5k%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;1007&quot; height=&quot;263&quot; data-origin-width=&quot;1007&quot; data-origin-height=&quot;263&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;그리고&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;컨테이너에서 절대 빼놓으면 안되는 OCI&lt;/b&gt;가 있습니다. 컨테이너 표준인데, 컨테이너 런타임들은 이걸 잘 지키고 있기 때문에, 우리는 런타임을 바꾸더라도 기존에 만들었던 이미지를 그대로 사용할 수 있어요&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #00a760;&quot;&gt;해당 블로그 내용은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #00a760;&quot;&gt;[쿠버네티스 어나더 클래스]&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #00a760;&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;인프런&amp;nbsp;&lt;/span&gt;강의를 정리한 것입니다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: unset;&quot;&gt;&lt;span style=&quot;color: #343a40;&quot;&gt;강의 링크 :&lt;/span&gt;&lt;span style=&quot;color: #00a760;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://inf.run/NzKy&quot;&gt;https://inf.run/NzKy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>인프라/쿠버네티스</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/153</guid>
      <comments>https://kujung.tistory.com/entry/k8s-%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-%ED%95%9C%EB%B0%A9-%EC%A0%95%EB%A6%AC#entry153comment</comments>
      <pubDate>Tue, 1 Jul 2025 07:51:50 +0900</pubDate>
    </item>
    <item>
      <title>광케이블(Fiber Optic Cable) 종류와 특징</title>
      <link>https://kujung.tistory.com/entry/%EA%B4%91%EC%BC%80%EC%9D%B4%EB%B8%94Fiber-Optic-Cable-%EC%A2%85%EB%A5%98%EC%99%80-%ED%8A%B9%EC%A7%95</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;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-pm-slice=&quot;1 3 []&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;광케이블(Fiber Optic Cable)&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;광케이블은 유리 또는 플라스틱으로 만든 가는 섬유(광섬유)를 다수 묶어 구성한 케이블로, &lt;/span&gt;&lt;span&gt;&lt;b&gt;빛을 이용해 데이터를 전송하는 고속 통신 매체&lt;/b&gt;&lt;/span&gt;&lt;span&gt;입니다. 주로 장거리 통신과 대역폭이 높은 네트워크 환경에서 사용됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;광케이블의 주요 용도&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;고속 TCP/IP 네트워크&lt;/b&gt;&lt;/span&gt;&lt;span&gt; (10Gbps 이상) (1Gbps급에서는 UTP or 광케이블 선택)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;SAN(Storage Area Network)&lt;/b&gt;&lt;/span&gt;&lt;span&gt; 환경에서 서버와 스토리지 간 연결&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;데이터 센터&lt;/b&gt;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&lt;b&gt;금융 네트워크&lt;/b&gt;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&lt;b&gt;통신사 간선망&lt;/b&gt;&lt;/span&gt;&lt;span&gt; 등&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;광케이블의 구조&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;773&quot; data-origin-height=&quot;231&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8c9hY/btsOUWWrBnw/0xj2JVr2EQbyheilU4y6Fk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8c9hY/btsOUWWrBnw/0xj2JVr2EQbyheilU4y6Fk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8c9hY/btsOUWWrBnw/0xj2JVr2EQbyheilU4y6Fk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8c9hY%2FbtsOUWWrBnw%2F0xj2JVr2EQbyheilU4y6Fk%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;773&quot; height=&quot;231&quot; data-origin-width=&quot;773&quot; data-origin-height=&quot;231&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;b&gt;코어(Core)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;빛이 전송되는 중심부. 유리 또는 플라스틱 소재&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;b&gt;클래드(Cladding)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;코어 주변에 위치한 보호층. 빛이 코어를 벗어나지 않도록 반사&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;b&gt;버퍼 코팅(Buffer Coating)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;물리적 손상으로부터 광섬유를 보호하는 플라스틱층&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;전송 속도 및 거리 비교&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;광케이블은 &lt;/span&gt;&lt;span&gt;&lt;b&gt;구리 케이블보다 100배 이상 빠른 속도&lt;/b&gt;&lt;/span&gt;&lt;span&gt;를 제공할 수 있습니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;최대 전송 속도: &lt;/span&gt;&lt;span&gt;&lt;b&gt;OM5 기준 100Gbps 이상&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;신호 손실률&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: 100m 전송 시, 광섬유는 약 3% / 구리 케이블은 최대 94% 손실 발생&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;광케이블 유형&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;773&quot; data-origin-height=&quot;385&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvA149/btsOVJaW3Rn/ngsPnAgY6ZKruazvesxa1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvA149/btsOVJaW3Rn/ngsPnAgY6ZKruazvesxa1K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvA149/btsOVJaW3Rn/ngsPnAgY6ZKruazvesxa1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvA149%2FbtsOVJaW3Rn%2FngsPnAgY6ZKruazvesxa1K%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;773&quot; height=&quot;385&quot; data-origin-width=&quot;773&quot; data-origin-height=&quot;385&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;▸ 싱글 모드 (Single-mode)&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;코어 직경: 약 9&amp;mu;m&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;전송 거리: 수 km 이상 장거리 전송 가능&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;색상: &lt;/span&gt;&lt;span&gt;&lt;b&gt;노란색&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;용도: 장거리 고속 통신망, 통신사 백본망 등&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;▸ 멀티 모드 (Multi-mode)&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;코어 직경: 50 또는 62.5&amp;mu;m&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;전송 거리: 수백 미터 이내 단거리 전송에 적합&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;색상: &lt;/span&gt;&lt;span&gt;&lt;b&gt;주황색, 아쿠아(하늘색 OM3), 녹색(OM5)&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;용도: 사무실, 데이터센터 내부, LAN 등&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;멀티 모드 케이블 종류 비교&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;703&quot; data-origin-height=&quot;213&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvk6Rt/btsOXPOH9PZ/QpYGlOznjsdMjSWmP0xB1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvk6Rt/btsOXPOH9PZ/QpYGlOznjsdMjSWmP0xB1K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvk6Rt/btsOXPOH9PZ/QpYGlOznjsdMjSWmP0xB1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbvk6Rt%2FbtsOXPOH9PZ%2FQpYGlOznjsdMjSWmP0xB1K%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;703&quot; height=&quot;213&quot; data-origin-width=&quot;703&quot; data-origin-height=&quot;213&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 126px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;유형&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;색상&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;코어 크기&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;전송 속도&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;최대 거리&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;주요 용도&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;&lt;b&gt;OM1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;주황색&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;62.5&amp;mu;m&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;1Gbps&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;300m&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;LAN, 일반 사무용 네트워크&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;&lt;b&gt;OM2&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;주황색&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;50&amp;mu;m&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;1Gbps&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;600m&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;사설 네트워크, 일반 데이터 전송&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;&lt;b&gt;OM3&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;아쿠아&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;50&amp;mu;m&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;10Gbps&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;300m (100Gbps: 100m)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;데이터센터, 고속 전산망&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;&lt;b&gt;OM4&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;아쿠아&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;50&amp;mu;m&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;10Gbps&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;550m (100Gbps: 150m)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;금융, 클라우드 인프라&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;&lt;b&gt;OM5&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;연두색&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;50&amp;mu;m&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;최대 100Gbps&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;장거리 고속&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;span&gt;고밀도 데이터센터, 차세대 네트워크&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;OM1&lt;/b&gt;&lt;/h3&gt;
&lt;p id=&quot;SE-862624bd-dd9b-4ebb-a667-a357b3ece3a6&quot; style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;재킷 색상 &amp;ndash; 주황색&lt;br /&gt;코어 크기 &amp;ndash; 62.5um&lt;br /&gt;데이터 속도 - 850nm 파장에서 1Gb&lt;br /&gt;거리 &amp;ndash; 최대 300미터&lt;br /&gt;사용 용도&amp;ndash; 단거리 네트워크, LAN(Local Area Networks) 및 사설 네트워크&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;362&quot; data-origin-height=&quot;163&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/p4yPF/btsOVdXQpsU/iXrHtghRyYcUTnl0aECNk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/p4yPF/btsOVdXQpsU/iXrHtghRyYcUTnl0aECNk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/p4yPF/btsOVdXQpsU/iXrHtghRyYcUTnl0aECNk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fp4yPF%2FbtsOVdXQpsU%2FiXrHtghRyYcUTnl0aECNk1%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;362&quot; height=&quot;163&quot; data-origin-width=&quot;362&quot; data-origin-height=&quot;163&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;OM2&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;재킷 색상 &amp;ndash; 주황색&lt;br /&gt;코어 크기 &amp;ndash; 50um&lt;br /&gt;데이터 속도 - 850nm 파장에서 1Gb&lt;br /&gt;거리 &amp;ndash; 최대 600미터&lt;br /&gt;사용 용도&amp;ndash; 단거리 네트워크, LAN(Local Area Networks) 및 사설 네트워크&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;365&quot; data-origin-height=&quot;132&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdEPaM/btsOWqPEGev/rUeofP10RgfXz82bf6btWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdEPaM/btsOWqPEGev/rUeofP10RgfXz82bf6btWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdEPaM/btsOWqPEGev/rUeofP10RgfXz82bf6btWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdEPaM%2FbtsOWqPEGev%2FrUeofP10RgfXz82bf6btWK%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;365&quot; height=&quot;132&quot; data-origin-width=&quot;365&quot; data-origin-height=&quot;132&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;OM3&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;재킷 색상 &amp;ndash; 아쿠아&lt;br /&gt;코어 크기 &amp;ndash; 50um&lt;br /&gt;데이터 속도 &amp;ndash; 850nm 파장에서 10Gb&lt;br /&gt;거리 &amp;ndash; 최대 300미터&lt;br /&gt;MPO 커넥터를 사용하여 최대 100미터까지 40GB 또는 100GB 실행 가능&lt;br /&gt;사용 용도 - 대규모 사설 네트워크, 데이터 센터, 전산실&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;369&quot; data-origin-height=&quot;194&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lZHME/btsOWJg9YeG/MRnKIbW5ftcUMbgHvyxcIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lZHME/btsOWJg9YeG/MRnKIbW5ftcUMbgHvyxcIK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lZHME/btsOWJg9YeG/MRnKIbW5ftcUMbgHvyxcIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlZHME%2FbtsOWJg9YeG%2FMRnKIbW5ftcUMbgHvyxcIK%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;369&quot; height=&quot;194&quot; data-origin-width=&quot;369&quot; data-origin-height=&quot;194&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;OM4&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;재킷 색상 &amp;ndash; 아쿠아&lt;br /&gt;코어 크기 &amp;ndash; 50um&lt;br /&gt;데이터 속도 - 850nm 파장에서 10G&lt;br /&gt;거리 &amp;ndash; 최대 550미터&lt;br /&gt;MPO 커넥터를 사용하여 최대 150미터까지 100GB 실행 가능&lt;br /&gt;사용 용도 &amp;ndash; 고속 네트워크, 데이터 센터, 금융 센터 및 기업 캠퍼스&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;366&quot; data-origin-height=&quot;230&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yPvjj/btsOWoj2cSL/3YRG43gbkGynXIX9kiyAwk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yPvjj/btsOWoj2cSL/3YRG43gbkGynXIX9kiyAwk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yPvjj/btsOWoj2cSL/3YRG43gbkGynXIX9kiyAwk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyPvjj%2FbtsOWoj2cSL%2F3YRG43gbkGynXIX9kiyAwk%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;366&quot; height=&quot;230&quot; data-origin-width=&quot;366&quot; data-origin-height=&quot;230&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;OM5&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;재킷 색상 - 그린&lt;br /&gt;완벽하게 호환되며 OM3 및 OM4 케이블링과 연결 가능&lt;br /&gt;850nm에서 953nm 사이의 더 넓은 범위의 파장을 활용.&lt;br /&gt;SWDM(Short Wavelength Division Multiplexing)을 지원하도록 설계됨&lt;br /&gt;40Gb/s 및 100Gb/s 전송 가능&lt;br /&gt;사용 용도 &amp;ndash; 더 긴 링크 거리와 더 빠른 속도가 필요한 고속 네트워크 및 데이터 센터.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;337&quot; data-origin-height=&quot;198&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3Ftel/btsOVIQCb5b/MUl8QOfHogyCbEjd4B6x81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3Ftel/btsOVIQCb5b/MUl8QOfHogyCbEjd4B6x81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3Ftel/btsOVIQCb5b/MUl8QOfHogyCbEjd4B6x81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3Ftel%2FbtsOVIQCb5b%2FMUl8QOfHogyCbEjd4B6x81%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;337&quot; height=&quot;198&quot; data-origin-width=&quot;337&quot; data-origin-height=&quot;198&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;요약&lt;/span&gt;&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;구분&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;싱글 모드&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;멀티 모드&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;코어 크기&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;약 9&amp;mu;m&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;50 / 62.5&amp;mu;m&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;거리&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;수 km 이상&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;수백 m&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;속도&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;매우 빠름&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;빠름&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;색상&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;노란색&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;주황색 / 하늘색 / 연두색&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;용도&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;통신사 / 장거리&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;LAN / 데이터센터 / 사무실&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;a href=&quot;https://ilovestorage.tistory.com/14&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://ilovestorage.tistory.com/14&lt;/a&gt;&lt;/p&gt;</description>
      <category>네트워크/Layer1</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/148</guid>
      <comments>https://kujung.tistory.com/entry/%EA%B4%91%EC%BC%80%EC%9D%B4%EB%B8%94Fiber-Optic-Cable-%EC%A2%85%EB%A5%98%EC%99%80-%ED%8A%B9%EC%A7%95#entry148comment</comments>
      <pubDate>Mon, 30 Jun 2025 17:46:59 +0900</pubDate>
    </item>
    <item>
      <title>L4 스위치이야기#3 포트도 NAT된다?  Port Translation과 SSL Offload</title>
      <link>https://kujung.tistory.com/entry/L4-%EC%8A%A4%EC%9C%84%EC%B9%98%EC%9D%B4%EC%95%BC%EA%B8%B03-%ED%8F%AC%ED%8A%B8%EB%8F%84-NAT%EB%90%9C%EB%8B%A4-Port-Translation%EA%B3%BC-SSL-Offload</link>
      <description>&lt;h1 data-end=&quot;271&quot; data-start=&quot;216&quot;&gt;L4&amp;nbsp;스위치이야기#3&amp;nbsp;포트도&amp;nbsp;NAT된다?&amp;nbsp;&amp;nbsp;Port&amp;nbsp;Translation과&amp;nbsp;SSL&amp;nbsp;Offload&lt;/h1&gt;
&lt;p data-end=&quot;469&quot; data-start=&quot;273&quot; data-ke-size=&quot;size16&quot;&gt;L4 스위치를 다뤄본 분들이라면 대부분 IP NAT는 익숙하실 겁니다. 그런데, 포트(Port)도 NAT 대상이 될 수 있다는 점은 다소 낯설 수 있습니다. 특히 L4 스위치의 &lt;b&gt;Virtual Server&lt;/b&gt;에 설정된 포트와 실제 서버가 사용하는 포트가 다를 때, 이 둘 사이를 연결하기 위한 기술이 바로 &lt;b&gt;Port Translation&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-end=&quot;469&quot; data-start=&quot;273&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;469&quot; data-start=&quot;273&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;469&quot; data-start=&quot;273&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;501&quot; data-start=&quot;476&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;Port Translation이란?&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;960&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xf9rI/btsOWNDPNqU/dntjtD5JgBZ1sU3xUTKrmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xf9rI/btsOWNDPNqU/dntjtD5JgBZ1sU3xUTKrmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xf9rI/btsOWNDPNqU/dntjtD5JgBZ1sU3xUTKrmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fxf9rI%2FbtsOWNDPNqU%2FdntjtD5JgBZ1sU3xUTKrmK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;960&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;960&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;653&quot; data-start=&quot;503&quot; data-ke-size=&quot;size16&quot;&gt;L4 스위치에서 **Virtual Server에 설정된 포트(Service Port)**와 &lt;b&gt;서버의 실제 서비스 포트&lt;/b&gt;가 서로 다를 경우, 트래픽이 스위치를 통과하면서 포트를 바꿔주는 작업이 필요합니다. 이 과정을 &lt;b&gt;Port Translation&lt;/b&gt;이라고 합니다.&lt;/p&gt;
&lt;p data-end=&quot;777&quot; data-start=&quot;655&quot; data-ke-size=&quot;size16&quot;&gt;일반적으로는 Virtual Server와 서버 모두 같은 포트(예: 80번 HTTP)를 쓰는 것이 관리나 직관성 측면에서 편리합니다. 하지만 서비스 환경이 단순하지 않을 경우, 포트를 다르게 가져가야 할 필요가 생기죠.&lt;/p&gt;
&lt;p data-end=&quot;777&quot; data-start=&quot;655&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;777&quot; data-start=&quot;655&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;777&quot; data-start=&quot;655&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;777&quot; data-start=&quot;655&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;785&quot; data-start=&quot;779&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;879&quot; data-start=&quot;786&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;829&quot; data-start=&quot;786&quot;&gt;서버에서 80 포트를 이미 사용 중인데, 또 다른 웹서비스를 열고자 할 때&lt;/li&gt;
&lt;li data-end=&quot;879&quot; data-start=&quot;830&quot;&gt;외부에서는 80 포트로 접속하게 하되, 실제 서버는 8080 포트로 운영하고 싶을 때&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;945&quot; data-start=&quot;881&quot; data-ke-size=&quot;size16&quot;&gt;이럴 때 L4 스위치는 사용자의 요청을 받아 &lt;b&gt;80 포트 &amp;rarr; 8080 포트로 변환&lt;/b&gt;하여 내부 서버로 전달합니다.&lt;/p&gt;
&lt;p data-end=&quot;960&quot; data-start=&quot;947&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;960&quot; data-start=&quot;947&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;960&quot; data-start=&quot;947&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;960&quot; data-start=&quot;947&quot; data-ke-size=&quot;size16&quot;&gt;트래픽 흐름 예시:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;① 사용자 요청: &lt;/span&gt;&lt;span&gt;&lt;span&gt;15.15&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;.15&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;.15&lt;/span&gt;&lt;/span&gt;&lt;span&gt; &amp;rarr; &lt;/span&gt;&lt;span&gt;&lt;span&gt;123.111&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;.43&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;.1&lt;/span&gt;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;&lt;span&gt;80&lt;/span&gt;&lt;/span&gt;&lt;span&gt; (L4 스위치 &lt;/span&gt;&lt;span&gt;&lt;span&gt;VIP&lt;/span&gt;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;&lt;span&gt;80&lt;/span&gt;&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;② 서버 수신: &lt;/span&gt;&lt;span&gt;&lt;span&gt;15.15&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;.15&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;.15&lt;/span&gt;&lt;/span&gt;&lt;span&gt; &amp;rarr; &lt;/span&gt;&lt;span&gt;&lt;span&gt;192.168&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;.1&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;.11&lt;/span&gt;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;&lt;span&gt;8080&lt;/span&gt;&lt;/span&gt;&lt;span&gt; (서버 포트로 변환됨) &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1135&quot; data-start=&quot;1081&quot; data-ke-size=&quot;size16&quot;&gt;이처럼 사용자 입장에선 전혀 알 수 없지만, 내부에서는 다른 포트로 통신이 이뤄지고 있는 것이죠.&lt;/p&gt;
&lt;hr data-end=&quot;1140&quot; data-start=&quot;1137&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1193&quot; data-start=&quot;1142&quot; data-ke-size=&quot;size26&quot;&gt;SSL Offload &amp;ndash; Port Translation이 반드시 필요한 대표 사례&lt;/h2&gt;
&lt;p data-end=&quot;1322&quot; data-start=&quot;1195&quot; data-ke-size=&quot;size16&quot;&gt;요즘 대부분의 웹서비스는 &lt;b&gt;HTTPS&lt;/b&gt;로 동작합니다. 이는 단순히 HTTP 위에 보안 계층을 추가한 구조로, 데이터가 암호화되어 전송됩니다. 이 과정에서 중요한 역할을 하는 것이 &lt;b&gt;SSL/TLS Handshake&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-end=&quot;1450&quot; data-start=&quot;1324&quot; data-ke-size=&quot;size16&quot;&gt;그런데 말입니다&amp;hellip;&lt;br /&gt;이 암호화/복호화 작업, 생각보다 서버 자원을 굉장히 많이 소모합니다. CPU가 많이 바쁘죠. 특히 대규모 트래픽을 처리하는 서비스라면, 매 요청마다 암호화를 수행하는 것은 큰 부담이 될 수밖에 없습니다.&lt;/p&gt;
&lt;p data-end=&quot;1486&quot; data-start=&quot;1452&quot; data-ke-size=&quot;size16&quot;&gt;그래서 등장한 개념이 바로 &lt;b&gt;SSL Offload&lt;/b&gt;입니다.&lt;/p&gt;
&lt;hr data-end=&quot;1491&quot; data-start=&quot;1488&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1512&quot; data-start=&quot;1493&quot; data-ke-size=&quot;size26&quot;&gt;SSL Offload란?&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;172&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZlPwq/btsOWLe0SCG/Zxr6psg8gYpg8rk1IZEIs1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZlPwq/btsOWLe0SCG/Zxr6psg8gYpg8rk1IZEIs1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZlPwq/btsOWLe0SCG/Zxr6psg8gYpg8rk1IZEIs1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZlPwq%2FbtsOWLe0SCG%2FZxr6psg8gYpg8rk1IZEIs1%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;580&quot; height=&quot;172&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;172&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;1672&quot; data-start=&quot;1514&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;SSL Offload&lt;/b&gt;는 서버 대신 &lt;b&gt;L4 스위치가 SSL 통신을 담당&lt;/b&gt;하는 방식입니다. SSL 인증서를 서버가 아닌 L4 스위치에 탑재하고, 클라이언트와 스위치 사이에서만 암호화를 수행합니다. 이후, 내부 서버와는 **평문 HTTP 통신(포트 80)**으로 연결하게 되죠.&lt;/p&gt;
&lt;p data-end=&quot;1816&quot; data-start=&quot;1674&quot; data-ke-size=&quot;size16&quot;&gt;이때 필요한 것이 바로 &lt;b&gt;Port Translation&lt;/b&gt;입니다. 왜냐하면 사용자는 **443 포트(HTTPS)**로 요청을 보냈지만, 서버는 &lt;b&gt;80 포트&lt;/b&gt;로 서비스를 제공하고 있으니까요. 따라서 스위치는 443 &amp;rarr; 80 포트 변환이 필수인 것이죠.&lt;/p&gt;
&lt;p data-end=&quot;1827&quot; data-start=&quot;1818&quot; data-ke-size=&quot;size16&quot;&gt;흐름 요약:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;① 사용자 요청: 123.111.43.1:443 (암호화된 HTTPS 요청) &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;② L4 스위치: SSL 복호화 + 포트 변환 &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;③ 서버 수신: 192.168.1.11:80 (평문 HTTP 요청) &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;1948&quot; data-start=&quot;1945&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1984&quot; data-start=&quot;1950&quot; data-ke-size=&quot;size26&quot;&gt;L4 스위치에서의 SSL Offload 설정&lt;/h2&gt;
&lt;p data-end=&quot;2164&quot; data-start=&quot;1986&quot; data-ke-size=&quot;size16&quot;&gt;F5 등에서 이 기능을 활성화하려면 SSL 인증서를 업로드한 후, Virtual Server에 &lt;b&gt;SSL Profile&lt;/b&gt;을 적용해야 합니다. Profile은 인증서, 개인키, 체인을 포함하며, 해당 설정이 적용된 Virtual Server는 클라이언트와 직접 &lt;b&gt;SSL Handshake&lt;/b&gt;를 수행할 수 있게 됩니다.&lt;/p&gt;
&lt;hr data-end=&quot;2230&quot; data-start=&quot;2227&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2244&quot; data-start=&quot;2232&quot; data-ke-size=&quot;size26&quot;&gt;마무리 정리&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2449&quot; data-start=&quot;2246&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2310&quot; data-start=&quot;2246&quot;&gt;&lt;b&gt;Port Translation&lt;/b&gt;은 Virtual Server의 포트와 실제 서버 포트가 다를 때 사용된다.&lt;/li&gt;
&lt;li data-end=&quot;2378&quot; data-start=&quot;2311&quot;&gt;&lt;b&gt;SSL Offload&lt;/b&gt;는 서버의 암호화 부담을 줄이기 위한 기술이며, Port Translation을 수반한다.&lt;/li&gt;
&lt;li data-end=&quot;2449&quot; data-start=&quot;2379&quot;&gt;F5 등 주요 L4 스위치 장비에서는 SSL 인증서를 Virtual Server에 적용해 SSL Offload를 구성한다.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>네트워크/Layer4</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/146</guid>
      <comments>https://kujung.tistory.com/entry/L4-%EC%8A%A4%EC%9C%84%EC%B9%98%EC%9D%B4%EC%95%BC%EA%B8%B03-%ED%8F%AC%ED%8A%B8%EB%8F%84-NAT%EB%90%9C%EB%8B%A4-Port-Translation%EA%B3%BC-SSL-Offload#entry146comment</comments>
      <pubDate>Mon, 30 Jun 2025 14:05:09 +0900</pubDate>
    </item>
    <item>
      <title>L4 스위치이야기#2 트래픽 흐름과 L4&amp;middot;L7 로드밸런싱의 차이</title>
      <link>https://kujung.tistory.com/entry/L4-%EC%8A%A4%EC%9C%84%EC%B9%98%EC%9D%B4%EC%95%BC%EA%B8%B02-%ED%8A%B8%EB%9E%98%ED%94%BD-%ED%9D%90%EB%A6%84%EA%B3%BC-L4%C2%B7L7-%EB%A1%9C%EB%93%9C%EB%B0%B8%EB%9F%B0%EC%8B%B1%EC%9D%98-%EC%B0%A8%EC%9D%B4</link>
      <description>&lt;h1 data-end=&quot;264&quot; data-start=&quot;231&quot;&gt;L4&amp;nbsp;스위치이야기#2&amp;nbsp;트래픽&amp;nbsp;흐름과&amp;nbsp;L4&amp;middot;L7&amp;nbsp;로드밸런싱의&amp;nbsp;차이&lt;/h1&gt;
&lt;p data-end=&quot;368&quot; data-start=&quot;266&quot; data-ke-size=&quot;size16&quot;&gt;이번 글에서는 &lt;b&gt;L4 스위치로 들어오는 트래픽의 흐름&lt;/b&gt;이 어떻게 구성되는지,&lt;br /&gt;그리고 그에 따라 &lt;b&gt;L4 로드밸런싱과 L7 로드밸런싱이 어떻게 다르게 작동하는지&lt;/b&gt;를 설명합니다.&lt;/p&gt;
&lt;hr data-end=&quot;373&quot; data-start=&quot;370&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;406&quot; data-start=&quot;375&quot; data-ke-size=&quot;size26&quot;&gt;L4 스위치, 단순 포워딩을 넘어선 제어 장치&lt;/h2&gt;
&lt;p data-end=&quot;531&quot; data-start=&quot;408&quot; data-ke-size=&quot;size16&quot;&gt;L4 스위치는 기본적으로 &lt;b&gt;Layer 4(TCP/UDP)&lt;/b&gt; 정보를 기반으로 트래픽을 분산시키는 장비지만,&lt;br /&gt;필요에 따라 &lt;b&gt;Layer 7(HTTP, DNS, FTP 등)&lt;/b&gt; 프로토콜까지 파악하고 제어할 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;612&quot; data-start=&quot;533&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;566&quot; data-start=&quot;533&quot;&gt;L4 기반: IP + 포트 정보를 기반으로 처리 (빠름)&lt;/li&gt;
&lt;li data-end=&quot;612&quot; data-start=&quot;567&quot;&gt;L7 기반: HTTP Header 등 콘텐츠 정보까지 확인하여 분산 (정교함)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;653&quot; data-start=&quot;614&quot; data-ke-size=&quot;size16&quot;&gt;이 차이에 따라 &lt;b&gt;Virtual Server의 타입&lt;/b&gt;도 달라집니다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;733&quot; data-start=&quot;655&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;695&quot; data-start=&quot;655&quot;&gt;L4 Virtual Server (Performance Type)&lt;/li&gt;
&lt;li data-end=&quot;733&quot; data-start=&quot;696&quot;&gt;L7 Virtual Server (Standard Type)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;738&quot; data-start=&quot;735&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;774&quot; data-start=&quot;740&quot; data-ke-size=&quot;size26&quot;&gt;Layer 4 vs Layer 7 &amp;ndash; 계층 이해하기&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;계층기능주요 예시
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;969&quot; data-start=&quot;776&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;969&quot; data-start=&quot;825&quot;&gt;
&lt;tr data-end=&quot;892&quot; data-start=&quot;825&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;839&quot; data-start=&quot;825&quot;&gt;&lt;b&gt;Layer 4&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;872&quot; data-start=&quot;839&quot; data-col-size=&quot;sm&quot;&gt;TCP/UDP 포트를 기반으로 연결 생성 및 로드밸런싱&lt;/td&gt;
&lt;td data-end=&quot;892&quot; data-start=&quot;872&quot; data-col-size=&quot;sm&quot;&gt;TCP 80, UDP 53 등&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;969&quot; data-start=&quot;893&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;907&quot; data-start=&quot;893&quot;&gt;&lt;b&gt;Layer 7&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;939&quot; data-start=&quot;907&quot; data-col-size=&quot;sm&quot;&gt;사용자 요청의 &lt;b&gt;콘텐츠 분석&lt;/b&gt; 및 조건 기반 분산&lt;/td&gt;
&lt;td data-end=&quot;969&quot; data-start=&quot;939&quot; data-col-size=&quot;sm&quot;&gt;HTTP 헤더, URL, User-Agent 등&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;974&quot; data-start=&quot;971&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1013&quot; data-start=&quot;976&quot; data-ke-size=&quot;size26&quot;&gt;L4 vs L7의 3-Way Handshake 처리 차이&lt;/h2&gt;
&lt;p data-end=&quot;1088&quot; data-start=&quot;1015&quot; data-ke-size=&quot;size16&quot;&gt;TCP를 사용하는 경우, 연결을 맺기 위해 &lt;b&gt;3-way handshake&lt;/b&gt;가 필요합니다:&lt;br /&gt;SYN &amp;rarr; SYN/ACK &amp;rarr; ACK&lt;/p&gt;
&lt;p data-end=&quot;1150&quot; data-start=&quot;1090&quot; data-ke-size=&quot;size16&quot;&gt;이 과정에서 &lt;b&gt;L4 스위치의 Virtual Server Type&lt;/b&gt;에 따라 다음과 같이 동작이 달라집니다:&lt;/p&gt;
&lt;hr data-end=&quot;1155&quot; data-start=&quot;1152&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1199&quot; data-start=&quot;1157&quot; data-ke-size=&quot;size23&quot;&gt;L4 Virtual Server (Performance Type)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1310&quot; data-start=&quot;1201&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1237&quot; data-start=&quot;1201&quot;&gt;L4 스위치는 &lt;b&gt;패킷을 그대로 전달&lt;/b&gt;만 함 (포워딩 중심)&lt;/li&gt;
&lt;li data-end=&quot;1275&quot; data-start=&quot;1238&quot;&gt;사용자와 서버가 &lt;b&gt;직접&lt;/b&gt; 3-way handshake를 수행&lt;/li&gt;
&lt;li data-end=&quot;1310&quot; data-start=&quot;1276&quot;&gt;트래픽은 L4 스위치를 통과만 하고, 내부는 간섭하지 않음&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1385&quot; data-start=&quot;1312&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;장점:&lt;/b&gt; 빠르고 부하가 적음&lt;br /&gt;&lt;b&gt;단점:&lt;/b&gt; 콘텐츠 기반 조건 처리 불가능 (ex. 특정 URL 기반 분기 불가)&lt;/p&gt;
&lt;p data-end=&quot;1398&quot; data-start=&quot;1387&quot; data-ke-size=&quot;size16&quot;&gt;활용 예시:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1432&quot; data-start=&quot;1399&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1416&quot; data-start=&quot;1399&quot;&gt;단순 웹 서버 부하 분산&lt;/li&gt;
&lt;li data-end=&quot;1432&quot; data-start=&quot;1417&quot;&gt;높은 성능이 필요한 환경&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1437&quot; data-start=&quot;1434&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1478&quot; data-start=&quot;1439&quot; data-ke-size=&quot;size23&quot;&gt;L7 Virtual Server (Standard Type)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1622&quot; data-start=&quot;1480&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1517&quot; data-start=&quot;1480&quot;&gt;L4 스위치가 &lt;b&gt;사용자와 먼저 3-way handshake&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;1556&quot; data-start=&quot;1518&quot;&gt;이후 서버와 별도로 &lt;b&gt;다시 3-way handshake&lt;/b&gt; 수행&lt;/li&gt;
&lt;li data-end=&quot;1622&quot; data-start=&quot;1557&quot;&gt;중간에서 &lt;b&gt;HTTP 등 프로토콜 헤더를 분석&lt;/b&gt; 및 가공 가능&lt;br /&gt;&amp;rarr; 즉, &lt;b&gt;프록시(Proxy)&lt;/b&gt; 역할 수행&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1688&quot; data-start=&quot;1624&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;장점:&lt;/b&gt; 헤더 기반 로직, 조건 분기 가능&lt;br /&gt;&lt;b&gt;단점:&lt;/b&gt; 비교적 무거운 처리, 리소스 사용 증가&lt;/p&gt;
&lt;p data-end=&quot;1688&quot; data-start=&quot;1624&quot; data-ke-size=&quot;size16&quot;&gt;활용 예시:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1768&quot; data-start=&quot;1702&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1732&quot; data-start=&quot;1702&quot;&gt;HTTP Header 분석 후 URL 경로 분기&lt;/li&gt;
&lt;li data-end=&quot;1768&quot; data-start=&quot;1733&quot;&gt;브라우저 종류(User-Agent)에 따라 다른 페이지 제공&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1773&quot; data-start=&quot;1770&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1804&quot; data-start=&quot;1775&quot; data-ke-size=&quot;size26&quot;&gt;실제 사례: User-Agent 기반 분기&lt;/h2&gt;
&lt;p data-end=&quot;1886&quot; data-start=&quot;1806&quot; data-ke-size=&quot;size16&quot;&gt;고객 요청:&lt;br /&gt;&amp;ldquo;사용자가 사용하는 &lt;b&gt;브라우저 종류(IE, Chrome, Firefox)&lt;/b&gt; 에 따라 웹 페이지를 다르게 보여주고 싶습니다.&amp;rdquo;&lt;/p&gt;
&lt;p data-end=&quot;1905&quot; data-start=&quot;1888&quot; data-ke-size=&quot;size16&quot;&gt;해결 방법 (L7 기반):&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1980&quot; data-start=&quot;1906&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1940&quot; data-start=&quot;1906&quot;&gt;HTTP 헤더의 &lt;b&gt;User-Agent&lt;/b&gt; 필드를 분석&lt;/li&gt;
&lt;li data-end=&quot;1980&quot; data-start=&quot;1941&quot;&gt;브라우저 조건에 따라 &lt;b&gt;각기 다른 Pool Member로 전달&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;2031&quot; data-start=&quot;1982&quot; data-ke-size=&quot;size16&quot;&gt;이처럼 L7 로드밸런싱은 &lt;b&gt;내용 기반 판단이 필요한 서비스 분기&lt;/b&gt;에 매우 유용합니다.&lt;/p&gt;
&lt;hr data-end=&quot;2349&quot; data-start=&quot;2346&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2356&quot; data-start=&quot;2351&quot; data-ke-size=&quot;size26&quot;&gt;정리&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;구분L4 로드밸런싱L7 로드밸런싱
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;2632&quot; data-start=&quot;2358&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;2632&quot; data-start=&quot;2430&quot;&gt;
&lt;tr data-end=&quot;2478&quot; data-start=&quot;2430&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2438&quot; data-start=&quot;2430&quot;&gt;계층 기준&lt;/td&gt;
&lt;td data-end=&quot;2458&quot; data-start=&quot;2438&quot; data-col-size=&quot;sm&quot;&gt;Layer 4 (TCP/UDP)&lt;/td&gt;
&lt;td data-end=&quot;2478&quot; data-start=&quot;2458&quot; data-col-size=&quot;sm&quot;&gt;Layer 7 (HTTP 등)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2525&quot; data-start=&quot;2479&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2497&quot; data-start=&quot;2479&quot;&gt;3-way handshake&lt;/td&gt;
&lt;td data-end=&quot;2508&quot; data-start=&quot;2497&quot; data-col-size=&quot;sm&quot;&gt;사용자 &amp;harr; 서버&lt;/td&gt;
&lt;td data-end=&quot;2525&quot; data-start=&quot;2508&quot; data-col-size=&quot;sm&quot;&gt;사용자 &amp;harr; L4 &amp;harr; 서버&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2558&quot; data-start=&quot;2526&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2535&quot; data-start=&quot;2526&quot;&gt;콘텐츠 분석&lt;/td&gt;
&lt;td data-end=&quot;2540&quot; data-start=&quot;2535&quot; data-col-size=&quot;sm&quot;&gt;불가&lt;/td&gt;
&lt;td data-end=&quot;2558&quot; data-start=&quot;2540&quot; data-col-size=&quot;sm&quot;&gt;가능 (헤더, URL 등)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2599&quot; data-start=&quot;2559&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2567&quot; data-start=&quot;2559&quot;&gt;처리 성능&lt;/td&gt;
&lt;td data-end=&quot;2582&quot; data-start=&quot;2567&quot; data-col-size=&quot;sm&quot;&gt;빠름 (가볍고 고성능)&lt;/td&gt;
&lt;td data-end=&quot;2599&quot; data-start=&quot;2582&quot; data-col-size=&quot;sm&quot;&gt;느림 (복잡하지만 정밀)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2632&quot; data-start=&quot;2600&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2605&quot; data-start=&quot;2600&quot;&gt;활용&lt;/td&gt;
&lt;td data-end=&quot;2616&quot; data-start=&quot;2605&quot; data-col-size=&quot;sm&quot;&gt;단순 서버 분산&lt;/td&gt;
&lt;td data-end=&quot;2632&quot; data-start=&quot;2616&quot; data-col-size=&quot;sm&quot;&gt;조건 기반 트래픽 분기&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>네트워크/Layer4</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/145</guid>
      <comments>https://kujung.tistory.com/entry/L4-%EC%8A%A4%EC%9C%84%EC%B9%98%EC%9D%B4%EC%95%BC%EA%B8%B02-%ED%8A%B8%EB%9E%98%ED%94%BD-%ED%9D%90%EB%A6%84%EA%B3%BC-L4%C2%B7L7-%EB%A1%9C%EB%93%9C%EB%B0%B8%EB%9F%B0%EC%8B%B1%EC%9D%98-%EC%B0%A8%EC%9D%B4#entry145comment</comments>
      <pubDate>Mon, 30 Jun 2025 13:23:48 +0900</pubDate>
    </item>
    <item>
      <title>L4 스위치 이야기#1 로드밸런싱의 핵심을 이해하자</title>
      <link>https://kujung.tistory.com/entry/L4-%EC%8A%A4%EC%9C%84%EC%B9%98-%EC%9D%B4%EC%95%BC%EA%B8%B01-%EB%A1%9C%EB%93%9C%EB%B0%B8%EB%9F%B0%EC%8B%B1%EC%9D%98-%ED%95%B5%EC%8B%AC%EC%9D%84-%EC%9D%B4%ED%95%B4%ED%95%98%EC%9E%90</link>
      <description>&lt;h1 data-end=&quot;267&quot; data-start=&quot;242&quot;&gt;L4&amp;nbsp;스위치&amp;nbsp;이야기#1&amp;nbsp;로드밸런싱의&amp;nbsp;핵심을&amp;nbsp;이해하자&lt;/h1&gt;
&lt;p data-end=&quot;466&quot; data-start=&quot;269&quot; data-ke-size=&quot;size16&quot;&gt;이번 글부터는 로드밸런싱 구조에서 핵심 역할을 맡는 **L4 스위치(Layer 4 Switch)**에 대해 알아보겠습니다.&lt;br /&gt;이 장비는 단순히 트래픽을 나누는 역할을 넘어서, &lt;b&gt;TCP/UDP 같은 Layer 4 프로토콜의 정보&lt;/b&gt;,&lt;br /&gt;또는 &lt;b&gt;HTTP 등 Layer 7 프로토콜의 헤더 정보&lt;/b&gt;까지 분석해 &lt;b&gt;더 정교한 부하 분산&lt;/b&gt;이 가능합니다.&lt;/p&gt;
&lt;p data-end=&quot;552&quot; data-start=&quot;468&quot; data-ke-size=&quot;size16&quot;&gt;이번 문서에서는 실무에서 자주 활용되는 기능 위주로 설명드리며, &lt;b&gt;네트워크 엔지니어는 물론 서버, 개발 직군에게도 도움이 되는 관점&lt;/b&gt;을 담았습니다.&lt;/p&gt;
&lt;hr data-end=&quot;557&quot; data-start=&quot;554&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;578&quot; data-start=&quot;559&quot; data-ke-size=&quot;size26&quot;&gt;L4 스위치란 무엇인가?&lt;/h2&gt;
&lt;p data-end=&quot;729&quot; data-start=&quot;580&quot; data-ke-size=&quot;size16&quot;&gt;L4 스위치는 네트워크 구조에서 **서버 부하 분산(로드밸런싱)**을 담당하는 대표 장비입니다.&lt;br /&gt;외부에서 들어오는 요청을 서버가 직접 받는 것이 아니라, 먼저 &lt;b&gt;L4 스위치가 요청을 수신&lt;/b&gt;하고,&lt;br /&gt;그 후 내부 서버 중 하나로 적절히 전달해주는 역할을 합니다.&lt;/p&gt;
&lt;p data-end=&quot;823&quot; data-start=&quot;731&quot; data-ke-size=&quot;size16&quot;&gt;여기서 중요한 점은, 이 장비가 단순 트래픽 릴레이가 아니라&lt;br /&gt;**TCP/UDP 포트나 IP 주소를 기준으로 NAT(주소 변환)**까지 수행할 수 있다는 것입니다.&lt;/p&gt;
&lt;hr data-end=&quot;828&quot; data-start=&quot;825&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;863&quot; data-start=&quot;830&quot; data-ke-size=&quot;size26&quot;&gt;연결(Connection)을 관리하는 L4 스위치&lt;/h2&gt;
&lt;p data-end=&quot;920&quot; data-start=&quot;865&quot; data-ke-size=&quot;size16&quot;&gt;L4 스위치는 단순 트래픽 전달 외에도 &lt;b&gt;논리적 연결(Connection)을 직접 관리&lt;/b&gt;합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1107&quot; data-start=&quot;922&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;984&quot; data-start=&quot;922&quot;&gt;클라이언트가 서버에 접속할 때 수행하는 &lt;b&gt;3-Way Handshake&lt;/b&gt; 역시 L4 스위치를 거쳐 이루어짐&lt;/li&gt;
&lt;li data-end=&quot;1033&quot; data-start=&quot;985&quot;&gt;연결이 종료되면 &lt;b&gt;4-Way Handshake&lt;/b&gt;를 통해 세션 종료 및 연결 제거&lt;/li&gt;
&lt;li data-end=&quot;1107&quot; data-start=&quot;1034&quot;&gt;사용되지 않는 세션은 일정 시간이 지나면 자동으로 삭제&lt;br /&gt;(이때 Reset 플래그가 포함된 패킷으로 재접속 유도 가능)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1174&quot; data-start=&quot;1109&quot; data-ke-size=&quot;size16&quot;&gt;이러한 연결 정보는 &lt;b&gt;L4 스위치가 &amp;lsquo;세션 상태를 기억한다&amp;rsquo;는 의미에서 Stateful&lt;/b&gt;하게 동작함을 보여줍니다.&lt;/p&gt;
&lt;hr data-end=&quot;1179&quot; data-start=&quot;1176&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1199&quot; data-start=&quot;1181&quot; data-ke-size=&quot;size26&quot;&gt;왜 L4 스위치가 필요한가?&lt;/h2&gt;
&lt;p data-end=&quot;1320&quot; data-start=&quot;1201&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 웹 서버 하나에 공인 IP 123.111.43.2가 설정되어 있다고 가정해 봅시다.&lt;br /&gt;사용자가 많아지면 이 서버의 처리 능력만으로는 부족해져, 또 다른 서버 123.111.43.3을 추가합니다.&lt;/p&gt;
&lt;p data-end=&quot;1423&quot; data-start=&quot;1322&quot; data-ke-size=&quot;size16&quot;&gt;문제는 이제 사용자들이 두 개의 IP 중 어떤 것을 이용해야 하냐는 점이죠.&lt;br /&gt;서버가 2대일 땐 안내 공지를 통해 유도할 수도 있겠지만, 3대, 4대... 계속 서버가 늘어난다면?&lt;/p&gt;
&lt;p data-end=&quot;1466&quot; data-start=&quot;1425&quot; data-ke-size=&quot;size16&quot;&gt;&amp;gt;&amp;gt; 이때 필요한 것이 바로 &lt;b&gt;L4 스위치를 이용한 로드밸런싱&lt;/b&gt;입니다.&lt;/p&gt;
&lt;hr data-end=&quot;1471&quot; data-start=&quot;1468&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1499&quot; data-start=&quot;1473&quot; data-ke-size=&quot;size26&quot;&gt;구조의 변화: L4 스위치 중심 설계&lt;/h2&gt;
&lt;p data-end=&quot;1571&quot; data-start=&quot;1501&quot; data-ke-size=&quot;size16&quot;&gt;서버마다 공인 IP를 가질 필요 없이, 이제는 **L4 스위치가 하나의 공인 IP(VIP)**만 가지고 모든 요청을 받습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1657&quot; data-start=&quot;1573&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1598&quot; data-start=&quot;1573&quot;&gt;사용자는 123.111.43.1로 접속&lt;/li&gt;
&lt;li data-end=&quot;1621&quot; data-start=&quot;1599&quot;&gt;이 IP는 &lt;b&gt;L4 스위치에 할당&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;1657&quot; data-start=&quot;1622&quot;&gt;스위치는 내부 서버로 요청을 전달 (서버는 사설 IP 사용)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1766&quot; data-start=&quot;1659&quot; data-ke-size=&quot;size16&quot;&gt;이러한 구조의 장점은 단순한 부하 분산뿐 아니라 &lt;b&gt;보안 강화&lt;/b&gt;입니다.&lt;br /&gt;외부에서 서버의 사설 IP를 알 수 없기 때문에 &lt;b&gt;DDoS 공격 등의 위협을 막는 효과도 기대&lt;/b&gt;할 수 있습니다.&lt;/p&gt;
&lt;hr data-end=&quot;1771&quot; data-start=&quot;1768&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1806&quot; data-start=&quot;1773&quot; data-ke-size=&quot;size26&quot;&gt;L4 스위치와 포트 정보 &amp;ndash; Layer 4의 핵심&lt;/h2&gt;
&lt;p data-end=&quot;1929&quot; data-start=&quot;1808&quot; data-ke-size=&quot;size16&quot;&gt;여기서 &quot;왜 L4(Layer 4) 스위치인가?&quot;라는 의문이 생길 수 있습니다.&lt;br /&gt;바로, **OSI 7계층 중 4계층(Transport Layer)**에서 사용되는 &lt;b&gt;Port 정보&lt;/b&gt;를 기반으로 작동하기 때문입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1988&quot; data-start=&quot;1931&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1950&quot; data-start=&quot;1931&quot;&gt;웹 서비스: TCP 80번 포트&lt;/li&gt;
&lt;li data-end=&quot;1967&quot; data-start=&quot;1951&quot;&gt;파일 전송: TCP 21번&lt;/li&gt;
&lt;li data-end=&quot;1988&quot; data-start=&quot;1968&quot;&gt;DB 연결: TCP 3306번 등&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;2100&quot; data-start=&quot;1990&quot; data-ke-size=&quot;size16&quot;&gt;IP 주소만 가지고는 어떤 서비스로 연결할지 판단할 수 없기에,&lt;br /&gt;&lt;b&gt;IP + Port 조합이 반드시 필요&lt;/b&gt;합니다. 이 포트 정보를 기준으로 요청을 처리하는 것이 L4 스위치의 핵심 역할입니다.&lt;/p&gt;
&lt;hr data-end=&quot;2105&quot; data-start=&quot;2102&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2131&quot; data-start=&quot;2107&quot; data-ke-size=&quot;size26&quot;&gt;L4 스위치 구성 요소 용어 정리&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;구성 요소설명
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;2383&quot; data-start=&quot;2133&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;2383&quot; data-start=&quot;2169&quot;&gt;
&lt;tr data-end=&quot;2229&quot; data-start=&quot;2169&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2190&quot; data-start=&quot;2169&quot;&gt;&lt;b&gt;Virtual Server&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2229&quot; data-start=&quot;2190&quot;&gt;외부 사용자가 접근하는 가상의 서비스 단위 (IP + Port)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2286&quot; data-start=&quot;2230&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2253&quot; data-start=&quot;2230&quot;&gt;&lt;b&gt;VIP (Virtual IP)&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2286&quot; data-start=&quot;2253&quot;&gt;Virtual Server가 사용하는 공인 IP 주소&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2330&quot; data-start=&quot;2287&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2298&quot; data-start=&quot;2287&quot;&gt;&lt;b&gt;Pool&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2330&quot; data-start=&quot;2298&quot;&gt;Virtual Server와 연결된 실제 서버 집합&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2383&quot; data-start=&quot;2331&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2349&quot; data-start=&quot;2331&quot;&gt;&lt;b&gt;Pool Member&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2383&quot; data-start=&quot;2349&quot;&gt;Pool에 속한 각각의 서버 (IP + Port 조합)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2512&quot; data-start=&quot;2385&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2428&quot; data-start=&quot;2385&quot;&gt;하나의 Virtual Server는 하나 이상의 Pool을 가질 수 있고,&lt;/li&gt;
&lt;li data-end=&quot;2464&quot; data-start=&quot;2429&quot;&gt;각 Pool은 여러 개의 Pool Member로 구성됩니다.&lt;/li&gt;
&lt;li data-end=&quot;2512&quot; data-start=&quot;2465&quot;&gt;IP는 같아도 포트가 다르면 &lt;b&gt;서로 다른 Pool Member&lt;/b&gt;로 간주합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;2517&quot; data-start=&quot;2514&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2524&quot; data-start=&quot;2519&quot; data-ke-size=&quot;size26&quot;&gt;요약&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;항목내용
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;2716&quot; data-start=&quot;2526&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;2716&quot; data-start=&quot;2554&quot;&gt;
&lt;tr data-end=&quot;2594&quot; data-start=&quot;2554&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2567&quot; data-start=&quot;2554&quot;&gt;L4 스위치의 역할&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2594&quot; data-start=&quot;2567&quot;&gt;서버 부하 분산, 연결 관리, NAT 수행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2631&quot; data-start=&quot;2595&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2603&quot; data-start=&quot;2595&quot;&gt;핵심 기준&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2631&quot; data-start=&quot;2603&quot;&gt;TCP/UDP의 포트 정보 (Layer 4)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2665&quot; data-start=&quot;2632&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2637&quot; data-start=&quot;2632&quot;&gt;장점&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2665&quot; data-start=&quot;2637&quot;&gt;서버 보안 향상, 구조 단순화, 확장성 우수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2716&quot; data-start=&quot;2666&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2674&quot; data-start=&quot;2666&quot;&gt;실무 활용&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2716&quot; data-start=&quot;2674&quot;&gt;VIP &amp;rarr; Pool로 요청 분산, 상태 기반 세션 관리(Stateful)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>네트워크/Layer4</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/144</guid>
      <comments>https://kujung.tistory.com/entry/L4-%EC%8A%A4%EC%9C%84%EC%B9%98-%EC%9D%B4%EC%95%BC%EA%B8%B01-%EB%A1%9C%EB%93%9C%EB%B0%B8%EB%9F%B0%EC%8B%B1%EC%9D%98-%ED%95%B5%EC%8B%AC%EC%9D%84-%EC%9D%B4%ED%95%B4%ED%95%98%EC%9E%90#entry144comment</comments>
      <pubDate>Mon, 30 Jun 2025 11:53:49 +0900</pubDate>
    </item>
    <item>
      <title>로드 밸런싱(Load Balancing), 서버 부하를 나누는 기술</title>
      <link>https://kujung.tistory.com/entry/%EB%A1%9C%EB%93%9C-%EB%B0%B8%EB%9F%B0%EC%8B%B1Load-Balancing-%EC%84%9C%EB%B2%84-%EB%B6%80%ED%95%98%EB%A5%BC-%EB%82%98%EB%88%84%EB%8A%94-%EA%B8%B0%EC%88%A0</link>
      <description>&lt;h1 data-end=&quot;246&quot; data-start=&quot;207&quot;&gt;로드 밸런싱(Load Balancing), 서버 부하를 나누는 기술&lt;/h1&gt;
&lt;p data-end=&quot;453&quot; data-start=&quot;248&quot; data-ke-size=&quot;size16&quot;&gt;'부하 분산'이란 말을 들으면 어렵게 느껴질 수도 있지만, 사실 일상에서도 쉽게 찾아볼 수 있는 개념입니다.&lt;br /&gt;예를 들어, 팀장이 몰려드는 업무를 팀원들에게 적절히 분배하는 것도 일종의 부하 분산이죠.&lt;br /&gt;컴퓨터 네트워크에서도 이와 비슷한 원리로, &lt;b&gt;요청을 여러 서버나 장비에 나눠 처리&lt;/b&gt;하는 방식을 **로드 밸런싱(Load Balancing)**이라고 합니다.&lt;/p&gt;
&lt;hr data-end=&quot;458&quot; data-start=&quot;455&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;472&quot; data-start=&quot;460&quot; data-ke-size=&quot;size26&quot;&gt;로드 밸런싱이란?&lt;/h2&gt;
&lt;blockquote data-end=&quot;558&quot; data-start=&quot;474&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;558&quot; data-start=&quot;476&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;ldquo;Load Balancing은 둘 이상의 서버나 컴퓨팅 자원에 트래픽이나 작업 부하를 균등하게 분배하여 성능과 가용성을 높이는 기술입니다.&amp;rdquo;&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;674&quot; data-start=&quot;560&quot; data-ke-size=&quot;size16&quot;&gt;즉, 한 대의 서버가 모든 요청을 처리하다가 병목이 생기지 않도록, 여러 대의 서버에 요청을 나누어 분산하는 것입니다.&lt;br /&gt;이를 통해 서비스 속도는 빨라지고, 서버 과부하로 인한 장애 가능성도 줄어듭니다.&lt;/p&gt;
&lt;hr data-end=&quot;679&quot; data-start=&quot;676&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;698&quot; data-start=&quot;681&quot; data-ke-size=&quot;size26&quot;&gt;네트워크에서의 로드 밸런싱&lt;/h2&gt;
&lt;p data-end=&quot;728&quot; data-start=&quot;700&quot; data-ke-size=&quot;size16&quot;&gt;네트워크에서는 여러 종류의 부하 분산이 존재합니다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;799&quot; data-start=&quot;730&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;754&quot; data-start=&quot;730&quot;&gt;&lt;b&gt;Layer 2 기반 VLAN 분산&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;779&quot; data-start=&quot;755&quot;&gt;&lt;b&gt;Layer 3의 라우팅 기반 분산&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;799&quot; data-start=&quot;780&quot;&gt;&lt;b&gt;서버에 대한 로드 밸런싱&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;862&quot; data-start=&quot;801&quot; data-ke-size=&quot;size16&quot;&gt;이 문서에서는 **서버 부하 분산(Server Load Balancing)**에 초점을 맞춰 설명드리겠습니다.&lt;/p&gt;
&lt;hr data-end=&quot;867&quot; data-start=&quot;864&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;906&quot; data-start=&quot;869&quot; data-ke-size=&quot;size26&quot;&gt;서버 부하 분산(Server Load Balancing)이란?&lt;/h2&gt;
&lt;p data-end=&quot;969&quot; data-start=&quot;908&quot; data-ke-size=&quot;size16&quot;&gt;서버 부하 분산은 &lt;b&gt;외부에서 들어오는 요청들을 로드 밸런서를 통해 여러 서버에 나누는 구조&lt;/b&gt;를 의미합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1073&quot; data-start=&quot;971&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1005&quot; data-start=&quot;971&quot;&gt;사용자는 특정 웹사이트(naver.com 등)에 접속 요청&lt;/li&gt;
&lt;li data-end=&quot;1039&quot; data-start=&quot;1006&quot;&gt;요청은 서버가 직접 받지 않고, 먼저 로드 밸런서를 거침&lt;/li&gt;
&lt;li data-end=&quot;1073&quot; data-start=&quot;1040&quot;&gt;로드 밸런서는 그 요청을 내부 여러 서버 중 하나에 전달&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1171&quot; data-start=&quot;1075&quot; data-ke-size=&quot;size16&quot;&gt;이때 사용되는 장비는 주로 &lt;b&gt;L4/L7 스위치&lt;/b&gt; 또는 &lt;b&gt;소프트웨어 로드 밸런서&lt;/b&gt;이며,&lt;br /&gt;클라우드 환경에서는 흔히 &amp;ldquo;Load Balancer&amp;rdquo;라는 이름으로 불립니다.&lt;/p&gt;
&lt;blockquote data-end=&quot;1209&quot; data-start=&quot;1173&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1209&quot; data-start=&quot;1175&quot; data-ke-size=&quot;size16&quot;&gt;현업에서는 이를 줄여서 보통 &lt;b&gt;LB&lt;/b&gt;라고 부르기도 합니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;1214&quot; data-start=&quot;1211&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1252&quot; data-start=&quot;1216&quot; data-ke-size=&quot;size26&quot;&gt;로드 밸런싱 방식 (Load Balancing Method)&lt;/h2&gt;
&lt;p data-end=&quot;1321&quot; data-start=&quot;1254&quot; data-ke-size=&quot;size16&quot;&gt;서버의 성능과 상태에 따라 요청을 효율적으로 분산하기 위해 다양한 방식들이 사용됩니다. 대표적인 방법은 다음과 같습니다:&lt;/p&gt;
&lt;hr data-end=&quot;1326&quot; data-start=&quot;1323&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1355&quot; data-start=&quot;1328&quot; data-ke-size=&quot;size23&quot;&gt;Round Robin (라운드 로빈)&lt;/h3&gt;
&lt;p data-end=&quot;1458&quot; data-start=&quot;1357&quot; data-ke-size=&quot;size16&quot;&gt;가장 간단한 방식으로, &lt;b&gt;서버에 순차적으로 요청을 분배&lt;/b&gt;합니다.&lt;br /&gt;서버 A &amp;rarr; B &amp;rarr; C &amp;rarr; 다시 A... 순서대로 요청이 분산되며, 서버 간 성능 차이를 고려하지는 않습니다.&lt;/p&gt;
&lt;hr data-end=&quot;1463&quot; data-start=&quot;1460&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1499&quot; data-start=&quot;1465&quot; data-ke-size=&quot;size23&quot;&gt;Least Connection (최소 연결 방식)&lt;/h3&gt;
&lt;p data-end=&quot;1550&quot; data-start=&quot;1501&quot; data-ke-size=&quot;size16&quot;&gt;현재 **접속(Connection)**이 가장 적은 서버에 우선적으로 요청을 전달합니다.&lt;/p&gt;
&lt;p data-end=&quot;1667&quot; data-start=&quot;1552&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어, 서버 A에 10개, 서버 B에 3개가 연결되어 있다면, B가 덜 바쁘다고 판단하고 B에 요청을 보냅니다.&lt;br /&gt;실시간 부하를 기준으로 분산하는 방식이라 &lt;b&gt;가변적인 트래픽에 대응하기 좋습니다.&lt;/b&gt;&lt;/p&gt;
&lt;hr data-end=&quot;1672&quot; data-start=&quot;1669&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1695&quot; data-start=&quot;1674&quot; data-ke-size=&quot;size23&quot;&gt;Ratio (가중치 방식)&lt;/h3&gt;
&lt;p data-end=&quot;1731&quot; data-start=&quot;1697&quot; data-ke-size=&quot;size16&quot;&gt;서버의 처리 능력에 따라 &lt;b&gt;가중치를 설정&lt;/b&gt;하여 분산합니다.&lt;/p&gt;
&lt;p data-end=&quot;1741&quot; data-start=&quot;1733&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어,&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1837&quot; data-start=&quot;1742&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1760&quot; data-start=&quot;1742&quot;&gt;성능이 낮은 서버: 10%&lt;/li&gt;
&lt;li data-end=&quot;1837&quot; data-start=&quot;1761&quot;&gt;나머지 3대 서버: 각 30%씩&lt;br /&gt;이런 식으로 요청의 비율을 조절합니다. 이 방식은 &lt;b&gt;서버 간 성능 차이가 클 때 유용&lt;/b&gt;합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1842&quot; data-start=&quot;1839&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1868&quot; data-start=&quot;1844&quot; data-ke-size=&quot;size23&quot;&gt;Fastest (응답 속도 기준)&lt;/h3&gt;
&lt;p data-end=&quot;1903&quot; data-start=&quot;1870&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;응답 시간이 가장 빠른 서버에 우선 요청을 보냅니다.&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1997&quot; data-start=&quot;1905&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1956&quot; data-start=&quot;1905&quot;&gt;서버 A가 5개 요청을 받았고, 5개 응답을 빠르게 반환했다면 여유 있는 서버로 판단&lt;/li&gt;
&lt;li data-end=&quot;1997&quot; data-start=&quot;1957&quot;&gt;반면 서버 B는 10개 요청 중 5개만 응답했다면 과부하 상태로 간주&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;2034&quot; data-start=&quot;1999&quot; data-ke-size=&quot;size16&quot;&gt;서버의 실제 반응 속도까지 반영하는 &lt;b&gt;지능적인 방식&lt;/b&gt;입니다.&lt;/p&gt;
&lt;hr data-end=&quot;2039&quot; data-start=&quot;2036&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2048&quot; data-start=&quot;2041&quot; data-ke-size=&quot;size26&quot;&gt;정리하며&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;방식기준특징
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;2225&quot; data-start=&quot;2050&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;2225&quot; data-start=&quot;2090&quot;&gt;
&lt;tr data-end=&quot;2119&quot; data-start=&quot;2090&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2104&quot; data-start=&quot;2090&quot;&gt;Round Robin&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2109&quot; data-start=&quot;2104&quot;&gt;순서&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2119&quot; data-start=&quot;2109&quot;&gt;가장 단순함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2159&quot; data-start=&quot;2120&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2139&quot; data-start=&quot;2120&quot;&gt;Least Connection&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2146&quot; data-start=&quot;2139&quot;&gt;연결 수&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2159&quot; data-start=&quot;2146&quot;&gt;실시간 부하 반영&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2193&quot; data-start=&quot;2160&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2168&quot; data-start=&quot;2160&quot;&gt;Ratio&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2177&quot; data-start=&quot;2168&quot;&gt;성능 가중치&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2193&quot; data-start=&quot;2177&quot;&gt;서버별 비율 설정 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2225&quot; data-start=&quot;2194&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2204&quot; data-start=&quot;2194&quot;&gt;Fastest&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2212&quot; data-start=&quot;2204&quot;&gt;응답 속도&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2225&quot; data-start=&quot;2212&quot;&gt;실제 반응에 기반&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2357&quot; data-start=&quot;2227&quot; data-ke-size=&quot;size16&quot;&gt;이 외에도 다양한 알고리즘들이 있지만, 위 4가지는 대부분의 벤더나 솔루션에서 공통적으로 지원하는 방식입니다.&lt;br /&gt;특히 F5, Alteon, Cisco, Piolink 등 다양한 로드 밸런서 벤더들도 기본적으로 이 방식을 제공합니다.&lt;/p&gt;</description>
      <category>네트워크/Layer4</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/143</guid>
      <comments>https://kujung.tistory.com/entry/%EB%A1%9C%EB%93%9C-%EB%B0%B8%EB%9F%B0%EC%8B%B1Load-Balancing-%EC%84%9C%EB%B2%84-%EB%B6%80%ED%95%98%EB%A5%BC-%EB%82%98%EB%88%84%EB%8A%94-%EA%B8%B0%EC%88%A0#entry143comment</comments>
      <pubDate>Mon, 30 Jun 2025 11:46:28 +0900</pubDate>
    </item>
    <item>
      <title>OSI 7 계층, 왜 IT엔지니어에게 필수인가?</title>
      <link>https://kujung.tistory.com/entry/OSI-7-%EA%B3%84%EC%B8%B5-%EC%99%9C-IT%EC%97%94%EC%A7%80%EB%8B%88%EC%96%B4%EC%97%90%EA%B2%8C-%ED%95%84%EC%88%98%EC%9D%B8%EA%B0%80</link>
      <description>&lt;h1 data-end=&quot;235&quot; data-start=&quot;209&quot;&gt;OSI 7 계층, 왜 엔지니어에게 필수인가?&lt;/h1&gt;
&lt;p data-end=&quot;387&quot; data-start=&quot;237&quot; data-ke-size=&quot;size16&quot;&gt;인터넷 강의를 듣고, 메시지를 주고받고, 웹사이트를 여는 모든 네트워크 활동은 하나의 규칙에 기반하고 있습니다. 바로 &lt;b&gt;OSI 7 Layer 모델&lt;/b&gt;입니다.&lt;br /&gt;실제로 IT 인프라를 다루는 사람이라면 OSI 계층 모델에 대한 이해는 선택이 아닌 &lt;b&gt;필수&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-end=&quot;511&quot; data-start=&quot;389&quot; data-ke-size=&quot;size16&quot;&gt;기업의 신입사원 면접에서도 빠지지 않고 나오는 질문 중 하나가 &quot;OSI 7 Layer에 대해 설명해보세요&quot;일 정도죠.&lt;br /&gt;하지만 처음 이 개념을 접할 때는, 이름만으로도 어렵고 외울 게 많은 구조로 느껴지기 마련입니다.&lt;/p&gt;
&lt;p data-end=&quot;594&quot; data-start=&quot;513&quot; data-ke-size=&quot;size16&quot;&gt;이번 글에서는 OSI 7 Layer 중 실무에 꼭 필요한 핵심 계층들만 골라 쉽게 풀어보겠습니다.&lt;br /&gt;(Layer 5~6은 생략하고 설명합니다.)&lt;/p&gt;
&lt;hr data-end=&quot;599&quot; data-start=&quot;596&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;617&quot; data-start=&quot;601&quot; data-ke-size=&quot;size26&quot;&gt;OSI 7 Layer란?&lt;/h2&gt;
&lt;p data-end=&quot;763&quot; data-start=&quot;619&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;OSI(Open Systems Interconnection)&lt;/b&gt; 모델은 국제 표준화 기구(ISO)에서 제안한 네트워크 통신 구조입니다.&lt;br /&gt;복잡한 통신 과정을 7개의 계층으로 나누어 각 단계의 역할을 정의하고, 서로 독립적으로 설계될 수 있게 한 것이죠.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;832&quot; data-start=&quot;765&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;799&quot; data-start=&quot;765&quot;&gt;상위 계층: &lt;b&gt;소프트웨어 중심&lt;/b&gt;, 실제 사용자와 가까움&lt;/li&gt;
&lt;li data-end=&quot;832&quot; data-start=&quot;800&quot;&gt;하위 계층: &lt;b&gt;하드웨어 중심&lt;/b&gt;, 물리적 전송과 관련&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;891&quot; data-start=&quot;834&quot; data-ke-size=&quot;size16&quot;&gt;각 계층은 &lt;b&gt;아래 계층의 기능을 활용&lt;/b&gt;하고, &lt;b&gt;위 계층에 기능을 제공&lt;/b&gt;하는 방식으로 연결됩니다.&lt;/p&gt;
&lt;p data-end=&quot;891&quot; data-start=&quot;834&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;891&quot; data-start=&quot;834&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;1024&quot; data-origin-height=&quot;532&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/evSeSq/btsOXPVqehW/LScbMjeyD3tGdypSJLZBXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/evSeSq/btsOXPVqehW/LScbMjeyD3tGdypSJLZBXk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/evSeSq/btsOXPVqehW/LScbMjeyD3tGdypSJLZBXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FevSeSq%2FbtsOXPVqehW%2FLScbMjeyD3tGdypSJLZBXk%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;1024&quot; height=&quot;532&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;532&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출처: &lt;a href=&quot;https://westahn.com/osi-7-%EA%B3%84%EC%B8%B5%EC%9D%B4%EB%9E%80/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://westahn.com/osi-7-%EA%B3%84%EC%B8%B5%EC%9D%B4%EB%9E%80/&lt;/a&gt;&lt;/p&gt;
&lt;hr data-end=&quot;896&quot; data-start=&quot;893&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;918&quot; data-start=&quot;898&quot; data-ke-size=&quot;size26&quot;&gt;OSI 7계층의 핵심 계층 요약&lt;/h2&gt;
&lt;h3 data-end=&quot;949&quot; data-start=&quot;920&quot; data-ke-size=&quot;size23&quot;&gt;7계층 &amp;ndash; Application Layer&lt;/h3&gt;
&lt;p data-end=&quot;1046&quot; data-start=&quot;950&quot; data-ke-size=&quot;size16&quot;&gt;사용자가 직접 사용하는 소프트웨어 계층입니다. 우리가 웹사이트를 열 때 사용되는 HTTP, 이메일을 보낼 때의 SMTP, 도메인을 찾을 때의 DNS 등이 여기에 해당합니다.&lt;/p&gt;
&lt;p data-end=&quot;1096&quot; data-start=&quot;1048&quot; data-ke-size=&quot;size16&quot;&gt;HTTP, FTP, SMTP, DNS 등&lt;br /&gt;제 사용자와 가장 가까운 계층&lt;/p&gt;
&lt;hr data-end=&quot;1101&quot; data-start=&quot;1098&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1130&quot; data-start=&quot;1103&quot; data-ke-size=&quot;size23&quot;&gt;4계층 &amp;ndash; Transport Layer&lt;/h3&gt;
&lt;p data-end=&quot;1243&quot; data-start=&quot;1131&quot; data-ke-size=&quot;size16&quot;&gt;데이터를 &lt;b&gt;신뢰성 있게 주고받을 수 있도록 연결&lt;/b&gt;을 관리하는 계층입니다.&lt;br /&gt;TCP(연결형), UDP(비연결형)와 같은 프로토콜이 이곳에 속하며, 패킷의 전송 여부를 확인하거나 재전송도 처리합니다.&lt;/p&gt;
&lt;p data-end=&quot;1281&quot; data-start=&quot;1245&quot; data-ke-size=&quot;size16&quot;&gt;TCP, UDP&lt;br /&gt;연결 설정, 세션 유지, 흐름 제어&lt;/p&gt;
&lt;hr data-end=&quot;1286&quot; data-start=&quot;1283&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1313&quot; data-start=&quot;1288&quot; data-ke-size=&quot;size23&quot;&gt;3계층 &amp;ndash; Network Layer&lt;/h3&gt;
&lt;p data-end=&quot;1409&quot; data-start=&quot;1314&quot; data-ke-size=&quot;size16&quot;&gt;목적지까지 &lt;b&gt;데이터가 어떤 경로로 가야 하는지&lt;/b&gt; 결정하는 계층입니다.&lt;br /&gt;IP 주소와 라우팅 개념이 등장하며, 서로 다른 네트워크 대역 간의 통신을 가능하게 만듭니다.&lt;/p&gt;
&lt;p data-end=&quot;1449&quot; data-start=&quot;1411&quot; data-ke-size=&quot;size16&quot;&gt;IP, ICMP, Routing&lt;br /&gt;주소 지정과 경로 선택&lt;/p&gt;
&lt;hr data-end=&quot;1454&quot; data-start=&quot;1451&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1483&quot; data-start=&quot;1456&quot; data-ke-size=&quot;size23&quot;&gt;2계층 &amp;ndash; Data Link Layer&lt;/h3&gt;
&lt;p data-end=&quot;1569&quot; data-start=&quot;1484&quot; data-ke-size=&quot;size16&quot;&gt;같은 네트워크 내에서의 통신을 관리하는 계층입니다. MAC 주소를 통해 &lt;b&gt;같은 대역 내 장치들끼리&lt;/b&gt; 정확히 연결되도록 하며, 오류 검출도 담당합니다.&lt;/p&gt;
&lt;p data-end=&quot;1610&quot; data-start=&quot;1571&quot; data-ke-size=&quot;size16&quot;&gt;Ethernet, MAC&lt;br /&gt;동일 네트워크에서의 데이터 전송&lt;/p&gt;
&lt;hr data-end=&quot;1615&quot; data-start=&quot;1612&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1643&quot; data-start=&quot;1617&quot; data-ke-size=&quot;size23&quot;&gt;1계층 &amp;ndash; Physical Layer&lt;/h3&gt;
&lt;p data-end=&quot;1739&quot; data-start=&quot;1644&quot; data-ke-size=&quot;size16&quot;&gt;네트워크의 가장 바닥에 위치한 계층으로, &lt;b&gt;전기적 신호나 광신호를 실제로 전달&lt;/b&gt;하는 역할을 합니다.&lt;br /&gt;케이블, 커넥터, 허브 같은 물리적 장비들이 여기에 포함됩니다.&lt;/p&gt;
&lt;p data-end=&quot;1775&quot; data-start=&quot;1741&quot; data-ke-size=&quot;size16&quot;&gt;UTP 케이블, 광케이블 등&lt;br /&gt;신호의 물리적 전송&lt;/p&gt;
&lt;hr data-end=&quot;1780&quot; data-start=&quot;1777&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1800&quot; data-start=&quot;1782&quot; data-ke-size=&quot;size26&quot;&gt;어렵다면? 택배에 비유해보자&lt;/h2&gt;
&lt;p data-end=&quot;1866&quot; data-start=&quot;1802&quot; data-ke-size=&quot;size16&quot;&gt;OSI 7 Layer는 추상적이라 느껴지기 쉽습니다. 그래서 현실적인 &lt;b&gt;택배 시스템&lt;/b&gt;에 빗대어 설명해보겠습니다.&lt;/p&gt;
&lt;hr data-end=&quot;1871&quot; data-start=&quot;1868&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1889&quot; data-start=&quot;1873&quot; data-ke-size=&quot;size23&quot;&gt;택배 발송 이야기&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2115&quot; data-start=&quot;1891&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1941&quot; data-start=&quot;1891&quot;&gt;나는 신천동 100번지에서, 방배동 400번지 친구에게 중요한 문서를 보내려고 합니다.&lt;/li&gt;
&lt;li data-end=&quot;1987&quot; data-start=&quot;1942&quot;&gt;문서는 회사 양식에 따라 작성하고, 받은 후 연락을 달라는 쪽지를 동봉합니다.&lt;/li&gt;
&lt;li data-end=&quot;2076&quot; data-start=&quot;1988&quot;&gt;내가 직접 제1택배센터(신천동 200번지)에 가서 접수하면, 이 택배는 중간에 제2택배센터, 제3택배센터를 거쳐 방배동 너네 집(400번지)에 도착합니다.&lt;/li&gt;
&lt;li data-end=&quot;2115&quot; data-start=&quot;2077&quot;&gt;수신자는 이를 받고 쪽지를 확인한 뒤 전화로 수신 확인을 줍니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;2120&quot; data-start=&quot;2117&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;2142&quot; data-start=&quot;2122&quot; data-ke-size=&quot;size23&quot;&gt;데이터가 전달되는 방식&lt;/h3&gt;
&lt;p data-end=&quot;2177&quot; data-start=&quot;2144&quot; data-ke-size=&quot;size16&quot;&gt;이 택배 과정을 OSI 7 계층으로 바꾸면 다음과 같습니다:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;2773&quot; data-start=&quot;2179&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;2264&quot; data-start=&quot;2179&quot;&gt;&lt;b&gt;Application Layer&lt;/b&gt;&lt;br /&gt;웹페이지를 HTTP로 작성하고 헤더에 정보를 담음&lt;br /&gt;&amp;rarr; 문서를 규칙에 맞게 작성하는 단계&lt;/li&gt;
&lt;li data-end=&quot;2363&quot; data-start=&quot;2266&quot;&gt;&lt;b&gt;Transport Layer (TCP)&lt;/b&gt;&lt;br /&gt;신뢰 가능한 연결을 만들기 위해 3-Way Handshake를 수행&lt;br /&gt;&amp;rarr; 쪽지를 동봉해 수신 확인 요청&lt;/li&gt;
&lt;li data-end=&quot;2464&quot; data-start=&quot;2365&quot;&gt;&lt;b&gt;Network Layer (IP)&lt;/b&gt;&lt;br /&gt;IP 주소를 통해 발신자(10.10.1.1)와 수신자(10.10.4.2)를 지정&lt;br /&gt;&amp;rarr; 출발지와 도착지 주소 기재&lt;/li&gt;
&lt;li data-end=&quot;2574&quot; data-start=&quot;2466&quot;&gt;&lt;b&gt;Data Link Layer (Ethernet)&lt;/b&gt;&lt;br /&gt;MAC 주소를 통해 실제 전달 경로를 정하고, 오류 검사 정보 추가&lt;br /&gt;&amp;rarr; 택배 센터 주소와 번지로 중간 경로 설정&lt;/li&gt;
&lt;li data-end=&quot;2656&quot; data-start=&quot;2576&quot;&gt;&lt;b&gt;Physical Layer&lt;/b&gt;&lt;br /&gt;데이터가 전기 신호로 바뀌어 케이블을 타고 이동&lt;br /&gt;&amp;rarr; 택배가 실제로 트럭에 실려 이동&lt;/li&gt;
&lt;li data-end=&quot;2773&quot; data-start=&quot;2658&quot;&gt;&lt;b&gt;도착지 처리&lt;/b&gt;&lt;br /&gt;최종 수신자가 MAC과 IP를 확인하여 자신이 맞음을 확인하고,&lt;br /&gt;TCP 세션을 완성한 후 HTTP 데이터를 열람함&lt;br /&gt;&amp;rarr; 수신자가 택배를 열고 문서를 확인&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-end=&quot;2778&quot; data-start=&quot;2775&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2803&quot; data-start=&quot;2780&quot; data-ke-size=&quot;size26&quot;&gt;OSI 7 Layer, 왜 중요한가?&lt;/h2&gt;
&lt;p data-end=&quot;2848&quot; data-start=&quot;2805&quot; data-ke-size=&quot;size16&quot;&gt;이 모델을 이해하면 &lt;b&gt;네트워크 문제의 원인을 정확히 진단&lt;/b&gt;할 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2908&quot; data-start=&quot;2850&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2867&quot; data-start=&quot;2850&quot;&gt;케이블 이상? &amp;rarr; 물리 계층&lt;/li&gt;
&lt;li data-end=&quot;2886&quot; data-start=&quot;2868&quot;&gt;IP 충돌? &amp;rarr; 네트워크 계층&lt;/li&gt;
&lt;li data-end=&quot;2908&quot; data-start=&quot;2887&quot;&gt;웹 페이지 안 열림? &amp;rarr; 응용 계층&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;2991&quot; data-start=&quot;2910&quot; data-ke-size=&quot;size16&quot;&gt;문제가 어느 구간에서 발생했는지 파악하기 쉬워지고,&lt;br /&gt;각 계층별 장비 및 설정도 이해할 수 있어 네트워크 설계와 보안 설정에 큰 도움이 됩니다.&lt;/p&gt;</description>
      <category>네트워크/기초</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/142</guid>
      <comments>https://kujung.tistory.com/entry/OSI-7-%EA%B3%84%EC%B8%B5-%EC%99%9C-IT%EC%97%94%EC%A7%80%EB%8B%88%EC%96%B4%EC%97%90%EA%B2%8C-%ED%95%84%EC%88%98%EC%9D%B8%EA%B0%80#entry142comment</comments>
      <pubDate>Mon, 30 Jun 2025 11:24:44 +0900</pubDate>
    </item>
    <item>
      <title>[k8s] 쿠버네티스로 편해진 IT 인프라 구축</title>
      <link>https://kujung.tistory.com/entry/k8s-%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4%EB%A1%9C-%ED%8E%B8%ED%95%B4%EC%A7%84-IT-%EC%9D%B8%ED%94%84%EB%9D%BC-%EA%B5%AC%EC%B6%95</link>
      <description>&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;해당 글은 일프로 님의 인프런 강의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #12b886;&quot; href=&quot;https://www.inflearn.com/course/%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4-%EC%96%B4%EB%82%98%EB%8D%94-%ED%81%B4%EB%9E%98%EC%8A%A4-%EC%A7%80%EC%83%81%ED%8E%B8-sprint1?inst=9e404e23&amp;amp;utm_source=instructor&amp;amp;utm_medium=referral&amp;amp;utm_campaign=inflearn_%ED%8A%B8%EB%9E%98%ED%94%BD_promotion-link&quot;&gt;쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2&lt;/a&gt;의 내용을 정리한 글입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;해당 글에 사용된 내용, 사진 및 그림은 모두 강의와 강의 자료에 포함된 내용입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;네트워크 엔지니어로 근무하면서 부족하다고 생각되는 부분을 공부하고 있다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;그 중 쿠버네티스는 인프라 환경에서 굉장히 중요한 입지를 가지고 있고, 각 경계를 허무는 역할을 한다고 한다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; 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;1280&quot; data-origin-height=&quot;1120&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUJx3L/btsOWr18Xdh/ZDMG6rMMs2UlkrbjaiuUr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUJx3L/btsOWr18Xdh/ZDMG6rMMs2UlkrbjaiuUr0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUJx3L/btsOWr18Xdh/ZDMG6rMMs2UlkrbjaiuUr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUJx3L%2FbtsOWr18Xdh%2FZDMG6rMMs2UlkrbjaiuUr0%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;1280&quot; height=&quot;1120&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1120&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;IT에 관련된 대부분의 기업이 쿠버네티스와 컨테이너에 진입을 했다.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;쿠버네티스가 나온 지 10 년도 안 됐는데, 현재 이렇게 많은 제품들이 쿠버네티스 생태계 위에서 돌아간다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt; &lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;이미 많은 회사들은 컨테이너가 미래에 인프라가 될 거라는 걸 예상했고 너도나도 이 시장의 넘버원이 되려고 뛰어 들었다.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt; 그 결과 정말&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;짧은 시간만에 쿠버네티스 기반의 IT 생태계가 이렇게 폭발적으로 커졌다.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dna/bPsuQR/btsOWo5qYj9/AAAAAAAAAAAAAAAAAAAAAHFyLEAJx5FIZdk3wBkMXKA-mAhQIyeKYkESklf4rF8b/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;amp;expires=1751295599&amp;amp;allow_ip=&amp;amp;allow_referer=&amp;amp;signature=79bZ8GtWvnk2iGO09aTgEf3YdL4%3D&quot; data-origin-width=&quot;984&quot; data-origin-height=&quot;585&quot; data-is-animation=&quot;false&quot; /&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #343a40;&quot;&gt;CNCF landscape 중 선별 기준&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #228be6;&quot;&gt;CNCF 멤버/비멤버 제품&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 깃허브 Stars 높음 추가, 강사님 임의 추가&lt;span style=&quot;color: #228be6;&quot;&gt;CNCF 프로젝트&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: Graduated Projects (&lt;span style=&quot;color: #fa5252;&quot;&gt;Github Stars 낮음 제외&lt;/span&gt;), Incubating Projects (&lt;span style=&quot;color: #fa5252;&quot;&gt;Github Stars 높음 추&lt;/span&gt;가), Sandbox Projects (&lt;span style=&quot;color: #fa5252;&quot;&gt;X&lt;/span&gt;), Archived Projects (&lt;span style=&quot;color: #fa5252;&quot;&gt;X&lt;/span&gt;)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;참고 링크 :&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;CNCF (&lt;a style=&quot;color: #0969da;&quot; href=&quot;https://www.cncf.io/&quot;&gt;link&lt;/a&gt;), CNCF landscape (&lt;a style=&quot;color: #0969da;&quot; href=&quot;https://landscape.cncf.io/&quot;&gt;link&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;눈에 잡히는 IT생태계를 정리를 해 보면 위와 같다.&lt;/li&gt;
&lt;li&gt;CNCF (Cloud Native Computing Foundation)**는 클라우드 네이티브 기술의 발전과 표준화를 지원하는 오픈소스 재단&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 제품들은 정말 많은 오픈 소스들 중에 대표이고&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;일단 처음엔 여기에만 집중해도 충분&lt;/span&gt;&lt;/b&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&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;span style=&quot;background-color: #ffffff; color: #ee2323; text-align: start;&quot;&gt; 쿠버네티스 기능으로 편해진 서비스 안정화&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1033&quot; data-origin-height=&quot;506&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvjS7N/btsOUwKoKhR/ptiPsk0qMtnKPuU0Kpc8h1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvjS7N/btsOUwKoKhR/ptiPsk0qMtnKPuU0Kpc8h1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvjS7N/btsOUwKoKhR/ptiPsk0qMtnKPuU0Kpc8h1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvjS7N%2FbtsOUwKoKhR%2FptiPsk0qMtnKPuU0Kpc8h1%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;1033&quot; height=&quot;506&quot; data-origin-width=&quot;1033&quot; data-origin-height=&quot;506&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id=&quot;실제-프로젝트를-할-때-구조적인-문제&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;실제 프로젝트를 할 때 구조적인 문제&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;개발과 모니터링 시스템이 서로 엮일 수 밖에 없는 구조&lt;br /&gt;1-1. 쿠버네티스와 모니터링을 통해 개발과 모니터링 시스템을 분리&lt;/li&gt;
&lt;li&gt;개발에서는 한 번도 사용하지 않은 개발 시스템을 위한 모니터링 시스템을 만드는 구조&lt;br /&gt;2-1. 이미 존재하는 오픈 소스를 통해 개발 초기부터 모니터링 시스템 사용 가능&lt;/li&gt;
&lt;li&gt;애플리케이션 오픈 시 개발 프로젝트와 서로 다른 범위의 애플리케이션들을 모니터링 하게 되는 구조&lt;br /&gt;3-1. 개발 도중 기능이 추가/삭제되면서 발생하는 애플리케이션의 변경 사항을 자동으로 반영&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1 id=&quot;모니터링-도구-설치&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;&amp;nbsp;&lt;/h1&gt;
&lt;h1 id=&quot;쿠버네티스-대표-기능&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;쿠버네티스 대표 기능&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;테스트 애플리케이션은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #12b886;&quot; href=&quot;https://cafe.naver.com/kubeops?iframe_url_utf8=%2FArticleRead.nhn%253Fclubid%3D30725715%2526page%3D1%2526menuid%3D13%2526boardtype%3DL%2526articleid%3D31%2526referrerAllArticles%3Dfalse&quot;&gt;[Sprint1] 실무에서 느껴 본 쿠버네티스가 정말 편한 이유 &amp;gt; 쿠버네티스 대표 기능&lt;/a&gt;를 토대로 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;274&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dwbu1S/btsOWh6kCw0/vypUeTwdFBbRmZ1YkEpkX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dwbu1S/btsOWh6kCw0/vypUeTwdFBbRmZ1YkEpkX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dwbu1S/btsOWh6kCw0/vypUeTwdFBbRmZ1YkEpkX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdwbu1S%2FbtsOWh6kCw0%2FvypUeTwdFBbRmZ1YkEpkX1%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;1280&quot; height=&quot;274&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;274&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파드를 이중화한 상태&lt;/li&gt;
&lt;li&gt;서비스는 자체적으로 파드가 두 개 있으면 트래픽을 두 pod로 분산&lt;/li&gt;
&lt;li&gt;오토 스케일링의 경우 최소 2, 최대 4이며 CPU를 기준으로 평균 40%가 넘으면 적용&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;traffic-routing&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Traffic Routing&lt;/h2&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background-color: #fbfcfd; color: #24292e; text-align: left;&quot;&gt;&lt;code&gt;while true; do curl http://192.168.56.30:31221/hostname; sleep 2; echo '';  done;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;245&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDRH8E/btsOX9TJtD8/UwwLnnIo32Clpx5Qbo8ck1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDRH8E/btsOX9TJtD8/UwwLnnIo32Clpx5Qbo8ck1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDRH8E/btsOX9TJtD8/UwwLnnIo32Clpx5Qbo8ck1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDRH8E%2FbtsOX9TJtD8%2FUwwLnnIo32Clpx5Qbo8ck1%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;1280&quot; height=&quot;245&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;245&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;2초 간격으로 꾸준히 트래픽을 발생시키는 명령어&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;277&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mt6YV/btsOXIIXSFj/rRail8l6EHFDTJJRm1fHk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mt6YV/btsOXIIXSFj/rRail8l6EHFDTJJRm1fHk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mt6YV/btsOXIIXSFj/rRail8l6EHFDTJJRm1fHk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fmt6YV%2FbtsOXIIXSFj%2FrRail8l6EHFDTJJRm1fHk1%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;1280&quot; height=&quot;277&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;277&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;각 파드가 트래픽을 고르게 가져가고 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;368&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cAxdwH/btsOUU48E85/KKZA2EuNkcwTq8S0SE7M61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cAxdwH/btsOUU48E85/KKZA2EuNkcwTq8S0SE7M61/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cAxdwH/btsOUU48E85/KKZA2EuNkcwTq8S0SE7M61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcAxdwH%2FbtsOUU48E85%2FKKZA2EuNkcwTq8S0SE7M61%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;1280&quot; height=&quot;368&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;368&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;283&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bK6ij4/btsOXhEGfsG/8AFirgq83m9bKigUPSJFEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bK6ij4/btsOXhEGfsG/8AFirgq83m9bKigUPSJFEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bK6ij4/btsOXhEGfsG/8AFirgq83m9bKigUPSJFEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbK6ij4%2FbtsOXhEGfsG%2F8AFirgq83m9bKigUPSJFEK%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;1280&quot; height=&quot;283&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;283&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;279&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMwCV8/btsOWiD6TsR/6XapBv8zIb1DiTLQGxNl7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMwCV8/btsOWiD6TsR/6XapBv8zIb1DiTLQGxNl7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMwCV8/btsOWiD6TsR/6XapBv8zIb1DiTLQGxNl7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMwCV8%2FbtsOWiD6TsR%2F6XapBv8zIb1DiTLQGxNl7K%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;1280&quot; height=&quot;279&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;279&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파드를 하나 강제로 삭제한다고 하더라도 자동으로 이를 복구함&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;self-healing&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Self-Healing&lt;/h2&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;background-color: #fbfcfd; color: #24292e; text-align: left;&quot;&gt;&lt;code&gt;curl 192.168.56.30:31221/memory-leak&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;강제로 메모리 릭 발생&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;279&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbwDrG/btsOXTDvUoM/0WaKGuuDrv6OPr5N4MHx1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbwDrG/btsOXTDvUoM/0WaKGuuDrv6OPr5N4MHx1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbwDrG/btsOXTDvUoM/0WaKGuuDrv6OPr5N4MHx1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbwDrG%2FbtsOXTDvUoM%2F0WaKGuuDrv6OPr5N4MHx1k%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;1280&quot; height=&quot;279&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;279&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;쿠버네티스에서 메모리 릭이 발생한 파드를 재시작(1)한 것을 확인할 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;276&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKcZFM/btsOWiYtuLJ/DJOEZkkIXHFh60PPehJ4wk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKcZFM/btsOWiYtuLJ/DJOEZkkIXHFh60PPehJ4wk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKcZFM/btsOWiYtuLJ/DJOEZkkIXHFh60PPehJ4wk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKcZFM%2FbtsOWiYtuLJ%2FDJOEZkkIXHFh60PPehJ4wk%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;1280&quot; height=&quot;276&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;276&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;그라파나에서 CPU 사용량이 폭증한 시간대 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;679&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AbAmM/btsOVxu42ex/exnHjqatlG8RYaeSqfXwLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AbAmM/btsOVxu42ex/exnHjqatlG8RYaeSqfXwLk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AbAmM/btsOVxu42ex/exnHjqatlG8RYaeSqfXwLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAbAmM%2FbtsOVxu42ex%2FexnHjqatlG8RYaeSqfXwLk%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;1280&quot; height=&quot;679&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;679&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;발생한 파드와 시간대를 토대로 문제 로그 확인 가능&lt;/li&gt;
&lt;li&gt;로그를 통해 OOM 발생 이후 쿠버네티스가 자동으로 재시작하는 것을 확인할 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;autoscaling&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;AutoScaling&lt;/h2&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;background-color: #fbfcfd; color: #24292e; text-align: left;&quot;&gt;&lt;code&gt;curl 192.168.56.30:31221/cpu-load&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;508&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wGW7V/btsOUVXupPx/FFHR5ZhgSDdSTtiUnVmYhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wGW7V/btsOUVXupPx/FFHR5ZhgSDdSTtiUnVmYhk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wGW7V/btsOUVXupPx/FFHR5ZhgSDdSTtiUnVmYhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwGW7V%2FbtsOUVXupPx%2FFFHR5ZhgSDdSTtiUnVmYhk%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;1280&quot; height=&quot;508&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;508&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기존 상태&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;683&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JEtWf/btsOVJ24uut/dy1Vhg00PKaJiaVXUBJudK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JEtWf/btsOVJ24uut/dy1Vhg00PKaJiaVXUBJudK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JEtWf/btsOVJ24uut/dy1Vhg00PKaJiaVXUBJudK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJEtWf%2FbtsOVJ24uut%2Fdy1Vhg00PKaJiaVXUBJudK%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;1280&quot; height=&quot;683&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;683&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;696&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zb7BY/btsOXO3lNcc/9ReiIwxyKjHOkM7XIZX7C1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zb7BY/btsOXO3lNcc/9ReiIwxyKjHOkM7XIZX7C1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zb7BY/btsOXO3lNcc/9ReiIwxyKjHOkM7XIZX7C1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fzb7BY%2FbtsOXO3lNcc%2F9ReiIwxyKjHOkM7XIZX7C1%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;1280&quot; height=&quot;696&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;696&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;증가한 트래픽에 따라 Auto Scaling이 적용되어 파드 수가 2 -&amp;gt; 4개로 증가&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;508&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c9FF23/btsOWrujX4F/wQ4kkTDfoj2cqDWKM2w5x1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c9FF23/btsOWrujX4F/wQ4kkTDfoj2cqDWKM2w5x1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c9FF23/btsOWrujX4F/wQ4kkTDfoj2cqDWKM2w5x1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc9FF23%2FbtsOWrujX4F%2FwQ4kkTDfoj2cqDWKM2w5x1%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;1280&quot; height=&quot;508&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;508&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;트래픽이 감소하면 다시 파드 수가 4 -&amp;gt; 2로 감소&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;rollingupdate&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;RollingUpdate&lt;/h2&gt;
&lt;h3 id=&quot;성공-시&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;성공 시&lt;/h3&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;background-color: #fbfcfd; color: #24292e; text-align: left;&quot;&gt;&lt;code&gt;kubectl set image -n default deployment/app-1-2-2-1 app-1-2-2-1=1pro/app-update&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;114&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cekmRc/btsOWEgdY0I/mwpsIiTN261QAbRKuXasYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cekmRc/btsOWEgdY0I/mwpsIiTN261QAbRKuXasYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cekmRc/btsOWEgdY0I/mwpsIiTN261QAbRKuXasYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcekmRc%2FbtsOWEgdY0I%2FmwpsIiTN261QAbRKuXasYK%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;1280&quot; height=&quot;114&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;114&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;트래픽이 계속 발생하고 있는 환경에서 이미지 업데이트 수행&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;667&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bji5ga/btsOUzf3MQ8/5QKir1lK9F6zWFGPRTvWUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bji5ga/btsOUzf3MQ8/5QKir1lK9F6zWFGPRTvWUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bji5ga/btsOUzf3MQ8/5QKir1lK9F6zWFGPRTvWUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbji5ga%2FbtsOUzf3MQ8%2F5QKir1lK9F6zWFGPRTvWUK%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;1280&quot; height=&quot;667&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;667&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이미지 버전을 변경하면서 아직 기동되지 않은 새 버전이 아닌 이전 버전 파드에 트래픽 분산&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;586&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjJVAd/btsOXOCiJ2L/kfmbv54nqL8nUZ4GRbZLGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjJVAd/btsOXOCiJ2L/kfmbv54nqL8nUZ4GRbZLGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjJVAd/btsOXOCiJ2L/kfmbv54nqL8nUZ4GRbZLGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjJVAd%2FbtsOXOCiJ2L%2Fkfmbv54nqL8nUZ4GRbZLGK%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;1280&quot; height=&quot;586&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;586&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;새 버전이 기동된 이후 이전 버전에 대한 파드 삭제&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;583&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cIOZb1/btsOVv45bY3/TvRLthUjcX7gPEp1xpsnD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cIOZb1/btsOVv45bY3/TvRLthUjcX7gPEp1xpsnD0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cIOZb1/btsOVv45bY3/TvRLthUjcX7gPEp1xpsnD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcIOZb1%2FbtsOVv45bY3%2FTvRLthUjcX7gPEp1xpsnD0%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;1280&quot; height=&quot;583&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;583&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;새 버전 파드에 트래픽 분산
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이 모든 과정 중 트래픽은 꾸준히 들어오고, 모든 트래픽은 정상적으로 처리됨&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;실패-시&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;실패 시&lt;/h3&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;background-color: #fbfcfd; color: #24292e; text-align: left;&quot;&gt;&lt;code&gt;kubectl set image -n default deployment/app-1-2-2-1 app-1-2-2-1=1pro/app-error&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;745&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QSn1f/btsOXgFNNgH/j8zdsK33xS8UrvuvDlgOQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QSn1f/btsOXgFNNgH/j8zdsK33xS8UrvuvDlgOQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QSn1f/btsOXgFNNgH/j8zdsK33xS8UrvuvDlgOQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQSn1f%2FbtsOXgFNNgH%2Fj8zdsK33xS8UrvuvDlgOQk%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;1280&quot; height=&quot;745&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;745&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;새 이미지가 정상적인지 확인한 뒤 기존 이미지를 바꾸기 때문에 실패하더라도 쿠버네티스가 이를 처리해줌
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문제가 발생한 이미지 버전은 정상적으로 동작하지 않기 때문에 이전 이미지 파드에서 트래픽 처리&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;background-color: #fbfcfd; color: #24292e; text-align: left;&quot;&gt;&lt;code&gt;kubectl rollout undo -n default deployment/app-1-2-2-1&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;663&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NceKM/btsOYbqutOy/fugbVQK42ecOLEBLkIHOJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NceKM/btsOYbqutOy/fugbVQK42ecOLEBLkIHOJk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NceKM/btsOYbqutOy/fugbVQK42ecOLEBLkIHOJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNceKM%2FbtsOYbqutOy%2FfugbVQK42ecOLEBLkIHOJk%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;1280&quot; height=&quot;663&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;663&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이미지 업데이트를 취소시키면 문제가 되는 파드를 삭제
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이 모든 과정 중 트래픽은 꾸준히 들어오고, 모든 트래픽은 정상적으로 처리됨&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1 id=&quot;쿠버네티스-서비스-안정화&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;쿠버네티스 서비스 안정화&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: circle; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;서비스 오픈 당일
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;오픈 이전 사용자 트래픽을 예상하고 성능 테스트를 해 애플리케이션의 자원 할당을 결정
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;모든 기능에 대한 성능 테스트는 현실적으로 불가능&lt;/li&gt;
&lt;li&gt;오픈 전후로 주요 로직이 변경될 수도 있음&lt;/li&gt;
&lt;li&gt;오픈 당일에는 사용자가 예측 불가능하게 서비스를 호출하므로 성능 테스트처럼 정상적인 케이스만 요청되지 않음&lt;/li&gt;
&lt;li&gt;이를 대비하기 위해 여유 자원을 미리 준비한 상황이라고 가정&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;수동 설정 시
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;서버 증설이 필요한 경우 VM 관리자가 네트워크, 스토리지 등을 준비해 트래픽을 분산할 수 있도록 준비&lt;/li&gt;
&lt;li&gt;웹 관리자가 트래픽이 분산될 수 있도록 새로운 애플리케이션의 IP 세팅&lt;br /&gt;2-1. 기존 웹 서버에 영향을 주는 작업은 해당 작업으로 인해 문제가 발생할 수 있으므로 진행하기 까다로움&lt;br /&gt;2-2. 수동으로 작업하다 보니 설정 과정에서 문제가 생길 수 있음&lt;/li&gt;
&lt;li&gt;새로운 애플리케이션 IP 세팅 완료&lt;/li&gt;
&lt;li&gt;모니터링 담당자가 새로운 애플리케이션의 메트릭을&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;자동 설정 시
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;서버 증설이 필요한 경우 쿠버네티스 관리자가 쿠버네티스에게 증설 요청&lt;/li&gt;
&lt;li&gt;VM에서 수행했던 작업들을 모두 자동으으로 안전하게 적용&lt;br /&gt;2-1. 개발 기간 ~ 성능 테스트를 하면서 자동화된 동작에 문제가 없음을 확인&lt;br /&gt;2-2. 파드 안에 설정이 모두 있기 때문에 스케일링된 파드 중 단 하나만 문제가 생기는 경우는 존재하지 않음&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;이러한 차이점으로 인해 쿠버네티스 환경이 관리자 입장에서 빠른 의사결정과 실행을 할 수 있도록 지원해준다고 볼 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&quot;쿠버네티스-인프라-환경-관리-코드화&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;쿠버네티스 인프라 환경 관리 코드화&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;인프라 형상 관리
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Dockerfile과 같은 컨테이너 런타임에서 어떤 컨테이너를 생성할지 설정 파일로 명시&lt;/li&gt;
&lt;li&gt;쿠버네티스 파드 관리를 yaml로 처리할 수 있음&lt;/li&gt;
&lt;li&gt;이를 통해 History 관리가 편해짐&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;인프라 작업 추적 가능
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;인프라 환경 관리를 코드로 수행하면서 형상 관리가 가능해졌으므로 이 작업을 수행한 시점 및 인원을 추적할 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;인프라 환경별 파일 생성
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실제 배포 환경이 세팅되지 않더라도 인프라 환경 파일 처리 가능&lt;/li&gt;
&lt;li&gt;코드를 복붙해 간편하게 처리 가능&lt;/li&gt;
&lt;li&gt;단순 반복이 줄어듦&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;새 인프라 작업시 이전 경험을 녹인 코드를 활용할 수 있음&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;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;</description>
      <category>인프라/쿠버네티스</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/150</guid>
      <comments>https://kujung.tistory.com/entry/k8s-%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4%EB%A1%9C-%ED%8E%B8%ED%95%B4%EC%A7%84-IT-%EC%9D%B8%ED%94%84%EB%9D%BC-%EA%B5%AC%EC%B6%95#entry150comment</comments>
      <pubDate>Sun, 29 Jun 2025 19:39:55 +0900</pubDate>
    </item>
    <item>
      <title>목적지를 바꾸는 이유? &amp;ndash; Destination IP NAT 쉽게 이해하기</title>
      <link>https://kujung.tistory.com/entry/%EB%AA%A9%EC%A0%81%EC%A7%80%EB%A5%BC-%EB%B0%94%EA%BE%B8%EB%8A%94-%EC%9D%B4%EC%9C%A0-%E2%80%93-Destination-IP-NAT-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0</link>
      <description>&lt;h1 data-end=&quot;241&quot; data-start=&quot;198&quot;&gt;목적지를 바꾸는 이유? &amp;ndash; Destination IP NAT 쉽게 이해하기&lt;/h1&gt;
&lt;p data-end=&quot;352&quot; data-start=&quot;243&quot; data-ke-size=&quot;size16&quot;&gt;네트워크에서 통신이 제대로 이루어지려면, 어디로 보내는지가 명확해야 합니다.&lt;br /&gt;이때 활용되는 기술이 바로 &lt;b&gt;Destination IP NAT&lt;/b&gt;, 즉 목적지 IP를 변환하는 방식입니다.&lt;/p&gt;
&lt;p data-end=&quot;535&quot; data-start=&quot;354&quot; data-ke-size=&quot;size16&quot;&gt;출발지 IP를 바꾸는 Source NAT와 달리, Destination NAT는 &lt;b&gt;어떤 IP로 접근했을 때, 그 요청을 어디로 전달할지를 명확하게 정해줘야&lt;/b&gt; 합니다.&lt;br /&gt;그렇기 때문에 사전에 정해진 IP 목록을 바탕으로 목적지 IP를 정확히 지정해야 하며, NAT 장비의 인터페이스 IP를 활용하는 경우는 거의 없습니다.&lt;/p&gt;
&lt;hr data-end=&quot;540&quot; data-start=&quot;537&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;578&quot; data-start=&quot;542&quot; data-ke-size=&quot;size26&quot;&gt;Destination NAT는 &amp;lsquo;정확한 목적지 지정&amp;rsquo;이 핵심&lt;/h2&gt;
&lt;p data-end=&quot;661&quot; data-start=&quot;580&quot; data-ke-size=&quot;size16&quot;&gt;Source NAT는 &amp;lsquo;어떤 IP든 통신이 되면 OK&amp;rsquo;라면,&lt;br /&gt;Destination NAT는 &amp;lsquo;&lt;b&gt;정확한 곳에 도달해야&lt;/b&gt; OK&amp;rsquo;인 기술입니다.&lt;/p&gt;
&lt;p data-end=&quot;743&quot; data-start=&quot;663&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어, 하나의 IP를 두 개의 목적지로 동시에 연결할 수 없습니다.&lt;br /&gt;&amp;lsquo;어디로 갈지 모르겠는&amp;rsquo; 상황은 곧 연결 실패로 이어지기 때문이죠.&lt;/p&gt;
&lt;p data-end=&quot;821&quot; data-start=&quot;745&quot; data-ke-size=&quot;size16&quot;&gt;그래서 Destination IP NAT를 제대로 이해하려면,&lt;br /&gt;먼저 어떤 방식으로 IP가 변환되는지를 유형별로 구분해 알아야 합니다.&lt;/p&gt;
&lt;hr data-end=&quot;826&quot; data-start=&quot;823&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;847&quot; data-start=&quot;828&quot; data-ke-size=&quot;size26&quot;&gt;목적지 IP 변환 유형 2가지&lt;/h2&gt;
&lt;h3 data-end=&quot;876&quot; data-start=&quot;849&quot; data-ke-size=&quot;size23&quot;&gt;1. 일대일 변환 (1:1 Mapping)&lt;/h3&gt;
&lt;p data-end=&quot;960&quot; data-start=&quot;878&quot; data-ke-size=&quot;size16&quot;&gt;가장 기본적인 방식입니다.&lt;br /&gt;&lt;b&gt;하나의 공인 IP &amp;rarr; 하나의 내부 IP&lt;/b&gt;로 매칭되며, 주로 외부에서 내부 사설 네트워크로 접근할 때 사용됩니다.&lt;/p&gt;
&lt;p data-end=&quot;1041&quot; data-start=&quot;962&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어, 외부 사용자가 123.123.123.1로 접속하면, 이 요청을 내부의 10.10.10.10으로 정확히 전달하도록 설정하는 것이죠.&lt;/p&gt;
&lt;p data-end=&quot;1141&quot; data-start=&quot;1043&quot; data-ke-size=&quot;size16&quot;&gt;가정에서도 흔히 사용되는 &amp;lsquo;&lt;b&gt;포트 포워딩&lt;/b&gt;&amp;rsquo; 기능도 일대일 NAT의 일종입니다.&lt;br /&gt;하나의 공인 IP에 여러 포트를 지정해 각각 다른 내부 IP로 전달할 수 있어 유용하죠.&lt;/p&gt;
&lt;hr data-end=&quot;1146&quot; data-start=&quot;1143&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1175&quot; data-start=&quot;1148&quot; data-ke-size=&quot;size23&quot;&gt;2. 일대다 변환 (1:N Mapping)&lt;/h3&gt;
&lt;p data-end=&quot;1271&quot; data-start=&quot;1177&quot; data-ke-size=&quot;size16&quot;&gt;이 방식은 하나의 IP를 다수의 서버 중 하나로 변환해주는 형태입니다.&lt;br /&gt;주로 &lt;b&gt;로드밸런싱&lt;/b&gt;을 구현할 때 사용되며, 대표적인 장비로 &lt;b&gt;L4 스위치&lt;/b&gt;가 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;1393&quot; data-start=&quot;1273&quot; data-ke-size=&quot;size16&quot;&gt;사용자는 특정 VIP(가상 IP)로 접속하지만, 실제로는 여러 대의 서버 중 하나가 요청을 처리합니다.&lt;br /&gt;Round Robin, Least Connection 같은 방식으로 목적지 IP가 선택되어 요청이 분산되죠.&lt;/p&gt;
&lt;hr data-end=&quot;1398&quot; data-start=&quot;1395&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1434&quot; data-start=&quot;1400&quot; data-ke-size=&quot;size26&quot;&gt;실제 적용 사례로 보는 Destination IP NAT&lt;/h2&gt;
&lt;h3 data-end=&quot;1465&quot; data-start=&quot;1436&quot; data-ke-size=&quot;size23&quot;&gt;사례 1. L4 스위치 기반의 서버 로드밸런싱&lt;/h3&gt;
&lt;p data-end=&quot;1558&quot; data-start=&quot;1467&quot; data-ke-size=&quot;size16&quot;&gt;가장 대표적인 Destination IP NAT 사례입니다.&lt;br /&gt;외부 사용자가 L4 스위치의 VIP로 접속하면, 요청은 실제 서버 중 하나로 NAT되어 전달됩니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1629&quot; data-start=&quot;1560&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1584&quot; data-start=&quot;1560&quot;&gt;VIP: 123.111.43.1:80&lt;/li&gt;
&lt;li data-end=&quot;1629&quot; data-start=&quot;1585&quot;&gt;실제 서버들: 192.168.1.11:80, 192.168.1.12:80&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1692&quot; data-start=&quot;1631&quot; data-ke-size=&quot;size16&quot;&gt;이 경우 NAT는 &lt;b&gt;일대다 변환&lt;/b&gt;으로 구성되며, 로드밸런싱 방식에 따라 어떤 서버가 응답할지가 결정됩니다.&lt;/p&gt;
&lt;p data-end=&quot;1763&quot; data-start=&quot;1694&quot; data-ke-size=&quot;size16&quot;&gt;L4 스위치를 사용하는 이상, 대부분 Destination NAT는 &amp;lsquo;기본 전제&amp;rsquo;이므로 따로 언급되지 않는 경우도 많습니다.&lt;/p&gt;
&lt;hr data-end=&quot;1768&quot; data-start=&quot;1765&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1788&quot; data-start=&quot;1770&quot; data-ke-size=&quot;size23&quot;&gt;사례 2. 대외망과의 연동&lt;/h3&gt;
&lt;p data-end=&quot;1892&quot; data-start=&quot;1790&quot; data-ke-size=&quot;size16&quot;&gt;두 번째 사례는 타사 네트워크(대외망)와의 통신에서 자주 발생하는 형태입니다.&lt;br /&gt;특히 여러 대외망과 접속해야 할 때, 라우팅 테이블이 점점 복잡해지는 것을 방지하기 위해 사용됩니다.&lt;/p&gt;
&lt;p data-end=&quot;2031&quot; data-start=&quot;1894&quot; data-ke-size=&quot;size16&quot;&gt;기존 방식에서는 대외망이 하나 생길 때마다 새 라우팅을 추가해야 했지만,&lt;br /&gt;Destination IP NAT를 활용하면 NAT 전용 IP 대역(예: 10.10.20.x)을 정해두고, 모든 대외망 IP를 이 대역으로 변환시켜 사용할 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;2089&quot; data-start=&quot;2033&quot; data-ke-size=&quot;size16&quot;&gt;덕분에 라우팅 테이블은 간결해지고, 대외망이 추가되더라도 복잡한 설정 없이 빠르게 연동이 가능합니다.&lt;/p&gt;
&lt;hr data-end=&quot;2094&quot; data-start=&quot;2091&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;2127&quot; data-start=&quot;2096&quot; data-ke-size=&quot;size23&quot;&gt;사례 3. 공인망에서 내부망(사설 IP)으로 접속&lt;/h3&gt;
&lt;p data-end=&quot;2197&quot; data-start=&quot;2129&quot; data-ke-size=&quot;size16&quot;&gt;외부 인터넷에서 DMZ 혹은 내부망에 위치한 사설 IP 장비로 접근할 때도 Destination IP NAT가 필요합니다.&lt;/p&gt;
&lt;p data-end=&quot;2205&quot; data-start=&quot;2199&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2314&quot; data-start=&quot;2207&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2238&quot; data-start=&quot;2207&quot;&gt;외부 사용자가 125.209.222.142로 접속&lt;/li&gt;
&lt;li data-end=&quot;2274&quot; data-start=&quot;2239&quot;&gt;공유기는 이를 내부 장비 10.10.10.10으로 NAT&lt;/li&gt;
&lt;li data-end=&quot;2314&quot; data-start=&quot;2275&quot;&gt;요청은 내부 장비에 전달되고, 응답은 세션을 따라 다시 외부로 전달&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;2357&quot; data-start=&quot;2316&quot; data-ke-size=&quot;size16&quot;&gt;이 과정에서 출발지 IP는 유지한 채, 목적지만 변환하는 것이 핵심입니다.&lt;/p&gt;
&lt;hr data-end=&quot;2362&quot; data-start=&quot;2359&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;2394&quot; data-start=&quot;2364&quot; data-ke-size=&quot;size23&quot;&gt;보안 DMZ와 Destination IP NAT&lt;/h3&gt;
&lt;p data-end=&quot;2489&quot; data-start=&quot;2396&quot; data-ke-size=&quot;size16&quot;&gt;기업 네트워크에서는 DMZ(비무장지대)라는 별도 네트워크 영역을 구성하는 경우가 많습니다.&lt;br /&gt;DMZ는 외부에서도 접근이 가능하면서 내부망과도 연결된 중간 구간입니다.&lt;/p&gt;
&lt;p data-end=&quot;2614&quot; data-start=&quot;2491&quot; data-ke-size=&quot;size16&quot;&gt;이곳에 설치된 VPN, 웹하드 등 서비스는 외부 사용자의 접속이 전제되므로, 공인 IP로의 접근을 사설 IP로 NAT해줘야 합니다.&lt;br /&gt;예: 공인 IP로 들어온 HTTPS 요청 &amp;rarr; 사설 IP로 NAT + 443 포트 허용&lt;/p&gt;
&lt;hr data-end=&quot;2619&quot; data-start=&quot;2616&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2657&quot; data-start=&quot;2621&quot; data-ke-size=&quot;size26&quot;&gt;정리: Source NAT vs Destination NAT&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;구분Source IP NATDestination IP NAT
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;2909&quot; data-start=&quot;2659&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;2909&quot; data-start=&quot;2751&quot;&gt;
&lt;tr data-end=&quot;2775&quot; data-start=&quot;2751&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2756&quot; data-start=&quot;2751&quot;&gt;대상&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2765&quot; data-start=&quot;2756&quot;&gt;출발지 IP&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2775&quot; data-start=&quot;2765&quot;&gt;목적지 IP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2812&quot; data-start=&quot;2776&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2781&quot; data-start=&quot;2776&quot;&gt;목적&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2796&quot; data-start=&quot;2781&quot;&gt;사설 &amp;rarr; 공인 변환 등&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2812&quot; data-start=&quot;2796&quot;&gt;공인 &amp;rarr; 사설 변환 등&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2862&quot; data-start=&quot;2813&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2821&quot; data-start=&quot;2813&quot;&gt;사용 예시&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2838&quot; data-start=&quot;2821&quot;&gt;인터넷 접속, 대외망 통신&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2862&quot; data-start=&quot;2838&quot;&gt;L4 로드밸런싱, 외부 &amp;rarr; 내부 접근&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2909&quot; data-start=&quot;2863&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2871&quot; data-start=&quot;2863&quot;&gt;변환 방식&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2891&quot; data-start=&quot;2871&quot;&gt;인터페이스 IP, IP Pool&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2909&quot; data-start=&quot;2891&quot;&gt;일대일, 일대다 (VIP)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;2914&quot; data-start=&quot;2911&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2924&quot; data-start=&quot;2916&quot; data-ke-size=&quot;size26&quot;&gt;마무리하며&lt;/h2&gt;
&lt;p data-end=&quot;3081&quot; data-start=&quot;2926&quot; data-ke-size=&quot;size16&quot;&gt;NAT는 단순한 이론이 아니라 실무 경험이 중요한 기술입니다.&lt;br /&gt;&lt;b&gt;Source IP NAT&lt;/b&gt;와 &lt;b&gt;Destination IP NAT&lt;/b&gt; 두 가지 핵심 개념만 정확히 이해하고, 실제 사례 중심으로 학습한다면&lt;br /&gt;복잡한 네트워크 환경에서도 충분히 유연하게 대응할 수 있습니다.&lt;/p&gt;</description>
      <category>네트워크/Layer3</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/141</guid>
      <comments>https://kujung.tistory.com/entry/%EB%AA%A9%EC%A0%81%EC%A7%80%EB%A5%BC-%EB%B0%94%EA%BE%B8%EB%8A%94-%EC%9D%B4%EC%9C%A0-%E2%80%93-Destination-IP-NAT-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0#entry141comment</comments>
      <pubDate>Sun, 29 Jun 2025 10:18:50 +0900</pubDate>
    </item>
    <item>
      <title>출발지 IP를 바꾸는 이유?  Source IP NAT 이해하기</title>
      <link>https://kujung.tistory.com/entry/%EC%B6%9C%EB%B0%9C%EC%A7%80-IP%EB%A5%BC-%EB%B0%94%EA%BE%B8%EB%8A%94-%EC%9D%B4%EC%9C%A0-Source-IP-NAT-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0</link>
      <description>&lt;h1 data-end=&quot;244&quot; data-start=&quot;206&quot;&gt;출발지 IP를 바꾸는 이유? &amp;ndash; Source IP NAT 이해하기&lt;/h1&gt;
&lt;p data-end=&quot;442&quot; data-start=&quot;246&quot; data-ke-size=&quot;size16&quot;&gt;우리가 인터넷을 이용하거나 다른 네트워크와 연결할 때, '내가 누구인가(IP 주소)'를 숨기거나 바꿔야 할 때가 있습니다. 그때 사용하는 것이 바로 &lt;b&gt;Source IP NAT&lt;/b&gt;입니다.&lt;br /&gt;출발지 IP, 즉 송신자의 IP 주소를 다른 주소로 바꾸는 방식인데요, 단순히 바꾸는 것이 아니라 왜, 어떻게, 무엇으로 바꾸는지가 매우 중요합니다.&lt;/p&gt;
&lt;hr data-end=&quot;447&quot; data-start=&quot;444&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;469&quot; data-start=&quot;449&quot; data-ke-size=&quot;size26&quot;&gt;출발지 IP는 왜 바꿔야 할까?&lt;/h2&gt;
&lt;p data-end=&quot;650&quot; data-start=&quot;471&quot; data-ke-size=&quot;size16&quot;&gt;기본적으로 NAT는 네트워크 간 통신을 원활하게 만들기 위해 등장한 기술입니다.&lt;br /&gt;Source IP NAT의 목적은 단순합니다. &lt;b&gt;기존 IP로는 통신이 불가능하거나 문제가 생길 수 있기 때문&lt;/b&gt;입니다.&lt;br /&gt;예를 들어, 내부망에서 외부망으로 접속할 때 사설 IP를 공인 IP로 바꾸지 않으면 응답을 받을 수 없게 되죠.&lt;/p&gt;
&lt;p data-end=&quot;726&quot; data-start=&quot;652&quot; data-ke-size=&quot;size16&quot;&gt;하지만 단지 IP를 바꾸는 것만으로는 충분하지 않습니다. &lt;b&gt;어떤 IP로 바꿀지&lt;/b&gt;를 제대로 선택해야 통신이 정상적으로 이루어집니다.&lt;/p&gt;
&lt;hr data-end=&quot;731&quot; data-start=&quot;728&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;765&quot; data-start=&quot;733&quot; data-ke-size=&quot;size26&quot;&gt;Source IP NAT 시 사용 가능한 IP 2가지&lt;/h2&gt;
&lt;h3 data-end=&quot;814&quot; data-start=&quot;767&quot; data-ke-size=&quot;size23&quot;&gt;1. NAT 장비의 인터페이스 IP (Outgoing Interface IP)&lt;/h3&gt;
&lt;p data-end=&quot;962&quot; data-start=&quot;816&quot; data-ke-size=&quot;size16&quot;&gt;가장 대표적인 방식은 NAT 장비 자체의 외부 인터페이스 IP를 사용하는 것입니다.&lt;br /&gt;이 방법은 설정이 간단하면서도 직관적입니다. 외부로 나갈 때 장비의 외부 인터페이스 IP로 출발지 IP를 바꾸면, NAT 장비가 응답 패킷도 다시 내부로 잘 전달할 수 있죠.&lt;/p&gt;
&lt;p data-end=&quot;1054&quot; data-start=&quot;964&quot; data-ke-size=&quot;size16&quot;&gt;공인 IP가 아닌 사설망 간 통신에서도 동일하게 사용할 수 있으며, 해당 인터페이스의 IP가 외부 네트워크에서 인식 가능한 주소라면 문제 없이 통신이 가능합니다.&lt;/p&gt;
&lt;hr data-end=&quot;1059&quot; data-start=&quot;1056&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1098&quot; data-start=&quot;1061&quot; data-ke-size=&quot;size23&quot;&gt;2. IP Pool (사전에 등록된 NAT 전용 IP 모음)&lt;/h3&gt;
&lt;p data-end=&quot;1227&quot; data-start=&quot;1100&quot; data-ke-size=&quot;size16&quot;&gt;또 다른 방식은 NAT 장비에 따로 지정해둔 &lt;b&gt;IP Pool&lt;/b&gt;을 이용하는 것입니다.&lt;br /&gt;IP Pool은 NAT 장비가 보유하고 있는 여러 개의 IP 중, 특정 범위를 정해두고 그 중 하나를 출발지 IP로 사용하는 방식입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1289&quot; data-start=&quot;1229&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1254&quot; data-start=&quot;1229&quot;&gt;같은 네트워크의 IP를 사용할 수도 있고,&lt;/li&gt;
&lt;li data-end=&quot;1289&quot; data-start=&quot;1255&quot;&gt;완전히 다른 네트워크 대역의 IP를 지정할 수도 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1428&quot; data-start=&quot;1291&quot; data-ke-size=&quot;size16&quot;&gt;단, IP Pool에 포함된 IP는 반드시 &lt;b&gt;다른 장비가 사용 중이지 않아야&lt;/b&gt; 하며,&lt;br /&gt;NAT 장비가 직접 &lt;b&gt;ARP 응답을 하지 않는 경우&lt;/b&gt;, 외부 장비는 이 IP가 NAT 장비에 속한지 인식하지 못할 수도 있다는 점도 주의해야 합니다.&lt;/p&gt;
&lt;hr data-end=&quot;1433&quot; data-start=&quot;1430&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1463&quot; data-start=&quot;1435&quot; data-ke-size=&quot;size26&quot;&gt;본격적인 사례로 보는 Source IP NAT&lt;/h2&gt;
&lt;h3 data-end=&quot;1484&quot; data-start=&quot;1465&quot; data-ke-size=&quot;size23&quot;&gt;사례 1. 외부 인터넷 접속&lt;/h3&gt;
&lt;p data-end=&quot;1627&quot; data-start=&quot;1486&quot; data-ke-size=&quot;size16&quot;&gt;가장 흔한 Source IP NAT 활용 사례입니다.&lt;br /&gt;기업 환경에서는 방화벽이, 가정에서는 공유기가 이 역할을 맡습니다.&lt;br /&gt;내부 단말의 사설 IP를 공인 IP로 바꾸어 외부로 나갈 수 있도록 하고, 세션을 기억하여 응답도 다시 내부로 돌려보냅니다.&lt;/p&gt;
&lt;blockquote data-end=&quot;1691&quot; data-start=&quot;1629&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1691&quot; data-start=&quot;1631&quot; data-ke-size=&quot;size16&quot;&gt;이 방식 덕분에 우리는 오늘도 사설 IP를 가진 PC, 스마트폰으로 자유롭게 웹사이트에 접속할 수 있습니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;1696&quot; data-start=&quot;1693&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1734&quot; data-start=&quot;1698&quot; data-ke-size=&quot;size23&quot;&gt;사례 2. L4 스위치의 3-Way Handshake 보완&lt;/h3&gt;
&lt;p data-end=&quot;1859&quot; data-start=&quot;1736&quot; data-ke-size=&quot;size16&quot;&gt;조금 복잡한 예지만, 매우 실무적인 사례입니다.&lt;br /&gt;L4 스위치는 클라이언트와 서버 사이에서 로드밸런싱을 수행하지만, &lt;b&gt;서버의 게이트웨이가 L4 스위치가 아닐 경우&lt;/b&gt;, 3-Way Handshake가 꼬일 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1906&quot; data-start=&quot;1861&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1882&quot; data-start=&quot;1861&quot;&gt;클라이언트 &amp;rarr; L4 스위치 &amp;rarr; 서버&lt;/li&gt;
&lt;li data-end=&quot;1906&quot; data-start=&quot;1883&quot;&gt;서버 &amp;rarr; (잘못된 경로) &amp;rarr; 클라이언트&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;2035&quot; data-start=&quot;1908&quot; data-ke-size=&quot;size16&quot;&gt;이런 문제를 막기 위해, L4 스위치가 서버에 보내는 패킷의 출발지 IP를 &lt;b&gt;자신의 IP로 NAT&lt;/b&gt;하는 방식이 사용됩니다.&lt;br /&gt;이렇게 하면 서버는 응답을 반드시 L4 스위치로 보내게 되어 정상적인 세션이 형성될 수 있습니다.&lt;/p&gt;
&lt;hr data-end=&quot;2040&quot; data-start=&quot;2037&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;2073&quot; data-start=&quot;2042&quot; data-ke-size=&quot;size23&quot;&gt;사례 3. 대외망 연동 (타사 네트워크와의 통신)&lt;/h3&gt;
&lt;p data-end=&quot;2225&quot; data-start=&quot;2075&quot; data-ke-size=&quot;size16&quot;&gt;자주 사용되지는 않지만 보안과 충돌 방지를 위해 필수적인 상황입니다.&lt;br /&gt;예를 들어, 한 유통회사가 금융 결제망과 전용회선으로 연결되어 있다고 가정합시다.&lt;br /&gt;두 네트워크가 **동일한 IP 대역(예: 10.10.10.x/24)**을 사용하고 있다면 통신이 불가능합니다.&lt;/p&gt;
&lt;p data-end=&quot;2366&quot; data-start=&quot;2227&quot; data-ke-size=&quot;size16&quot;&gt;이때 방화벽은 내부 단말의 출발지 IP를 **다른 IP 대역(예: 172.16.1.1)**으로 바꾸어 NAT를 실시합니다.&lt;br /&gt;이 방식은 IP 충돌 방지뿐 아니라, 자사 내부 IP를 외부에 노출하지 않기 위한 &lt;b&gt;보안적 이유&lt;/b&gt;로도 자주 사용됩니다.&lt;/p&gt;
&lt;hr data-end=&quot;2371&quot; data-start=&quot;2368&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;2395&quot; data-start=&quot;2373&quot; data-ke-size=&quot;size23&quot;&gt;보너스 사례: VM의 NAT 모드&lt;/h3&gt;
&lt;p data-end=&quot;2527&quot; data-start=&quot;2397&quot; data-ke-size=&quot;size16&quot;&gt;VirtualBox나 VMware에서 흔히 볼 수 있는 &lt;b&gt;NAT 모드&lt;/b&gt;도 Source IP NAT의 일종입니다.&lt;br /&gt;Guest OS가 자체 네트워크 대역을 사용하되, Host의 IP로 NAT를 수행하여 외부와 통신하는 구조입니다.&lt;/p&gt;
&lt;hr data-end=&quot;2532&quot; data-start=&quot;2529&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2553&quot; data-start=&quot;2534&quot; data-ke-size=&quot;size26&quot;&gt;Source IP NAT 정리&lt;/h2&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;2780&quot; data-start=&quot;2555&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;2780&quot; data-start=&quot;2603&quot;&gt;
&lt;tr data-end=&quot;2647&quot; data-start=&quot;2603&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2615&quot; data-start=&quot;2603&quot;&gt;외부 인터넷 접속&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2635&quot; data-start=&quot;2615&quot;&gt;사설 IP &amp;rarr; 공인 IP로 변환&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2647&quot; data-start=&quot;2635&quot;&gt;방화벽, 공유기&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2693&quot; data-start=&quot;2648&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2660&quot; data-start=&quot;2648&quot;&gt;L4 정합성 유지&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2683&quot; data-start=&quot;2660&quot;&gt;클라이언트 IP &amp;rarr; L4 IP로 변환&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2693&quot; data-start=&quot;2683&quot;&gt;L4 스위치&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2732&quot; data-start=&quot;2694&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2706&quot; data-start=&quot;2694&quot;&gt;대외망 충돌 방지&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2725&quot; data-start=&quot;2706&quot;&gt;중복된 IP &amp;rarr; NAT로 변환&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2732&quot; data-start=&quot;2725&quot;&gt;방화벽&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2780&quot; data-start=&quot;2733&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2742&quot; data-start=&quot;2733&quot;&gt;가상화 환경&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2764&quot; data-start=&quot;2742&quot;&gt;VM IP &amp;rarr; Host IP로 변환&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2780&quot; data-start=&quot;2764&quot;&gt;VirtualBox 등&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2912&quot; data-start=&quot;2782&quot; data-ke-size=&quot;size16&quot;&gt;가장 많이 쓰이는 형태는 역시 &lt;b&gt;인터넷 접속을 위한 NAT&lt;/b&gt;입니다. 우리가 인터넷을 쓰는 거의 모든 순간이 이 사례에 해당한다고 보시면 됩니다.&lt;br /&gt;나머지 사례들은 실무에서 네트워크를 다룰 때 꼭 알아야 할 중요한 케이스들입니다.&lt;/p&gt;
&lt;hr data-end=&quot;2917&quot; data-start=&quot;2914&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-end=&quot;3007&quot; data-start=&quot;2919&quot; data-ke-size=&quot;size16&quot;&gt;다음 글에서는 **Destination IP NAT(DNAT)**를 다루며, 서버 접근 시 어떻게 목적지 IP가 바뀌는지 구체적인 예제를 통해 살펴보겠습니다.&lt;/p&gt;</description>
      <category>네트워크/Layer3</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/140</guid>
      <comments>https://kujung.tistory.com/entry/%EC%B6%9C%EB%B0%9C%EC%A7%80-IP%EB%A5%BC-%EB%B0%94%EA%BE%B8%EB%8A%94-%EC%9D%B4%EC%9C%A0-Source-IP-NAT-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0#entry140comment</comments>
      <pubDate>Sun, 29 Jun 2025 10:15:35 +0900</pubDate>
    </item>
    <item>
      <title>왜 아직도 IPv4를 쓸 수 있을까? NAT와 사설망 이야기</title>
      <link>https://kujung.tistory.com/entry/%EC%99%9C-%EC%95%84%EC%A7%81%EB%8F%84-IPv4%EB%A5%BC-%EC%93%B8-%EC%88%98-%EC%9E%88%EC%9D%84%EA%B9%8C-NAT%EC%99%80-%EC%82%AC%EC%84%A4%EB%A7%9D-%EC%9D%B4%EC%95%BC%EA%B8%B0</link>
      <description>&lt;h1 data-end=&quot;245&quot; data-start=&quot;208&quot;&gt;왜 아직도 IPv4를 쓸 수 있을까? &amp;mdash; NAT와 사설망 이야기&lt;/h1&gt;
&lt;h3 data-end=&quot;281&quot; data-start=&quot;247&quot; data-ke-size=&quot;size23&quot;&gt;사라졌어야 할 IPv4, 왜 여전히 우리 곁에 있을까?&lt;/h3&gt;
&lt;p data-end=&quot;430&quot; data-start=&quot;283&quot; data-ke-size=&quot;size16&quot;&gt;2011년, 인터넷 주소 관리기구 IANA는 중요한 발표를 했습니다. &quot;IPv4 주소가 모두 소진되었습니다.&quot;&lt;br /&gt;IPv4는 약 43억 개의 주소만을 제공하는 제한된 체계입니다. 인터넷의 급격한 확산으로 이미 10년도 전에 전 세계에 배정 가능한 주소가 바닥났죠.&lt;/p&gt;
&lt;p data-end=&quot;536&quot; data-start=&quot;432&quot; data-ke-size=&quot;size16&quot;&gt;그런데 이상하지 않으신가요?&lt;br /&gt;그 이후로도 우리는 큰 불편 없이 인터넷을 잘 사용해오고 있습니다. 어느 날 갑자기 &quot;이제 인터넷에 접속할 수 없습니다!&quot;라는 뉴스가 나온 적도 없죠.&lt;/p&gt;
&lt;p data-end=&quot;616&quot; data-start=&quot;538&quot; data-ke-size=&quot;size16&quot;&gt;그 비밀은 바로 **사설망(Private Network)**과 &lt;b&gt;NAT(Network Address Translation)&lt;/b&gt; 덕분입니다.&lt;/p&gt;
&lt;hr data-end=&quot;621&quot; data-start=&quot;618&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;640&quot; data-start=&quot;623&quot; data-ke-size=&quot;size26&quot;&gt;사설망과 사설 IP의 등장&lt;/h2&gt;
&lt;p data-end=&quot;743&quot; data-start=&quot;642&quot; data-ke-size=&quot;size16&quot;&gt;사설망은 공인 IP 대신 내부적으로만 사용하는 &lt;b&gt;사설 IP 주소&lt;/b&gt;를 기반으로 운영됩니다. RFC 1918과 RFC 4193 표준에 따라 정해진 사설 IP 대역은 다음과 같습니다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;840&quot; data-start=&quot;745&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;774&quot; data-start=&quot;745&quot;&gt;10.0.0.0 ~ 10.255.255.255&lt;/li&gt;
&lt;li data-end=&quot;806&quot; data-start=&quot;775&quot;&gt;172.16.0.0 ~ 172.31.255.255&lt;/li&gt;
&lt;li data-end=&quot;840&quot; data-start=&quot;807&quot;&gt;192.168.0.0 ~ 192.168.255.255&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;994&quot; data-start=&quot;842&quot; data-ke-size=&quot;size16&quot;&gt;이러한 사설 IP는 외부 인터넷에서는 인식되지 않으며, 내부망에서만 자유롭게 사용할 수 있습니다.&lt;br /&gt;가정용 공유기에서 자동으로 할당받는 IP 주소도 바로 이 사설 IP입니다. 기업에서는 네트워크 장비나 컴퓨터에 사설 IP를 부여하고, 게이트웨이를 통해 외부와 연결합니다.&lt;/p&gt;
&lt;hr data-end=&quot;999&quot; data-start=&quot;996&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1026&quot; data-start=&quot;1001&quot; data-ke-size=&quot;size26&quot;&gt;사설 IP만으로는 인터넷에 나갈 수 없다&lt;/h2&gt;
&lt;p data-end=&quot;1171&quot; data-start=&quot;1028&quot; data-ke-size=&quot;size16&quot;&gt;문제는 여기서 시작됩니다.&lt;br /&gt;사설 IP는 외부 인터넷에서 절대 사용할 수 없습니다. 만약 사설망에서 그대로 공인망으로 나간다면?&lt;br /&gt;인터넷 상에는 동일한 사설 IP를 쓰는 수많은 네트워크가 있기 때문에, 응답 패킷이 어디로 돌아가야 할지 알 수 없습니다.&lt;/p&gt;
&lt;p data-end=&quot;1222&quot; data-start=&quot;1173&quot; data-ke-size=&quot;size16&quot;&gt;이 문제를 해결하기 위해 &lt;b&gt;IP 주소 변환 기술&lt;/b&gt;, 즉 &lt;b&gt;NAT&lt;/b&gt;가 등장했습니다.&lt;/p&gt;
&lt;hr data-end=&quot;1227&quot; data-start=&quot;1224&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1254&quot; data-start=&quot;1229&quot; data-ke-size=&quot;size26&quot;&gt;NAT: 사설망과 공인망을 이어주는 다리&lt;/h2&gt;
&lt;p data-end=&quot;1407&quot; data-start=&quot;1256&quot; data-ke-size=&quot;size16&quot;&gt;NAT(Network Address Translation)는 네트워크 장비가 IP 주소와 포트 번호를 재작성하여 사설망과 공인망 간 통신을 가능하게 해주는 기술입니다.&lt;br /&gt;간단히 말하면, 내부 IP를 외부 IP로, 다시 외부 IP를 내부 IP로 바꾸어주는 역할을 합니다.&lt;/p&gt;
&lt;p data-end=&quot;1547&quot; data-start=&quot;1409&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어, 집에서 인터넷을 사용하는 컴퓨터는 공유기(NAT 장비)를 통해 외부 웹사이트에 접속합니다. 이때 공유기가 사용자의 사설 IP를 자신의 공인 IP로 변환하여 요청을 보냅니다. 응답이 돌아오면 다시 사설 IP로 되돌려 사용자에게 전달하죠.&lt;/p&gt;
&lt;hr data-end=&quot;1552&quot; data-start=&quot;1549&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1580&quot; data-start=&quot;1554&quot; data-ke-size=&quot;size26&quot;&gt;두 명 이상이 동시에 나가면 어떻게 될까?&lt;/h2&gt;
&lt;p data-end=&quot;1706&quot; data-start=&quot;1582&quot; data-ke-size=&quot;size16&quot;&gt;하나의 공인 IP를 여러 사용자가 공유할 경우, 동일한 포트를 사용하는 경우가 생길 수 있습니다.&lt;br /&gt;예를 들어, 두 사용자가 동시에 9999번 포트로 요청을 보낸다면, NAT 장비는 누가 누구인지 구분할 수 없게 됩니다.&lt;/p&gt;
&lt;p data-end=&quot;1865&quot; data-start=&quot;1708&quot; data-ke-size=&quot;size16&quot;&gt;이럴 때 사용되는 방식이 바로 **PAT(Port Address Translation)**입니다.&lt;br /&gt;PAT는 각 사용자의 출발지 포트를 임의로 변경하여 트래픽을 구분합니다. 예를 들어 사용자 A는 10000번, 사용자 B는 20000번으로 변환하여 통신하면 충돌이 발생하지 않죠.&lt;/p&gt;
&lt;hr data-end=&quot;1870&quot; data-start=&quot;1867&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1898&quot; data-start=&quot;1872&quot; data-ke-size=&quot;size26&quot;&gt;공인망만의 문제가 아니다: 사설망 간 통신&lt;/h2&gt;
&lt;p data-end=&quot;2063&quot; data-start=&quot;1900&quot; data-ke-size=&quot;size16&quot;&gt;NAT는 공인망과 사설망 사이에서만 쓰이는 기술이 아닙니다.&lt;br /&gt;예를 들어, 기업 간 비공개 네트워크(대외망)에서 전용 회선을 통해 통신할 경우에도 서로의 내부 IP가 겹칠 수 있습니다.&lt;br /&gt;이 경우에도 NAT를 사용해 IP를 변환하고, 필요시에는 목적지 IP(DNAT)까지 바꾸어야 합니다.&lt;/p&gt;
&lt;hr data-end=&quot;2068&quot; data-start=&quot;2065&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2092&quot; data-start=&quot;2070&quot; data-ke-size=&quot;size26&quot;&gt;NAT는 어디서 어떻게 동작하는가?&lt;/h2&gt;
&lt;p data-end=&quot;2229&quot; data-start=&quot;2094&quot; data-ke-size=&quot;size16&quot;&gt;대부분의 NAT는 네트워크의 출입구에 해당하는 &lt;b&gt;세션 장비&lt;/b&gt;가 담당합니다. 공유기, 방화벽, VPN 장비, L4 스위치 등이 이에 해당하죠.&lt;br /&gt;이 장비들은 &lt;b&gt;세션 테이블&lt;/b&gt;을 만들어 어떤 IP와 포트를 어떻게 변환했는지를 저장해둡니다.&lt;/p&gt;
&lt;p data-end=&quot;2334&quot; data-start=&quot;2231&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 저장된 세션 정보 덕분에 나중에 응답이 들어왔을 때 해당 세션을 찾아 다시 올바른 사용자에게 전달할 수 있게 됩니다. 이러한 특성을 우리는 &lt;b&gt;Stateful&lt;/b&gt;이라고 부릅니다.&lt;/p&gt;
&lt;hr data-end=&quot;2339&quot; data-start=&quot;2336&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2355&quot; data-start=&quot;2341&quot; data-ke-size=&quot;size26&quot;&gt;다양한 NAT의 형태&lt;/h2&gt;
&lt;p data-end=&quot;2387&quot; data-start=&quot;2357&quot; data-ke-size=&quot;size16&quot;&gt;NAT는 사용하는 방식에 따라 여러 이름으로 불립니다:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;구분설명
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;2554&quot; data-start=&quot;2389&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;2554&quot; data-start=&quot;2417&quot;&gt;
&lt;tr data-end=&quot;2443&quot; data-start=&quot;2417&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2430&quot; data-start=&quot;2417&quot;&gt;Static NAT&lt;/td&gt;
&lt;td data-end=&quot;2443&quot; data-start=&quot;2430&quot; data-col-size=&quot;sm&quot;&gt;IP 1:1 변환&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2479&quot; data-start=&quot;2444&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2458&quot; data-start=&quot;2444&quot;&gt;Dynamic NAT&lt;/td&gt;
&lt;td data-end=&quot;2479&quot; data-start=&quot;2458&quot; data-col-size=&quot;sm&quot;&gt;IP Pool 기반 다대다 변환&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2512&quot; data-start=&quot;2480&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2496&quot; data-start=&quot;2480&quot;&gt;PAT (또는 NAPT)&lt;/td&gt;
&lt;td data-end=&quot;2512&quot; data-start=&quot;2496&quot; data-col-size=&quot;sm&quot;&gt;포트까지 변환하는 방식&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2533&quot; data-start=&quot;2513&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2520&quot; data-start=&quot;2513&quot;&gt;SNAT&lt;/td&gt;
&lt;td data-end=&quot;2533&quot; data-start=&quot;2520&quot; data-col-size=&quot;sm&quot;&gt;출발지 IP 변환&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2554&quot; data-start=&quot;2534&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2541&quot; data-start=&quot;2534&quot;&gt;DNAT&lt;/td&gt;
&lt;td data-end=&quot;2554&quot; data-start=&quot;2541&quot; data-col-size=&quot;sm&quot;&gt;목적지 IP 변환&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2662&quot; data-start=&quot;2556&quot; data-ke-size=&quot;size16&quot;&gt;벤더에 따라 용어도 조금씩 다릅니다.&lt;br /&gt;예를 들어 Juniper 장비에서는 MIP, DIP, VIP라는 이름을 쓰고, Fortinet에서는 IP Pool과 Virtual IP라고 부릅니다.&lt;/p&gt;
&lt;p data-end=&quot;2736&quot; data-start=&quot;2664&quot; data-ke-size=&quot;size16&quot;&gt;하지만 결국 이 모든 용어가 의미하는 바는 단 하나입니다:&lt;br /&gt;&lt;b&gt;IP 주소(또는 포트)를 변환하여 네트워크를 연결한다는 것.&lt;/b&gt;&lt;/p&gt;
&lt;hr data-end=&quot;2741&quot; data-start=&quot;2738&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2761&quot; data-start=&quot;2743&quot; data-ke-size=&quot;size26&quot;&gt;NAT를 제대로 이해하려면?&lt;/h2&gt;
&lt;p data-end=&quot;2859&quot; data-start=&quot;2763&quot; data-ke-size=&quot;size16&quot;&gt;NAT는 용어만으로는 이해하기 어렵습니다. 실무에서 접하면서 &amp;lsquo;아, 이런 게 SNAT였구나&amp;rsquo;, &amp;lsquo;이게 바로 DNAT 상황이네&amp;rsquo; 하고 체감하는 순간이 와야 확실히 정리됩니다.&lt;/p&gt;
&lt;p data-end=&quot;2884&quot; data-start=&quot;2861&quot; data-ke-size=&quot;size16&quot;&gt;제가 추천드리는 방법은 딱 두 가지입니다:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;2968&quot; data-start=&quot;2886&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;2925&quot; data-start=&quot;2886&quot;&gt;&lt;b&gt;SNAT와 DNAT의 실제 사례를 반복해서 학습&lt;/b&gt;하세요.&lt;/li&gt;
&lt;li data-end=&quot;2968&quot; data-start=&quot;2926&quot;&gt;용어는 실전에 익숙해진 후, &lt;b&gt;정리 차원에서 다시 정리&lt;/b&gt;하세요.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-end=&quot;3078&quot; data-start=&quot;2970&quot; data-ke-size=&quot;size16&quot;&gt;다음 글에서는 Source IP NAT(SNAT)와 Destination IP NAT(DNAT)를 더 구체적으로 다루며, 실무에서 어떤 방식으로 활용되는지 사례를 통해 쉽게 설명드릴 예정입니다.&lt;/p&gt;</description>
      <category>네트워크/Layer3</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/139</guid>
      <comments>https://kujung.tistory.com/entry/%EC%99%9C-%EC%95%84%EC%A7%81%EB%8F%84-IPv4%EB%A5%BC-%EC%93%B8-%EC%88%98-%EC%9E%88%EC%9D%84%EA%B9%8C-NAT%EC%99%80-%EC%82%AC%EC%84%A4%EB%A7%9D-%EC%9D%B4%EC%95%BC%EA%B8%B0#entry139comment</comments>
      <pubDate>Sun, 29 Jun 2025 10:07:44 +0900</pubDate>
    </item>
    <item>
      <title>SNMP란 무엇인가?#2</title>
      <link>https://kujung.tistory.com/entry/SNMP%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%802</link>
      <description>&lt;h1 data-end=&quot;223&quot; data-start=&quot;194&quot;&gt;실무에서 SNMP를 활용한 네트워크 모니터링 방법&lt;/h1&gt;
&lt;p data-end=&quot;331&quot; data-start=&quot;225&quot; data-ke-size=&quot;size16&quot;&gt;이번에는 SNMP를 실제 현업에서 어떻게 활용하는지, 즉 SNMP 기반의 네트워크 모니터링 솔루션인 NMS(Network Management System)의 활용 방안에 대해 알아보겠습니다.&lt;/p&gt;
&lt;h2 data-end=&quot;355&quot; data-start=&quot;333&quot; data-ke-size=&quot;size26&quot;&gt;1. NMS 운영을 위한 기본 조건&lt;/h2&gt;
&lt;p data-end=&quot;401&quot; data-start=&quot;357&quot; data-ke-size=&quot;size16&quot;&gt;네트워크 장비를 효과적으로 모니터링하려면 몇 가지 전제 조건을 충족해야 합니다.&lt;/p&gt;
&lt;h3 data-end=&quot;420&quot; data-start=&quot;403&quot; data-ke-size=&quot;size23&quot;&gt;네트워크 연결 환경 확보&lt;/h3&gt;
&lt;p data-end=&quot;585&quot; data-start=&quot;421&quot; data-ke-size=&quot;size16&quot;&gt;가장 먼저, NMS 서버와 모니터링 대상 장비 간의 SNMP 패킷이 문제없이 오갈 수 있는 네트워크 환경을 구성해야 합니다. 즉, NMS 서버에서 보낸 SNMP 요청이 장비에 도달하고, 응답이 다시 NMS로 돌아올 수 있도록 방화벽, 라우터 등 중간 장비들의 설정이 적절히 되어 있어야 합니다.&lt;/p&gt;
&lt;h3 data-end=&quot;602&quot; data-start=&quot;587&quot; data-ke-size=&quot;size23&quot;&gt;보안 장비 정책 조정&lt;/h3&gt;
&lt;p data-end=&quot;687&quot; data-start=&quot;603&quot; data-ke-size=&quot;size16&quot;&gt;NMS와 장비 간의 통신을 가로막는 방화벽이나 기타 보안 장비의 정책을 미리 확인하고, UDP 포트 161, 162에 대한 허용을 설정해두어야 합니다.&lt;/p&gt;
&lt;h3 data-end=&quot;705&quot; data-start=&quot;689&quot; data-ke-size=&quot;size23&quot;&gt;모니터링할 OID 선정&lt;/h3&gt;
&lt;p data-end=&quot;829&quot; data-start=&quot;706&quot; data-ke-size=&quot;size16&quot;&gt;모든 OID를 수집하는 것은 비효율적입니다. 장비의 상태를 가장 잘 보여주는 핵심 OID를 선별해 모니터링하는 것이 중요합니다. 특히 트래픽 정보는 장애 예측 및 대응에 필수적인 요소로, 반드시 포함시켜야 할 항목입니다.&lt;/p&gt;
&lt;hr data-end=&quot;834&quot; data-start=&quot;831&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;857&quot; data-start=&quot;836&quot; data-ke-size=&quot;size26&quot;&gt;2. 네트워크 장비 모니터링 조건&lt;/h2&gt;
&lt;h3 data-end=&quot;874&quot; data-start=&quot;859&quot; data-ke-size=&quot;size23&quot;&gt;경로 상 라우팅 설정&lt;/h3&gt;
&lt;p data-end=&quot;1019&quot; data-start=&quot;875&quot; data-ke-size=&quot;size16&quot;&gt;NMS가 다양한 네트워크에 걸친 장비들을 모니터링하려면, 중간 경로의 백본 스위치, 라우터, 방화벽에 적절한 라우팅 설정이 필요합니다. 또한 모니터링 대상 장비 측의 네트워크에서도 NMS가 위치한 네트워크로의 경로가 설정되어 있어야 양방향 통신이 가능합니다.&lt;/p&gt;
&lt;h3 data-end=&quot;1034&quot; data-start=&quot;1021&quot; data-ke-size=&quot;size23&quot;&gt;방화벽 정책 허용&lt;/h3&gt;
&lt;p data-end=&quot;1145&quot; data-start=&quot;1035&quot; data-ke-size=&quot;size16&quot;&gt;출발지(NMS IP), 목적지(장비 IP), 그리고 SNMP가 사용하는 포트(UDP 161, 162)에 대한 허용 규칙을 설정해야 합니다. 이를 설정하지 않으면 SNMP 요청이 차단될 수 있습니다.&lt;/p&gt;
&lt;h3 data-end=&quot;1165&quot; data-start=&quot;1147&quot; data-ke-size=&quot;size23&quot;&gt;장비 SNMP 기능 활성화&lt;/h3&gt;
&lt;p data-end=&quot;1288&quot; data-start=&quot;1166&quot; data-ke-size=&quot;size16&quot;&gt;장비 내 SNMP 설정은 종종 간과되지만 매우 중요한 요소입니다. SNMP 버전(v1/v2/v3) 선택, Trap 기능 활성화 여부, 그리고 NMS의 접근을 허용할 IP 지정(ACL 설정 등)을 반드시 확인해야 합니다.&lt;/p&gt;
&lt;hr data-end=&quot;1293&quot; data-start=&quot;1290&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1316&quot; data-start=&quot;1295&quot; data-ke-size=&quot;size26&quot;&gt;3. NMS에 장비 등록하는 절차&lt;/h2&gt;
&lt;p data-end=&quot;1372&quot; data-start=&quot;1318&quot; data-ke-size=&quot;size16&quot;&gt;네트워크 환경이 준비되었다면, 이제 NMS에 장비를 등록하고 데이터를 수집하는 단계로 넘어갑니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1620&quot; data-start=&quot;1374&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1428&quot; data-start=&quot;1374&quot;&gt;&lt;b&gt;장비 IP 등록&lt;/b&gt;: NMS에서 대상 장비의 IP를 입력하여 SNMP 요청을 전송합니다.&lt;/li&gt;
&lt;li data-end=&quot;1472&quot; data-start=&quot;1429&quot;&gt;&lt;b&gt;OID 응답 수신&lt;/b&gt;: 장비로부터 기본적인 OID 응답을 받아옵니다.&lt;/li&gt;
&lt;li data-end=&quot;1524&quot; data-start=&quot;1473&quot;&gt;&lt;b&gt;모니터링 대상 OID 선택&lt;/b&gt;: 사용자가 필요한 OID를 선택해 장비를 등록합니다.&lt;/li&gt;
&lt;li data-end=&quot;1571&quot; data-start=&quot;1525&quot;&gt;&lt;b&gt;객체 생성&lt;/b&gt;: 장비는 NMS에서 하나의 객체(Object)로 관리됩니다.&lt;/li&gt;
&lt;li data-end=&quot;1620&quot; data-start=&quot;1572&quot;&gt;&lt;b&gt;모니터링 수행&lt;/b&gt;: 등록된 객체를 통해 실시간으로 상태를 확인할 수 있습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-end=&quot;1625&quot; data-start=&quot;1622&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1643&quot; data-start=&quot;1627&quot; data-ke-size=&quot;size26&quot;&gt;4. 주요 모니터링 요소&lt;/h2&gt;
&lt;h3 data-end=&quot;1654&quot; data-start=&quot;1645&quot; data-ke-size=&quot;size23&quot;&gt;공통 항목&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1776&quot; data-start=&quot;1655&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1687&quot; data-start=&quot;1655&quot;&gt;장비 정보(벤더, 설명, 호스트 이름, 가동 시간 등)&lt;/li&gt;
&lt;li data-end=&quot;1705&quot; data-start=&quot;1688&quot;&gt;&lt;b&gt;CPU/메모리 사용량&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;1723&quot; data-start=&quot;1706&quot;&gt;&lt;b&gt;FAN 상태 및 온도&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;1745&quot; data-start=&quot;1724&quot;&gt;&lt;b&gt;ICMP Ping 응답 상태&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;1762&quot; data-start=&quot;1746&quot;&gt;&lt;b&gt;SNMP 응답 여부&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;1776&quot; data-start=&quot;1763&quot;&gt;&lt;b&gt;트래픽 처리량&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1851&quot; data-start=&quot;1778&quot; data-ke-size=&quot;size16&quot;&gt;이 중에서도 CPU, 메모리, 트래픽 정보는 장애 판단의 핵심 지표로 사용되며, 실제 장애 발생 시 가장 먼저 확인하는 항목입니다.&lt;/p&gt;
&lt;h3 data-end=&quot;1866&quot; data-start=&quot;1853&quot; data-ke-size=&quot;size23&quot;&gt;장비별 주요 항목&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;장비 종류중요 모니터링 요소
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;2176&quot; data-start=&quot;1868&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;2176&quot; data-start=&quot;2012&quot;&gt;
&lt;tr data-end=&quot;2063&quot; data-start=&quot;2012&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2024&quot; data-start=&quot;2012&quot;&gt;스위치 / 라우터&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2063&quot; data-start=&quot;2024&quot;&gt;인터페이스 상태, 업링크 트래픽, 전체 트래픽 처리량&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2122&quot; data-start=&quot;2064&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2079&quot; data-start=&quot;2064&quot;&gt;L4 스위치&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2122&quot; data-start=&quot;2079&quot;&gt;세션 수, 메모리/디스크 상태, 세션 상태 요약&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2176&quot; data-start=&quot;2123&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2138&quot; data-start=&quot;2123&quot;&gt;방화벽 / VPN&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2176&quot; data-start=&quot;2138&quot;&gt;세션 정보, SNMP 상태, 인터페이스 및 트래픽 모니터링 등&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;2181&quot; data-start=&quot;2178&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2199&quot; data-start=&quot;2183&quot; data-ke-size=&quot;size26&quot;&gt;5. 모니터링 주기 설정&lt;/h2&gt;
&lt;p data-end=&quot;2250&quot; data-start=&quot;2201&quot; data-ke-size=&quot;size16&quot;&gt;OID 수집 주기는 &lt;b&gt;1분(60초)&lt;/b&gt; 혹은 **5분(300초)**이 일반적입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2337&quot; data-start=&quot;2251&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2293&quot; data-start=&quot;2251&quot;&gt;주기가 짧으면 실시간성이 높지만, 네트워크 부하가 커질 수 있습니다.&lt;/li&gt;
&lt;li data-end=&quot;2337&quot; data-start=&quot;2294&quot;&gt;주기가 길면 자원은 적게 소모되나, 장애 감지 속도가 느려질 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;2377&quot; data-start=&quot;2339&quot; data-ke-size=&quot;size16&quot;&gt;장비의 중요도와 네트워크 규모에 따라 적절한 주기를 설정해야 합니다.&lt;/p&gt;
&lt;hr data-end=&quot;2382&quot; data-start=&quot;2379&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-end=&quot;2510&quot; data-start=&quot;2384&quot; data-ke-size=&quot;size16&quot;&gt;이처럼 SNMP와 NMS를 활용하면 네트워크의 상태를 효율적으로 관리하고, 장애를 신속히 탐지 및 대응할 수 있습니다. 실무에서 반드시 숙지해야 할 중요한 요소이니, 기본 원리부터 실전 적용까지 체계적으로 이해하시기 바랍니다.&lt;/p&gt;</description>
      <category>네트워크/Layer4</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/138</guid>
      <comments>https://kujung.tistory.com/entry/SNMP%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%802#entry138comment</comments>
      <pubDate>Sun, 29 Jun 2025 09:45:26 +0900</pubDate>
    </item>
    <item>
      <title>SNMP란 무엇인가?#1</title>
      <link>https://kujung.tistory.com/entry/SNMP%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%801</link>
      <description>&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;네트워크 장비들의 주요 성능과 기능을 모니터링(관제)하고 장애 발생 시 이를 관리자에게 전달하거나 장비에 문제가 생기지 않아도 먼저 관리자에게 특이점을 보고할 수 있는 &lt;/span&gt;프로토콜이 있습니다. 바로 **SNMP(Simple Network Management Protocol)**입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;SNMP란 무엇인가?&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;SNMP는 &quot;간이 망 관리 프로토콜(Simple Network Management Protocol)&quot;로, 네트워크 장비(라우터, 스위치, 서버, 프린터 등)의 성능, 상태, 설정 정보를 수집하고 제어하는 데 사용하는 &lt;/span&gt;&lt;span&gt;&lt;b&gt;인터넷 표준 프로토콜&lt;/b&gt;&lt;/span&gt;&lt;span&gt;입니다. SNMP를 활용하면 관리자나 모니터링 시스템(NMS)이 장비를 직접 확인하지 않고도 다양한 정보를 수집하고 문제를 탐지할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;SNMP는 &lt;/span&gt;&lt;span&gt;&lt;b&gt;UDP 포트 161&lt;/b&gt;&lt;/span&gt;&lt;span&gt;을 사용하며, 정보를 주고받는 방식은 가볍고 빠릅니다.&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;SNMP 구성 요소&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;SNMP는 크게 두 가지 역할로 구성됩니다:&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;▶ Manager (NMS: Network Management System)&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;정보를 수집하고 모니터링하는 주체&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;SNMP 메시지를 통해 장비 상태를 요청하거나 설정 변경 명령을 보냅니다&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;▶ Agent&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;정보를 제공하는 장비 측&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;장비 내에 동작하는 SNMP Daemon이 정보 요청에 응답하거나 장애 발생 시 직접 메시지를 보냅니다&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;SNMP 버전별 특징&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버전특징&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;b&gt;v1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;가장 초기 버전. 커뮤니티 값을 &lt;/span&gt;&lt;span&gt;&lt;b&gt;평문 전송&lt;/b&gt;&lt;/span&gt;&lt;span&gt;해 보안에 취약&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;b&gt;v2c&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;대량 정보 요청 가능. 하지만 여전히 &lt;/span&gt;&lt;span&gt;&lt;b&gt;커뮤니티 값 평문 전송&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;b&gt;v3&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;인증 및 암호화 추가 (Username + Password 기반 보안 강화)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;커뮤니티 값&lt;/b&gt;&lt;/span&gt;&lt;span&gt;은 NMS와 장비 간 인증을 위한 문자열입니다. 일종의 비밀번호 역할을 하며, 이 값이 일치하지 않으면 장비는 정보를 제공하지 않습니다.&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;SNMP 메시지의 종류&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;▶ Get&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;장비의 정보를 요청합니다&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;GetRequest / GetNextRequest / GetBulkRequest&lt;/b&gt;&lt;/span&gt;&lt;span&gt; 종류가 있으며, 후자로 갈수록 대량 요청에 유리합니다&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;▶ Set&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;장비 설정을 &lt;/span&gt;&lt;span&gt;&lt;b&gt;변경&lt;/b&gt;&lt;/span&gt;&lt;span&gt;합니다&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;실무에서는 자주 사용되지는 않지만, 자동화 설정에 활용되기도 합니다&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;▶ Trap&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;장비가 스스로 보내는 경고 메시지&lt;/b&gt;&lt;/span&gt;&lt;span&gt;입니다&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;장애 발생 시 즉시 NMS로 전송되며, &lt;/span&gt;&lt;span&gt;&lt;b&gt;UDP 포트 162&lt;/b&gt;&lt;/span&gt;&lt;span&gt;를 사용합니다&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;SNMP의 핵심: OID (Object Identifier)&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;장비의 각각의 정보는 **OID(Object ID)**라는 고유 번호로 식별됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;예시:&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;1.3.6.1.2.1.1.3.0&lt;/span&gt;&lt;span&gt; &amp;rarr; 장비의 Uptime&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;1.3.6.1.4.1.9.9.109.1.1.1.1.5&lt;/span&gt;&lt;span&gt; &amp;rarr; Cisco 장비의 CPU 5분 평균 사용률&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;OID는 &lt;/span&gt;&lt;span&gt;&lt;b&gt;트리 구조&lt;/b&gt;&lt;/span&gt;&lt;span&gt;로 구성되어 있으며, 각 숫자는 특정한 의미를 갖습니다. OID는 다음과 같이 나뉩니다:&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;▶ Public OID&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;모든 벤더에서 공통으로 사용하는 정보 (ex. 시스템 정보, 인터페이스 상태 등)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;▶ Private OID&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;특정 벤더 전용 정보 (ex. Cisco 장비의 전력 상태, CPU 온도 등)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;MIB (Management Information Base)&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;OID들의 집합을 &lt;/span&gt;&lt;span&gt;&lt;b&gt;MIB&lt;/b&gt;&lt;/span&gt;&lt;span&gt;라고 부릅니다. 각 벤더는 자사 장비에 맞는 MIB 파일을 제공하며, NMS는 이 파일을 읽어 어떤 정보를 어떤 OID로 가져와야 하는지 인식합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;MIB를 쉽게 탐색하려면 &lt;/span&gt;&lt;span&gt;&lt;b&gt;MIB Browser&lt;/b&gt;&lt;/span&gt;&lt;span&gt;를 사용하면 됩니다. 대표적인 무료 도구: &lt;/span&gt;&lt;a href=&quot;https://www.ireasoning.com/mibbrowser.shtml&quot;&gt;&lt;span&gt;iReasoning MIB Browser&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;PC도 SNMP로 관제 가능?&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;그렇습니다. SNMP는 라우터, 스위치 같은 네트워크 장비뿐 아니라 &lt;/span&gt;&lt;span&gt;&lt;b&gt;프린터, 서버, 심지어 개인용 PC까지&lt;/b&gt;&lt;/span&gt;&lt;span&gt; 지원됩니다. PC에서도 SNMP Agent를 활성화하면, CPU/메모리 사용량 등 주요 정보를 NMS가 수집할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;SNMP는 단순히 정보를 모으는 수준을 넘어, 네트워크의 현재 상태를 종합적으로 관제하고 문제를 조기에 인지하게 해주는 핵심 기술입니다. NMS 솔루션과 함께 활용하면, 장애 대응 능력을 획기적으로 높일 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;다음 글에서는 실제 SNMP 환경 구축과 실무 적용 사례에 대해 다뤄보겠습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;</description>
      <category>네트워크/Layer4</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/137</guid>
      <comments>https://kujung.tistory.com/entry/SNMP%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%801#entry137comment</comments>
      <pubDate>Sun, 29 Jun 2025 09:40:37 +0900</pubDate>
    </item>
    <item>
      <title>EIGRP 라우팅 프로토콜 한방에 끝내기</title>
      <link>https://kujung.tistory.com/entry/EIGRP-%EB%9D%BC%EC%9A%B0%ED%8C%85-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C-%ED%95%9C%EB%B0%A9%EC%97%90-%EB%81%9D%EB%82%B4%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;EIGRP(Enhanced&amp;nbsp;Interior&amp;nbsp;Gateway&amp;nbsp;Routing&amp;nbsp;Protocol)란? &lt;br /&gt;EIGRP(Enhanced Interior Gateway Routing Protocol)는 Cisco에서 개발한 고급 동적 라우팅 프로토콜로, IGRP(Interior Gateway Routing Protocol)를 개선한 버전입니다. 하이브리드 라우팅 프로토콜이라고도 불리며, 거리 벡터(distance vector)와 링크 상태(link state) 라우팅 프로토콜의 장점을 결합한 구조를 가지고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;distance verctor 라우팅 프로토콜이며, link state의 특징을 몇가지 가지고 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Cisco 독점 프로토콜 (기존) &amp;rarr; 2013년 표준화 (RFC 7868)&lt;/p&gt;
&lt;h2 data-end=&quot;324&quot; data-start=&quot;302&quot; data-ke-size=&quot;size26&quot;&gt;1. &lt;b&gt;EIGRP의 주요 특징&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-end=&quot;361&quot; data-start=&quot;325&quot; data-ke-size=&quot;size23&quot;&gt;1) 빠른 컨버전스(Fast Convergence)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;509&quot; data-start=&quot;365&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;480&quot; data-start=&quot;365&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;DUAL&lt;/span&gt;(Diffusing Update Algorithm)을 사용하여 최적의 경로를 신속하게 찾고, 기존 경로에 장애가 발생할 경우 대체 경로(Feasible Successor)를 빠르게 적용함.&lt;/li&gt;
&lt;li data-end=&quot;509&quot; data-start=&quot;484&quot;&gt;RIP보다 빠른 경로 재탐색 속도를 보장.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #fcfcfc; color: #666666; text-align: left;&quot;&gt;DUAL 알고리즘(Diffusing Update Algorithm)이란? 맨 밑에서 설명합니다.&lt;/span&gt;&lt;span style=&quot;background-color: #fcfcfc; color: #666666; text-align: left;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-end=&quot;562&quot; data-start=&quot;511&quot; data-ke-size=&quot;size23&quot;&gt;2) &lt;b&gt;부분적인 업데이트(Partial &amp;amp; Bounded Updates)&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;637&quot; data-start=&quot;566&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;601&quot; data-start=&quot;566&quot;&gt;전체 네트워크가 아닌 변경이 발생한 부분에만 업데이트 전송.&lt;/li&gt;
&lt;li data-end=&quot;637&quot; data-start=&quot;605&quot;&gt;네트워크 대역폭 절약 및 효율적인 라우팅 테이블 관리.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;668&quot; data-start=&quot;639&quot; data-ke-size=&quot;size23&quot;&gt;3) &lt;b&gt;VLSM &amp;amp; CIDR 지원&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;777&quot; data-start=&quot;672&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;777&quot; data-start=&quot;672&quot;&gt;서브넷 마스크 가변 길이(VLSM, Variable Length Subnet Mask) 및 클래스 없는 라우팅(CIDR, Classless Inter-Domain Routing) 지원.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;804&quot; data-start=&quot;779&quot; data-ke-size=&quot;size23&quot;&gt;4) &lt;b&gt;멀티 프로토콜 지원&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;857&quot; data-start=&quot;808&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;857&quot; data-start=&quot;808&quot;&gt;IPv4뿐만 아니라 IPv6, AppleTalk, IPX 같은 여러 프로토콜을 지원.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;891&quot; data-start=&quot;859&quot; data-ke-size=&quot;size23&quot;&gt;5) &lt;b&gt;수학적 거리 정보(메트릭) 활용&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;993&quot; data-start=&quot;895&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;993&quot; data-start=&quot;895&quot;&gt;&lt;b&gt;EIGRP 메트릭 공식&lt;/b&gt;은 대역폭(Bandwidth), 지연시간(Delay), 신뢰성(Reliability), 부하(Load) 등의 요소를 기반으로 최적 경로를 결정.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1042&quot; data-start=&quot;995&quot; data-ke-size=&quot;size23&quot;&gt;6) &lt;b&gt;계층적 라우팅(Hierarchical Routing) 지원&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1121&quot; data-start=&quot;1046&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1121&quot; data-start=&quot;1046&quot;&gt;&lt;b&gt;자동 요약(Auto-Summary)&lt;/b&gt; 기능을 제공하지만, 필요시 &lt;b&gt;비활성화 가능(Manual Summarization)&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-end=&quot;1150&quot; data-start=&quot;1128&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-end=&quot;1150&quot; data-start=&quot;1128&quot; data-ke-size=&quot;size26&quot;&gt;2. &lt;b&gt;EIGRP의 동작 원리&lt;/b&gt;&lt;/h2&gt;
&lt;p data-end=&quot;1181&quot; data-start=&quot;1151&quot; data-ke-size=&quot;size16&quot;&gt;EIGRP는 다음과 같은 주요 요소를 통해 동작합니다.&lt;/p&gt;
&lt;h3 data-end=&quot;1217&quot; data-start=&quot;1183&quot; data-ke-size=&quot;size23&quot;&gt;1) &lt;b&gt;네이버(Nighbor) 관계 설정&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1299&quot; data-start=&quot;1221&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1299&quot; data-start=&quot;1221&quot;&gt;동일한 &lt;b&gt;AS(Autonomous System, 자율 시스템) 번호&lt;/b&gt;를 가진 라우터들끼리 Hello 패킷을 교환하여 이웃 관계 형성.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1326&quot; data-start=&quot;1301&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;2) &lt;b&gt;DUAL 알고리즘&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1449&quot; data-start=&quot;1330&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1413&quot; data-start=&quot;1330&quot;&gt;라우팅 루프 방지를 위해 **최단 경로(Successor)와 후보 경로(Feasible Successor)**를 계산하여 백업 경로를 미리 확보.&lt;/li&gt;
&lt;li data-end=&quot;1449&quot; data-start=&quot;1417&quot;&gt;이를 통해 장애 발생 시 빠른 대체 경로로 전환 가능.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1488&quot; data-start=&quot;1451&quot; data-ke-size=&quot;size23&quot;&gt;3) &lt;b&gt;라우팅 테이블 &amp;amp; 토폴로지 테이블 활용&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1648&quot; data-start=&quot;1492&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1543&quot; data-start=&quot;1492&quot;&gt;&lt;b&gt;라우팅 테이블(Routing Table)&lt;/b&gt;: 실제로 패킷이 전달될 최적 경로 저장.&lt;/li&gt;
&lt;li data-end=&quot;1600&quot; data-start=&quot;1547&quot;&gt;&lt;b&gt;토폴로지 테이블(Topology Table)&lt;/b&gt;: 모든 가능한 경로 및 백업 경로 저장.&lt;/li&gt;
&lt;li data-end=&quot;1648&quot; data-start=&quot;1604&quot;&gt;&lt;b&gt;네이버 테이블(Neighbor Table)&lt;/b&gt;: 인접 라우터 목록 저장.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1677&quot; data-start=&quot;1650&quot; data-ke-size=&quot;size23&quot;&gt;4) &lt;b&gt;EIGRP 패킷 유형&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;381&quot; data-origin-height=&quot;225&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3PF9A/btsMZ6Zh3rG/LCi20icycQxDFkp90mAark/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3PF9A/btsMZ6Zh3rG/LCi20icycQxDFkp90mAark/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3PF9A/btsMZ6Zh3rG/LCi20icycQxDFkp90mAark/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3PF9A%2FbtsMZ6Zh3rG%2FLCi20icycQxDFkp90mAark%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;559&quot; height=&quot;330&quot; data-origin-width=&quot;381&quot; data-origin-height=&quot;225&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1857&quot; data-start=&quot;1681&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1724&quot; data-start=&quot;1681&quot;&gt;&lt;b&gt;Hello 패킷&lt;/b&gt;: 네이버 관계 설정(멀티캐스트 224.0.0.10)&lt;/li&gt;
&lt;li data-end=&quot;1768&quot; data-start=&quot;1728&quot;&gt;&lt;b&gt;Update 패킷&lt;/b&gt;: 라우팅 정보 업데이트(변경된 경로만 전송)&lt;/li&gt;
&lt;li data-end=&quot;1796&quot; data-start=&quot;1772&quot;&gt;&lt;b&gt;Query 패킷&lt;/b&gt;: 대체 경로 요청&lt;/li&gt;
&lt;li data-end=&quot;1828&quot; data-start=&quot;1800&quot;&gt;&lt;b&gt;Reply 패킷&lt;/b&gt;: Query에 대한 응답&lt;/li&gt;
&lt;li data-end=&quot;1857&quot; data-start=&quot;1832&quot;&gt;&lt;b&gt;ACK 패킷&lt;/b&gt;: 패킷 수신 확인 응답&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1862&quot; data-start=&quot;1859&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1886&quot; data-start=&quot;1864&quot; data-ke-size=&quot;size26&quot;&gt;3. &lt;b&gt;EIGRP 메트릭 공식&lt;/b&gt;&lt;/h2&gt;
&lt;p data-end=&quot;1916&quot; data-start=&quot;1887&quot; data-ke-size=&quot;size16&quot;&gt;EIGRP는 다음 공식으로 경로 메트릭을 계산합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Metric=256&amp;times;[(K1&amp;times;Bandwidth)+(K3&amp;times;Delay)]Metric = 256 \times [(K1 \times Bandwidth) + (K3 \times Delay)]&lt;/span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;M&lt;/span&gt;&lt;span&gt;e&lt;/span&gt;&lt;span&gt;t&lt;/span&gt;&lt;span&gt;r&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;c&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;256&lt;/span&gt;&lt;span&gt;&amp;times;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;[(&lt;/span&gt;&lt;span&gt;K&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&amp;times;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;B&lt;/span&gt;&lt;span&gt;an&lt;/span&gt;&lt;span&gt;d&lt;/span&gt;&lt;span&gt;w&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;d&lt;/span&gt;&lt;span&gt;t&lt;/span&gt;&lt;span&gt;h&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;K&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;&amp;times;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;De&lt;/span&gt;&lt;span&gt;l&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;y&lt;/span&gt;&lt;span&gt;)]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2103&quot; data-start=&quot;1989&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2025&quot; data-start=&quot;1989&quot;&gt;&lt;b&gt;Bandwidth&lt;/b&gt;: 최소 링크 대역폭 (Kbps 단위)&lt;/li&gt;
&lt;li data-end=&quot;2058&quot; data-start=&quot;2026&quot;&gt;&lt;b&gt;Delay&lt;/b&gt;: 누적 지연 시간 (마이크로초 단위)&lt;/li&gt;
&lt;li data-end=&quot;2103&quot; data-start=&quot;2059&quot;&gt;&lt;b&gt;K 값 (K1 ~ K5)&lt;/b&gt;: 기본값은 K1=1, K3=1, 나머지는 0&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;2192&quot; data-start=&quot;2105&quot; data-ke-size=&quot;size16&quot;&gt;❗ &lt;b&gt;기본적으로 Cisco에서는 대역폭(Bandwidth)과 지연시간(Delay)만 고려&lt;/b&gt;하고, 신뢰성(Reliability) 및 부하는 사용하지 않음.&lt;/p&gt;
&lt;hr data-end=&quot;2197&quot; data-start=&quot;2194&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2222&quot; data-start=&quot;2199&quot; data-ke-size=&quot;size26&quot;&gt;4. &lt;b&gt;EIGRP의 장점과 단점&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-end=&quot;2235&quot; data-start=&quot;2223&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;장점&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2346&quot; data-start=&quot;2236&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2256&quot; data-start=&quot;2236&quot;&gt;빠른 컨버전스 및 백업 경로 지원&lt;/li&gt;
&lt;li data-end=&quot;2285&quot; data-start=&quot;2257&quot;&gt;효율적인 네트워크 트래픽 관리 (부분 업데이트)&lt;/li&gt;
&lt;li data-end=&quot;2312&quot; data-start=&quot;2286&quot;&gt;라우팅 루프 방지 (DUAL 알고리즘 사용)&lt;/li&gt;
&lt;li data-end=&quot;2329&quot; data-start=&quot;2313&quot;&gt;VLSM 및 CIDR 지원&lt;/li&gt;
&lt;li data-end=&quot;2346&quot; data-start=&quot;2330&quot;&gt;IPv4 및 IPv6 지원&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;2360&quot; data-start=&quot;2348&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;단점&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2468&quot; data-start=&quot;2361&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2428&quot; data-start=&quot;2401&quot;&gt;OSPF에 비해 설정이 비교적 복잡할 수 있음&lt;/li&gt;
&lt;li data-end=&quot;2468&quot; data-start=&quot;2429&quot;&gt;네트워크 규모가 매우 클 경우 OSPF보다 효율성이 떨어질 수 있음&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;2473&quot; data-start=&quot;2470&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2508&quot; data-start=&quot;2475&quot; data-ke-size=&quot;size26&quot;&gt;5. &lt;b&gt;EIGRP 기본 설정 (Cisco IOS)&lt;/b&gt;&lt;/h2&gt;
&lt;p data-end=&quot;2539&quot; data-start=&quot;2509&quot; data-ke-size=&quot;size16&quot;&gt;아래는 EIGRP를 구성하는 기본적인 설정 방법입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;598&quot; data-origin-height=&quot;131&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m2oaz/btsMX4viuiU/8xikbG4rdgRUfDC4TbCOK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m2oaz/btsMX4viuiU/8xikbG4rdgRUfDC4TbCOK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m2oaz/btsMX4viuiU/8xikbG4rdgRUfDC4TbCOK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm2oaz%2FbtsMX4viuiU%2F8xikbG4rdgRUfDC4TbCOK1%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;598&quot; height=&quot;131&quot; data-origin-width=&quot;598&quot; data-origin-height=&quot;131&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-end=&quot;2828&quot; data-start=&quot;2805&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;EIGRP 검증 명령어&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2958&quot; data-start=&quot;2829&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2870&quot; data-start=&quot;2829&quot;&gt;show ip eigrp neighbors &amp;rarr; 네이버 관계 확인&lt;/li&gt;
&lt;li data-end=&quot;2913&quot; data-start=&quot;2871&quot;&gt;show ip eigrp topology &amp;rarr; 토폴로지 테이블 확인&lt;/li&gt;
&lt;li data-end=&quot;2958&quot; data-start=&quot;2914&quot;&gt;show ip route eigrp &amp;rarr; EIGRP 라우팅 테이블 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-end=&quot;2992&quot; data-start=&quot;2965&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-end=&quot;2992&quot; data-start=&quot;2965&quot; data-ke-size=&quot;size26&quot;&gt;6. &lt;b&gt;EIGRP vs. OSPF 비교&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;752&quot; data-origin-height=&quot;642&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qFgYF/btsMYuHc4Vt/bxUJijw4rLpxxiVAQQZ3r1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qFgYF/btsMYuHc4Vt/bxUJijw4rLpxxiVAQQZ3r1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qFgYF/btsMYuHc4Vt/bxUJijw4rLpxxiVAQQZ3r1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqFgYF%2FbtsMYuHc4Vt%2FbxUJijw4rLpxxiVAQQZ3r1%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;752&quot; height=&quot;642&quot; data-origin-width=&quot;752&quot; data-origin-height=&quot;642&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;3305&quot; data-start=&quot;3231&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;중소규모 네트워크&lt;/b&gt;에서는 &lt;b&gt;EIGRP&lt;/b&gt;가 유리하고,&lt;br /&gt;&lt;b&gt;대규모 네트워크&lt;/b&gt;에서는 &lt;b&gt;OSPF&lt;/b&gt;가 더 적합합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1344&quot; data-start=&quot;1321&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1344&quot; data-start=&quot;1321&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1344&quot; data-start=&quot;1321&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;DUAL 알고리즘?&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-start=&quot;53&quot; data-end=&quot;192&quot;&gt;DUAL(Diffusing Update Algorithm)은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;EIGRP(Enhanced Interior Gateway Routing Protocol)의 핵심 라우팅 알고리즘&lt;/b&gt;으로,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;빠른 컨버전스&lt;/b&gt;와&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;루프 방지&lt;/b&gt;를 위해 사용됩니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-start=&quot;194&quot; data-end=&quot;311&quot;&gt;EIGRP는 DUAL 알고리즘을 활용하여 네트워크의 **최단 경로(Successor)와 대체 경로(Feasible Successor)**를 계산하고, 장애가 발생할 경우&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;빠르게 새로운 경로를 적용&lt;/b&gt;합니다.&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot; data-start=&quot;318&quot; data-end=&quot;344&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot; data-start=&quot;318&quot; data-end=&quot;344&quot;&gt;&lt;b&gt;DUAL 알고리즘의 주요 개념&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot; data-start=&quot;345&quot; data-end=&quot;375&quot;&gt;&lt;b&gt;1) Successor (최단 경로)&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot; data-start=&quot;376&quot; data-end=&quot;433&quot;&gt;
&lt;li data-start=&quot;376&quot; data-end=&quot;417&quot;&gt;현재 가장 좋은 경로(최소 메트릭 값)로,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;실제 패킷이 전달되는 경로.&lt;/span&gt;&lt;/li&gt;
&lt;li data-start=&quot;418&quot; data-end=&quot;433&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;라우팅 테이블에 저장됨.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot; data-start=&quot;435&quot; data-end=&quot;474&quot;&gt;&lt;b&gt;2) Feasible Successor (대체 경로)&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot; data-start=&quot;475&quot; data-end=&quot;655&quot;&gt;
&lt;li data-start=&quot;475&quot; data-end=&quot;518&quot;&gt;Successor가 장애가 발생할 경우&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;즉시 대체될 수 있는 경로&lt;/b&gt;.&lt;/li&gt;
&lt;li data-start=&quot;519&quot; data-end=&quot;604&quot;&gt;Feasible Distance(FD)보다 낮은 Advertised Distance(AD)를 가진 경로만 Feasible Successor로 선택됨.&lt;/li&gt;
&lt;li data-start=&quot;605&quot; data-end=&quot;655&quot;&gt;DUAL 알고리즘 덕분에&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;경로 장애 시 네트워크 재탐색 없이 빠르게 전환 가능&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot; data-start=&quot;657&quot; data-end=&quot;698&quot;&gt;&lt;b&gt;3) Feasible Distance(FD, 실행 거리)&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot; data-start=&quot;699&quot; data-end=&quot;737&quot;&gt;
&lt;li data-start=&quot;699&quot; data-end=&quot;737&quot;&gt;현재 라우터가 네트워크까지 가기 위해 사용하는 총 비용(메트릭).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot; data-start=&quot;739&quot; data-end=&quot;782&quot;&gt;&lt;b&gt;4) Advertised Distance(AD, 광고 거리)&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot; data-start=&quot;783&quot; data-end=&quot;870&quot;&gt;
&lt;li data-start=&quot;783&quot; data-end=&quot;816&quot;&gt;이웃 라우터가 해당 네트워크까지 가는 데 사용하는 비용.&lt;/li&gt;
&lt;li data-start=&quot;817&quot; data-end=&quot;870&quot;&gt;AD &amp;lt; FD 조건을 만족하는 경로만&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Feasible Successor&lt;/b&gt;로 사용 가능.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot; data-start=&quot;877&quot; data-end=&quot;902&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot; data-start=&quot;877&quot; data-end=&quot;902&quot;&gt;&lt;b&gt;DUAL 알고리즘 동작 과정&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot; data-start=&quot;903&quot; data-end=&quot;927&quot;&gt;&lt;b&gt;1. 네트워크 초기 설정&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-start=&quot;928&quot; data-end=&quot;1008&quot;&gt;EIGRP가 동작하면 라우터는 이웃 라우터들과&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Hello 패킷을 교환&lt;/b&gt;하여&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Neighbor 관계를 형성&lt;/b&gt;하고, 라우팅 정보를 수집함.&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot; data-start=&quot;1010&quot; data-end=&quot;1056&quot;&gt;&lt;b&gt;2. Successor와 Feasible Successor 선정&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot; data-start=&quot;1057&quot; data-end=&quot;1157&quot;&gt;
&lt;li data-start=&quot;1057&quot; data-end=&quot;1105&quot;&gt;각 라우터는 **Successor(최적 경로)**를 결정하고 라우팅 테이블에 저장.&lt;/li&gt;
&lt;li data-start=&quot;1106&quot; data-end=&quot;1157&quot;&gt;Feasible Successor(대체 경로)가 존재하면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;즉시 백업 경로로 설정&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot; data-start=&quot;1159&quot; data-end=&quot;1189&quot;&gt;&lt;b&gt;3. 장애 발생 시 대체 경로 전환&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot; data-start=&quot;1190&quot; data-end=&quot;1314&quot;&gt;
&lt;li data-start=&quot;1190&quot; data-end=&quot;1259&quot;&gt;Successor 경로가 끊어지면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Feasible Successor가 있으면 즉시 대체&lt;/b&gt;하여 컨버전스 시간을 줄임.&lt;/li&gt;
&lt;li data-start=&quot;1260&quot; data-end=&quot;1314&quot;&gt;Feasible Successor가 없다면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Query 패킷을 보내 새로운 경로를 탐색&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot; data-start=&quot;1321&quot; data-end=&quot;1344&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot; data-start=&quot;1321&quot; data-end=&quot;1344&quot;&gt;&lt;b&gt;DUAL 알고리즘의 장점&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-start=&quot;1345&quot; data-end=&quot;1536&quot;&gt;&lt;b&gt;빠른 컨버전스&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;rarr; Feasible Successor 덕분에 네트워크 장애 발생 시 신속한 경로 변경&lt;br /&gt;&lt;b&gt;라우팅 루프 방지&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;rarr; Feasible Distance(FD)와 Advertised Distance(AD)를 비교하여 루프 발생 차단&lt;br /&gt;&lt;b&gt;효율적인 트래픽 관리&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;rarr; 변경된 네트워크만 업데이트하여 대역폭 절약&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot; data-start=&quot;1543&quot; data-end=&quot;1565&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot; data-start=&quot;1543&quot; data-end=&quot;1565&quot;&gt;&lt;b&gt;DUAL 알고리즘 예제&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-start=&quot;1566&quot; data-end=&quot;1631&quot;&gt;아래와 같은 **4개의 라우터(R1, R2, R3, R4)**가 연결된 네트워크를 가정합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;746&quot; data-origin-height=&quot;205&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c1Zb3E/btsMY6y6z5H/oKvkIK0E13jfm5jclb1Zd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c1Zb3E/btsMY6y6z5H/oKvkIK0E13jfm5jclb1Zd0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c1Zb3E/btsMY6y6z5H/oKvkIK0E13jfm5jclb1Zd0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc1Zb3E%2FbtsMY6y6z5H%2FoKvkIK0E13jfm5jclb1Zd0%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;746&quot; height=&quot;205&quot; data-origin-width=&quot;746&quot; data-origin-height=&quot;205&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-end=&quot;628&quot; data-start=&quot;597&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;R1에서 R4로 가는 경로 선택&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;740&quot; data-start=&quot;629&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;740&quot; data-start=&quot;629&quot;&gt;R1에서 R4로 가는 &lt;b&gt;가능한 경로&lt;/b&gt;:
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;740&quot; data-start=&quot;659&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;710&quot; data-start=&quot;659&quot;&gt;&lt;b&gt;R1 &amp;rarr; R2 &amp;rarr; R3 &amp;rarr; R4&lt;/b&gt; (비용: 10 + 20 + 5 = 35)&lt;/li&gt;
&lt;li data-end=&quot;740&quot; data-start=&quot;713&quot;&gt;&lt;b&gt;R1 &amp;rarr; R4&lt;/b&gt; (비용: 15)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;900&quot; data-start=&quot;742&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;EIGRP는 가장 낮은 비용(메트릭)이 있는 경로를 선택&lt;/b&gt;&lt;br /&gt;➡ 따라서 R1은 **R1 &amp;rarr; R4 (비용 15)를 Successor(주 경로)**로 선택&lt;br /&gt;➡ **R1 &amp;rarr; R2 &amp;rarr; R3 &amp;rarr; R4 (비용 35)는 Feasible Successor(백업 경로)**로 저장&lt;/p&gt;
&lt;h3 data-end=&quot;945&quot; data-start=&quot;907&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;링크 장애 발생 (R1 &amp;rarr; R4 경로 다운)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-end=&quot;1097&quot; data-start=&quot;946&quot; data-ke-size=&quot;size16&quot;&gt;만약 &lt;b&gt;R1 &amp;harr; R4 링크가 끊긴다면?&lt;/b&gt;&lt;br /&gt;  일반적인 라우팅 프로토콜(OSPF, RIP 등)은 새로운 경로를 계산하는 데 시간이 걸림.&lt;br /&gt;  하지만 &lt;b&gt;EIGRP(DUAL)는 Feasible Successor(백업 경로)를 즉시 사용&lt;/b&gt;하여 빠르게 수렴.&lt;/p&gt;
&lt;p data-end=&quot;1173&quot; data-start=&quot;1099&quot; data-ke-size=&quot;size16&quot;&gt;➡ 즉, R1은 기존에 저장된 &lt;b&gt;R1 &amp;rarr; R2 &amp;rarr; R3 &amp;rarr; R4 (비용 35)&lt;/b&gt; 경로를 즉시 사용하여 빠른 장애 복구가 가능!&lt;/p&gt;
&lt;h2 data-end=&quot;1195&quot; data-start=&quot;1180&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-end=&quot;1195&quot; data-start=&quot;1180&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;핵심 요약&lt;/b&gt;&lt;/h2&gt;
&lt;p data-end=&quot;1365&quot; data-start=&quot;1196&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;DUAL 알고리즘은 Successor(주 경로)와 Feasible Successor(백업 경로)를 유지&lt;/b&gt;&lt;br /&gt;&lt;b&gt;백업 경로를 미리 계산하므로 장애 발생 시 빠르게 대체 경로로 전환 가능&lt;/b&gt;&lt;br /&gt;&lt;b&gt;EIGRP는 다른 라우팅 프로토콜보다 빠른 수렴(Convergence) 속도를 가짐&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;1524&quot; data-start=&quot;1367&quot; data-ke-size=&quot;size16&quot;&gt;이처럼 DUAL 알고리즘 덕분에 &lt;b&gt;EIGRP는 빠르고 안정적인 라우팅을 제공&lt;/b&gt;할 수 있습니다!  &lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;DUAL 알고리즘은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;빠른 컨버전스와 네트워크 안정성&lt;/b&gt;을 보장하는 EIGRP의 핵심 기술입니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Feasible Successor 개념을 활용하여 장애 발생 시 신속하게 우회 경로를 설정&lt;/b&gt;하는 것이 가장 큰 장점입니다.&lt;/p&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 data-end=&quot;3469&quot; data-start=&quot;3326&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>네트워크/Layer3</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/136</guid>
      <comments>https://kujung.tistory.com/entry/EIGRP-%EB%9D%BC%EC%9A%B0%ED%8C%85-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C-%ED%95%9C%EB%B0%A9%EC%97%90-%EB%81%9D%EB%82%B4%EA%B8%B0#entry136comment</comments>
      <pubDate>Thu, 27 Mar 2025 23:56:58 +0900</pubDate>
    </item>
    <item>
      <title>라우팅 프토토콜의 종류 알아보기.</title>
      <link>https://kujung.tistory.com/entry/%EB%9D%BC%EC%9A%B0%ED%8C%85-%ED%94%84%ED%86%A0%ED%86%A0%EC%BD%9C%EC%9D%98-%EC%A2%85%EB%A5%98-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;라우팅 프로토콜&lt;/b&gt;은 네트워크에서 &lt;b&gt;라우터들이 목적지까지 최적 경로를 찾기 위해 사용하는 규칙과 절차&lt;/b&gt;를 말해요.&lt;/p&gt;
&lt;p data-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;h2 data-end=&quot;159&quot; data-start=&quot;113&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. IGP (Interior Gateway Protocol)&lt;/b&gt;&lt;/h2&gt;
&lt;p data-end=&quot;199&quot; data-start=&quot;160&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; &lt;b&gt;하나의 AS( &lt;span style=&quot;background-color: #ffffff; color: #1f1f1f; text-align: start;&quot;&gt;Autonomous System&lt;/span&gt; ) 내부에서&lt;/b&gt; 사용하는 라우팅 프로토콜&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;747&quot; data-origin-height=&quot;347&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bepktg/btsMUxilRpI/INZTh3s8MdnRXRVlDkAKOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bepktg/btsMUxilRpI/INZTh3s8MdnRXRVlDkAKOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bepktg/btsMUxilRpI/INZTh3s8MdnRXRVlDkAKOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbepktg%2FbtsMUxilRpI%2FINZTh3s8MdnRXRVlDkAKOK%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;747&quot; height=&quot;347&quot; data-origin-width=&quot;747&quot; data-origin-height=&quot;347&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-end=&quot;200&quot; data-start=&quot;186&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;특징 :&lt;/b&gt;&lt;/h3&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 data-end=&quot;246&quot; data-start=&quot;201&quot;&gt;&lt;b&gt;AS(Autonomous System)&lt;/b&gt; 내부에서 라우터들끼리 경로 교환&lt;/li&gt;
&lt;li data-end=&quot;285&quot; data-start=&quot;247&quot;&gt;&lt;b&gt;조직 내부&lt;/b&gt;, 기업 네트워크, ISP 내부 네트워크에서 사용&lt;/li&gt;
&lt;li data-end=&quot;313&quot; data-start=&quot;286&quot;&gt;&lt;b&gt;빠른 수렴 속도&lt;/b&gt; (변경사항 빨리 반영)&lt;/li&gt;
&lt;li data-end=&quot;351&quot; data-start=&quot;332&quot;&gt;최적화된 경로 찾기 &lt;b&gt;위주&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&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 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;참고- RIP와 IGRP는 &lt;span style=&quot;color: #006dd7;&quot;&gt;classful 방식&lt;/span&gt;을 사용하기 때문에 오늘날 사용하지 않는다.&lt;/p&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 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;classful 방식?&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #464646; text-align: left;&quot;&gt;각각의 앞 주소만 보고도 어떤 클래스인지 알 수 있는 구조화된 방식으로 Subnet mask가 필요 없는 주소방식으로 Routing을 하여 알려주던 것&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;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;h2 data-end=&quot;733&quot; data-start=&quot;687&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. EGP (Exterior Gateway Protocol)&lt;/b&gt;&lt;/h2&gt;
&lt;p data-end=&quot;770&quot; data-start=&quot;734&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; &lt;b&gt;다른 &lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;AS(&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #1f1f1f; text-align: start;&quot;&gt;Autonomous System&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;)&lt;/b&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt; 간에&lt;/b&gt; 사용하는 라우팅 프로토콜&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;749&quot; data-origin-height=&quot;128&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uiPZ0/btsMT57sPAQ/9aLJeIwwMzX99CGG7eYK3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uiPZ0/btsMT57sPAQ/9aLJeIwwMzX99CGG7eYK3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uiPZ0/btsMT57sPAQ/9aLJeIwwMzX99CGG7eYK3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuiPZ0%2FbtsMT57sPAQ%2F9aLJeIwwMzX99CGG7eYK3k%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;749&quot; height=&quot;128&quot; data-origin-width=&quot;749&quot; data-origin-height=&quot;128&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;h3 data-end=&quot;648&quot; data-start=&quot;634&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;특징:&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;785&quot; data-start=&quot;649&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;671&quot; data-start=&quot;649&quot;&gt;&lt;b&gt;다른 AS 간 경로 정보 교환&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;694&quot; data-start=&quot;672&quot;&gt;전 세계 인터넷의 &lt;b&gt;라우팅 핵심&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;745&quot; data-start=&quot;695&quot;&gt;&lt;b&gt;정책 기반 라우팅&lt;/b&gt; &amp;rarr; 단순히 빠른 경로보다 &lt;b&gt;비즈니스/정책 기준&lt;/b&gt; 경로 선택&lt;/li&gt;
&lt;li data-end=&quot;761&quot; data-start=&quot;746&quot;&gt;&lt;b&gt;확장성 매우 높음&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;785&quot; data-start=&quot;762&quot;&gt;&lt;b&gt;수렴 속도 느림&lt;/b&gt; &amp;rarr; 안정성 중요&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;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;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 style=&quot;color: #333333; text-align: start;&quot;&gt;라우팅 프로토콜의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;동작 원리&lt;/b&gt;에 따라 Link State , Distance Vector로 나눌 수도 있다.&lt;/p&gt;
&lt;p data-end=&quot;152&quot; data-start=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;219&quot; data-start=&quot;182&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;○링크 상태 (Link State) 프로토콜&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-end=&quot;238&quot; data-start=&quot;221&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;동작 원리:&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;417&quot; data-start=&quot;239&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;302&quot; data-start=&quot;239&quot;&gt;각 라우터는 &lt;b&gt;자신의 링크 상태&lt;/b&gt;(인접 라우터와의 연결 상태)를 &lt;b&gt;모든 라우터&lt;/b&gt;에게 &lt;b&gt;전파&lt;/b&gt;합니다.&lt;/li&gt;
&lt;li data-end=&quot;381&quot; data-start=&quot;303&quot;&gt;라우터는 받은 정보를 통해 &lt;b&gt;전체 네트워크 맵&lt;/b&gt;을 구성하고, &lt;b&gt;최단 경로&lt;/b&gt;를 &lt;b&gt;Dijkstra 알고리즘&lt;/b&gt;을 사용해 계산합니다.&lt;/li&gt;
&lt;li data-end=&quot;417&quot; data-start=&quot;382&quot;&gt;네트워크의 변경사항이 발생하면 &lt;b&gt;빠르게 업데이트&lt;/b&gt;합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;437&quot; data-start=&quot;419&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;대표 프로토콜:&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;532&quot; data-start=&quot;438&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;475&quot; data-start=&quot;438&quot;&gt;&lt;b&gt;OSPF (Open Shortest Path First)&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;532&quot; data-start=&quot;476&quot;&gt;&lt;b&gt;IS-IS (Intermediate System to Intermediate System)&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;548&quot; data-start=&quot;534&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;장점:&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;673&quot; data-start=&quot;549&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;582&quot; data-start=&quot;549&quot;&gt;&lt;b&gt;빠른 수렴&lt;/b&gt; 속도 (네트워크 변경이 빠르게 반영됨)&lt;/li&gt;
&lt;li data-end=&quot;627&quot; data-start=&quot;583&quot;&gt;&lt;b&gt;루프 방지&lt;/b&gt;: 네트워크 상태를 정확하게 반영하므로 루프가 발생하지 않음&lt;/li&gt;
&lt;li data-end=&quot;673&quot; data-start=&quot;628&quot;&gt;&lt;b&gt;대규모 네트워크&lt;/b&gt;에 적합 (분할된 네트워크 영역을 효율적으로 관리 가능)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;689&quot; data-start=&quot;675&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;단점:&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;788&quot; data-start=&quot;690&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;729&quot; data-start=&quot;690&quot;&gt;&lt;b&gt;메모리/CPU 사용량&lt;/b&gt;이 많음 (네트워크 맵을 구성해야 해서)&lt;/li&gt;
&lt;li data-end=&quot;788&quot; data-start=&quot;730&quot;&gt;라우터들이 &lt;b&gt;모든 라우터에게 정보를 전파&lt;/b&gt;해야 하므로, 초기 설정이 복잡하고 많은 대역폭을 사용함&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;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;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot; data-start=&quot;182&quot; data-end=&quot;219&quot;&gt;&lt;b&gt;○&lt;/b&gt;&lt;b&gt;디스턴스 벡터 (Distance Vector) 프로토콜&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-end=&quot;858&quot; data-start=&quot;841&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;동작 원리:&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1046&quot; data-start=&quot;859&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;914&quot; data-start=&quot;859&quot;&gt;각 라우터는 &lt;b&gt;자신의 라우팅 테이블&lt;/b&gt;을 &lt;b&gt;인접 라우터&lt;/b&gt;에게 주기적으로 &lt;b&gt;전송&lt;/b&gt;합니다.&lt;/li&gt;
&lt;li data-end=&quot;987&quot; data-start=&quot;915&quot;&gt;라우터는 &lt;b&gt;자신이 알고 있는 경로&lt;/b&gt;와 &lt;b&gt;인접 라우터로부터 받은 경로&lt;/b&gt;를 비교하고, 가장 &lt;b&gt;짧은 경로&lt;/b&gt;를 선택합니다.&lt;/li&gt;
&lt;li data-end=&quot;1046&quot; data-start=&quot;988&quot;&gt;&lt;b&gt;홀수/짝수 방식&lt;/b&gt;으로 라우팅 정보를 갱신합니다. (예: &lt;b&gt;RIP&lt;/b&gt;는 30초마다 테이블 갱신)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1066&quot; data-start=&quot;1048&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;대표 프로토콜:&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1198&quot; data-start=&quot;1067&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1107&quot; data-start=&quot;1067&quot;&gt;&lt;b&gt;RIP (Routing Information Protocol)&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;1198&quot; data-start=&quot;1108&quot;&gt;&lt;b&gt;EIGRP (Enhanced Interior Gateway Routing Protocol)&lt;/b&gt; &amp;rarr; 하이브리드 프로토콜이지만, 원리는 거리 벡터 방식에 기반&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1214&quot; data-start=&quot;1200&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;장점:&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1293&quot; data-start=&quot;1215&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1240&quot; data-start=&quot;1215&quot;&gt;&lt;b&gt;설정이 간단&lt;/b&gt;하고 &lt;b&gt;구현이 쉬움&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;1261&quot; data-start=&quot;1241&quot;&gt;소규모 네트워크에서 &lt;b&gt;효율적&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;1293&quot; data-start=&quot;1262&quot;&gt;&lt;b&gt;대역폭&lt;/b&gt; 소모가 적음 (정보를 주기적으로 전파)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1309&quot; data-start=&quot;1295&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;단점:&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1434&quot; data-start=&quot;1310&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1341&quot; data-start=&quot;1310&quot;&gt;&lt;b&gt;수렴 속도 느림&lt;/b&gt; (경로 변경 시 반영이 늦음)&lt;/li&gt;
&lt;li data-end=&quot;1388&quot; data-start=&quot;1342&quot;&gt;&lt;b&gt;루프 발생&lt;/b&gt; 가능 (루프 방지 기법이 있지만, 여전히 발생할 가능성 있음)&lt;/li&gt;
&lt;li data-end=&quot;1431&quot; data-start=&quot;1389&quot;&gt;&lt;b&gt;최대 홉 수&lt;/b&gt;로 제한이 있을 수 있음 (예: RIP는 최대 15홉)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1438&quot; data-start=&quot;1435&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1470&quot; data-start=&quot;1440&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;링크 상태 vs 디스턴스 벡터 비교:&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&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;247&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIfLT5/btsMSShhQSl/dQYlEp2XY3RmHJyNwkSo40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIfLT5/btsMSShhQSl/dQYlEp2XY3RmHJyNwkSo40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIfLT5/btsMSShhQSl/dQYlEp2XY3RmHJyNwkSo40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIfLT5%2FbtsMSShhQSl%2FdQYlEp2XY3RmHJyNwkSo40%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;247&quot; data-origin-width=&quot;758&quot; data-origin-height=&quot;247&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;h2 data-end=&quot;1905&quot; data-start=&quot;1888&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;쉽게 기억하기:&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2021&quot; data-start=&quot;1906&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1955&quot; data-start=&quot;1906&quot;&gt;&lt;b&gt;링크 상태&lt;/b&gt; = &lt;b&gt;모든 라우터에게 정보를 주고받고 전체 네트워크 맵을 구성&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;2021&quot; data-start=&quot;1956&quot;&gt;&lt;b&gt;디스턴스 벡터&lt;/b&gt; = &lt;b&gt;인접 라우터와 정보를 교환하며 경로를 찾음, 비교적 단순하고 작은 네트워크에 적합&lt;/b&gt;&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;</description>
      <category>네트워크/Layer3</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/135</guid>
      <comments>https://kujung.tistory.com/entry/%EB%9D%BC%EC%9A%B0%ED%8C%85-%ED%94%84%ED%86%A0%ED%86%A0%EC%BD%9C%EC%9D%98-%EC%A2%85%EB%A5%98-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0#entry135comment</comments>
      <pubDate>Sun, 23 Mar 2025 17:35:02 +0900</pubDate>
    </item>
    <item>
      <title>ping 도달은 되는데 traceroute가 안되는 이유는?</title>
      <link>https://kujung.tistory.com/entry/ping-%EB%8F%84%EB%8B%AC%EC%9D%80-%EB%90%98%EB%8A%94%EB%8D%B0-traceroute%EA%B0%80-%EC%95%88%EB%90%98%EB%8A%94-%EC%9D%B4%EC%9C%A0%EB%8A%94</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;ping은&amp;nbsp;되는데&amp;nbsp;traceroute가&amp;nbsp;안되는&amp;nbsp;이유는&amp;nbsp;&lt;span style=&quot;color: #f89009;&quot;&gt;둘이&amp;nbsp;사용하는&amp;nbsp;프로토콜과&amp;nbsp;방식&lt;/span&gt;이&amp;nbsp;다르기&amp;nbsp;때문&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;784&quot; data-origin-height=&quot;188&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cISr7R/btsMNJDzMZf/Q8gARnqgoCUY1qi0o3Uehk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cISr7R/btsMNJDzMZf/Q8gARnqgoCUY1qi0o3Uehk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cISr7R/btsMNJDzMZf/Q8gARnqgoCUY1qi0o3Uehk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcISr7R%2FbtsMNJDzMZf%2FQ8gARnqgoCUY1qi0o3Uehk%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;784&quot; height=&quot;188&quot; data-origin-width=&quot;784&quot; data-origin-height=&quot;188&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;h3 data-ke-size=&quot;size23&quot;&gt;1. 중간 라우터의 ICMP/UDP 차단&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Traceroute는&amp;nbsp;중간&amp;nbsp;라우터에서&amp;nbsp;TTL이&amp;nbsp;0이&amp;nbsp;될&amp;nbsp;때&amp;nbsp;&quot;Time&amp;nbsp;Exceeded&quot;&amp;nbsp;메시지(ICMP)를&amp;nbsp;보내줘야&amp;nbsp;함. &lt;br /&gt;일부&amp;nbsp;방화벽이나&amp;nbsp;라우터&amp;nbsp;설정에서&lt;span style=&quot;color: #f3c000;&quot;&gt;&amp;nbsp;ICMP&amp;nbsp;Time&amp;nbsp;Exceeded&amp;nbsp;메시지&amp;nbsp;또는&amp;nbsp;UDP&amp;nbsp;포트를&amp;nbsp;차단하는&amp;nbsp;경우가&amp;nbsp;많습니다.&lt;/span&gt; &lt;br /&gt;반면,&amp;nbsp;Ping의&amp;nbsp;ICMP&amp;nbsp;Echo&amp;nbsp;Reply는&amp;nbsp;열려&amp;nbsp;있는&amp;nbsp;경우가&amp;nbsp;있어서&amp;nbsp;ping은&amp;nbsp;성공.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 관리자 정책에 의한 차단&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;많은&amp;nbsp;기업,&amp;nbsp;기관,&amp;nbsp;또는&amp;nbsp;클라우드&amp;nbsp;서버&lt;/span&gt;에서는&amp;nbsp;네트워크&amp;nbsp;보안&amp;nbsp;정책상&amp;nbsp;트레이서트(특히&amp;nbsp;UDP)&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;경우.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. NAT(Network Address Translation) 환경&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NAT나&amp;nbsp;방화벽이&amp;nbsp;ICMP&amp;nbsp;패킷은&amp;nbsp;허용하되,&amp;nbsp;특정&amp;nbsp;포트에서&amp;nbsp;오는&amp;nbsp;UDP&amp;nbsp;패킷(Traceroute에서&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;h3 data-ke-size=&quot;size23&quot;&gt;결론&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ping은&amp;nbsp;되는데&amp;nbsp;traceroute가&amp;nbsp;안되는&amp;nbsp;이유는&amp;nbsp;&lt;span style=&quot;color: #f89009;&quot;&gt;둘이&amp;nbsp;사용하는&amp;nbsp;프로토콜과&amp;nbsp;방식&lt;/span&gt;이 다르기 때문.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ping은 단순히 ICMP Echo Request로 목적지까지 연결만 확인하는 반면, Traceroute는 여러 라우터에서 TTL 초과 메시지를 받아야 하기 때문에 중간 라우터나 방화벽 설정에 따라 쉽게 차단될 수 있습니다.&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;Traceroute 옵션 변경 (ICMP 기반 트레이서트 시도)&lt;br /&gt;예:&amp;nbsp;traceroute&amp;nbsp;-I&amp;nbsp;(Linux에서&amp;nbsp;ICMP로&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;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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;tracert와 traceroute 차이&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;756&quot; data-origin-height=&quot;287&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUanVH/btsMOFtRTem/2SqmWkt84f7lutkfK0DTW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUanVH/btsMOFtRTem/2SqmWkt84f7lutkfK0DTW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUanVH/btsMOFtRTem/2SqmWkt84f7lutkfK0DTW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUanVH%2FbtsMOFtRTem%2F2SqmWkt84f7lutkfK0DTW0%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;756&quot; height=&quot;287&quot; data-origin-width=&quot;756&quot; data-origin-height=&quot;287&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;네트워크 장비(스위치,라우터 등)는 리눅스계열이라 traceroute 사용,,&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;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;traceroute 작동원리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Traceroute의&amp;nbsp;작동&amp;nbsp;원리는&amp;nbsp;네트워크&amp;nbsp;경로를&amp;nbsp;TTL(Time&amp;nbsp;To&amp;nbsp;Live)&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;/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;TTL(Time&amp;nbsp;To&amp;nbsp;Live):&amp;nbsp;패킷이&amp;nbsp;네트워크를&amp;nbsp;지날&amp;nbsp;때&amp;nbsp;라우터마다&amp;nbsp;TTL&amp;nbsp;값이&amp;nbsp;1씩&amp;nbsp;감소. &lt;br /&gt;TTL&amp;nbsp;값이&amp;nbsp;0이&amp;nbsp;되면,&amp;nbsp;해당&amp;nbsp;라우터는&amp;nbsp;패킷을&amp;nbsp;버리고&amp;nbsp;ICMP&amp;nbsp;&quot;Time&amp;nbsp;Exceeded&quot;&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;br /&gt;Traceroute의 단계별 동작&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;753&quot; data-origin-height=&quot;245&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buMFj9/btsMOpENxwD/4BMKgzxu6aJArRz9v8Hcq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buMFj9/btsMOpENxwD/4BMKgzxu6aJArRz9v8Hcq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buMFj9/btsMOpENxwD/4BMKgzxu6aJArRz9v8Hcq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuMFj9%2FbtsMOpENxwD%2F4BMKgzxu6aJArRz9v8Hcq0%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;753&quot; height=&quot;245&quot; data-origin-width=&quot;753&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;433&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BSz2D/btsMN8DkZOn/A2jfBW0sLLI0QQCFKnV6Gk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BSz2D/btsMN8DkZOn/A2jfBW0sLLI0QQCFKnV6Gk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BSz2D/btsMN8DkZOn/A2jfBW0sLLI0QQCFKnV6Gk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBSz2D%2FbtsMN8DkZOn%2FA2jfBW0sLLI0QQCFKnV6Gk%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;720&quot; height=&quot;433&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;433&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;&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;참고 : 챗gpt&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>네트워크/Layer3</category>
      <category>ping</category>
      <category>TraceRoute</category>
      <category>tracert</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/134</guid>
      <comments>https://kujung.tistory.com/entry/ping-%EB%8F%84%EB%8B%AC%EC%9D%80-%EB%90%98%EB%8A%94%EB%8D%B0-traceroute%EA%B0%80-%EC%95%88%EB%90%98%EB%8A%94-%EC%9D%B4%EC%9C%A0%EB%8A%94#entry134comment</comments>
      <pubDate>Tue, 18 Mar 2025 11:16:36 +0900</pubDate>
    </item>
    <item>
      <title>CCNP 온라인으로 시험 보기(OnVCE) #2 + 꿀팁</title>
      <link>https://kujung.tistory.com/entry/CCNP-%EC%98%A8%EB%9D%BC%EC%9D%B8%EC%9C%BC%EB%A1%9C-%EC%8B%9C%ED%97%98-%EB%B3%B4%EA%B8%B0OnVCE-2-%EA%BF%80%ED%8C%81</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://kujung.tistory.com/entry/CCNP-%EC%98%A8%EB%9D%BC%EC%9D%B8%EC%9C%BC%EB%A1%9C-%EC%8B%9C%ED%97%98-%EB%B3%B4%EB%8A%94-%EB%B2%95-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0OnVCE-%EA%BF%80%ED%8C%81-1&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://kujung.tistory.com/entry/CCNP-%EC%98%A8%EB%9D%BC%EC%9D%B8%EC%9C%BC%EB%A1%9C-%EC%8B%9C%ED%97%98-%EB%B3%B4%EB%8A%94-%EB%B2%95-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0OnVCE-%EA%BF%80%ED%8C%81-1&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1741786956673&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;CCNP 온라인으로 시험 보기 사전접수(OnVCE)&quot; data-og-description=&quot;CCNP는 당일 시험도 가능합니다,.온라인으로도 볼 수 있기 때문이죠.&amp;nbsp;준비물은 필요합니다.마이크, 웹캠, 신분증(여권 추천)&amp;nbsp;노트북 한대면 모두 충족 되기 때문에 편합니다.&amp;nbsp;방법도 어렵지 않&quot; data-og-host=&quot;kujung.tistory.com&quot; data-og-source-url=&quot;https://kujung.tistory.com/entry/CCNP-%EC%98%A8%EB%9D%BC%EC%9D%B8%EC%9C%BC%EB%A1%9C-%EC%8B%9C%ED%97%98-%EB%B3%B4%EB%8A%94-%EB%B2%95-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0OnVCE-%EA%BF%80%ED%8C%81-1&quot; data-og-url=&quot;https://kujung.tistory.com/entry/CCNP-%EC%98%A8%EB%9D%BC%EC%9D%B8%EC%9C%BC%EB%A1%9C-%EC%8B%9C%ED%97%98-%EB%B3%B4%EB%8A%94-%EB%B2%95-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0OnVCE-%EA%BF%80%ED%8C%81-1&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bwLLzx/hyYrWKLPXP/Kmfs9rc9H2SNEgy6vqDBDk/img.png?width=612&amp;amp;height=505&amp;amp;face=527_199_563_238,https://scrap.kakaocdn.net/dn/b73e69/hyYqaCOnCs/jm7S9SnQ7g0wtsQVLxcCRK/img.png?width=612&amp;amp;height=505&amp;amp;face=527_199_563_238,https://scrap.kakaocdn.net/dn/9C4Gc/hyYr1L4ynk/8lcx5Bq0R8onSyHgjjQNE0/img.png?width=1490&amp;amp;height=762&amp;amp;face=0_0_1490_762&quot;&gt;&lt;a href=&quot;https://kujung.tistory.com/entry/CCNP-%EC%98%A8%EB%9D%BC%EC%9D%B8%EC%9C%BC%EB%A1%9C-%EC%8B%9C%ED%97%98-%EB%B3%B4%EB%8A%94-%EB%B2%95-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0OnVCE-%EA%BF%80%ED%8C%81-1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kujung.tistory.com/entry/CCNP-%EC%98%A8%EB%9D%BC%EC%9D%B8%EC%9C%BC%EB%A1%9C-%EC%8B%9C%ED%97%98-%EB%B3%B4%EB%8A%94-%EB%B2%95-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0OnVCE-%EA%BF%80%ED%8C%81-1&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bwLLzx/hyYrWKLPXP/Kmfs9rc9H2SNEgy6vqDBDk/img.png?width=612&amp;amp;height=505&amp;amp;face=527_199_563_238,https://scrap.kakaocdn.net/dn/b73e69/hyYqaCOnCs/jm7S9SnQ7g0wtsQVLxcCRK/img.png?width=612&amp;amp;height=505&amp;amp;face=527_199_563_238,https://scrap.kakaocdn.net/dn/9C4Gc/hyYr1L4ynk/8lcx5Bq0R8onSyHgjjQNE0/img.png?width=1490&amp;amp;height=762&amp;amp;face=0_0_1490_762');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;CCNP 온라인으로 시험 보기 사전접수(OnVCE)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;CCNP는 당일 시험도 가능합니다,.온라인으로도 볼 수 있기 때문이죠.&amp;nbsp;준비물은 필요합니다.마이크, 웹캠, 신분증(여권 추천)&amp;nbsp;노트북 한대면 모두 충족 되기 때문에 편합니다.&amp;nbsp;방법도 어렵지 않&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;kujung.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&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;먼저 중요한거 말씀드릴게요,&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;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;마이크, 웹캠, 신분증(여권 추천)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹사이트, 기타 프로그램 모두 꺼주시구요, 책상은 비워져 있는 상태로 신분증만 올려 놓아주세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;신분증은 여권 추천드릴게요 (감독관이 외국분이심)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여권이 아니라면 2장 정도 더 찍어야 되서 귀찮아요.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시험 당일날에는&lt;span&gt;&amp;nbsp;&lt;/span&gt;시험 시간 30분 전부터 체크인 가능하오니, 반드시 30분전에 체크인 해주세요. 돌발 상황이 발생 할 수 있으니 미리 하세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;체크인 링크는 메일로 오는데, 혹여나 모르겠으면 대시보드 -&amp;gt; 스케쥴 화면에서 들어갈 수 있어요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1490&quot; data-origin-height=&quot;762&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blhsuf/btsMI2Q1AX8/CdGTJyospOJFElvWLLLk90/tfile.dat&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blhsuf/btsMI2Q1AX8/CdGTJyospOJFElvWLLLk90/tfile.dat&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blhsuf/btsMI2Q1AX8/CdGTJyospOJFElvWLLLk90/tfile.dat&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fblhsuf%2FbtsMI2Q1AX8%2FCdGTJyospOJFElvWLLLk90%2Ftfile.dat&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;1490&quot; height=&quot;762&quot; data-origin-width=&quot;1490&quot; data-origin-height=&quot;762&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;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1554&quot; data-origin-height=&quot;333&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9Qyw8/btsMJbAb0Dc/aas3pQBdDuwqK0jldg7id1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9Qyw8/btsMJbAb0Dc/aas3pQBdDuwqK0jldg7id1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9Qyw8/btsMJbAb0Dc/aas3pQBdDuwqK0jldg7id1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9Qyw8%2FbtsMJbAb0Dc%2Faas3pQBdDuwqK0jldg7id1%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;1554&quot; height=&quot;333&quot; data-origin-width=&quot;1554&quot; data-origin-height=&quot;333&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;VIEW 클릭 후 체크인 버튼으로 가능, 리스케쥴도 가능해요.&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;&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;왼쪽 , 오른쪽, 앞, 뒤 사진 및 셀카 및 신분증 사진 찍으라고 합니다.&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;테이블을 보여달라 하구요, 물건이 있으면 치우라고 합니다.&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;핸드폰 멀리 치우라고 합니다.&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;&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;결과는 5분정도 이내에 나오는 것 같구요&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;1280&quot; data-origin-height=&quot;654&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n3C5D/btsMIK3VLYA/XtYIvhwjBezfBRcaghtNq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n3C5D/btsMIK3VLYA/XtYIvhwjBezfBRcaghtNq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n3C5D/btsMIK3VLYA/XtYIvhwjBezfBRcaghtNq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn3C5D%2FbtsMIK3VLYA%2FXtYIvhwjBezfBRcaghtNq1%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;1490&quot; height=&quot;762&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;654&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;대시보드 -&amp;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;1554&quot; data-origin-height=&quot;333&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9Qyw8/btsMJbAb0Dc/aas3pQBdDuwqK0jldg7id1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9Qyw8/btsMJbAb0Dc/aas3pQBdDuwqK0jldg7id1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9Qyw8/btsMJbAb0Dc/aas3pQBdDuwqK0jldg7id1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9Qyw8%2FbtsMJbAb0Dc%2Faas3pQBdDuwqK0jldg7id1%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;1554&quot; height=&quot;333&quot; data-origin-width=&quot;1554&quot; data-origin-height=&quot;333&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;view 클릭&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_blob&quot; data-origin-width=&quot;1124&quot; data-origin-height=&quot;312&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FYvSk/btsMI7LnUNY/w9Az1s85FowVjbcsMJqdy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FYvSk/btsMI7LnUNY/w9Az1s85FowVjbcsMJqdy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FYvSk/btsMI7LnUNY/w9Az1s85FowVjbcsMJqdy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFYvSk%2FbtsMI7LnUNY%2Fw9Az1s85FowVjbcsMJqdy0%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;1124&quot; height=&quot;312&quot; data-filename=&quot;edited_blob&quot; data-origin-width=&quot;1124&quot; data-origin-height=&quot;312&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;Status 확인 하시면됩니다,&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;&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;/p&gt;</description>
      <category>네트워크/CCNP</category>
      <category>ccnp</category>
      <category>ccnp온라인</category>
      <category>ccnp온라인시험</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/133</guid>
      <comments>https://kujung.tistory.com/entry/CCNP-%EC%98%A8%EB%9D%BC%EC%9D%B8%EC%9C%BC%EB%A1%9C-%EC%8B%9C%ED%97%98-%EB%B3%B4%EA%B8%B0OnVCE-2-%EA%BF%80%ED%8C%81#entry133comment</comments>
      <pubDate>Wed, 12 Mar 2025 22:55:33 +0900</pubDate>
    </item>
    <item>
      <title>CCNP 온라인으로 시험 보기(OnVCE) #1 사전접수</title>
      <link>https://kujung.tistory.com/entry/CCNP-%EC%98%A8%EB%9D%BC%EC%9D%B8%EC%9C%BC%EB%A1%9C-%EC%8B%9C%ED%97%98-%EB%B3%B4%EB%8A%94-%EB%B2%95-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0OnVCE-%EA%BF%80%ED%8C%81-1</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;CCNP는 당일 시험도 가능합니다,.&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;준비물은 필요합니다.&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;노트북 한대면 모두 충족 되기 때문에 편합니다.&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;하지만 모든게 영어이고 해외 사이트이기 때문에 처음에 저는 힘들었습니다.&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;알아 보시죠.&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;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;a href=&quot;https://cp.certmetrics.com/cisco/en/home/dashboard&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://cp.certmetrics.com/cisco/en/home/dashboard&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1741787766438&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Certmetrics Candidate Portal&quot; data-og-description=&quot;L o a d i n g&quot; data-og-host=&quot;cp.certmetrics.com&quot; data-og-source-url=&quot;https://cp.certmetrics.com/cisco/en/home/dashboard&quot; data-og-url=&quot;https://cp.certmetrics.com/cisco/en/home/dashboard&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://cp.certmetrics.com/cisco/en/home/dashboard&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://cp.certmetrics.com/cisco/en/home/dashboard&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Certmetrics Candidate Portal&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;L o a d i n g&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;cp.certmetrics.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&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;(회원 가입을 하게 되면 메일로 인증 코드가 간다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;똥선생은 naver.com , gmail.com&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;/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-origin-width=&quot;612&quot; data-origin-height=&quot;505&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDSHQl/btsMIbgCoox/egeINMKO7mKV2KaLmEHTv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDSHQl/btsMIbgCoox/egeINMKO7mKV2KaLmEHTv1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDSHQl/btsMIbgCoox/egeINMKO7mKV2KaLmEHTv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDSHQl%2FbtsMIbgCoox%2FegeINMKO7mKV2KaLmEHTv1%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;612&quot; height=&quot;505&quot; data-origin-width=&quot;612&quot; data-origin-height=&quot;505&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로그인 됬으면 왼쪽에 SCHEDULE -&amp;gt; Schedule an Exam and/or Manage Pearson VUE ...&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-origin-width=&quot;1490&quot; data-origin-height=&quot;762&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIHTQ3/btsMJztPRkP/ykTw9z5bDKHUG95L6ekJq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIHTQ3/btsMJztPRkP/ykTw9z5bDKHUG95L6ekJq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIHTQ3/btsMJztPRkP/ykTw9z5bDKHUG95L6ekJq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIHTQ3%2FbtsMJztPRkP%2FykTw9z5bDKHUG95L6ekJq1%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;1490&quot; height=&quot;762&quot; data-origin-width=&quot;1490&quot; data-origin-height=&quot;762&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;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;1557&quot; data-origin-height=&quot;190&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/djQ1Y5/btsMJyV0Hf2/LkKG0jvxHpEkkku0h1KHVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/djQ1Y5/btsMJyV0Hf2/LkKG0jvxHpEkkku0h1KHVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/djQ1Y5/btsMJyV0Hf2/LkKG0jvxHpEkkku0h1KHVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdjQ1Y5%2FbtsMJyV0Hf2%2FLkKG0jvxHpEkkku0h1KHVk%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;1557&quot; height=&quot;190&quot; data-origin-width=&quot;1557&quot; data-origin-height=&quot;190&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&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;&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;1544&quot; data-origin-height=&quot;396&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWrj1U/btsMIrDyYHg/YJphXTnMLTEQoumXHagRj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWrj1U/btsMIrDyYHg/YJphXTnMLTEQoumXHagRj0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWrj1U/btsMIrDyYHg/YJphXTnMLTEQoumXHagRj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWrj1U%2FbtsMIrDyYHg%2FYJphXTnMLTEQoumXHagRj0%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;1544&quot; height=&quot;396&quot; data-origin-width=&quot;1544&quot; data-origin-height=&quot;396&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;오른쪽 SCHDULE 클릭&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-origin-width=&quot;1179&quot; data-origin-height=&quot;240&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PQrIM/btsMHV6epTq/lMrjXIgrOwZXZeDWvALB6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PQrIM/btsMHV6epTq/lMrjXIgrOwZXZeDWvALB6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PQrIM/btsMHV6epTq/lMrjXIgrOwZXZeDWvALB6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPQrIM%2FbtsMHV6epTq%2FlMrjXIgrOwZXZeDWvALB6K%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;1179&quot; height=&quot;240&quot; data-origin-width=&quot;1179&quot; data-origin-height=&quot;240&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;OnVue 클릭 -&amp;gt; next&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-origin-width=&quot;1199&quot; data-origin-height=&quot;288&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vSZtW/btsMHxkefUE/1ge9WpHlu3CJBViIWa8crk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vSZtW/btsMHxkefUE/1ge9WpHlu3CJBViIWa8crk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vSZtW/btsMHxkefUE/1ge9WpHlu3CJBViIWa8crk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvSZtW%2FbtsMHxkefUE%2F1ge9WpHlu3CJBViIWa8crk%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;1199&quot; height=&quot;288&quot; data-origin-width=&quot;1199&quot; data-origin-height=&quot;288&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;Next&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;1168&quot; data-origin-height=&quot;364&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n1fNH/btsMJJQI0xk/aNbkwhdZwJCp0MpH2u8go1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n1fNH/btsMJJQI0xk/aNbkwhdZwJCp0MpH2u8go1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n1fNH/btsMJJQI0xk/aNbkwhdZwJCp0MpH2u8go1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn1fNH%2FbtsMJJQI0xk%2FaNbkwhdZwJCp0MpH2u8go1%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;1168&quot; height=&quot;364&quot; data-origin-width=&quot;1168&quot; data-origin-height=&quot;364&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;Next&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-origin-width=&quot;1164&quot; data-origin-height=&quot;414&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/J3pPh/btsMJI5keI9/ZkKXNoFzUKAkis9kKe8rEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/J3pPh/btsMJI5keI9/ZkKXNoFzUKAkis9kKe8rEk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/J3pPh/btsMJI5keI9/ZkKXNoFzUKAkis9kKe8rEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJ3pPh%2FbtsMJI5keI9%2FZkKXNoFzUKAkis9kKe8rEk%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;1164&quot; height=&quot;414&quot; data-origin-width=&quot;1164&quot; data-origin-height=&quot;414&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;약관 모두 체크 해주고 Agree&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;1149&quot; data-origin-height=&quot;284&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cGmOoW/btsMICrsjB0/PKm0Fm5IKAfCw1Fss9vly0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cGmOoW/btsMICrsjB0/PKm0Fm5IKAfCw1Fss9vly0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cGmOoW/btsMICrsjB0/PKm0Fm5IKAfCw1Fss9vly0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcGmOoW%2FbtsMICrsjB0%2FPKm0Fm5IKAfCw1Fss9vly0%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;1149&quot; height=&quot;284&quot; data-origin-width=&quot;1149&quot; data-origin-height=&quot;284&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;next&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-origin-width=&quot;1171&quot; data-origin-height=&quot;860&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcuf6k/btsMHp7KXr0/egyZjPRvkZjsfFJckHw9o1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcuf6k/btsMHp7KXr0/egyZjPRvkZjsfFJckHw9o1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcuf6k/btsMHp7KXr0/egyZjPRvkZjsfFJckHw9o1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbcuf6k%2FbtsMHp7KXr0%2FegyZjPRvkZjsfFJckHw9o1%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;1171&quot; height=&quot;860&quot; data-origin-width=&quot;1171&quot; data-origin-height=&quot;860&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;시간은 Explore more times 누르면 선택 가능합니다.&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-origin-width=&quot;893&quot; data-origin-height=&quot;427&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxjGyT/btsMJnAqean/lO0yVk5rKaUq4zEuwLwJ71/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxjGyT/btsMJnAqean/lO0yVk5rKaUq4zEuwLwJ71/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxjGyT/btsMJnAqean/lO0yVk5rKaUq4zEuwLwJ71/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxjGyT%2FbtsMJnAqean%2FlO0yVk5rKaUq4zEuwLwJ71%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;893&quot; height=&quot;427&quot; data-origin-width=&quot;893&quot; data-origin-height=&quot;427&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&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;&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;/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;OnVue도 미리 깔고, 웹캠, 네트워크, 마이크, 실행 중인 프로그램 등등 점검 하게 됩니다!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1337&quot; data-origin-height=&quot;671&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yyDTQ/btsMIOL1Fvm/mJKulQlETORIuhYD5OMi31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yyDTQ/btsMIOL1Fvm/mJKulQlETORIuhYD5OMi31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yyDTQ/btsMIOL1Fvm/mJKulQlETORIuhYD5OMi31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyyDTQ%2FbtsMIOL1Fvm%2FmJKulQlETORIuhYD5OMi31%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;1337&quot; height=&quot;671&quot; data-origin-width=&quot;1337&quot; data-origin-height=&quot;671&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1334&quot; data-origin-height=&quot;701&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bG2zTE/btsMH76oFyK/AgzkVpYbWHMKawqRGTpQzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bG2zTE/btsMH76oFyK/AgzkVpYbWHMKawqRGTpQzK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bG2zTE/btsMH76oFyK/AgzkVpYbWHMKawqRGTpQzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbG2zTE%2FbtsMH76oFyK%2FAgzkVpYbWHMKawqRGTpQzK%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;1334&quot; height=&quot;701&quot; data-origin-width=&quot;1334&quot; data-origin-height=&quot;701&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1328&quot; data-origin-height=&quot;649&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cpx1He/btsMIdr0B4U/jFQnR27fR5qZeDpAcN8SQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cpx1He/btsMIdr0B4U/jFQnR27fR5qZeDpAcN8SQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cpx1He/btsMIdr0B4U/jFQnR27fR5qZeDpAcN8SQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcpx1He%2FbtsMIdr0B4U%2FjFQnR27fR5qZeDpAcN8SQ1%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;1328&quot; height=&quot;649&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1328&quot; data-origin-height=&quot;649&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;&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;&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;a href=&quot;https://kujung.tistory.com/entry/CCNP-%EC%98%A8%EB%9D%BC%EC%9D%B8%EC%9C%BC%EB%A1%9C-%EC%8B%9C%ED%97%98-%EB%B3%B4%EA%B8%B0OnVCE-2-%EA%BF%80%ED%8C%81&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://kujung.tistory.com/entry/CCNP-%EC%98%A8%EB%9D%BC%EC%9D%B8%EC%9C%BC%EB%A1%9C-%EC%8B%9C%ED%97%98-%EB%B3%B4%EA%B8%B0OnVCE-2-%EA%BF%80%ED%8C%81&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1741787760342&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;CCNP 온라인으로 시험 보기(OnVCE) #2 + 꿀팁&quot; data-og-description=&quot;https://kujung.tistory.com/entry/CCNP-%EC%98%A8%EB%9D%BC%EC%9D%B8%EC%9C%BC%EB%A1%9C-%EC%8B%9C%ED%97%98-%EB%B3%B4%EB%8A%94-%EB%B2%95-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0OnVCE-%EA%BF%80%ED%8C%81-1&amp;nbsp;CCNP 온라인으로 시험 보기 사전접수(OnVCE)CCNP&quot; data-og-host=&quot;kujung.tistory.com&quot; data-og-source-url=&quot;https://kujung.tistory.com/entry/CCNP-%EC%98%A8%EB%9D%BC%EC%9D%B8%EC%9C%BC%EB%A1%9C-%EC%8B%9C%ED%97%98-%EB%B3%B4%EA%B8%B0OnVCE-2-%EA%BF%80%ED%8C%81&quot; data-og-url=&quot;https://kujung.tistory.com/entry/CCNP-%EC%98%A8%EB%9D%BC%EC%9D%B8%EC%9C%BC%EB%A1%9C-%EC%8B%9C%ED%97%98-%EB%B3%B4%EA%B8%B0OnVCE-2-%EA%BF%80%ED%8C%81&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ba2RX1/hyYrT8mJir/FW23B4xpvYMZ0MPegVYIv1/img.png?width=800&amp;amp;height=409&amp;amp;face=0_0_800_409,https://scrap.kakaocdn.net/dn/F2Fsq/hyYqPZFUUU/RxtSxCiq1O6V4NMTgPYf3K/img.png?width=800&amp;amp;height=409&amp;amp;face=0_0_800_409,https://scrap.kakaocdn.net/dn/lzvnG/hyYqV6DjB2/7jGF4c2K4ffKKbrkFQabV0/img.png?width=1490&amp;amp;height=762&amp;amp;face=0_0_1490_762&quot;&gt;&lt;a href=&quot;https://kujung.tistory.com/entry/CCNP-%EC%98%A8%EB%9D%BC%EC%9D%B8%EC%9C%BC%EB%A1%9C-%EC%8B%9C%ED%97%98-%EB%B3%B4%EA%B8%B0OnVCE-2-%EA%BF%80%ED%8C%81&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kujung.tistory.com/entry/CCNP-%EC%98%A8%EB%9D%BC%EC%9D%B8%EC%9C%BC%EB%A1%9C-%EC%8B%9C%ED%97%98-%EB%B3%B4%EA%B8%B0OnVCE-2-%EA%BF%80%ED%8C%81&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ba2RX1/hyYrT8mJir/FW23B4xpvYMZ0MPegVYIv1/img.png?width=800&amp;amp;height=409&amp;amp;face=0_0_800_409,https://scrap.kakaocdn.net/dn/F2Fsq/hyYqPZFUUU/RxtSxCiq1O6V4NMTgPYf3K/img.png?width=800&amp;amp;height=409&amp;amp;face=0_0_800_409,https://scrap.kakaocdn.net/dn/lzvnG/hyYqV6DjB2/7jGF4c2K4ffKKbrkFQabV0/img.png?width=1490&amp;amp;height=762&amp;amp;face=0_0_1490_762');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;CCNP 온라인으로 시험 보기(OnVCE) #2 + 꿀팁&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;https://kujung.tistory.com/entry/CCNP-%EC%98%A8%EB%9D%BC%EC%9D%B8%EC%9C%BC%EB%A1%9C-%EC%8B%9C%ED%97%98-%EB%B3%B4%EB%8A%94-%EB%B2%95-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0OnVCE-%EA%BF%80%ED%8C%81-1&amp;nbsp;CCNP 온라인으로 시험 보기 사전접수(OnVCE)CCNP&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;kujung.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&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;</description>
      <category>네트워크/CCNP</category>
      <category>ccnp</category>
      <category>ccnp온라인</category>
      <category>ccnp집에서시험</category>
      <author>똥선생</author>
      <guid isPermaLink="true">https://kujung.tistory.com/132</guid>
      <comments>https://kujung.tistory.com/entry/CCNP-%EC%98%A8%EB%9D%BC%EC%9D%B8%EC%9C%BC%EB%A1%9C-%EC%8B%9C%ED%97%98-%EB%B3%B4%EB%8A%94-%EB%B2%95-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0OnVCE-%EA%BF%80%ED%8C%81-1#entry132comment</comments>
      <pubDate>Wed, 12 Mar 2025 22:40:16 +0900</pubDate>
    </item>
  </channel>
</rss>