<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>What2Do</title>
    <link>https://what2dochris.tistory.com/</link>
    <description>어차피 잘될거지만, 그래도 꾸준히 열심히 최선을 다해서</description>
    <language>ko</language>
    <pubDate>Thu, 9 Apr 2026 21:03:54 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>무엇을해야하는지</managingEditor>
    <image>
      <title>What2Do</title>
      <url>https://tistory1.daumcdn.net/tistory/6957668/attach/0186d9d493a14277a88dd99eefc802cd</url>
      <link>https://what2dochris.tistory.com</link>
    </image>
    <item>
      <title>On-premise to Cloud Migration 이해하기</title>
      <link>https://what2dochris.tistory.com/94</link>
      <description>&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&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;얼마전 회사에서 서버 이전 작업을 맡게 되었다. &lt;b&gt;데이터 센터에 있는 서버를 Cloud로 Migration하는 작업&lt;/b&gt;을 처음으로 진행하게 되었는데, 정말 복잡했다. 데이터를 이전하는 작업은 어렵지 않았지만, 네트워크 부분을 처리하는 단계가 이해가 잘 되지 않았다. 이에 오늘은 서버를 Migration하면서 주의해야하는 점에 대해 공부를 해보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1. DNS 설정 변경&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버를 이전하면 당연히 처음 생각나는 부분은 IP가 변경된다는 것이다. 특히 회사에서는 sandomain을 직접 운영해서 호스팅을 하고 있었기 때문에 기존 Domain에서 IP를 변경해야하는데 어떤 부분을 변경해야하는지가 중요했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;DNS 구조&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;먼저 DNS는 아래 사진 처럼 계층 구조로 이루어져 있다. 최상위에 Root 도메인이 있고, 그다음으로 TLD와 서브 도메인으로 이어진다.&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;353&quot; data-origin-height=&quot;360&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCIdqq/btsOM2HgsYo/pUAkEmQqZtmNwgGXLQseq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCIdqq/btsOM2HgsYo/pUAkEmQqZtmNwgGXLQseq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCIdqq/btsOM2HgsYo/pUAkEmQqZtmNwgGXLQseq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCIdqq%2FbtsOM2HgsYo%2FpUAkEmQqZtmNwgGXLQseq0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;353&quot; height=&quot;360&quot; data-origin-width=&quot;353&quot; data-origin-height=&quot;360&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;style2&quot;&gt;DNS Zone이란 무엇인가?&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;&lt;b&gt;DNS(Domain Name System)&lt;/b&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;그렇다면 어떤 것들이 DNS Zone에 저장이 되어있는지 알아야한다. 이는 기본적인 CS 지식이지만 한번 더 복기해보자면 아래와 같다.&amp;nbsp;&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;A&lt;/td&gt;
&lt;td&gt;도메인을 IP 주소로 매핑&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MX&lt;/td&gt;
&lt;td&gt;메일 서버 정보&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CNAME&lt;/td&gt;
&lt;td&gt;도메인 별칭 (alias) 설정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NS&lt;/td&gt;
&lt;td&gt;이 Zone을 관리하는 네임서버&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SOA&lt;/td&gt;
&lt;td&gt;Zone의 시작을 알리는 레코드&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;이제 본론으로 돌아와서 서버가 on premise에서 cloud으로 이전이 되어서 IP가 바뀌었다면 어떤 것들을 수정해줘야할까.&amp;nbsp;&lt;/p&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;A record&lt;/b&gt;를 바꿔주어야 한다. 당연히 바뀐 IP가 기존 도메인으로 향할 수 있어야 하기 때문에 도메인과 IP를 매핑하는 A record를 수정해주어야 한다. 또한 보통 서버가 이전이 되면 네임서버도 바뀌기 마련인데, 그런 경우에는 &lt;b&gt;NS&lt;/b&gt; 또한 함께 변경해주어야 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다면, 서버가 이전되고 이 두개만 바꾸면 끝나는 것일까? 이론적으로는 A record와 NS를 변경해주면 끝나는 것은 맞지만, DNS caching을 생각하면 &lt;b&gt;DNS TTL&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;1600&quot; data-origin-height=&quot;873&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cD6XiH/btsOMrnbiRy/dNkvjr8b9kjm3R87EokQrk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cD6XiH/btsOMrnbiRy/dNkvjr8b9kjm3R87EokQrk/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cD6XiH/btsOMrnbiRy/dNkvjr8b9kjm3R87EokQrk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcD6XiH%2FbtsOMrnbiRy%2FdNkvjr8b9kjm3R87EokQrk%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;651&quot; height=&quot;355&quot; data-origin-width=&quot;1600&quot; data-origin-height=&quot;873&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;특히 서버 이전을 한다고 하더라도 여전히 해당 웹 서비스는 사용자들이 계속해서 요청을 보내고 있기 때문에 TTL 시간이 길면 누군가는 계속해서 이전 IP로 접속을 하기에 404 값을 받을 것이고, 반대로 TTL 시간이 너무 짧아 버리면 DNS 서버에 불필요하게 요청이 많이 들어가기 때문에 과부하가 걸릴 수도 있다.&amp;nbsp;&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;때문에 TTL 같은 경우에는 기존 36000에서 &lt;b&gt;90&lt;/b&gt;으로 수정을 해주었다. 이는 기존 사용자의 브라우저에 저장된 DNS 캐시값을 빠르게 비워줌으로써 구서버로 라우팅 되는 것을 막을 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결론적으로 서버 이전 후, DNS Zone 파일에서 A record, NS, TTL 이 3가지를 바꿔주면서 새로운 IP가 기존 Domain으로 접속 가능하도록 설정해주었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2. SSL 인증서 설정 변경&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버를 이전 하면서 같이 적용해줘야하는 것이 SSL 인증서 파일이다. 여기서 SSL 인증서도 같이 넘겨주는 이유는 IP가 바뀌어서가 아니라, 말 그대로 서버가 바뀌었기 때문에 하나의 서버 자원으로써 넘겨주어야 한다는 것이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-end=&quot;129&quot; data-start=&quot;104&quot; data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;SSL 인증서와 IP 주소의 관계&lt;/b&gt;&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;318&quot; data-start=&quot;131&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;181&quot; data-start=&quot;131&quot;&gt;&lt;b&gt;SSL 인증서 = 특정 도메인 이름(example.com)에 대한 신뢰 보증&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;266&quot; data-start=&quot;182&quot;&gt;인증서에는 example.com, www.example.com 같은 &lt;b&gt;도메인 이름&lt;/b&gt;이 들어있지, &lt;b&gt;IP 주소는 포함되어 있지 않다.&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;318&quot; data-start=&quot;267&quot;&gt;따라서 IP가 바뀌더라도 도메인만 그대로면 기존 인증서를 이전한 서버에서 파일만 옮겨 준다면&amp;nbsp;&lt;b&gt;계속 사용할 수 있다.&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다면 SSL 인증서 파일은 어떻게 생겼고, SSL 관련 파일을 신서버에 이전한 다음 어떻게 적용시킬 수 있을까?&lt;/p&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;CERTBOT 인증서&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;회사에서는 CERTBOT 인증서를 사용하여 SSL 인증서를 발급 받았다. SSL 인증서 내부를 확인해보면 아래와 같다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;CERTBOT 구성&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;&lt;b&gt;1. example.co.kr.conf: &lt;/b&gt;인증서 갱신 시 필요한 설정 저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. example.co.kr/: &lt;/b&gt;실제 SSL 인증서와 개인 키 파일들, 웹서버에서 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 이 두가지를 tar를 활용하여 이전하려는 Cloud로 이동 시켜주면 된다. 다만, 중요한 사항은 (구)서버에서 (신)서버로 이전을 시킬 때, 바로 SFTP로 넘기는 것이 아니라, 보안을 위해서는 중간 서버를 거쳐주는 것이 좋다.(회사에서는 이를 작업서버라고 지칭 한다)&lt;/p&gt;
&lt;pre id=&quot;code_1751028359962&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;tar cf {SSL_configuration_file} example.co.kr*&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;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;Cron 작업을 통한 SSL 인증서 적용&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;이제 신규 서버에서는 SSL 인증서가 교체가 되었으니 이를 실제 nginx에 적용시켜줘야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 이제 cron 작업을 하는 스크립트를 통해 적용이 된다. (보통 5분 단위로 SSL 파일이 바뀌었는지 확인하고 적용시킨다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;서버 이전을 하게 되면 많은 부분들을 수정해야하지만 사실 크게 보면 두가지를 이전 시켜주어야 한다.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1.&lt;/b&gt; &lt;b&gt;데이터&lt;/b&gt;(DB뿐만 아니라 이미지, 파일 등)&lt;br /&gt;&lt;b&gt;2. DNS&lt;/b&gt;, &lt;b&gt;SSL&lt;/b&gt;과 같은 네트워크 리소스&lt;br /&gt;&lt;br /&gt;데이터 같은 경우에는 워낙 다양한 방식이 많고, 중간에 백업 데이터만 잘 관리해주면 큰 문제 없이 옮길 수 있지만 네트워크 리소스 같은 경우에는 TTL등 신경써줘야 하는 부분들이 있기에 잘 옮겨주어야 한다.&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-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>DevOps&amp;amp;Cloud</category>
      <author>무엇을해야하는지</author>
      <guid isPermaLink="true">https://what2dochris.tistory.com/94</guid>
      <comments>https://what2dochris.tistory.com/94#entry94comment</comments>
      <pubDate>Fri, 27 Jun 2025 21:53:55 +0900</pubDate>
    </item>
    <item>
      <title>SFTP(Secure File Transfer Protocol) 란?</title>
      <link>https://what2dochris.tistory.com/93</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;SFTP란?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FTP에서 보안이 추가 된 것으로 &lt;b&gt;'SSH의 파일 전송 버전'&lt;/b&gt;이라 생각하면 편하다&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;SSH의 파일 전송 서버 = 22&lt;br /&gt;일반적인 FTP와 다르게 PC와 서버간의 데이터 전송을 암호화 하기 때문에 해킹이나 보안상의 문제점을 방지할 수 있다.&amp;nbsp;&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-06-15 오후 3.50.39.png&quot; data-origin-width=&quot;1558&quot; data-origin-height=&quot;888&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/t1r9p/btsOA9Br4Qq/cUPhkIdk0nkM4KbCqkIrXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/t1r9p/btsOA9Br4Qq/cUPhkIdk0nkM4KbCqkIrXK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/t1r9p/btsOA9Br4Qq/cUPhkIdk0nkM4KbCqkIrXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ft1r9p%2FbtsOA9Br4Qq%2FcUPhkIdk0nkM4KbCqkIrXK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;755&quot; height=&quot;430&quot; data-filename=&quot;스크린샷 2025-06-15 오후 3.50.39.png&quot; data-origin-width=&quot;1558&quot; data-origin-height=&quot;888&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;style2&quot;&gt;그림 처럼, 기존 FTP는 바로 직접 파일을 올리는 것이라면, SFTP는 암호화 과정을 거쳐서 인터넷에 올라가고 서버간의 이동이 발생한다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;SFTP의 특징&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 보안성&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;159&quot; data-start=&quot;104&quot;&gt;&lt;b&gt;SSH(Secure Shell)&lt;/b&gt; 기반으로 동작하여, &lt;b&gt;데이터 전송 시 암호화&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;191&quot; data-start=&quot;160&quot;&gt;사용자 인증, 데이터 무결성, 전송 중 기밀성 보장.&lt;/li&gt;
&lt;li data-end=&quot;240&quot; data-start=&quot;192&quot;&gt;FTP에 비해 &lt;b&gt;패스워드, 명령어, 데이터 모두 암호화&lt;/b&gt;되어 도청 위험이 낮음.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 단일 연결&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;307&quot; data-start=&quot;264&quot;&gt;&lt;b&gt;단일 포트(기본: 22번)&lt;/b&gt;를 사용하여 제어 및 데이터 전송을 처리.&lt;/li&gt;
&lt;li data-end=&quot;348&quot; data-start=&quot;308&quot;&gt;FTP처럼 데이터 포트를 따로 열 필요가 없어 &lt;b&gt;방화벽 친화적&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p 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;694&quot; data-start=&quot;620&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;694&quot; data-start=&quot;620&quot;&gt;보안 처리를 위한 암호화/복호화 작업 때문에 &lt;b&gt;FTP보다 속도가 느릴 수 있음&lt;/b&gt;, 하지만 보안이 중요한 환경에서는 필수 선택.&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;b&gt;SFTP Linux 명령어&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. sftp 연결&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1749970700874&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sftp &quot;작업서버 폴더명(hcchung)&quot;@&quot;대상 IP&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;b&gt;2. 파일 올리기/ 받기&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1749970743513&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sftp&amp;gt;

// 원본서버
put &quot;파일명&quot;

// 이전서버
get &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;</description>
      <category>DevOps&amp;amp;Cloud</category>
      <author>무엇을해야하는지</author>
      <guid isPermaLink="true">https://what2dochris.tistory.com/93</guid>
      <comments>https://what2dochris.tistory.com/93#entry93comment</comments>
      <pubDate>Sun, 15 Jun 2025 15:59:49 +0900</pubDate>
    </item>
    <item>
      <title>2025 개발자 취업준비 회고</title>
      <link>https://what2dochris.tistory.com/92</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;서론&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본격적으로 취업준비를 시작한건 1월 말 부터이다. 그전까지는 학교를 다니며 잠깐 계약직으로 4개월정도 일을하다가 1월 부터 차근차근 이력서와 포트폴리오를 정리하고 2월부터는 원하는 기업에 지원을 했다.&amp;nbsp;&lt;/p&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~4개월 정도 준비를 했고, 최근에 대기업은 아니지만 나름 규모가 있는 중견 기업에&lt;b&gt; 클라우드 엔지니어&lt;/b&gt;로 최종 합격을 했다. 이 곳에서 나의 첫 사회생활과 커리어를 시작하기로 결정했고 입사까지 2주의 시간이 남아있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;성공한 취준생이라고 보기에는 어렵겠지만, 그래도 여느 취준생과 마찬가지로 최선을 다했다고 생각하기에 그동안 어떻게 준비를 하고 어떤 목표의식을 갖고 임했는지를 정리해보고자 한다. &lt;b&gt;(절대 정답은 아니고, 그저 개인적인 생각이다)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;본론&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1. 이력서 &amp;amp; 포트폴리오&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;취업준비를 하면서 이력서와 포트폴리오를 정말 수도 없이 고쳤다. 그저 내용을 조금씩 바꾸는 것이 아니라, 귀찮더라도 전체 틀을 완전히 갈아 엎은적도 있었고 꾸준히 개선시켜나갔다. 그리고 인터넷에 적은 돈은 아니지만 이력서와 포트폴리오를 첨삭해주는 사람들이 매우 많다. 주변에서는 &quot;그냥 돈 낭비야, 그런거 해봤자 도움 안돼&quot; 라는 말도 있었지만, 사실 나는 취업준비 하면서 이정도 금액 없다고 내가 죽는 것도 아니고 속는 셈 치고 해볼 수 있지 않을까라는 생각에 과감하게 컨설팅과 첨삭도 받았다. 그리고 지금 생각해보면 해당 컨설팅 이후에 서류 합격 비율이 꽤나 늘었다. 특히 내가 생각치 못한 부분(가독성, 트러블 슈팅 등)에서 보완할 점이 많다고 깨닫기도 했었다.&amp;nbsp;&lt;/p&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://kmong.com/@horangya&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://kmong.com/@horangya&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1748330340851&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;프로그램 개발 전문가 horangya - 크몽&quot; data-og-description=&quot;총거래 수 72건, 평점 5의 IT&amp;middot;프로그래밍 전문가 horangya 님을 만나보세요. 5000원부터 시작!&quot; data-og-host=&quot;kmong.com&quot; data-og-source-url=&quot;https://kmong.com/@horangya&quot; data-og-url=&quot;https://kmong.com/@horangya&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/XRHF2/hyYYCGlL34/vIeK58LNk1Giwmmn4umWM0/img.jpg?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://kmong.com/@horangya&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kmong.com/@horangya&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/XRHF2/hyYYCGlL34/vIeK58LNk1Giwmmn4umWM0/img.jpg?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&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;프로그램 개발 전문가 horangya - 크몽&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;총거래 수 72건, 평점 5의 IT&amp;middot;프로그래밍 전문가 horangya 님을 만나보세요. 5000원부터 시작!&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;kmong.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;size18&quot;&gt;&lt;b&gt;2. 지원서 제출&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2-1. 지원 분야&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발자로써 지원을 할때 특정 직무 하나에 국한되어 지원하지 않았다. 예를 들어 백엔드 웹개발만 지원하는게 아니라 DevOps, Cloud Engineer 뿐만 아니라 ERP 전산직 등 내가 자신 있거나, 유사 프로젝트가 있다면 항상 포트폴리오 내용을 직무에 맞춰서 조금씩 수정해서 제출했다. 이런식으로 하다보니 자연스럽게 내가 어떤 직무에 더 강점이 있는지 알게 되었고, 개인적으로는 Cloud 직무에 더 강점이 있다는 것을 파악을 하고 난 이후, 자격증과 기술 블로그 등 클라우드 분야를 더 깊이 있게 공부를 하고 준비를 했던게 도움이 많이 되었다.&lt;/p&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;2-2. 지원 기업 기준&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지원하는 기업은 개인적으로 다양한 기준을 두고 지원을 했다. 여기서 중요한 것은 그저 &quot;대기업/중견 아니면 지원 안해&quot;라는 것이 아닌 스타트업이더라도 내가 가서 어떤식으로 커리어를 쌓을 수 있는지, 혹은 기업의 성장 가능성을 보고 매우 다양하게 지원했다. 사실 몇년전에 취준을 하고 합격한 선배들은&amp;nbsp;&lt;b&gt;&quot;그냥 일단 대기업만 바라보고 천천히 준비하면 돼&quot;&lt;/b&gt; 라는 말을 매우 많이 들었다. 그 사람들 말이 틀린 것은 결코 아니지만, 사실 현실적으로 2~3년전 개발자 취업시장과 지금의 개발자 취업시장은 매우 다르다. 특히 나는 적어도 서류 제출하고 면접을 보는 것은 &lt;b&gt;기회 비용이 매우 적다고 생각&lt;/b&gt;한다. 어쨌든 운이 좋아서 면접까지 보게 되고 떨어지더라도 그것만으로도 취준생에게 있어 매우 좋은 경험이자 노하우가 쌓인다고 생각했다.&lt;s&gt;(그리고 면접비도 준다)&lt;/s&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;2-3. 면접&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞선 방식으로 서류를 제출한 결과 3개월 동안 총 6곳에서 서류 합격 결과를 받았고, 그중 4곳에서 면접을 봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스타트업(백엔드/DevOps) 1회, 중견(전산직) 1회, 중견(클라우드) 1회, 대기업(클라우드) 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;면접이 있으면 항상 그 기회를 소중하게 생각하고 최선을 다해서 준비했다. 이 회사를 갈지 안갈지는 최종 합격을 통보 받은 이후에 생각하고 결정해도 늦지 않다고 생각했다. 그리고 이런식으로 몇차례 면접을 보면서 느낀점은 볼수록 면접 스킬 특히 기술 면접 부분에서 점점 더 늘었다.(당연히 첫 면접을 제일 망쳤었다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 평소에 동기들과 CS 면접 스터디를 통해 기본 개념은 머릿속에 갖고 있으려 노력했던 부분도 도움이 되었다고 생각한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;3. 나만의 강점&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;취업준비를 하면서 대기업에 지원하고, 수도 없는 광탈을 맛보았다. 특히 처음에는 백엔드를 주로 지원했는데 결과가 처참했다. 그래서 생각을 했던게 &quot;과연 내가 백엔드 개발자로써 강점이 있을까?&quot;라는 생각이었다. 특히 요즘은 백엔드 개발자를 희망하는 사람들이 정말 넘쳐난다. 수요 &amp;lt;&amp;lt;&amp;lt;&amp;lt; 공급&amp;nbsp;이라고 생각한다. 그래서 내 포트폴리오와 이력서를 보면서 나만의 강점을 찾으려고 노력했다. 솔직히 처음에는 &quot;내가 강점이 어딨어 그냥 평균이지&quot; 라는 생각을 가졌지만 놀랍게도 나같은 사람에게도 강점이 있었고 이런 점을 살려야겠다고 생각을 했다. (개인적으로는 백엔드 개발이 아닌, Ops(DevOps, MLOps, CloudOps) 부분에서의 강점을 밀고 나갔던 것이 도움이 많이 되었다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;결론&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 모두가 이름만 대면 아는 대기업이나 연봉 높은 기업에 합격 하는 것이 취준 성공의 기준이라면, 나의 취업준비는 성공했다고 보기 힘들다. 하지만 항상 취준을 하면서 중점을 두었던 부분은 &lt;b&gt;내가 하고 싶은 일과 기업을&lt;/b&gt; 찾고자 노력했고 이러한 부분에 있어 현재 나는 만족스럽다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히 요즘은 뉴스를 조금만 돌려보아도&amp;nbsp;&lt;b&gt;&quot;개발자 취업난&quot;&lt;/b&gt;, &lt;b&gt;&quot;중고 신입&quot;&lt;/b&gt; 등 절망적인 키워드 밖에 볼 수 없다. 그래서 생각했던 것이 모두가 처음부터 원하는 기업이나 대기업에 들어 갈 수 없다. 이런 부분에 있어 나는 빠른 자기 객관화가 되었고, 아직 나이도 어리기에&amp;nbsp;&lt;b&gt;내가&lt;/b&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;b&gt;향후 계획&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 가장 1순위는 신입사원으로 회사에 적응하고 열심히 일도 배우고 사회생활도 배울 것이다. 그리고 적응기가 끝나갈때쯤 직장인 동아리, 네트워킹 등 개인 공부와 커리어를 계속해서 쌓아나갈 것이다. 단기적으로 보면 첫 취준은 끝났지만 그렇다고 내 커리어가 끝난 것은 아니기에 앞으로도 꾸준히 공부하고 습득하며 이 분야에 있어 인정받는 그런 클라우드 개발자가 되고 싶다.&lt;/p&gt;</description>
      <category>면접&amp;amp;코테 후기</category>
      <category>개발자</category>
      <category>중고신입</category>
      <category>취준</category>
      <category>클라우드</category>
      <author>무엇을해야하는지</author>
      <guid isPermaLink="true">https://what2dochris.tistory.com/92</guid>
      <comments>https://what2dochris.tistory.com/92#entry92comment</comments>
      <pubDate>Tue, 27 May 2025 17:31:56 +0900</pubDate>
    </item>
    <item>
      <title>AWS Disaster Recovery: 재해 복구 솔루션 방식과 RTO RPO</title>
      <link>https://what2dochris.tistory.com/91</link>
      <description>&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;재해 복구(Disaster Recovery)란&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;클라우드에서는 다양한 트래픽이 몰리는 상황이나 예기치 못한 장애나 공격으로 인해 서버가 다운되었을 경우 혹은 데이터가 날라갔을 경우 이를 백업하는 단계는 매우 중요하다. 그리고 보통 이러한 재해를 복구하는데 평가되는 요소에는 총 두가지가 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-05-16 오전 12.14.18.png&quot; data-origin-width=&quot;2180&quot; data-origin-height=&quot;834&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tSksm/btsNXVYt0Kf/oXMjmw76LdUQyOIFdfp2fK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tSksm/btsNXVYt0Kf/oXMjmw76LdUQyOIFdfp2fK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tSksm/btsNXVYt0Kf/oXMjmw76LdUQyOIFdfp2fK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtSksm%2FbtsNXVYt0Kf%2FoXMjmw76LdUQyOIFdfp2fK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;606&quot; height=&quot;232&quot; data-filename=&quot;스크린샷 2025-05-16 오전 12.14.18.png&quot; data-origin-width=&quot;2180&quot; data-origin-height=&quot;834&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;RPO(Recovery Point Objective):&lt;/b&gt; 어느 시점부터 백업 데이터를 저장할지&lt;br /&gt;&lt;b&gt;RTO(Recovery Time Objective):&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;이 두가지 요소는 재해 복구를 하는데 있어 매우 중요한 두가지 요소 이며 보통 RPO와 RTO가 낮을수록 좋은 재해 복구 솔루션이라고 하지는 않고, 전체적인 비용까지 따져가며 현재 인프라와 요구사항에 맞는 복구 솔루션을 구축하는 것이 중요하다.&lt;/p&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에서는 이러한 재해 복구를 총 3가지 관점에서 정의하고 바라본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;1. on premise to on premise(전통적인 방식)&lt;br /&gt;2. on premise to AWS(Hybrid 방식)&lt;br /&gt;3. AWS Cloud Region A to Region B&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;이제 오늘은 강의를 듣고 위 3가지에는 어떠한 방식들이 있고, 어떤 장단점과 특징이 있는지 정리해보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;Backup and Restore&lt;/b&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-05-16 오전 12.15.27.png&quot; data-origin-width=&quot;2006&quot; data-origin-height=&quot;1000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQdAZD/btsN0ic7mcm/13ef4uYGgXLn6w9zIYKHJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQdAZD/btsN0ic7mcm/13ef4uYGgXLn6w9zIYKHJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQdAZD/btsN0ic7mcm/13ef4uYGgXLn6w9zIYKHJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQdAZD%2FbtsN0ic7mcm%2F13ef4uYGgXLn6w9zIYKHJK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;706&quot; height=&quot;352&quot; data-filename=&quot;스크린샷 2025-05-16 오전 12.15.27.png&quot; data-origin-width=&quot;2006&quot; data-origin-height=&quot;1000&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;특징:&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 on premise 데이터들을 주기적으로 S3와 S3 Snapshot에 스냅샷을 찍어 보관 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;장애가 발생하게 된다면 주기적으로 저장되어 있던 스냅샷으로 AMI를 통해 EC2를 실행시키고, RDS에는 데이터를 이전하여 서비스를 임시로 원활하게 사용할 수 있다.&lt;/p&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;: 높은 RPO와 RTO&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;장점&lt;/b&gt;: 가격이 저렴하고 구축하기 매우 쉽다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;Pilot Light&lt;/b&gt;&lt;/blockquote&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;스크린샷 2025-05-16 오전 12.19.27.png&quot; data-origin-width=&quot;1342&quot; data-origin-height=&quot;636&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byHUiE/btsNZulcbiG/KaERo3YYifqk33mwnOmO31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byHUiE/btsNZulcbiG/KaERo3YYifqk33mwnOmO31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byHUiE/btsNZulcbiG/KaERo3YYifqk33mwnOmO31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyHUiE%2FbtsNZulcbiG%2FKaERo3YYifqk33mwnOmO31%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;666&quot; height=&quot;316&quot; data-filename=&quot;스크린샷 2025-05-16 오전 12.19.27.png&quot; data-origin-width=&quot;1342&quot; data-origin-height=&quot;636&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;특징:&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;EC2같은 경우에는 실행하고 있지 않다가 on premise 서버에 장애가 발생하면 Route 53이 자동적으로 트래픽을 EC2로 보내게 되고 그제서야 EC2가 실행이 된다. 다만, RDS같은 경우에는 주기적으로 메인 DB로 부터 복제하고 저장하기에 꾸준히 실행중에 있다.&lt;/p&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;: 단점이 없는 것이 장점이다. RTO, RPO 둘다 낮다고 할 수 있고 가격 또한 장애 발생 전까지는 RDS에만 지출이 생기기 때문에 저렴하다고 볼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;Warm Standby&lt;/b&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-05-16 오전 12.22.10.png&quot; data-origin-width=&quot;1504&quot; data-origin-height=&quot;764&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HyDgr/btsNZwwrpqz/Lsr4rtCHPdGqavGx5TEOR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HyDgr/btsNZwwrpqz/Lsr4rtCHPdGqavGx5TEOR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HyDgr/btsNZwwrpqz/Lsr4rtCHPdGqavGx5TEOR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHyDgr%2FbtsNZwwrpqz%2FLsr4rtCHPdGqavGx5TEOR0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;658&quot; height=&quot;334&quot; data-filename=&quot;스크린샷 2025-05-16 오전 12.22.10.png&quot; data-origin-width=&quot;1504&quot; data-origin-height=&quot;764&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;특징:&amp;nbsp;&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;사실 Hybrid로 운영하고 있다고 보면 될것 같다. 다만, on premise에서 FailOver가 발생했을 때만 Route 53이 AWS로 로드 밸런싱을 진행해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;Multi Site / Hot Site Approach&lt;/b&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-05-16 오전 12.27.26.png&quot; data-origin-width=&quot;1354&quot; data-origin-height=&quot;748&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rDnMz/btsNYu7shW9/nyepNbTKeJbS1laskhiMm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rDnMz/btsNYu7shW9/nyepNbTKeJbS1laskhiMm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rDnMz/btsNYu7shW9/nyepNbTKeJbS1laskhiMm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrDnMz%2FbtsNYu7shW9%2FnyepNbTKeJbS1laskhiMm0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;656&quot; height=&quot;362&quot; data-filename=&quot;스크린샷 2025-05-16 오전 12.27.26.png&quot; data-origin-width=&quot;1354&quot; data-origin-height=&quot;748&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;특징&lt;/b&gt;: Warm Standby와 다른점은 최소한의 크기로 대비를 하는지, 최대한의 크기로 대비를 하는지에 따라 달렸다. Multisite 같은 경우 ASG의 크기를 실제 production 환경에 맞추어 사실상 hybrid로 운영하고 있는 셈이나 마찬가지이다.&lt;/p&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;: RTO, RPO가 매우 낮다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;단점&lt;/b&gt;: 전체적으러 비용이 비싸다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;All AWS Multi Region&lt;/b&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-05-16 오전 12.30.01.png&quot; data-origin-width=&quot;1486&quot; data-origin-height=&quot;782&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cCYgAf/btsNY0LuN49/FmaOTK3Vjr5RvmDRmxvll1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cCYgAf/btsNY0LuN49/FmaOTK3Vjr5RvmDRmxvll1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cCYgAf/btsNY0LuN49/FmaOTK3Vjr5RvmDRmxvll1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcCYgAf%2FbtsNY0LuN49%2FFmaOTK3Vjr5RvmDRmxvll1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;701&quot; height=&quot;369&quot; data-filename=&quot;스크린샷 2025-05-16 오전 12.30.01.png&quot; data-origin-width=&quot;1486&quot; data-origin-height=&quot;782&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;특징&lt;/b&gt;: 재해 복구 솔루션의 끝판왕이다. 같은 환경을 서로 다른 Region에서 운영하여 그 안정성을 최대한으로 높인다. 또한 Aurora DB로 마스터 db 와 slave db를 두어 master db가 죽더라도 slave db에서 다시 살려내어 복구할 수 있다.&lt;/p&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;: RTO, RPO 도 낮고, 매우 안정적인 솔루션&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;단점&lt;/b&gt;: 비용이 매우 비싸다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;어떤 재해복구 솔루션을 써야할까?&lt;/b&gt;&lt;/blockquote&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;스크린샷 2025-05-16 오전 12.14.49.png&quot; data-origin-width=&quot;1346&quot; data-origin-height=&quot;424&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mfOeO/btsNYrXbLc2/WbJtJy2A2Bkz6jPK0J27ek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mfOeO/btsNYrXbLc2/WbJtJy2A2Bkz6jPK0J27ek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mfOeO/btsNYrXbLc2/WbJtJy2A2Bkz6jPK0J27ek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmfOeO%2FbtsNYrXbLc2%2FWbJtJy2A2Bkz6jPK0J27ek%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;584&quot; height=&quot;184&quot; data-filename=&quot;스크린샷 2025-05-16 오전 12.14.49.png&quot; data-origin-width=&quot;1346&quot; data-origin-height=&quot;424&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;재해복구 솔루션에는 정답이 없다. 비싸다고 무조건 안좋은 것도 혹은 RTO가 느리다고 무조건 안좋은 것도 아닌 현재 인프라와 요구사항에 맞춰 RPO, RTO 그리고 비용과 안정성 등 다양한 조건을 고려하여 설계하는 것이 정답이라고 한다.&lt;/p&gt;</description>
      <category>AWS</category>
      <author>무엇을해야하는지</author>
      <guid isPermaLink="true">https://what2dochris.tistory.com/91</guid>
      <comments>https://what2dochris.tistory.com/91#entry91comment</comments>
      <pubDate>Fri, 16 May 2025 00:33:52 +0900</pubDate>
    </item>
    <item>
      <title>AWS Networking: 효율적인 네트워킹 구성하는 법</title>
      <link>https://what2dochris.tistory.com/90</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;AWS Networking&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;AWS에서는 다양한 방식으로 VPC를 구축하여 인프라를 구축할 수 있다. 다만, 어떤식으로 구축하느냐에 따라 그 효율과 비용은 천차만별이다. 때문에, 이번 포스팅에서는 강의를 듣고 이와 관련한 내용을 정리해 보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Networking Cost in AWS per GB(Simplified)&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-05-15 오후 3.48.10.png&quot; data-origin-width=&quot;1008&quot; data-origin-height=&quot;550&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bio1vx/btsNYZyALFE/CdGifStD4Imk0ATWEk5L31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bio1vx/btsNYZyALFE/CdGifStD4Imk0ATWEk5L31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bio1vx/btsNYZyALFE/CdGifStD4Imk0ATWEk5L31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbio1vx%2FbtsNYZyALFE%2FCdGifStD4Imk0ATWEk5L31%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;543&quot; height=&quot;296&quot; data-filename=&quot;스크린샷 2025-05-15 오후 3.48.10.png&quot; data-origin-width=&quot;1008&quot; data-origin-height=&quot;550&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;[동일 Region 내에서의 Traffic]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 가장 먼저 AWS에서는 Inbound로 들어오는 요청은 대부분 &lt;b&gt;무료&lt;/b&gt;이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 같은 Region내의 같은 AZ내에서 private IP로 통신 할 경우 그 비용 또한 &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;하지만 만약 같은 Region내의 다른 AZ에서 private IP로 통시을 하게 된다면 그 비용은 요청당 0.01가 부과 되게 되고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;public IP 혹은 Elastic IP를 부여하게 된다면, 그 비용은 0.02 달러로 올라가게 된다.&lt;/p&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;[다른 Region간의 Traffic]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 Region에 있다면 다른 VPC가 할당되기 때문에 VPC Connection이나 DX를 설정해주지 않는 이상 private IP로는 통신이 불가능하다. 때문에, 통신 비용은 항상 0.02 달러로 고정이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Minimizing egress traffic network cost&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;개념&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Egress Traffic&lt;/b&gt;: Outbound Traffic이라고도 하며 AWS에서 외부 네트워크로 요청이 보내지는 상황&lt;br /&gt;&lt;b&gt;Ingress Traffic&lt;/b&gt;: Inbound Traffic이라고도 하며 외부 네트워크에서 AWS로 요청이 들어오는 상황&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;조건&lt;br /&gt;&lt;/b&gt;특정 기업의 네트워크내의 서버에서 AWS에 있는 DB에서 값을 받아온다고 가정했을 때, 가장 비용 효율적인 방식을 찾아보기&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;&lt;b&gt;시나리오1&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-05-15 오후 3.56.39.png&quot; data-origin-width=&quot;886&quot; data-origin-height=&quot;302&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wBZYB/btsNW3vxH5D/XIMVnCq3eiThv9oWQdB3S0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wBZYB/btsNW3vxH5D/XIMVnCq3eiThv9oWQdB3S0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wBZYB/btsNW3vxH5D/XIMVnCq3eiThv9oWQdB3S0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwBZYB%2FbtsNW3vxH5D%2FXIMVnCq3eiThv9oWQdB3S0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;540&quot; height=&quot;184&quot; data-filename=&quot;스크린샷 2025-05-15 오후 3.56.39.png&quot; data-origin-width=&quot;886&quot; data-origin-height=&quot;302&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 방식은 온프레미스 네트워크에서 직접 DB로 바로 접근하여 100MB가 되는 값을 바로 받아온다. 이때 100MB가 직접 넘어오기 때문에 비효율적이라고 할 수 있다.&lt;/p&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;시나리오2&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-05-15 오후 4.01.07.png&quot; data-origin-width=&quot;886&quot; data-origin-height=&quot;300&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dJVRDb/btsNX4U2UCo/TA5iWz2fKKGTiYJyFPnnA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dJVRDb/btsNX4U2UCo/TA5iWz2fKKGTiYJyFPnnA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dJVRDb/btsNX4U2UCo/TA5iWz2fKKGTiYJyFPnnA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdJVRDb%2FbtsNX4U2UCo%2FTA5iWz2fKKGTiYJyFPnnA1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;517&quot; height=&quot;175&quot; data-filename=&quot;스크린샷 2025-05-15 오후 4.01.07.png&quot; data-origin-width=&quot;886&quot; data-origin-height=&quot;300&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 방식은 시나리오1과 달리 application을 AWS 서버에서 실행하게 된다. 만약 DB와 서버가 같은 리전에서 private IP로 통신한다고 가정했을때 두 서비스 간의 통신은 100MB이더라도 무료가 된다. 때문에 실제 user에게 전달되는 50KB에만 비용이 측정되기 때문에 비용 측면에서나 설계 측면에서 훨씬 효율적이라고 볼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;S3 Data Transfer Pricing&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-05-15 오후 4.04.27.png&quot; data-origin-width=&quot;768&quot; data-origin-height=&quot;592&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPu7JZ/btsNW1dqcMv/GrrdNGsRdbp4NpI9JoRRmk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPu7JZ/btsNW1dqcMv/GrrdNGsRdbp4NpI9JoRRmk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPu7JZ/btsNW1dqcMv/GrrdNGsRdbp4NpI9JoRRmk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPu7JZ%2FbtsNW1dqcMv%2FGrrdNGsRdbp4NpI9JoRRmk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;449&quot; height=&quot;346&quot; data-filename=&quot;스크린샷 2025-05-15 오후 4.04.27.png&quot; data-origin-width=&quot;768&quot; data-origin-height=&quot;592&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;S3에서 인터넷으로 직접 연결이 될때는 0.09 달러가 부여된다.&lt;/p&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;시나리오1&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Edge Location 할당과 Transfer acceleration을 붙이게 되면 0.04 달러가 추가로 부여되지만, 속도는 최소 50에서 500% 빨라진다는 장점이 있다.&amp;nbsp;&lt;/p&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;시나리오2&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CloudFront를 중간에 두어 통신하게 되면 S3와 CloudFront간의 통신은 무료이고, CloudFront와 인터넷 간의 통신은 0.085 달러로 아주 살짝 저렴하다. 뿐만 아니라 CloudFront에는 기본적인 Caching 기능이 탑재 되어 있기 때문에 지연시간이 낮다는 장점도 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;NAT Gateway vs Gateway VPC Endpoint&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;Nat Gate way와 Gateway VPC Endpoint 둘다 private subnet에 있는 인스턴스가 인터넷을 연결하기 위해 도와준다는 공통점이 있다. 하지만 어떤식으로 구축하는지에 따라 비용차이는 생각보다 크다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-05-15 오후 4.10.41.png&quot; data-origin-width=&quot;1406&quot; data-origin-height=&quot;564&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4V5yZ/btsNZHKPvlk/Es2x77U0TMKj6zhp9suvR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4V5yZ/btsNZHKPvlk/Es2x77U0TMKj6zhp9suvR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4V5yZ/btsNZHKPvlk/Es2x77U0TMKj6zhp9suvR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4V5yZ%2FbtsNZHKPvlk%2FEs2x77U0TMKj6zhp9suvR1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;708&quot; height=&quot;284&quot; data-filename=&quot;스크린샷 2025-05-15 오후 4.10.41.png&quot; data-origin-width=&quot;1406&quot; data-origin-height=&quot;564&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;시나리오1&lt;/b&gt;: EC2 -&amp;gt; NAT -&amp;gt; Internet Gateway -&amp;gt; Internet&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;스크린샷 2025-05-15 오후 4.13.29.png&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;138&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/T9aW3/btsNYmukROD/3NX88CoZpP3M3MQ9k7EEd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/T9aW3/btsNYmukROD/3NX88CoZpP3M3MQ9k7EEd0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/T9aW3/btsNYmukROD/3NX88CoZpP3M3MQ9k7EEd0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FT9aW3%2FbtsNYmukROD%2F3NX88CoZpP3M3MQ9k7EEd0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;392&quot; height=&quot;118&quot; data-filename=&quot;스크린샷 2025-05-15 오후 4.13.29.png&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;138&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실상 한번의 요청에 0.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;&lt;b&gt;시나리오2:&lt;/b&gt; EC2 -&amp;gt; VPC Endpoint -&amp;gt; S3 -&amp;gt; internet&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 방식에서 실제로 VPC endpoint를 사용하는 것에는 비용이 부과되지 않기 때문에 S3와의 Data Transfer에서 발생하는 0.1달러만 부여가 된다. 때문에 앞선 시나리오1보다 10배 가량 비용 효율적이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;결론&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AWS의 VPC에는 알아야할 것이 매우 많다. 기본적인것만 알고 가기에는 모르고 지나치면 손해보는 경우가 많은 것 같다.&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://www.udemy.com/course/best-aws-certified-solutions-architect-associate/learn/lecture/29389410#overview&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.udemy.com/course/best-aws-certified-solutions-architect-associate/learn/lecture/29389410#overview&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>AWS</category>
      <author>무엇을해야하는지</author>
      <guid isPermaLink="true">https://what2dochris.tistory.com/90</guid>
      <comments>https://what2dochris.tistory.com/90#entry90comment</comments>
      <pubDate>Thu, 15 May 2025 16:17:12 +0900</pubDate>
    </item>
    <item>
      <title>AWS Monitoring: CloudWatch vs CloudTrail vs AWS Config 차이</title>
      <link>https://what2dochris.tistory.com/89</link>
      <description>&lt;blockquote data-ke-style=&quot;style2&quot;&gt;AWS 모니터링&lt;/blockquote&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;129&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vA9Id/btsNVsagiS2/MR1VPEnitkxKeorBATLRik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vA9Id/btsNVsagiS2/MR1VPEnitkxKeorBATLRik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vA9Id/btsNVsagiS2/MR1VPEnitkxKeorBATLRik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvA9Id%2FbtsNVsagiS2%2FMR1VPEnitkxKeorBATLRik%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;501&quot; height=&quot;166&quot; data-origin-width=&quot;389&quot; data-origin-height=&quot;129&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;AWS에서는 모니터링 하기 위해 크게 3가지 서비스를 사용한다.&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;1. CloudWatch&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. CloudTrail&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. AWS Config&lt;/p&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&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;사실 3가지의 공통점은 그저 '모니터링 시스템'이라는 점을 제외하면 그 어떤 것도 없다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;모니터링 목적&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Cloud Watch&lt;/b&gt;: 시스템과 애플리케이션를 모니터링&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Cloud Trail:&lt;/b&gt; AWS 계정 내 API 호출 기록 추적&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AWS Config:&lt;/b&gt; AWS 리소스의 구성 변경 추적 및 기록&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;모니터링 대상&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Cloud Watch&lt;/b&gt;: Peformance와 같은 Metric, Log을 추적한 뒤 알람 및 대시보드 구성&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Cloud Trail:&lt;/b&gt;&lt;span&gt; 사용자/서비스의 API 요청 (예: StartInstances, PutItem)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AWS Config:&lt;/b&gt;&lt;span&gt; 리소스 상태/속성 변경 (EC2 태그 변경, SG 수정 등)&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;h4 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;모니터링 기록&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Cloud Watch&lt;/b&gt;: CPU, 디스크 IO, Log&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Cloud Trail:&lt;/b&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt; 누가 언제 어떤 API를 호출했는지(IP, 시간, 계정, 서비스 등)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AWS Config:&lt;/b&gt;&lt;span&gt;&lt;span&gt; 리소스의 이전 상태와 변경된 상태&lt;/span&gt;&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;&lt;span&gt;&lt;span&gt;이 외에도 실시간성이 제공되는 CloudWatch와 Cloud Trail와 달리 AWS Config는 시간이 소요되는 등 3가지 모니터링 도구는 각기 다른 목적과 사용성을 가진다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;사용 예시 비교&lt;/blockquote&gt;
&lt;h4 data-end=&quot;1574&quot; data-start=&quot;1557&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;CloudWatch&lt;/b&gt;&lt;/h4&gt;
&lt;h4 data-end=&quot;1574&quot; data-start=&quot;1557&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; font-size: 16px; letter-spacing: 0px;&quot;&gt;시스템 및 애플리케이션 상태를 실시간 모니터링&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1709&quot; data-start=&quot;1608&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1640&quot; data-start=&quot;1608&quot;&gt;EC2 인스턴스의 CPU, 메모리, 디스크 사용량 추적&lt;/li&gt;
&lt;li data-end=&quot;1666&quot; data-start=&quot;1641&quot;&gt;Lambda 함수의 로그와 실행 시간 분석&lt;/li&gt;
&lt;li data-end=&quot;1709&quot; data-start=&quot;1667&quot;&gt;특정 로그 메시지에 대해 알람 설정 (예: &quot;ERROR&quot; 포함 시 알림)&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;1728&quot; data-start=&quot;1711&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;CloudTrail&lt;/b&gt;&lt;/h4&gt;
&lt;h4 data-end=&quot;1728&quot; data-start=&quot;1711&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; font-size: 16px; letter-spacing: 0px;&quot;&gt;AWS 리소스에 대한 &amp;ldquo;누가 무엇을 했는가&amp;rdquo;에 대한 기록&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1856&quot; data-start=&quot;1768&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1795&quot; data-start=&quot;1768&quot;&gt;IAM 사용자가 S3 버킷을 삭제한 기록 확인&lt;/li&gt;
&lt;li data-end=&quot;1823&quot; data-start=&quot;1796&quot;&gt;어떤 IP에서 어떤 API 요청이 왔는지 추적&lt;/li&gt;
&lt;li data-end=&quot;1856&quot; data-start=&quot;1824&quot;&gt;AWS 콘솔, CLI, SDK 등 모든 요청 로그 남김&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;1875&quot; data-start=&quot;1858&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;AWS Config&lt;/b&gt;&lt;/h4&gt;
&lt;h4 data-end=&quot;1875&quot; data-start=&quot;1858&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; font-size: 16px; letter-spacing: 0px;&quot;&gt;리소스의 구성 변화 이력 추적 및 규정 준수 검사&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2000&quot; data-start=&quot;1911&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1939&quot; data-start=&quot;1911&quot;&gt;EC2 인스턴스에 태그가 추가/삭제된 시점 기록&lt;/li&gt;
&lt;li data-end=&quot;1964&quot; data-start=&quot;1940&quot;&gt;보안 그룹에 포트 22가 열린 시점 추적&lt;/li&gt;
&lt;li data-end=&quot;2000&quot; data-start=&quot;1965&quot;&gt;&amp;ldquo;모든 S3 버킷은 암호화되어 있어야 한다&amp;rdquo; 같은 규칙 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&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;&lt;a href=&quot;https://www.udemy.com/course/best-aws-certified-solutions-architect-associate/learn/quiz/5384020#overview&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.udemy.com/course/best-aws-certified-solutions-architect-associate/learn/quiz/5384020#overview&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>AWS</category>
      <author>무엇을해야하는지</author>
      <guid isPermaLink="true">https://what2dochris.tistory.com/89</guid>
      <comments>https://what2dochris.tistory.com/89#entry89comment</comments>
      <pubDate>Tue, 13 May 2025 17:18:51 +0900</pubDate>
    </item>
    <item>
      <title>AWS Monitoring: CloudWatch란 무엇인가</title>
      <link>https://what2dochris.tistory.com/88</link>
      <description>&lt;blockquote data-ke-style=&quot;style2&quot;&gt;AWS 모니터링&lt;/blockquote&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;blockquote data-ke-style=&quot;style2&quot;&gt;AWS Cloud Watch Metric&lt;/blockquote&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;225&quot; data-origin-height=&quot;225&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byVXRS/btsNUVcLNwG/EUCn8gJzEcUfOlAq9TXE7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byVXRS/btsNUVcLNwG/EUCn8gJzEcUfOlAq9TXE7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byVXRS/btsNUVcLNwG/EUCn8gJzEcUfOlAq9TXE7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyVXRS%2FbtsNUVcLNwG%2FEUCn8gJzEcUfOlAq9TXE7K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;121&quot; height=&quot;121&quot; data-origin-width=&quot;225&quot; data-origin-height=&quot;225&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;style3&quot;&gt;&lt;b&gt;CloudWatch 란?&lt;/b&gt;&lt;br /&gt;CloudWatch는 AWS 모든 서비스에 지표를 제공한다. (여기서 지표란 서비스의 &lt;b&gt;Peformance&lt;/b&gt;)&lt;br /&gt;측정 가능한 지표에는 대표적으로 'CPU 사용률, Networkin, Bucket Size 등이 있다.'&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;828&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkfi8Z/btsNUyhOtKC/PK6O6qFYeZioWK7GbrMvLK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkfi8Z/btsNUyhOtKC/PK6O6qFYeZioWK7GbrMvLK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkfi8Z/btsNUyhOtKC/PK6O6qFYeZioWK7GbrMvLK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbkfi8Z%2FbtsNUyhOtKC%2FPK6O6qFYeZioWK7GbrMvLK%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;648&quot; height=&quot;447&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;828&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하나의 Metric당 최대 측정 기준은 10개로 진행되며, Metric이 많아지면 CloudWatch 대시보드에 추가해 모든 지표를 한 번에 볼 수 있다. 사진과 같이 다양한 GUI로도 확인이 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;CloudWatch Metric Stream&lt;/blockquote&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;524&quot; data-origin-height=&quot;614&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OpCzg/btsNUQidhK4/0MpYLXUJ4NUDFHTAOuV5x0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OpCzg/btsNUQidhK4/0MpYLXUJ4NUDFHTAOuV5x0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OpCzg/btsNUQidhK4/0MpYLXUJ4NUDFHTAOuV5x0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOpCzg%2FbtsNUQidhK4%2F0MpYLXUJ4NUDFHTAOuV5x0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;238&quot; height=&quot;279&quot; data-origin-width=&quot;524&quot; data-origin-height=&quot;614&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;CloudWatch Metric Stream 이란?&lt;/b&gt;&lt;br /&gt;CloudWatch 외부로 스트리밍 할 수 있다. (Near Real time으로 지연시간이 매우 짧다). 또한 Firhose를 사용하여 수집된 Metric을 원하는 곳에 저장하고 분석이 가능하다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;CloudWatch Logs&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;* Logs&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 data-end=&quot;990&quot; data-start=&quot;953&quot; data-col-size=&quot;sm&quot;&gt;숫자 기반의 측정값 (CPU 사용률, 메모리 사용량 등)&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;* Metrics&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 data-end=&quot;1044&quot; data-start=&quot;990&quot; data-col-size=&quot;sm&quot;&gt;텍스트 기반의 이벤트 기록 (에러 메시지, 시스템 메시지 등)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Log Group&lt;/b&gt;: 로그들을 로그 그룹으로 그룹화&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Log Stream&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;CloudWatch Logs에서 저장한 로그들은 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;b&gt;1. CloudWatch Logs - Source&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;CloudWatch Logs &quot;Source&quot;&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;웬만한 AWS 서비스에서는 Source로 작동한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- SDK, CloudWatch Logs Agent, Cloud Watch Unified Agent&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- ElasticBeanStalk(Application에서)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- ECS(Container에서), Lambda 등...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&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;2. CloudWatch Logs - Metric Filter&amp;amp; Source&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;A. CloudWatch에서는 필터 표현식을 통해 로그를 수집하고 분석 할 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; EX) 특정 IP, ERROR가 들어간 로그 수집&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;B. Metric Filter를 통해 출현 빈도를 계산해 지표를 만들 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;C. CloudWatch Logs Insights&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;&lt;b&gt;3. S3 Export&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;476&quot; data-origin-height=&quot;210&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ceQ1fd/btsNWQgvbNa/4h8CcnVtmcnsOZAB6OcuoK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ceQ1fd/btsNWQgvbNa/4h8CcnVtmcnsOZAB6OcuoK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ceQ1fd/btsNWQgvbNa/4h8CcnVtmcnsOZAB6OcuoK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FceQ1fd%2FbtsNWQgvbNa%2F4h8CcnVtmcnsOZAB6OcuoK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;476&quot; height=&quot;210&quot; data-origin-width=&quot;476&quot; data-origin-height=&quot;210&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Export까지 12시간으로 Batch 작업으로 저장이 된다.&lt;/p&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;4. Cloud Watch Logs Subscription&lt;/b&gt;&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;1134&quot; data-origin-height=&quot;524&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bS2G7P/btsNUwYImZt/NS23Ixmrk1maSQfouwXbAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bS2G7P/btsNUwYImZt/NS23Ixmrk1maSQfouwXbAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bS2G7P/btsNUwYImZt/NS23Ixmrk1maSQfouwXbAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbS2G7P%2FbtsNUwYImZt%2FNS23Ixmrk1maSQfouwXbAK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;524&quot; height=&quot;242&quot; data-origin-width=&quot;1134&quot; data-origin-height=&quot;524&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;5. Cloud Watch Logs for EC2&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;460&quot; data-origin-height=&quot;484&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cOvVdF/btsNVIRkxmX/G8eyPXDhLLekbRKUOdlFPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cOvVdF/btsNVIRkxmX/G8eyPXDhLLekbRKUOdlFPK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cOvVdF/btsNVIRkxmX/G8eyPXDhLLekbRKUOdlFPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcOvVdF%2FbtsNVIRkxmX%2FG8eyPXDhLLekbRKUOdlFPK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;327&quot; height=&quot;344&quot; data-origin-width=&quot;460&quot; data-origin-height=&quot;484&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;EC2의 로그를 옮기기 위해서는 가장 먼저 EC2 내에 &lt;b&gt;CloudWatch Logs Agent&lt;/b&gt;를 실해하여 로그 파일을 push하고 EC2 인스턴스에 IAM ROLE를 추가해줘야 한다.&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;b&gt;6. CloudWatch Logs Agent &amp;amp; Unified Agent&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;A. Logs Agent -&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;B. Unified Agent&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- process, RAM과 같은 세부적인 퍼포먼스 지수를 수집할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 지표와 로그를 둘 다 사용(기본적으로 Unified Agent가 더 많이 사용되는 이유)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- CloudWatch Log로 로그를 보냄&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;CloudWatch Alarms&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;CloudWatch Alarms는 지표에서 알람을 Trigger할 때 사용한다. 또한 Sampling, %, max, min 등의 다양한 옵션을 추가해서 복잡한 경보 정의가 가능하다(AND/OR GATE 포함)&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;알람 상태는 총 3가지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A. OK: 트리거가 되지 않은 상태&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;B. INSUFFICIENT_DATA: 상태를 결정할 데이터가 부족한 상태&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;C. ALARM: 임계값을 넘어 알람이 보내지는 상태&lt;/p&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;1. CloudWatch Alarm Targets&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; EC2 Instance 동작(종료, 재부팅 등), EC2 Auto Scaling(Scale out or in), SNS 등&lt;/p&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;2. EC2 Instance Recovery&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상태 점검이 이에 해당한다. (ec2 vm 상태 점검, 하드웨어 점검 등)&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;413&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNlNaJ/btsNVq4ud8a/2DyKKkr5jsLUiuQaqcSIRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNlNaJ/btsNVq4ud8a/2DyKKkr5jsLUiuQaqcSIRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNlNaJ/btsNVq4ud8a/2DyKKkr5jsLUiuQaqcSIRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNlNaJ%2FbtsNVq4ud8a%2F2DyKKkr5jsLUiuQaqcSIRK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;677&quot; height=&quot;218&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;413&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;참고 자료&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.udemy.com/course/best-aws-certified-solutions-architect-associate/learn/quiz/5384020#overview&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.udemy.com/course/best-aws-certified-solutions-architect-associate/learn/quiz/5384020#overview&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://choiblog.tistory.com/197&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://choiblog.tistory.com/197&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1747122502465&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;AWS 모니터링 및 감사&quot; data-og-description=&quot;AWS 모니터링 모니터링은 서비스를 계속해서 실행할 수 있게 해주는 중요한 기능 중 하나 AWS CloudWatch Metrics CloudWatch는 AWS 모든 서비스에 지표를 제공 지표(metric)은 모니터링 할 지표 CPU 사용률, net&quot; data-og-host=&quot;choiblog.tistory.com&quot; data-og-source-url=&quot;https://choiblog.tistory.com/197&quot; data-og-url=&quot;https://choiblog.tistory.com/197&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bKXqQ2/hyYRo2rTSk/jGAzVLiDYQ0arfe3VST9fK/img.png?width=524&amp;amp;height=614&amp;amp;face=0_0_524_614,https://scrap.kakaocdn.net/dn/BgDPu/hyYTkqZwFM/jN2HBHiY9i3R2uMu5JVaMk/img.png?width=524&amp;amp;height=614&amp;amp;face=0_0_524_614,https://scrap.kakaocdn.net/dn/z6M8p/hyYU2i7Bkz/mr7xFiVMz1zZLclEV59PGk/img.png?width=1336&amp;amp;height=506&amp;amp;face=0_0_1336_506&quot;&gt;&lt;a href=&quot;https://choiblog.tistory.com/197&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://choiblog.tistory.com/197&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bKXqQ2/hyYRo2rTSk/jGAzVLiDYQ0arfe3VST9fK/img.png?width=524&amp;amp;height=614&amp;amp;face=0_0_524_614,https://scrap.kakaocdn.net/dn/BgDPu/hyYTkqZwFM/jN2HBHiY9i3R2uMu5JVaMk/img.png?width=524&amp;amp;height=614&amp;amp;face=0_0_524_614,https://scrap.kakaocdn.net/dn/z6M8p/hyYU2i7Bkz/mr7xFiVMz1zZLclEV59PGk/img.png?width=1336&amp;amp;height=506&amp;amp;face=0_0_1336_506');&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;AWS 모니터링 및 감사&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;AWS 모니터링 모니터링은 서비스를 계속해서 실행할 수 있게 해주는 중요한 기능 중 하나 AWS CloudWatch Metrics CloudWatch는 AWS 모든 서비스에 지표를 제공 지표(metric)은 모니터링 할 지표 CPU 사용률, net&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;choiblog.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>AWS</category>
      <author>무엇을해야하는지</author>
      <guid isPermaLink="true">https://what2dochris.tistory.com/88</guid>
      <comments>https://what2dochris.tistory.com/88#entry88comment</comments>
      <pubDate>Tue, 13 May 2025 16:48:25 +0900</pubDate>
    </item>
    <item>
      <title>AWS Container: ECS, Fargate 이해하기</title>
      <link>https://what2dochris.tistory.com/86</link>
      <description>&lt;blockquote data-ke-style=&quot;style2&quot;&gt;서론: Docker in AWS&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;AWS에서 Docker를 관리할수 있는 서비스는 다음과 같이 4가지가 있다. 전부 docker container를 AWS 서비스 위에서 관리, 운영을 도와주는 서비스이다. 여기서 오늘은 ECS, Fargate에 대해 정리를 해봤다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-05-03 오후 4.32.22.png&quot; data-origin-width=&quot;498&quot; data-origin-height=&quot;982&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Tj4Ct/btsNK98QK51/STdpioGm1WLd95lu8kjd70/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Tj4Ct/btsNK98QK51/STdpioGm1WLd95lu8kjd70/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Tj4Ct/btsNK98QK51/STdpioGm1WLd95lu8kjd70/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTj4Ct%2FbtsNK98QK51%2FSTdpioGm1WLd95lu8kjd70%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;136&quot; height=&quot;268&quot; data-filename=&quot;스크린샷 2025-05-03 오후 4.32.22.png&quot; data-origin-width=&quot;498&quot; data-origin-height=&quot;982&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;style2&quot;&gt;Amazon ECS(Elastic Container Service)란?&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;213&quot; data-origin-height=&quot;237&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dIXCNw/btsNKXHBCfV/lkdkW2dZJ0Y6Ua4jyMF9J1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dIXCNw/btsNKXHBCfV/lkdkW2dZJ0Y6Ua4jyMF9J1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dIXCNw/btsNKXHBCfV/lkdkW2dZJ0Y6Ua4jyMF9J1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdIXCNw%2FbtsNKXHBCfV%2FlkdkW2dZJ0Y6Ua4jyMF9J1%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;129&quot; height=&quot;144&quot; data-origin-width=&quot;213&quot; data-origin-height=&quot;237&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;ECS란?&lt;/b&gt;&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;Amazon Elastic Container Service(Amazon ECS)는 컨테이너 애플리케이션을 쉽게 배포, 관리 및 확대할 수 있도록 도와주는 완전 관리형 컨테이너 오케스트레이션 서비스이다. 즉, 도커 컨테이너 관리를 위한 AWS의 전용 플랫폼이다.&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;ECS에서 제공하는 기능은 아래와 같다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;1. 태스크 정의:&lt;/b&gt; 애플리케이션의 블루프린트&lt;br /&gt;&lt;b&gt;2. 클러스터:&lt;/b&gt; 애플리케이션이 실행되는 인프라&lt;br /&gt;&lt;b&gt;3. Task:&lt;/b&gt; 작업을 수행한 다음 중지하는 배치 작업 같은 애플리케이션&lt;br /&gt;&lt;b&gt;4. Service:&lt;/b&gt; 장기 실행되는 상태 비저장 애플리케이션&lt;br /&gt;&lt;b&gt;5. 클러스터 Auto Scaling:&lt;/b&gt; Amazon ECS는 클러스터에 등록된 Amazon EC2 인스턴스의 규모 조정을 관리&lt;br /&gt;&lt;b&gt;6. 서비스 오토 스케일링:&lt;/b&gt; Amazon ECS는 서비스에서 원하는 태스크 수를 자동으로 늘리거나 줄임&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;이런 ECS를 실행하는 방식에는 두가지가 있다. EC2와 Fargate 방식이다.&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&amp;nbsp;EC2 Launch Type&lt;/blockquote&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;708&quot; data-origin-height=&quot;704&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUy6QP/btsNLBKNvr1/bafh2DpcBAgqKIa8HGiu01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUy6QP/btsNLBKNvr1/bafh2DpcBAgqKIa8HGiu01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUy6QP/btsNLBKNvr1/bafh2DpcBAgqKIa8HGiu01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUy6QP%2FbtsNLBKNvr1%2Fbafh2DpcBAgqKIa8HGiu01%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;348&quot; height=&quot;346&quot; data-origin-width=&quot;708&quot; data-origin-height=&quot;704&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;EC2 인스턴스는 각각 ECS 에이전트를 실행해야함.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행되면 ECS 에이전트가 각각의 인스턴스를 지정된 ECS 클러스터에 등록, 이후 ECS Task를 수행하기 시작하면 AWS가 컨테이너를 시작하거나 멈춘다. 새 컨테이너가 생기면 시간에 따라 EC2에 지정되고 자동적으로 실행됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Fargate Launch Type&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;AWS에 Docker Container를 실행하는데 프로비저닝 하지 않아 관리할 EC2가 없다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;-&amp;gt; Serverless 기능(실제 AWS가 추천하는 기능)&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;ECS 클러스터에 ECS 태스크를 정의하는데 태스크 정의만 생성하면 ECS 태스크를 AWS가 알아서 실행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작업이나 확장을 위해서 EC2 인스턴스가 필요없기 때문에 Task만 수정하고 배포해주면 되기에 훨씬 더 간편하다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;588&quot; data-origin-height=&quot;558&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nEB7d/btsNJSts1rF/6Kn6ATul4AgHxk2fqATqRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nEB7d/btsNJSts1rF/6Kn6ATul4AgHxk2fqATqRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nEB7d/btsNJSts1rF/6Kn6ATul4AgHxk2fqATqRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnEB7d%2FbtsNJSts1rF%2F6Kn6ATul4AgHxk2fqATqRK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;417&quot; height=&quot;396&quot; data-origin-width=&quot;588&quot; data-origin-height=&quot;558&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;EC2 Lauch Type vs Fargate Launch Type&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;&lt;b&gt;ECS on EC2&lt;/b&gt;는 집을 직접 짓고, 설비를 깔고, 모든 걸 손수 관리하는 방식.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Fargate&lt;/b&gt;는 그냥 들어가서 살 수 있게 다 준비된 오피스텔에 입주하는 느낌. (전기세, 수도세는 쓴 만큼만 냄)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 가장 큰 차이는 Serverless냐 아니냐의 차이다. 관리, 운영 측면에서 훨씬 편한 방식은 Fargate이기에 AWS에서도 Fargate를 추천하는 이유가 아닌가 예상해본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;IAM Roles for ECS&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;이제 ECS 위에서 돌아가는 컨테이너가 AWS의 어떤 서비스와 통합되고 연결될 수 있는지는 IAM Task Role를 통해 AWS 서비스의 API를 사용할 수 있도록 할 수 있다.&lt;/p&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;1. EC2 Instance Profile(EC2 Lauch Type만 해당)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- ECS 에이전트만이 EC2 istance Profile를 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- EC2 인스턴스 프로파일을 이용해 ECS로 API 호출&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- CloudWatch Logs API를 통해 컨테이너 로그를 보냄&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- ECR에서 도커 이미지를 가져옴&lt;/p&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;2. ECS Task Role(EC2, Fargate Launch Type 모두 해당)&lt;/b&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;- ECS 태스크 정의 에서 태스크 역할을 정의&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;526&quot; data-origin-height=&quot;636&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bq9oBT/btsNJPwLZ4w/tioTOmS0GLejKSesHYXuz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bq9oBT/btsNJPwLZ4w/tioTOmS0GLejKSesHYXuz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bq9oBT/btsNJPwLZ4w/tioTOmS0GLejKSesHYXuz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbq9oBT%2FbtsNJPwLZ4w%2FtioTOmS0GLejKSesHYXuz1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;327&quot; height=&quot;395&quot; data-origin-width=&quot;526&quot; data-origin-height=&quot;636&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;ECS의 데이터 지속성&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;여러 컨테이너가 유지 되기 위해서는 공유할 수 있는 Data Volume이 필요한데 가장 잘 사용되는 서비스가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;EFS이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;700&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BtNW0/btsNKrWuDBp/OdqCEO9JTYkTHJ4ptPyXD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BtNW0/btsNKrWuDBp/OdqCEO9JTYkTHJ4ptPyXD0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BtNW0/btsNKrWuDBp/OdqCEO9JTYkTHJ4ptPyXD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBtNW0%2FbtsNKrWuDBp%2FOdqCEO9JTYkTHJ4ptPyXD0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;285&quot; height=&quot;390&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;700&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;EFS는 Lauch Type과 상관없이 호환이 된다는 장점이 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히 Fargate + EFS가 합쳐졌을 때는 완전한 Serverless가 완성이 된다. 또한 EFS는 Multi AZ에서 호환이 가능하기 때문에 &lt;span style=&quot;background-color: #ffffff; color: #373c46; text-align: left;&quot;&gt;컨테이너의 영구 스토리지로 사용이 가능하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #373c46; text-align: left;&quot;&gt;(다만, S3는 EFS로 마운트 불가능)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;ECS Auto Scaling&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;ECS에서 Auto Scaling을 위해 총 3가지를 기준으로 Scaling이 가능하고 이때 AWS Application Auto Scaling을 사용한다.&lt;/p&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. CPU 사용률&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;3. ALB 지표 관련 Request 수&lt;/p&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에서 Target을 통해 &lt;b&gt;Target Tracking&lt;/b&gt;이 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 외에도 단계적으로 Scaling하는 &lt;b&gt;Step Scaling&lt;/b&gt;, 스케줄된 &lt;b&gt;Scheduled Scaling&lt;/b&gt;이 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Auto Scaling EC2 in Ec2 Launch Type&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;Fargate Lauch Type에서는 AWS가 전부 다 관리해주기 때문에 Auto Scaling 설정이 필요 없지만, EC2 lauch Type에서는 아래와 같이 직접 Capacity Provider를 통해 Auto Scaling Group에 알려 EC2를 스케일링 해줄 필요가 있다.&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;592&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o1OXM/btsNKzfSkWi/y2WekaEOfrJ8mg237Y6cOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o1OXM/btsNKzfSkWi/y2WekaEOfrJ8mg237Y6cOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o1OXM/btsNKzfSkWi/y2WekaEOfrJ8mg237Y6cOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo1OXM%2FbtsNKzfSkWi%2Fy2WekaEOfrJ8mg237Y6cOK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;333&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;592&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;ECS Task를 Invoke하는 방법&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;&lt;b&gt;1. ECS tasks invoked by Event Bridge&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;말 그대로 특정 Event가 발생하면 실행되는 것이다.&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;592&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/djd1xX/btsNKs8TUoe/EGA3oLo8evTJEaKHWodJOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/djd1xX/btsNKs8TUoe/EGA3oLo8evTJEaKHWodJOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/djd1xX/btsNKs8TUoe/EGA3oLo8evTJEaKHWodJOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdjd1xX%2FbtsNKs8TUoe%2FEGA3oLo8evTJEaKHWodJOK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;599&quot; height=&quot;277&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;592&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;2. ECS tasks invoked by Event Bridge Schedule&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정 Schedule를 통해 실행이 된다.(예: cron과 같이 특정 주기마다 실행)&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;433&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pB5AR/btsNKsODPjd/P3XoULxzk8RgCHp3HJmOQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pB5AR/btsNKsODPjd/P3XoULxzk8RgCHp3HJmOQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pB5AR/btsNKsODPjd/P3XoULxzk8RgCHp3HJmOQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpB5AR%2FbtsNKsODPjd%2FP3XoULxzk8RgCHp3HJmOQk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;517&quot; height=&quot;175&quot; data-origin-width=&quot;1280&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;blockquote data-ke-style=&quot;style2&quot;&gt;참고 자료&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.udemy.com/course/best-aws-certified-solutions-architect-associate/learn/quiz/5384010#overview&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.udemy.com/course/best-aws-certified-solutions-architect-associate/learn/quiz/5384010#overview&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://choiblog.tistory.com/191&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://choiblog.tistory.com/191&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1746259967133&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;AWS 컨테이너 ECS, Fargate, ECR과 EKS&quot; data-og-description=&quot;컨테이너 Docker 앱 배포를 위한 소프트웨어 개발 플랫폼 컨테이너에 앱이 패키징되는데 컨테이너는 표준화되어있어 어느 OS에서나 같은 방식으로 실행 가능 기기와 상관없이 실행 가능 호환성 &quot; data-og-host=&quot;choiblog.tistory.com&quot; data-og-source-url=&quot;https://choiblog.tistory.com/191&quot; data-og-url=&quot;https://choiblog.tistory.com/191&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/xHoAp/hyYM0Ub9mp/UTVMcx37hJkVsMpWxTS9zk/img.png?width=800&amp;amp;height=311&amp;amp;face=0_0_800_311,https://scrap.kakaocdn.net/dn/yvMZw/hyYMQKOxdy/KJSakZMbKZqeHexTZSZaM0/img.png?width=800&amp;amp;height=311&amp;amp;face=0_0_800_311,https://scrap.kakaocdn.net/dn/LTeHh/hyYMTAKGbo/HY6zZI2E82FJQXV6hNXDN0/img.png?width=1280&amp;amp;height=658&amp;amp;face=0_0_1280_658&quot;&gt;&lt;a href=&quot;https://choiblog.tistory.com/191&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://choiblog.tistory.com/191&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/xHoAp/hyYM0Ub9mp/UTVMcx37hJkVsMpWxTS9zk/img.png?width=800&amp;amp;height=311&amp;amp;face=0_0_800_311,https://scrap.kakaocdn.net/dn/yvMZw/hyYMQKOxdy/KJSakZMbKZqeHexTZSZaM0/img.png?width=800&amp;amp;height=311&amp;amp;face=0_0_800_311,https://scrap.kakaocdn.net/dn/LTeHh/hyYMTAKGbo/HY6zZI2E82FJQXV6hNXDN0/img.png?width=1280&amp;amp;height=658&amp;amp;face=0_0_1280_658');&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;AWS 컨테이너 ECS, Fargate, ECR과 EKS&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;컨테이너 Docker 앱 배포를 위한 소프트웨어 개발 플랫폼 컨테이너에 앱이 패키징되는데 컨테이너는 표준화되어있어 어느 OS에서나 같은 방식으로 실행 가능 기기와 상관없이 실행 가능 호환성&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;choiblog.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;</description>
      <category>AWS</category>
      <author>무엇을해야하는지</author>
      <guid isPermaLink="true">https://what2dochris.tistory.com/86</guid>
      <comments>https://what2dochris.tistory.com/86#entry86comment</comments>
      <pubDate>Sat, 3 May 2025 17:12:51 +0900</pubDate>
    </item>
    <item>
      <title>ArgoCD Sync Policy와 Sync 방식</title>
      <link>https://what2dochris.tistory.com/85</link>
      <description>&lt;blockquote data-ke-style=&quot;style2&quot;&gt;ArgoCD 란?&lt;/blockquote&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;225&quot; data-origin-height=&quot;225&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IgiMF/btsNKf9KCv1/EtmPRVdf5SOrBEIgh4fLq0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IgiMF/btsNKf9KCv1/EtmPRVdf5SOrBEIgh4fLq0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IgiMF/btsNKf9KCv1/EtmPRVdf5SOrBEIgh4fLq0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIgiMF%2FbtsNKf9KCv1%2FEtmPRVdf5SOrBEIgh4fLq0%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;225&quot; height=&quot;225&quot; data-origin-width=&quot;225&quot; data-origin-height=&quot;225&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;Argo CD는 Kubernetes 환경에서 &lt;b&gt;GitOps 방식으로 애플리케이션을 배포하고 관리하는 툴&lt;/b&gt;이다. Git 저장소에 선언된 Kubernetes 리소스(YAML 등)를 기준으로 클러스터 상태를 지속적으로 감시하고, 자동 또는 수동으로 동기화하여 클러스터 상태를 Git 상태와 일치시킨다.&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;실제 이전에 Kubernetes에 ArgoCD를 배포하여 롤링배포를 구현한 경험이 있는데 자세한 내용은 아래 포스팅 참고.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://what2dochris.tistory.com/15&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://what2dochris.tistory.com/15&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1746246726817&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Kubernetes에 ArgoCD 배포하기&quot; data-og-description=&quot;ARGOCD 란ArgoCD는 Kubernetes의 애플리케이션 배포를 관리하고 자동화하는 오픈 소스 도구이다.GitOps 원칙을 기반으로 하여, Git 저장소를 애플리케이션의 '단일 진리의 소스'로 사용하고, 이 저장소에 &quot; data-og-host=&quot;what2dochris.tistory.com&quot; data-og-source-url=&quot;https://what2dochris.tistory.com/15&quot; data-og-url=&quot;https://what2dochris.tistory.com/15&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cNj2h3/hyYMQYhMKD/c6Qt7VywMOGi8TdMNVF4b0/img.jpg?width=225&amp;amp;height=225&amp;amp;face=0_0_225_225,https://scrap.kakaocdn.net/dn/zwPZB/hyYM2EqrV3/NMLWV04wtfW4JmGxwskf91/img.jpg?width=225&amp;amp;height=225&amp;amp;face=0_0_225_225,https://scrap.kakaocdn.net/dn/d8VyM9/hyYPqErqCI/kwIUcPyHlAckLS8p2okxR1/img.png?width=2968&amp;amp;height=1582&amp;amp;face=0_0_2968_1582&quot;&gt;&lt;a href=&quot;https://what2dochris.tistory.com/15&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://what2dochris.tistory.com/15&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cNj2h3/hyYMQYhMKD/c6Qt7VywMOGi8TdMNVF4b0/img.jpg?width=225&amp;amp;height=225&amp;amp;face=0_0_225_225,https://scrap.kakaocdn.net/dn/zwPZB/hyYM2EqrV3/NMLWV04wtfW4JmGxwskf91/img.jpg?width=225&amp;amp;height=225&amp;amp;face=0_0_225_225,https://scrap.kakaocdn.net/dn/d8VyM9/hyYPqErqCI/kwIUcPyHlAckLS8p2okxR1/img.png?width=2968&amp;amp;height=1582&amp;amp;face=0_0_2968_1582');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Kubernetes에 ArgoCD 배포하기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;ARGOCD 란ArgoCD는 Kubernetes의 애플리케이션 배포를 관리하고 자동화하는 오픈 소스 도구이다.GitOps 원칙을 기반으로 하여, Git 저장소를 애플리케이션의 '단일 진리의 소스'로 사용하고, 이 저장소에&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;what2dochris.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;blockquote data-ke-style=&quot;style2&quot;&gt;ArgoCD Sync&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;ArgoCD Sync란 git에 올라와있는 파일을 argocd를 통해 클러스터에 동기화 하는 작업을 뜻한다. 하지만 git manifest file이 변경되었다고 해서 바로 Pod에 적용되지는 않는다. ArgoCD는 &lt;b&gt;Default로 3분에 한번씩 git을 감지&lt;/b&gt;하기에 변경이 되었더라도 3분이라는 period를 기다려야한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;826&quot; data-origin-height=&quot;385&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xU38b/btsNKAFNlPa/NrubL2uZI4P74YfXFvE0x1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xU38b/btsNKAFNlPa/NrubL2uZI4P74YfXFvE0x1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xU38b/btsNKAFNlPa/NrubL2uZI4P74YfXFvE0x1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxU38b%2FbtsNKAFNlPa%2FNrubL2uZI4P74YfXFvE0x1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;708&quot; height=&quot;330&quot; data-origin-width=&quot;826&quot; data-origin-height=&quot;385&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;물론 ArgoCD UI에서 강제로 Refresh를 통해 바로 Sync 시켜줄수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-05-03 오후 1.38.30.png&quot; data-origin-width=&quot;2182&quot; data-origin-height=&quot;568&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/O4bOv/btsNKgt6GkN/Tezo4AGCZxCYVr9qvazxa0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/O4bOv/btsNKgt6GkN/Tezo4AGCZxCYVr9qvazxa0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/O4bOv/btsNKgt6GkN/Tezo4AGCZxCYVr9qvazxa0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FO4bOv%2FbtsNKgt6GkN%2FTezo4AGCZxCYVr9qvazxa0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2182&quot; height=&quot;568&quot; data-filename=&quot;스크린샷 2025-05-03 오후 1.38.30.png&quot; data-origin-width=&quot;2182&quot; data-origin-height=&quot;568&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;Refresh를 개발자가 눌러주면 3분을 기다리는 것이 아닌 바로 상태 감지를 통해 변경시켜줄 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;ArgoCD Sync Status&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;위 과정에서 Refresh, 혹은 git과 pod의 상태를 감지하고 나면 Synce 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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Git 상태와 Kuberenetes Cluster의 현재 상태가 같다는 &lt;b&gt;Sync OK 상태&lt;/b&gt;와 두가지가 다르다는 &lt;b&gt;OutOfSync&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;1280&quot; data-origin-height=&quot;514&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BnG0h/btsNKYfpCuR/tNeyGMdknnIEsjdcKvvYCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BnG0h/btsNKYfpCuR/tNeyGMdknnIEsjdcKvvYCk/img.png&quot; data-alt=&quot;https://github.com/argoproj/argo-cd/issues/12526&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BnG0h/btsNKYfpCuR/tNeyGMdknnIEsjdcKvvYCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBnG0h%2FbtsNKYfpCuR%2FtNeyGMdknnIEsjdcKvvYCk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;768&quot; height=&quot;308&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;514&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://github.com/argoproj/argo-cd/issues/12526&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;826&quot; data-origin-height=&quot;184&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tYj3q/btsNJDXCJal/Ci3WkJ6mFoKcxnj8nO9y30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tYj3q/btsNJDXCJal/Ci3WkJ6mFoKcxnj8nO9y30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tYj3q/btsNJDXCJal/Ci3WkJ6mFoKcxnj8nO9y30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtYj3q%2FbtsNJDXCJal%2FCi3WkJ6mFoKcxnj8nO9y30%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;168&quot; data-origin-width=&quot;826&quot; data-origin-height=&quot;184&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;style2&quot;&gt;Sync Policy&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;위 상황에서 만약 Out of Sync 상태가 떴다고 가정했을때 개발자가 취할 수 있는 방식은 두가지가 있다.&lt;/p&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;1. Auto Sync:&lt;/b&gt; 자동 Sync로써 Out Of Sync, 즉 변경점이 확인되었을때 자동으로 클러스터에 변경된 부분을 수정해주는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. Manual Sync:&lt;/b&gt; 수동 Sync로써 변경점이 확인되었을때 개발자가 직접 ArgoCD UI에서 Sync 버튼을 눌러 수동으로 변경된 부분을 수정해주는 것이다.&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;923&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TSAqm/btsNJWCzFmR/24Eb1GR7PrkOs4DvPE5gWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TSAqm/btsNJWCzFmR/24Eb1GR7PrkOs4DvPE5gWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TSAqm/btsNJWCzFmR/24Eb1GR7PrkOs4DvPE5gWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTSAqm%2FbtsNJWCzFmR%2F24Eb1GR7PrkOs4DvPE5gWK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;563&quot; height=&quot;244&quot; data-origin-width=&quot;923&quot; data-origin-height=&quot;400&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;이런식으로 하면 아래와 같이 Git actions - ArgoCD - Kubernetes를 통한 CICD가 비로소 완성이 되었다고 할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;814&quot; data-origin-height=&quot;428&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kBtdc/btsNKpj1fPa/n14DbxPWkRWgKPzaMiL020/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kBtdc/btsNKpj1fPa/n14DbxPWkRWgKPzaMiL020/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kBtdc/btsNKpj1fPa/n14DbxPWkRWgKPzaMiL020/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkBtdc%2FbtsNKpj1fPa%2Fn14DbxPWkRWgKPzaMiL020%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;323&quot; height=&quot;170&quot; data-origin-width=&quot;814&quot; data-origin-height=&quot;428&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;style2&quot;&gt;추가: ArgoCD Sync Alert to Slack&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;Hook을 생성하여 ArgoCD가 Sync 될때마다 Slack으로 알람을 보내줄 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1746247749795&quot; class=&quot;go&quot; data-ke-language=&quot;go&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: batch/v1
kind: Job
metadata:
  generateName: app-slack-notification-
  annotations:
    argocd.argoproj.io/hook: PostSync
    argocd.argoproj.io/hook-delete-policy: HookSucceeded
spec:
  template:
    spec:
      containers:
      - name: slack-notification
        image: curlimages/curl
        command:
          - &quot;curl&quot;
          - &quot;-X&quot;
          - &quot;POST&quot;
          - &quot;--data-urlencode&quot;
          - &quot;payload={\&quot;channel\&quot;: \&quot;#somechannel\&quot;, \&quot;username\&quot;: \&quot;hello\&quot;, \&quot;text\&quot;: \&quot;App Sync succeeded\&quot;, \&quot;icon_emoji\&quot;: \&quot;:ghost:\&quot;}&quot;
          - &quot;https://hooks.slack.com/services/...&quot;
      restartPolicy: Never
  backoffLimit: 2&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;해당 Yaml파일을 통해 alert를 보내줄 수 있는데 어렵지 않아서 아래 공식문서를 참고하여 금방 구현할 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://argo-cd.readthedocs.io/en/stable/user-guide/resource_hooks/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://argo-cd.readthedocs.io/en/stable/user-guide/resource_hooks/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;참고자료&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://malwareanalysis.tistory.com/408&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://malwareanalysis.tistory.com/408&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1746247825158&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;ArgoCD 6편 - Sync 설정&quot; data-og-description=&quot;안녕하세요. 이 글은 ArgoCD시리즈입니다. git에 의도된 상태를 쿠버네티스 클러스터에 동기화 할 때, 필요한 개념과 자주 사용하는 기능을 설명합니다. 영상: https://youtu.be/XBcoj3-pjDA 1. Refresh Period 1.&quot; data-og-host=&quot;malwareanalysis.tistory.com&quot; data-og-source-url=&quot;https://malwareanalysis.tistory.com/408&quot; data-og-url=&quot;https://malwareanalysis.tistory.com/408&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/qCnFJ/hyYM3QEBvL/yNqpKSwEiphAczSs28i5mk/img.png?width=800&amp;amp;height=372&amp;amp;face=0_0_800_372,https://scrap.kakaocdn.net/dn/c6z2Rr/hyYMSu2Dys/ePyvpuf20KuYNFYLcQr7kk/img.png?width=800&amp;amp;height=372&amp;amp;face=0_0_800_372,https://scrap.kakaocdn.net/dn/4ggyz/hyYM16z21Z/laqJfYuPLqQyAo0vowP1a1/img.png?width=1527&amp;amp;height=609&amp;amp;face=0_0_1527_609&quot;&gt;&lt;a href=&quot;https://malwareanalysis.tistory.com/408&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://malwareanalysis.tistory.com/408&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/qCnFJ/hyYM3QEBvL/yNqpKSwEiphAczSs28i5mk/img.png?width=800&amp;amp;height=372&amp;amp;face=0_0_800_372,https://scrap.kakaocdn.net/dn/c6z2Rr/hyYMSu2Dys/ePyvpuf20KuYNFYLcQr7kk/img.png?width=800&amp;amp;height=372&amp;amp;face=0_0_800_372,https://scrap.kakaocdn.net/dn/4ggyz/hyYM16z21Z/laqJfYuPLqQyAo0vowP1a1/img.png?width=1527&amp;amp;height=609&amp;amp;face=0_0_1527_609');&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;ArgoCD 6편 - Sync 설정&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이 글은 ArgoCD시리즈입니다. git에 의도된 상태를 쿠버네티스 클러스터에 동기화 할 때, 필요한 개념과 자주 사용하는 기능을 설명합니다. 영상: https://youtu.be/XBcoj3-pjDA 1. Refresh Period 1.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;malwareanalysis.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;a href=&quot;https://argo-cd.readthedocs.io/en/stable/user-guide/resource_hooks/&quot;&gt;https://argo-cd.readthedocs.io/en/stable/user-guide/resource_hooks/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>DevOps&amp;amp;Cloud</category>
      <author>무엇을해야하는지</author>
      <guid isPermaLink="true">https://what2dochris.tistory.com/85</guid>
      <comments>https://what2dochris.tistory.com/85#entry85comment</comments>
      <pubDate>Sat, 3 May 2025 13:50:38 +0900</pubDate>
    </item>
    <item>
      <title>AWS 통합&amp;amp;메시징: SNS란 무엇이고 언제 사용해야하는가</title>
      <link>https://what2dochris.tistory.com/84</link>
      <description>&lt;blockquote data-ke-style=&quot;style2&quot;&gt;SNS란&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;Pub/Sub 메시징 서비스로 하나의 메시지를 여러 수신자에게 동시에 전송하는 서비스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Publisher&lt;/b&gt;: 메시지를 주제로 게시&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Subscriber&lt;/b&gt;: 많은 구독자들은 SNS 토픽에 따라 메시지를 수신하고 보관한다.&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;487&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzIsa2/btsNJ2aKEEM/3olfZ7AuDw8n0cGzkrLuk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzIsa2/btsNJ2aKEEM/3olfZ7AuDw8n0cGzkrLuk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzIsa2/btsNJ2aKEEM/3olfZ7AuDw8n0cGzkrLuk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzIsa2%2FbtsNJ2aKEEM%2F3olfZ7AuDw8n0cGzkrLuk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;193&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;487&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;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #373c46; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;SNS에서 이벤트 생산자는 한 SNS 토픽에만 메시지를 보낸다&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;수신자 또는 구독자는 해당 토픽와 관련된 메시지를 받는 역할이고 생성에 제한이 없다&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;하나의 SNS 토픽 구독자는 해당 토픽으로 전송된 모든 메시지를 받으며 메시지 필터링도 있다&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-05-02 오후 4.49.05.png&quot; data-origin-width=&quot;1532&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cUgJGc/btsNIh8EC54/OstcWFk1t8RRzgVLbkwc6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cUgJGc/btsNIh8EC54/OstcWFk1t8RRzgVLbkwc6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cUgJGc/btsNIh8EC54/OstcWFk1t8RRzgVLbkwc6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcUgJGc%2FbtsNIh8EC54%2FOstcWFk1t8RRzgVLbkwc6k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;557&quot; height=&quot;175&quot; data-filename=&quot;스크린샷 2025-05-02 오후 4.49.05.png&quot; data-origin-width=&quot;1532&quot; data-origin-height=&quot;480&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;style2&quot;&gt;SNS - Publish 하는 방법&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;&lt;b&gt;1. SDK Topic Publish:&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Topic을 만들고 여러개의 구독을 만든 뒤 토픽을 공개. 해당하는 모든 구독자들이 토픽 메시지를 받게됨&lt;/p&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;2. Direct Publish:&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;플랫폼 애플리케이션과 Endpoint를 만들고 플랫폼 Endpoint에 게시&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;SNS + SQS: Fan Out 패턴&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;SNS와 SQS를 연결함으로써 Fan Out이라는 패턴이 구현 가능하다. 그리고 이는 가장 대표적인 시나리오이다.&lt;/p&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;FanOut이란?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하나의 메시지를 여러 SQS 대기열로 보낸다면 많은 문제가 발생할 수 있기에 Fan Out Pattern을 사용해서 원하는 만큼의 SQS 대기열이 SNS Topic을 구독하도록 설정&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;226&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k4ego/btsNKhS4SEm/3m4nCJRsq8YEWowOMWiLOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k4ego/btsNKhS4SEm/3m4nCJRsq8YEWowOMWiLOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k4ego/btsNKhS4SEm/3m4nCJRsq8YEWowOMWiLOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk4ego%2FbtsNKhS4SEm%2F3m4nCJRsq8YEWowOMWiLOK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;617&quot; height=&quot;160&quot; data-origin-width=&quot;872&quot; data-origin-height=&quot;226&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;장점&lt;/b&gt;:&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;a. 완전히 분리된 모델로 만들며 애플리케이션 문제로 인한 데이터 손실이 없다&lt;br /&gt;2. SQS로 작업을 다시 시도할 수 있고 데이터 지속성, 지연성 처리도 수행 가능하다&lt;br /&gt;3. 많은 SQS 대기열 추가 가능&lt;br /&gt;4. SQS 엑세스 정책에서 SNS 주제가 SQS 큐에 메시지를 작성할 수 있도록 허용해야한다&lt;br /&gt;5. 리전간 전달 또한 가능&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;SNS - FIFO Topic&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;Topic의 메시지 순서를 지정하는 FIFO 기능 존재하고 SQS FIFO와 비슷하게 그룹ID에 따라 순서를 매겨 전송&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-05-02 오후 5.07.37.png&quot; data-origin-width=&quot;1750&quot; data-origin-height=&quot;288&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkEGQD/btsNIfbZq9p/UV8fkfYxiZAeFR9UljnCWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkEGQD/btsNIfbZq9p/UV8fkfYxiZAeFR9UljnCWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkEGQD/btsNIfbZq9p/UV8fkfYxiZAeFR9UljnCWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkEGQD%2FbtsNIfbZq9p%2FUV8fkfYxiZAeFR9UljnCWk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;769&quot; height=&quot;127&quot; data-filename=&quot;스크린샷 2025-05-02 오후 5.07.37.png&quot; data-origin-width=&quot;1750&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;장점:&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;1. 중복 제거가 가능하다.&lt;br /&gt;2. 그룹 ID에 따라 순서대로 전송 가능&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;&lt;b&gt;SNS FIFO + SQS FIFO의 Fan Out 수행 가능&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-05-02 오후 5.10.18.png&quot; data-origin-width=&quot;1308&quot; data-origin-height=&quot;410&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nmsEc/btsNJa8Trp6/8KUP6puOdOuLVu1o8Y0YMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nmsEc/btsNJa8Trp6/8KUP6puOdOuLVu1o8Y0YMK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nmsEc/btsNJa8Trp6/8KUP6puOdOuLVu1o8Y0YMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnmsEc%2FbtsNJa8Trp6%2F8KUP6puOdOuLVu1o8Y0YMK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;634&quot; height=&quot;199&quot; data-filename=&quot;스크린샷 2025-05-02 오후 5.10.18.png&quot; data-origin-width=&quot;1308&quot; data-origin-height=&quot;410&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;SNS - Messaging Filtering&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;SNS Topic을 구독하면서 Topic에 전송되는 메시지는 Json 정책으로 필터링 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, Json 필터링으로 SNS를 구독한 사람들에게 필요에 맞는 메시지만 전송 가능하다.&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;494&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5vVAJ/btsNKfuiiPH/BlHgrSjkR2Nm7qBS6m4U10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5vVAJ/btsNKfuiiPH/BlHgrSjkR2Nm7qBS6m4U10/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5vVAJ/btsNKfuiiPH/BlHgrSjkR2Nm7qBS6m4U10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5vVAJ%2FbtsNKfuiiPH%2FBlHgrSjkR2Nm7qBS6m4U10%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;718&quot; height=&quot;277&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;494&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;style2&quot;&gt;SNS 대표 사용 사례&lt;/blockquote&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;802&quot; data-start=&quot;740&quot;&gt;장애/이벤트 발생 시 실시간 알림 (예: CloudWatch Alarm &amp;rarr; SNS &amp;rarr; Slack/Email)&lt;/li&gt;
&lt;li data-end=&quot;829&quot; data-start=&quot;803&quot;&gt;모바일 푸시 알림 (FCM, APNs 연동)&lt;/li&gt;
&lt;li data-end=&quot;860&quot; data-start=&quot;830&quot;&gt;주문 완료 후 사용자 및 내부 시스템에 동시에 알림&lt;/li&gt;
&lt;li data-end=&quot;882&quot; data-start=&quot;861&quot;&gt;마이크로서비스 간 브로드캐스트 통신&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>AWS</category>
      <author>무엇을해야하는지</author>
      <guid isPermaLink="true">https://what2dochris.tistory.com/84</guid>
      <comments>https://what2dochris.tistory.com/84#entry84comment</comments>
      <pubDate>Fri, 2 May 2025 17:15:10 +0900</pubDate>
    </item>
  </channel>
</rss>