<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>알로그</title>
    <link>https://hungc.tistory.com/</link>
    <description>여러가지 로그 남기기.</description>
    <language>ko</language>
    <pubDate>Tue, 30 Jun 2026 13:50:45 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>알로그</managingEditor>
    <image>
      <title>알로그</title>
      <url>https://tistory1.daumcdn.net/tistory/2588089/attach/87cc2f565b524e97a2f737161a04eb95</url>
      <link>https://hungc.tistory.com</link>
    </image>
    <item>
      <title>정보관리기술사 답안지 작성 팁</title>
      <link>https://hungc.tistory.com/263</link>
      <description>&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;h3 data-ke-size=&quot;size23&quot;&gt;공통&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리드문 작성&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;간글 작성 (페이지 레이아웃 고려하기 위해)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;가독성, 글씨&lt;/li&gt;
&lt;li&gt;3단락 표 (구분, 기술요소, 설명)&lt;/li&gt;
&lt;li&gt;법 문제 작성 시 몇 조항까지 작성&lt;/li&gt;
&lt;li&gt;빈 공간 없이 작성&lt;/li&gt;
&lt;li&gt;표를 빠르게 작성할 수 있도록 자에 공간 미리 표시&lt;/li&gt;
&lt;li&gt;절차도 작성 시 그림에 넘버링&lt;/li&gt;
&lt;li&gt;마지막 제언은 한계 대신 극복방안, 제언 등으로 작성&lt;/li&gt;
&lt;li&gt;계산 문제는 자신있을때 들어가기&lt;/li&gt;
&lt;li&gt;법 문제는 조항까지 작성해야 함&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1교시&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정의, 키워드 핵심&lt;/li&gt;
&lt;li&gt;3단락 작성 (시간 배분 고려)&lt;/li&gt;
&lt;li&gt;문제당 1.2 페이지 이상, 총 12 페이지 이상 작성&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2-4교시&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;논리적으로 흐름이 자연스럽도록 작성&lt;/li&gt;
&lt;li&gt;3 또는 4단락 작성 (시간 배분 고려)&lt;/li&gt;
&lt;li&gt;문제당 3 페이지 이상, 총 13 페이지 이상 작성&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;마지막 단락 제언으로 쓰기 좋은 단어&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI, 클라우드, 보안, 법/제도, 프로세스, 전문가, 교육 등&lt;/p&gt;</description>
      <category>정보관리기술사</category>
      <category>정보관리기술사</category>
      <category>정보관리기술사 팁</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/263</guid>
      <comments>https://hungc.tistory.com/263#entry263comment</comments>
      <pubDate>Sun, 20 Jul 2025 23:22:18 +0900</pubDate>
    </item>
    <item>
      <title>하나카드 최대 25만원 캐시백</title>
      <link>https://hungc.tistory.com/262</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;롯데카드로 캐시백을 받기 위해 LOCA 카드를 신청했었는데, 환불을 고려 못하는 바람에 몇 천원 차이로 실적 충족을 못해서 캐시백 조건을 실패했다..&lt;br&gt;그래서 다음 캐시백을 뭘 할까 고민하다가 &lt;b&gt;카카오페이에서 진행하는 하나카드 최대 25만원 이벤트&lt;/b&gt;를 바로 신청했다.&lt;br&gt;&amp;nbsp;&lt;br&gt;&lt;span style=&quot;color: #333333;&quot;&gt;대상은&amp;nbsp;&lt;/span&gt;&lt;b&gt;JADE Classic 카드&lt;/b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;와&amp;nbsp;&lt;/span&gt;&lt;b&gt;원더카드&lt;/b&gt;인데, 혜택이 원더카드가 더 잘 맞아서 원더카드로 신청했다.&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;원더카드 혜택&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;아파트관리비, 전기세, 가스비 10% 청구할인&lt;/li&gt;&lt;li&gt;병원/약국 10% 청구할인&lt;/li&gt;&lt;li&gt;주유 10% 청구할인&lt;/li&gt;&lt;li&gt;커피 10% 청구할인&lt;/li&gt;&lt;li&gt;대중교통, 카카오 T, UT 10% 청구할인&lt;/li&gt;&lt;/ul&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;각 혜택은 한도가 있음 참고&lt;/p&gt;&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;2097&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPLvD3/btsOYaT3Cka/dcqwmIWbmJnHEa0pIXPkmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPLvD3/btsOYaT3Cka/dcqwmIWbmJnHEa0pIXPkmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPLvD3/btsOYaT3Cka/dcqwmIWbmJnHEa0pIXPkmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPLvD3%2FbtsOYaT3Cka%2FdcqwmIWbmJnHEa0pIXPkmK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;547&quot; height=&quot;980&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;2097&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;이벤트 기간은 6월 1일부터 30일까지만 사실상 종료하기 전까지 매 달 진행하는 것 같다. (7월도 진행)&lt;br&gt;&amp;nbsp;&lt;br&gt;첫 번째 혜택은 6월 30일까지 이벤트 응모를 하고 나서 7월 15일까지 10만원 이상 이용 시 7만 카카오페이포인트와 3만 캐시백이 8월 31일 이내에 지급된다.&lt;br&gt;&amp;nbsp;&lt;br&gt;두 번째 혜택은 25년 8월부터 26년 5월까지 매월 3만원 이상 이용 시 1.5만원 캐시백이 지급되는 구조라 꽤 장기간동안 사용을 해야 하는 단점이 존재하지만 금액이 적어서 크게 상관없어 보였다.&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7i5V1/btsOZjoVAHz/iWmM0CsIwu2hNlwXVVTDwk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7i5V1/btsOZjoVAHz/iWmM0CsIwu2hNlwXVVTDwk/img.png&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;1726&quot; style=&quot;width: 42.5829%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7i5V1/btsOZjoVAHz/iWmM0CsIwu2hNlwXVVTDwk/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7i5V1%2FbtsOZjoVAHz%2FiWmM0CsIwu2hNlwXVVTDwk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;1726&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l1VhY/btsOWLU0cfu/Qx1zcXflWNicj6Ei2MgGW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l1VhY/btsOWLU0cfu/Qx1zcXflWNicj6Ei2MgGW0/img.png&quot; data-origin-width=&quot;1137&quot; data-origin-height=&quot;1324&quot; style=&quot;width: 56.2543%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l1VhY/btsOWLU0cfu/Qx1zcXflWNicj6Ei2MgGW0/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl1VhY%2FbtsOWLU0cfu%2FQx1zcXflWNicj6Ei2MgGW0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1137&quot; height=&quot;1324&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;혜택 1은 충족 완료했으니 캐시백을 기다려보자..!&lt;/p&gt;</description>
      <category>Daily</category>
      <category>원더카드</category>
      <category>카드캐시백</category>
      <category>카카오페이 캐시백</category>
      <category>캐시백</category>
      <category>하나카드</category>
      <category>하나카드캐시백</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/262</guid>
      <comments>https://hungc.tistory.com/262#entry262comment</comments>
      <pubDate>Tue, 24 Jun 2025 10:38:58 +0900</pubDate>
    </item>
    <item>
      <title>정보관리기술사 기본반 수업 끝</title>
      <link>https://hungc.tistory.com/261</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;어느새 정보관리기술사 자격증 준비를 위해 등록했던 학원의 기본필수반 9주가 지났다.&lt;br /&gt;&lt;a href=&quot;https://hungc.tistory.com/231&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span&gt;2025.04.16 - [정보관리기술사] - 정보관리기술사(Professional Engineer Information Management) 준비&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;opengraph&quot; data-og-title=&quot;정보관리기술사(Professional Engineer Information Management) 준비&quot; data-ke-align=&quot;alignCenter&quot; data-og-description=&quot;육아휴직 중 어떻게하면 좀 더 의미있게 시간을 보낼 수 있을까 고민하다가 정보관리기술사(Professional Engineer Information Management)를 준비하기로 했다. 참고로 정보관리기술사란 한국산업인력공단&quot; data-og-host=&quot;hungc.tistory.com&quot; data-og-source-url=&quot;https://hungc.tistory.com/231&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cqx5tI/hyY8LnPpkg/KnXFAbmn5dsFtcn1mQ6jzK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/Let5h/hyY71K8BHb/0GkzCMICGCrWMHgzxfPwYK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/j9MGG/hyY5gbWm9e/uOVzs7gBQ5YeNEvaHRTZU0/img.jpg?width=1920&amp;amp;height=1275&amp;amp;face=0_0_1920_1275&quot; data-og-url=&quot;https://hungc.tistory.com/231&quot;&gt;&lt;a href=&quot;https://hungc.tistory.com/231&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://hungc.tistory.com/231&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cqx5tI/hyY8LnPpkg/KnXFAbmn5dsFtcn1mQ6jzK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/Let5h/hyY71K8BHb/0GkzCMICGCrWMHgzxfPwYK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/j9MGG/hyY5gbWm9e/uOVzs7gBQ5YeNEvaHRTZU0/img.jpg?width=1920&amp;amp;height=1275&amp;amp;face=0_0_1920_1275');&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;정보관리기술사(Professional Engineer Information Management) 준비&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;육아휴직 중 어떻게하면 좀 더 의미있게 시간을 보낼 수 있을까 고민하다가 정보관리기술사(Professional Engineer Information Management)를 준비하기로 했다. 참고로 정보관리기술사란 한국산업인력공단&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;hungc.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;br /&gt;보통 정보관리기술사 학원을 등록하게 되면 기본반을 거쳐서 심화반을 합격할 때까지 돌리게 되는데,&lt;br /&gt;내가 등록한 학원의 경우 기본반이 9주였다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;첫 수업을 듣고 저녁에 집에 가면서 이 짓을 어떻게 계속 하지? 했는데 참 시간 빠르다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;아이랑 저녁을 보내기 위해 그다음부턴 5시쯤 집에 가긴 했지만 결석은 한 번도 하지 않았고 오전 시험은 모두 참석했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수업은 온라인으로 들을 수 있지만 시험 준비와 멘토님으로부터 시험 피드백은 중요하기 때문에 꼭 참석하는것이 좋다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lVjdQ/btsOxort92O/k0Z2Lxyln1SmRXLItkl4Ek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lVjdQ/btsOxort92O/k0Z2Lxyln1SmRXLItkl4Ek/img.png&quot; data-alt=&quot;집에 가는 길&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lVjdQ/btsOxort92O/k0Z2Lxyln1SmRXLItkl4Ek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlVjdQ%2FbtsOxort92O%2Fk0Z2Lxyln1SmRXLItkl4Ek%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;4032&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;집에 가는 길&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 드디어 지난 주가 마지막 9주차였고 마지막 수업에는 200분동안 Final Test 시험을 본다.&lt;br /&gt;멘토님께서 시험에 대한 힌트도 어느정도는 알려 주고 등수가 크게 중요하진 않지만 다행히 목표한대로 1등으로 졸업을 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;9주동안 고생한 기념으로 인스파이어 호캉스에서 이틀은 신나게 놀고 다녀와서 바로 심화반에 등록했다.&lt;br /&gt;우선은 8월 시험을 목표로 가보자!&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>정보관리기술사</category>
      <category>정보관리기술사</category>
      <category>정보관리기술사 기본필수반</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/261</guid>
      <comments>https://hungc.tistory.com/261#entry261comment</comments>
      <pubDate>Thu, 12 Jun 2025 09:42:09 +0900</pubDate>
    </item>
    <item>
      <title>OWASP Top 10</title>
      <link>https://hungc.tistory.com/258</link>
      <description>&lt;p data-end=&quot;237&quot; data-start=&quot;165&quot; data-ke-size=&quot;size16&quot;&gt;웹 애플리케이션을 개발하거나 운영 중이라면 반드시 알아야 할 보안 지침이 있습니다.&lt;br /&gt;바로 &lt;b&gt;OWASP Top 10&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;1000&quot; data-origin-height=&quot;348&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/caDp9z/btsN78jdpQ7/hiPo6UIXfokQnJw6Gk25kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/caDp9z/btsN78jdpQ7/hiPo6UIXfokQnJw6Gk25kk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/caDp9z/btsN78jdpQ7/hiPo6UIXfokQnJw6Gk25kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcaDp9z%2FbtsN78jdpQ7%2FhiPo6UIXfokQnJw6Gk25kk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1000&quot; height=&quot;348&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;348&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;309&quot; data-start=&quot;239&quot; data-ke-size=&quot;size16&quot;&gt;이 글에서는 OWASP Top 10이 무엇인지, 각 항목이 어떤 취약점이며 왜 중요한지를 작성합니다.&lt;/p&gt;
&lt;p data-end=&quot;309&quot; data-start=&quot;239&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;336&quot; data-start=&quot;316&quot; data-ke-size=&quot;size26&quot;&gt;1. OWASP Top 10이란?&lt;/h2&gt;
&lt;p data-end=&quot;446&quot; data-start=&quot;338&quot; data-ke-size=&quot;size16&quot;&gt;OWASP(Open Web Application Security Project)는 &lt;b&gt;전 세계 보안 전문가들이 모여 웹 애플리케이션의 주요 보안 취약점을 분석&amp;middot;정리하는 비영리 단체&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-end=&quot;570&quot; data-start=&quot;448&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;570&quot; data-start=&quot;448&quot; data-ke-size=&quot;size16&quot;&gt;OWASP는 약 3~4년마다 가장 심각하고 빈번한 취약점 10가지를 &lt;b&gt;OWASP Top 10&lt;/b&gt;이라는 리스트로 발표합니다.&lt;/p&gt;
&lt;p data-end=&quot;570&quot; data-start=&quot;448&quot; data-ke-size=&quot;size16&quot;&gt;이는 &lt;b&gt;사이버 보안의 기준이자, 개발자/운영자/보안 담당자의 체크리스트&lt;/b&gt;로 활용됩니다.&lt;/p&gt;
&lt;p data-end=&quot;570&quot; data-start=&quot;448&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://owasp.org/www-project-top-ten/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://owasp.org/www-project-top-ten/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1747964251611&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;OWASP Top Ten | OWASP Foundation&quot; data-og-description=&quot;The OWASP Top 10 is the reference standard for the most critical web application security risks. Adopting the OWASP Top 10 is perhaps the most effective first step towards changing your software development culture focused on producing secure code.&quot; data-og-host=&quot;owasp.org&quot; data-og-source-url=&quot;https://owasp.org/www-project-top-ten/&quot; data-og-url=&quot;https://owasp.org/www-project-top-ten/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/csW5Fp/hyYWSWauBS/iftjoc26NAUni5vt53ruU1/img.png?width=64&amp;amp;height=64&amp;amp;face=0_0_64_64,https://scrap.kakaocdn.net/dn/z8hzg/hyYYvlHyLS/VimYFKCTWuTyYlYgj36gsk/img.png?width=936&amp;amp;height=258&amp;amp;face=0_0_936_258,https://scrap.kakaocdn.net/dn/eXTp9/hyYYAHifFV/QS0c4E5geopUUeamHnUotK/img.png?width=518&amp;amp;height=214&amp;amp;face=0_0_518_214&quot;&gt;&lt;a href=&quot;https://owasp.org/www-project-top-ten/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://owasp.org/www-project-top-ten/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/csW5Fp/hyYWSWauBS/iftjoc26NAUni5vt53ruU1/img.png?width=64&amp;amp;height=64&amp;amp;face=0_0_64_64,https://scrap.kakaocdn.net/dn/z8hzg/hyYYvlHyLS/VimYFKCTWuTyYlYgj36gsk/img.png?width=936&amp;amp;height=258&amp;amp;face=0_0_936_258,https://scrap.kakaocdn.net/dn/eXTp9/hyYYAHifFV/QS0c4E5geopUUeamHnUotK/img.png?width=518&amp;amp;height=214&amp;amp;face=0_0_518_214');&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;OWASP Top Ten | OWASP Foundation&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;The OWASP Top 10 is the reference standard for the most critical web application security risks. Adopting the OWASP Top 10 is perhaps the most effective first step towards changing your software development culture focused on producing secure code.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;owasp.org&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;hr data-end=&quot;575&quot; data-start=&quot;572&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;606&quot; data-start=&quot;577&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-end=&quot;606&quot; data-start=&quot;577&quot; data-ke-size=&quot;size26&quot;&gt;2. OWASP Top 10&amp;nbsp;&lt;/h2&gt;
&lt;p data-end=&quot;649&quot; data-start=&quot;608&quot; data-ke-size=&quot;size16&quot;&gt;아래는 2021년 기준 OWASP Top 10의 항목과 간단한 설명입니다.&lt;/p&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1595&quot; data-start=&quot;651&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;순위&lt;/td&gt;
&lt;td&gt;취약점명&lt;/td&gt;
&lt;td&gt;한글 번역&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;892&quot; data-start=&quot;813&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;820&quot; data-start=&quot;813&quot;&gt;A01&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;863&quot; data-start=&quot;820&quot;&gt;Broken Access Control&lt;/td&gt;
&lt;td data-end=&quot;892&quot; data-start=&quot;863&quot; data-col-size=&quot;sm&quot;&gt;취약한 접근 통제&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;974&quot; data-start=&quot;893&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;900&quot; data-start=&quot;893&quot;&gt;A02&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;943&quot; data-start=&quot;900&quot;&gt;Cryptographic Failures&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;974&quot; data-start=&quot;943&quot;&gt;암호화 실패&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1056&quot; data-start=&quot;975&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;982&quot; data-start=&quot;975&quot;&gt;A03&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;1025&quot; data-start=&quot;982&quot;&gt;Injection&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1056&quot; data-start=&quot;1025&quot;&gt;주입(Injection) 취약점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1132&quot; data-start=&quot;1057&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1064&quot; data-start=&quot;1057&quot;&gt;A04&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;1107&quot; data-start=&quot;1064&quot;&gt;Insecure Design&lt;/td&gt;
&lt;td data-end=&quot;1132&quot; data-start=&quot;1107&quot; data-col-size=&quot;sm&quot;&gt;보안이 고려되지 않은 설계&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1213&quot; data-start=&quot;1133&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1140&quot; data-start=&quot;1133&quot;&gt;A05&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;1183&quot; data-start=&quot;1140&quot;&gt;Security Misconfiguration&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1213&quot; data-start=&quot;1183&quot;&gt;보안 설정 오류&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1288&quot; data-start=&quot;1214&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1221&quot; data-start=&quot;1214&quot;&gt;A06&lt;/td&gt;
&lt;td data-end=&quot;1264&quot; data-start=&quot;1221&quot; data-col-size=&quot;md&quot;&gt;Vulnerable and Outdated Components&lt;/td&gt;
&lt;td data-end=&quot;1288&quot; data-start=&quot;1264&quot; data-col-size=&quot;sm&quot;&gt;취약하거나 오래된 구성요소&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1366&quot; data-start=&quot;1289&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1296&quot; data-start=&quot;1289&quot;&gt;A07&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;1341&quot; data-start=&quot;1296&quot;&gt;Identification and Authentication Failures&lt;/td&gt;
&lt;td data-end=&quot;1366&quot; data-start=&quot;1341&quot; data-col-size=&quot;sm&quot;&gt;인증 및 신원 확인 실패&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1439&quot; data-start=&quot;1367&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1374&quot; data-start=&quot;1367&quot;&gt;A08&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;1417&quot; data-start=&quot;1374&quot;&gt;Software and Data Integrity Failures&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1439&quot; data-start=&quot;1417&quot;&gt;소프트웨어 및 데이터 무결성 실패&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1515&quot; data-start=&quot;1440&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1447&quot; data-start=&quot;1440&quot;&gt;A09&lt;/td&gt;
&lt;td data-end=&quot;1490&quot; data-start=&quot;1447&quot; data-col-size=&quot;md&quot;&gt;Security Logging and Monitoring Failures&lt;/td&gt;
&lt;td data-end=&quot;1515&quot; data-start=&quot;1490&quot; data-col-size=&quot;sm&quot;&gt;보안 로그 및 모니터링 실패&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1595&quot; data-start=&quot;1516&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1523&quot; data-start=&quot;1516&quot;&gt;A10&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;1566&quot; data-start=&quot;1523&quot;&gt;Server-Side Request Forgery (SSRF)&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1595&quot; data-start=&quot;1566&quot;&gt;서버 측 요청 위조&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;1600&quot; data-start=&quot;1597&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1621&quot; data-start=&quot;1602&quot; data-ke-size=&quot;size26&quot;&gt;2. 각 취약점 상세 내용&lt;/h2&gt;
&lt;h3 data-end=&quot;1663&quot; data-start=&quot;1623&quot; data-ke-size=&quot;size23&quot;&gt;A01. Broken Access Control (접근 통제 실패)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1757&quot; data-start=&quot;1664&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1716&quot; data-start=&quot;1664&quot;&gt;권한 없는 사용자가 &lt;b&gt;관리자 페이지, 다른 사용자 데이터 등&lt;/b&gt;에 접근할 수 있는 취약점&lt;/li&gt;
&lt;li data-end=&quot;1757&quot; data-start=&quot;1717&quot;&gt;예: /admin URL을 직접 입력하면 관리자 페이지 접근 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1798&quot; data-start=&quot;1759&quot; data-ke-size=&quot;size23&quot;&gt;A02. Cryptographic Failures (암호화 실패)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1876&quot; data-start=&quot;1799&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1844&quot; data-start=&quot;1799&quot;&gt;민감 정보가 &lt;b&gt;암호화되지 않았거나&lt;/b&gt;, &lt;b&gt;약한 알고리즘&lt;/b&gt;을 사용하는 경우&lt;/li&gt;
&lt;li data-end=&quot;1876&quot; data-start=&quot;1845&quot;&gt;예: 비밀번호를 평문으로 저장하거나 HTTPS 미사용&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1904&quot; data-start=&quot;1878&quot; data-ke-size=&quot;size23&quot;&gt;A03. Injection (명령어 삽입)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1983&quot; data-start=&quot;1905&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1953&quot; data-start=&quot;1905&quot;&gt;외부 입력값이 검증 없이 &lt;b&gt;SQL, OS 명령어, LDAP 등&lt;/b&gt;에 포함되어 실행&lt;/li&gt;
&lt;li data-end=&quot;1983&quot; data-start=&quot;1954&quot;&gt;예: ' OR 1=1 -- 같은 SQL 인젝션&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;2017&quot; data-start=&quot;1985&quot; data-ke-size=&quot;size23&quot;&gt;A04. Insecure Design (보안 미설계)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2081&quot; data-start=&quot;2018&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2049&quot; data-start=&quot;2018&quot;&gt;아예 설계 단계에서 &lt;b&gt;보안을 고려하지 않은 구조&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;2081&quot; data-start=&quot;2050&quot;&gt;예: 인증 절차 없이 내부 API에 접근 가능한 구조&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;2127&quot; data-start=&quot;2083&quot; data-ke-size=&quot;size23&quot;&gt;A05. Security Misconfiguration (보안 설정 오류)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2195&quot; data-start=&quot;2128&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2171&quot; data-start=&quot;2128&quot;&gt;디버깅 모드 ON, 기본 비밀번호 사용 등 &lt;b&gt;설정 부주의로 인한 문제&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;2195&quot; data-start=&quot;2172&quot;&gt;예: AWS S3 버킷 퍼블릭으로 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;2250&quot; data-start=&quot;2197&quot; data-ke-size=&quot;size23&quot;&gt;A06. Vulnerable and Outdated Components (취약한 구성요소)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2318&quot; data-start=&quot;2251&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2289&quot; data-start=&quot;2251&quot;&gt;사용 중인 오픈소스나 라이브러리가 &lt;b&gt;구버전 또는 취약점 포함&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;2318&quot; data-start=&quot;2290&quot;&gt;예: jQuery, Spring 등 구버전 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;2378&quot; data-start=&quot;2320&quot; data-ke-size=&quot;size23&quot;&gt;A07. Identification and Authentication Failures (인증 실패)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2430&quot; data-start=&quot;2379&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2407&quot; data-start=&quot;2379&quot;&gt;인증 로직이 약하거나, 세션 관리가 부실한 경우&lt;/li&gt;
&lt;li data-end=&quot;2430&quot; data-start=&quot;2408&quot;&gt;예: 세션 탈취, 비밀번호 추측 공격&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;2485&quot; data-start=&quot;2432&quot; data-ke-size=&quot;size23&quot;&gt;A08. Software and Data Integrity Failures (무결성 실패)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2544&quot; data-start=&quot;2486&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2518&quot; data-start=&quot;2486&quot;&gt;신뢰할 수 없는 소스에서 소프트웨어/데이터를 받아 실행&lt;/li&gt;
&lt;li data-end=&quot;2544&quot; data-start=&quot;2519&quot;&gt;예: 서명되지 않은 패키지를 자동 업데이트&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;2595&quot; data-start=&quot;2546&quot; data-ke-size=&quot;size23&quot;&gt;A09. Logging and Monitoring Failures (모니터링 부재)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2659&quot; data-start=&quot;2596&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2637&quot; data-start=&quot;2596&quot;&gt;공격 징후를 &lt;b&gt;탐지할 수 없거나&lt;/b&gt;, &lt;b&gt;로그가 없어서 추적 불가&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;2659&quot; data-start=&quot;2638&quot;&gt;예: 실패한 로그인 시도 기록 없음&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;2702&quot; data-start=&quot;2661&quot; data-ke-size=&quot;size23&quot;&gt;A10. Server-Side Request Forgery (SSRF)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2785&quot; data-start=&quot;2703&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2737&quot; data-start=&quot;2703&quot;&gt;공격자가 서버에게 &lt;b&gt;내부 주소로 요청을 보내도록 유도&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;2785&quot; data-start=&quot;2738&quot;&gt;예: 서버가 내부 IP 127.0.0.1로 접근하게 유도하여 민감 데이터 노출&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;2790&quot; data-start=&quot;2787&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2810&quot; data-start=&quot;2792&quot; data-ke-size=&quot;size26&quot;&gt;3. 대응방법&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;3015&quot; data-start=&quot;2812&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2840&quot; data-start=&quot;2812&quot;&gt;사용자 입력은 반드시 &lt;b&gt;검증 및 필터링&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;2867&quot; data-start=&quot;2841&quot;&gt;민감 정보는 &lt;b&gt;강력한 암호화&lt;/b&gt;로 보호&lt;/li&gt;
&lt;li data-end=&quot;2887&quot; data-start=&quot;2868&quot;&gt;&lt;b&gt;신 보안 패치&lt;/b&gt; 유지&lt;/li&gt;
&lt;li data-end=&quot;2932&quot; data-start=&quot;2888&quot;&gt;&lt;b&gt;한 관리 철저&lt;/b&gt; (Role-based Access Control)&lt;/li&gt;
&lt;li data-end=&quot;2958&quot; data-start=&quot;2933&quot;&gt;&lt;b&gt;그 및 이상 탐지&lt;/b&gt; 시스템 도입&lt;/li&gt;
&lt;li data-end=&quot;3015&quot; data-start=&quot;2959&quot;&gt;&lt;b&gt;보안 점검 자동화 도구&lt;/b&gt; 활용 (예: SonarQube, Snyk, Burp Suite)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;3020&quot; data-start=&quot;3017&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;3030&quot; data-start=&quot;3022&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;p data-end=&quot;3162&quot; data-start=&quot;3032&quot; data-ke-size=&quot;size16&quot;&gt;OWASP Top 10은 웹 애플리케이션 보안의 &lt;b&gt;가장 핵심적인 지표&lt;/b&gt;입니다.&lt;br /&gt;개발자라면 프로젝트 시작 단계부터 이 리스트를 참고해, &lt;b&gt;안전한 아키텍처를 설계&lt;/b&gt;하고 &lt;b&gt;보안 취약점이 최소화된 코드&lt;/b&gt;를 작성해야 합니다.&lt;b&gt;&lt;/b&gt;&lt;/p&gt;</description>
      <category>정보관리기술사/보안</category>
      <category>OWASP</category>
      <category>owasp top 10</category>
      <category>웹어플리케이션 보안</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/258</guid>
      <comments>https://hungc.tistory.com/258#entry258comment</comments>
      <pubDate>Thu, 22 May 2025 14:58:05 +0900</pubDate>
    </item>
    <item>
      <title>데이터베이스 (DB) 개요</title>
      <link>https://hungc.tistory.com/257</link>
      <description>&lt;h2 data-end=&quot;211&quot; data-start=&quot;193&quot; data-ke-size=&quot;size26&quot;&gt;1. 데이터베이스 개요&lt;/h2&gt;
&lt;h3 data-end=&quot;227&quot; data-start=&quot;213&quot; data-ke-size=&quot;size23&quot;&gt;● 데이터베이스란?&lt;/h3&gt;
&lt;p data-end=&quot;345&quot; data-start=&quot;228&quot; data-ke-size=&quot;size16&quot;&gt;데이터베이스(Database)는 데이터를 &lt;b&gt;효율적이고 체계적으로 저장하고 관리하는 시스템&lt;/b&gt;입니다. 수많은 데이터를 중복 없이 저장하며, 다양한 사용자들이 동시에 안전하게 데이터를 사용할 수 있게 도와줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c6eUMu/btsN1lJsO5z/sbMbbhs1fEsSWBJwVZQb3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c6eUMu/btsN1lJsO5z/sbMbbhs1fEsSWBJwVZQb3k/img.png&quot; data-alt=&quot;Database&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c6eUMu/btsN1lJsO5z/sbMbbhs1fEsSWBJwVZQb3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc6eUMu%2FbtsN1lJsO5z%2FsbMbbhs1fEsSWBJwVZQb3k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;625&quot; height=&quot;625&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Database&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-end=&quot;427&quot; data-start=&quot;347&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;427&quot; data-start=&quot;349&quot; data-ke-size=&quot;size16&quot;&gt;예: 은행의 고객정보, 계좌정보, 거래내역 등은 모두 데이터베이스에 저장되어 있고, 이를 여러 시스템이 동시에 안전하게 사용하는 구조입니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;432&quot; data-start=&quot;429&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;454&quot; data-start=&quot;434&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-end=&quot;454&quot; data-start=&quot;434&quot; data-ke-size=&quot;size26&quot;&gt;2. 데이터 모델링과 구조&lt;/h2&gt;
&lt;h3 data-end=&quot;475&quot; data-start=&quot;456&quot; data-ke-size=&quot;size23&quot;&gt;● 데이터 모델링 계층 설명&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;762&quot; data-start=&quot;476&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;612&quot; data-start=&quot;476&quot;&gt;&lt;b&gt;개념적 모델&lt;/b&gt;: 현실 세계를 추상화하여 데이터 구조를 표현합니다. ERD(Entity-Relationship Diagram)로 설계되며, 개체(Entity), 속성(Attribute), 관계(Relationship) 등으로 구성됩니다.&lt;/li&gt;
&lt;li data-end=&quot;700&quot; data-start=&quot;613&quot;&gt;&lt;b&gt;논리적 모델&lt;/b&gt;: 개념 모델을 릴레이션(Relation)으로 구조화한 것입니다. 이 단계에서 정규화를 적용하여 이상현상(Anomaly)을 제거합니다.&lt;/li&gt;
&lt;li data-end=&quot;762&quot; data-start=&quot;701&quot;&gt;&lt;b&gt;물리적 모델&lt;/b&gt;: 논리 모델을 DBMS가 이해할 수 있는 실제 테이블, 인덱스 등의 구조로 구현합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;780&quot; data-start=&quot;764&quot; data-ke-size=&quot;size23&quot;&gt;● 스키마 3계층 구조&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;886&quot; data-start=&quot;781&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;814&quot; data-start=&quot;781&quot;&gt;&lt;b&gt;외부 스키마&lt;/b&gt;: 사용자 관점에서 보는 뷰(View)&lt;/li&gt;
&lt;li data-end=&quot;846&quot; data-start=&quot;815&quot;&gt;&lt;b&gt;개념 스키마&lt;/b&gt;: 데이터베이스 전체의 논리적 구조&lt;/li&gt;
&lt;li data-end=&quot;886&quot; data-start=&quot;847&quot;&gt;&lt;b&gt;내부 스키마&lt;/b&gt;: 데이터의 물리적 저장 구조 (파일, 블록 등)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;891&quot; data-start=&quot;888&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;911&quot; data-start=&quot;893&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-end=&quot;911&quot; data-start=&quot;893&quot; data-ke-size=&quot;size26&quot;&gt;3. 정규화와 반정규화&lt;/h2&gt;
&lt;h3 data-end=&quot;924&quot; data-start=&quot;913&quot; data-ke-size=&quot;size23&quot;&gt;● 정규화란?&lt;/h3&gt;
&lt;p data-end=&quot;1027&quot; data-start=&quot;925&quot; data-ke-size=&quot;size16&quot;&gt;정규화(Normalization)는 데이터의 &lt;b&gt;중복을 최소화하고 무결성을 높이기 위한 테이블 구조 설계 방식&lt;/b&gt;입니다. 이를 통해 &lt;b&gt;삽입, 삭제, 갱신 이상 현상&lt;/b&gt;을 방지합니다.&lt;/p&gt;
&lt;h4 data-end=&quot;1039&quot; data-start=&quot;1029&quot; data-ke-size=&quot;size20&quot;&gt;주요 단계&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1254&quot; data-start=&quot;1040&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;단계&lt;/td&gt;
&lt;td&gt;설명&lt;/td&gt;
&lt;td&gt;예시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1118&quot; data-start=&quot;1080&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1086&quot; data-start=&quot;1080&quot;&gt;1NF&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1097&quot; data-start=&quot;1086&quot;&gt;원자값으로 분해&lt;/td&gt;
&lt;td data-end=&quot;1118&quot; data-start=&quot;1097&quot; data-col-size=&quot;sm&quot;&gt;복수 전화번호 &amp;rarr; 별도 행 분리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1163&quot; data-start=&quot;1119&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1125&quot; data-start=&quot;1119&quot;&gt;2NF&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1139&quot; data-start=&quot;1125&quot;&gt;부분 함수 종속 제거&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1163&quot; data-start=&quot;1139&quot;&gt;복합키의 일부분에만 종속된 속성 제거&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1214&quot; data-start=&quot;1164&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1170&quot; data-start=&quot;1164&quot;&gt;3NF&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1184&quot; data-start=&quot;1170&quot;&gt;이행 함수 종속 제거&lt;/td&gt;
&lt;td data-end=&quot;1214&quot; data-start=&quot;1184&quot; data-col-size=&quot;sm&quot;&gt;비키 속성이 다른 비키 속성에 종속된 경우 제거&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1254&quot; data-start=&quot;1215&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1222&quot; data-start=&quot;1215&quot;&gt;BCNF&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1244&quot; data-start=&quot;1222&quot;&gt;결정자이지만 후보키가 아닌 것 제거&lt;/td&gt;
&lt;td data-end=&quot;1254&quot; data-start=&quot;1244&quot; data-col-size=&quot;sm&quot;&gt;고급 정규형&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-end=&quot;1268&quot; data-start=&quot;1256&quot; data-ke-size=&quot;size23&quot;&gt;● 반정규화란?&lt;/h3&gt;
&lt;p data-end=&quot;1384&quot; data-start=&quot;1269&quot; data-ke-size=&quot;size16&quot;&gt;반정규화(Denormalization)는 정규화를 해제하거나 일부 중복을 허용하여 &lt;b&gt;조회 성능을 향상&lt;/b&gt;시키는 기법입니다. 실무에서는 &lt;b&gt;조인 성능 이슈&lt;/b&gt;, &lt;b&gt;보고서 최적화&lt;/b&gt;를 위해 자주 활용됩니다.&lt;/p&gt;
&lt;hr data-end=&quot;1389&quot; data-start=&quot;1386&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1412&quot; data-start=&quot;1391&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-end=&quot;1412&quot; data-start=&quot;1391&quot; data-ke-size=&quot;size26&quot;&gt;4. 트랜잭션과 동시성 제어&lt;/h2&gt;
&lt;h3 data-end=&quot;1427&quot; data-start=&quot;1414&quot; data-ke-size=&quot;size23&quot;&gt;● 트랜잭션이란?&lt;/h3&gt;
&lt;p data-end=&quot;1525&quot; data-start=&quot;1428&quot; data-ke-size=&quot;size16&quot;&gt;트랜잭션(Transaction)은 데이터베이스에서 &lt;b&gt;하나의 논리적 작업 단위&lt;/b&gt;입니다. 여러 SQL 문이 하나의 트랜잭션으로 묶이며, 모두 성공하거나 전부 실패해야 합니다.&lt;/p&gt;
&lt;h3 data-end=&quot;1543&quot; data-start=&quot;1527&quot; data-ke-size=&quot;size23&quot;&gt;● ACID 4대 특성&lt;/h3&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1717&quot; data-start=&quot;1544&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;특성&lt;/td&gt;
&lt;td&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1608&quot; data-start=&quot;1572&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1590&quot; data-start=&quot;1572&quot;&gt;Atomicity (원자성)&lt;/td&gt;
&lt;td data-end=&quot;1608&quot; data-start=&quot;1590&quot; data-col-size=&quot;sm&quot;&gt;전부 수행 또는 전부 무효&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1642&quot; data-start=&quot;1609&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1629&quot; data-start=&quot;1609&quot;&gt;Consistency (일관성)&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1642&quot; data-start=&quot;1629&quot;&gt;일관된 상태 유지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1678&quot; data-start=&quot;1643&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1661&quot; data-start=&quot;1643&quot;&gt;Isolation (고립성)&lt;/td&gt;
&lt;td data-end=&quot;1678&quot; data-start=&quot;1661&quot; data-col-size=&quot;sm&quot;&gt;동시 실행 시 간섭 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1717&quot; data-start=&quot;1679&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1698&quot; data-start=&quot;1679&quot;&gt;Durability (지속성)&lt;/td&gt;
&lt;td data-end=&quot;1717&quot; data-start=&quot;1698&quot; data-col-size=&quot;sm&quot;&gt;성공한 트랜잭션은 영구 반영&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-end=&quot;1734&quot; data-start=&quot;1719&quot; data-ke-size=&quot;size23&quot;&gt;● 동시성 제어 기법&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1873&quot; data-start=&quot;1735&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1790&quot; data-start=&quot;1735&quot;&gt;&lt;b&gt;Lock 기반&lt;/b&gt;: Shared Lock, Exclusive Lock, 2PL(2단계 잠금)&lt;/li&gt;
&lt;li data-end=&quot;1832&quot; data-start=&quot;1791&quot;&gt;&lt;b&gt;타임스탬프 순서 기법&lt;/b&gt;: 트랜잭션 타임스탬프를 기준으로 순서 결정&lt;/li&gt;
&lt;li data-end=&quot;1873&quot; data-start=&quot;1833&quot;&gt;&lt;b&gt;낙관적/비관적 제어&lt;/b&gt;: 충돌 가능성 여부에 따라 접근 방식 다름&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1878&quot; data-start=&quot;1875&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1898&quot; data-start=&quot;1880&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-end=&quot;1898&quot; data-start=&quot;1880&quot; data-ke-size=&quot;size26&quot;&gt;5. 무결성과 키 설계&lt;/h2&gt;
&lt;h3 data-end=&quot;1912&quot; data-start=&quot;1900&quot; data-ke-size=&quot;size23&quot;&gt;● 무결성이란?&lt;/h3&gt;
&lt;p data-end=&quot;1973&quot; data-start=&quot;1913&quot; data-ke-size=&quot;size16&quot;&gt;무결성 제약(Integrity Constraint)은 &lt;b&gt;데이터의 정확성과 일관성을 보장하는 규칙&lt;/b&gt;입니다.&lt;/p&gt;
&lt;h4 data-end=&quot;1989&quot; data-start=&quot;1975&quot; data-ke-size=&quot;size20&quot;&gt;주요 무결성 제약&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2110&quot; data-start=&quot;1990&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2025&quot; data-start=&quot;1990&quot;&gt;&lt;b&gt;개체 무결성&lt;/b&gt;: 기본키는 NULL이거나 중복될 수 없음&lt;/li&gt;
&lt;li data-end=&quot;2062&quot; data-start=&quot;2026&quot;&gt;&lt;b&gt;참조 무결성&lt;/b&gt;: 외래키는 반드시 참조 대상이 존재해야 함&lt;/li&gt;
&lt;li data-end=&quot;2110&quot; data-start=&quot;2063&quot;&gt;&lt;b&gt;도메인 무결성&lt;/b&gt;: 값이 허용된 범위 내에 있어야 함 (예: 나이는 0 이상)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;2123&quot; data-start=&quot;2112&quot; data-ke-size=&quot;size23&quot;&gt;● 키의 종류&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2400&quot; data-start=&quot;2124&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2193&quot; data-start=&quot;2124&quot;&gt;&lt;b&gt;기본키(Primary Key)&lt;/b&gt;: 각 행(Row)을 유일하게 식별하는 키&lt;/li&gt;
&lt;li data-end=&quot;2193&quot; data-start=&quot;2174&quot;&gt;예: 주민등록번호, 사번 등&lt;/li&gt;
&lt;li data-end=&quot;2244&quot; data-start=&quot;2194&quot;&gt;&lt;b&gt;후보키(Candidate Key)&lt;/b&gt;: 기본키로 사용할 수 있는 모든 키 후보들&lt;/li&gt;
&lt;li data-end=&quot;2308&quot; data-start=&quot;2245&quot;&gt;&lt;b&gt;슈퍼키(Super Key)&lt;/b&gt;: 유일하게 식별할 수 있는 속성 집합 (후보키 + 여분 속성 포함 가능)&lt;/li&gt;
&lt;li data-end=&quot;2400&quot; data-start=&quot;2309&quot;&gt;&lt;b&gt;외래키(Foreign Key)&lt;/b&gt;: 다른 테이블의 기본키를 참조하여 관계를 맺는 키&lt;/li&gt;
&lt;li data-end=&quot;2400&quot; data-start=&quot;2364&quot;&gt;예: 주문 테이블의 고객ID &amp;rarr; 고객 테이블의 기본키 참조&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;2405&quot; data-start=&quot;2402&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2425&quot; data-start=&quot;2407&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-end=&quot;2425&quot; data-start=&quot;2407&quot; data-ke-size=&quot;size26&quot;&gt;6. 성능 최적화 설계&lt;/h2&gt;
&lt;h3 data-end=&quot;2438&quot; data-start=&quot;2427&quot; data-ke-size=&quot;size23&quot;&gt;● 인덱스란?&lt;/h3&gt;
&lt;p data-end=&quot;2501&quot; data-start=&quot;2439&quot; data-ke-size=&quot;size16&quot;&gt;인덱스(Index)는 &lt;b&gt;데이터 검색 속도를 향상시키기 위한 자료구조&lt;/b&gt;입니다. 책의 목차와 유사한 개념입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2563&quot; data-start=&quot;2503&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2530&quot; data-start=&quot;2503&quot;&gt;&lt;b&gt;B-tree 인덱스&lt;/b&gt;: 범위 검색에 유리&lt;/li&gt;
&lt;li data-end=&quot;2563&quot; data-start=&quot;2531&quot;&gt;&lt;b&gt;Bitmap 인덱스&lt;/b&gt;: 중복도가 높은 컬럼에 유리&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;2575&quot; data-start=&quot;2565&quot; data-ke-size=&quot;size23&quot;&gt;● 파티셔닝&lt;/h3&gt;
&lt;p data-end=&quot;2637&quot; data-start=&quot;2576&quot; data-ke-size=&quot;size16&quot;&gt;파티셔닝(Partitioning)은 대용량 테이블을 &lt;b&gt;논리적으로 분할&lt;/b&gt;하여 관리 성능을 높이는 기법입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2755&quot; data-start=&quot;2639&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2678&quot; data-start=&quot;2639&quot;&gt;&lt;b&gt;Range Partitioning&lt;/b&gt;: 날짜 등 연속 범위 기준&lt;/li&gt;
&lt;li data-end=&quot;2713&quot; data-start=&quot;2679&quot;&gt;&lt;b&gt;List Partitioning&lt;/b&gt;: 명확한 목록 기반&lt;/li&gt;
&lt;li data-end=&quot;2755&quot; data-start=&quot;2714&quot;&gt;&lt;b&gt;Hash Partitioning&lt;/b&gt;: 해시 함수를 이용한 균등 분할&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;2770&quot; data-start=&quot;2757&quot; data-ke-size=&quot;size23&quot;&gt;● 조인 알고리즘&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2877&quot; data-start=&quot;2771&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2806&quot; data-start=&quot;2771&quot;&gt;&lt;b&gt;Nested Loop Join&lt;/b&gt;: 소규모 테이블에 적합&lt;/li&gt;
&lt;li data-end=&quot;2843&quot; data-start=&quot;2807&quot;&gt;&lt;b&gt;Sort-Merge Join&lt;/b&gt;: 양 테이블 정렬 후 병합&lt;/li&gt;
&lt;li data-end=&quot;2877&quot; data-start=&quot;2844&quot;&gt;&lt;b&gt;Hash Join&lt;/b&gt;: 메모리 기반 해시 테이블 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;2882&quot; data-start=&quot;2879&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2906&quot; data-start=&quot;2884&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-end=&quot;2906&quot; data-start=&quot;2884&quot; data-ke-size=&quot;size26&quot;&gt;7. 데이터베이스 관리와 운영&lt;/h2&gt;
&lt;h3 data-end=&quot;2920&quot; data-start=&quot;2908&quot; data-ke-size=&quot;size23&quot;&gt;● 백업과 복구&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;3041&quot; data-start=&quot;2921&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2950&quot; data-start=&quot;2921&quot;&gt;&lt;b&gt;Full Backup&lt;/b&gt;: 전체 데이터를 백업&lt;/li&gt;
&lt;li data-end=&quot;2988&quot; data-start=&quot;2951&quot;&gt;&lt;b&gt;Incremental Backup&lt;/b&gt;: 변경된 데이터만 백업&lt;/li&gt;
&lt;li data-end=&quot;3041&quot; data-start=&quot;2989&quot;&gt;&lt;b&gt;Differential Backup&lt;/b&gt;: 마지막 전체 백업 이후 변경된 전체 내용 백업&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;3104&quot; data-start=&quot;3043&quot; data-ke-size=&quot;size16&quot;&gt;복구 시에는 &lt;b&gt;로그 파일(Redo/Undo)&lt;/b&gt;, &lt;b&gt;체크포인트&lt;/b&gt;, &lt;b&gt;아카이브 로그&lt;/b&gt; 등이 활용됩니다.&lt;/p&gt;
&lt;h3 data-end=&quot;3120&quot; data-start=&quot;3106&quot; data-ke-size=&quot;size23&quot;&gt;● 보안과 접근제어&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;3260&quot; data-start=&quot;3121&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;3156&quot; data-start=&quot;3121&quot;&gt;&lt;b&gt;인증(Authentication)&lt;/b&gt;: 사용자 신원 확인&lt;/li&gt;
&lt;li data-end=&quot;3196&quot; data-start=&quot;3157&quot;&gt;&lt;b&gt;인가(Authorization)&lt;/b&gt;: 권한 부여 (RBAC 등)&lt;/li&gt;
&lt;li data-end=&quot;3227&quot; data-start=&quot;3197&quot;&gt;&lt;b&gt;암호화&lt;/b&gt;: 저장 데이터 또는 전송 데이터 보호&lt;/li&gt;
&lt;li data-end=&quot;3260&quot; data-start=&quot;3228&quot;&gt;&lt;b&gt;감사 로그(Audit Log)&lt;/b&gt;: 모든 행위 기록&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;3265&quot; data-start=&quot;3262&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;3289&quot; data-start=&quot;3267&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-end=&quot;3289&quot; data-start=&quot;3267&quot; data-ke-size=&quot;size26&quot;&gt;8. NoSQL과 최신 트렌드&lt;/h2&gt;
&lt;h3 data-end=&quot;3305&quot; data-start=&quot;3291&quot; data-ke-size=&quot;size23&quot;&gt;● NoSQL이란?&lt;/h3&gt;
&lt;p data-end=&quot;3373&quot; data-start=&quot;3306&quot; data-ke-size=&quot;size16&quot;&gt;NoSQL은 RDBMS의 한계를 극복하고 &lt;b&gt;대규모 데이터 처리와 비정형 데이터를 저장&lt;/b&gt;하기 위해 등장한 시스템입니다.&lt;/p&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;3551&quot; data-start=&quot;3375&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;유형&lt;/td&gt;
&lt;td&gt;설명&lt;/td&gt;
&lt;td&gt;예시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3453&quot; data-start=&quot;3415&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3426&quot; data-start=&quot;3415&quot;&gt;Document&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3442&quot; data-start=&quot;3426&quot;&gt;JSON 기반 문서 저장&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3453&quot; data-start=&quot;3442&quot;&gt;MongoDB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3488&quot; data-start=&quot;3454&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3463&quot; data-start=&quot;3454&quot;&gt;Column&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3475&quot; data-start=&quot;3463&quot;&gt;열 기반 스토리지&lt;/td&gt;
&lt;td data-end=&quot;3488&quot; data-start=&quot;3475&quot; data-col-size=&quot;sm&quot;&gt;Cassandra&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3522&quot; data-start=&quot;3489&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3501&quot; data-start=&quot;3489&quot;&gt;Key-Value&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3513&quot; data-start=&quot;3501&quot;&gt;단순 키/값 저장&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3522&quot; data-start=&quot;3513&quot;&gt;Redis&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3551&quot; data-start=&quot;3523&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3531&quot; data-start=&quot;3523&quot;&gt;Graph&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3542&quot; data-start=&quot;3531&quot;&gt;노드-엣지 구조&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3551&quot; data-start=&quot;3542&quot;&gt;Neo4j&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-end=&quot;3565&quot; data-start=&quot;3553&quot; data-ke-size=&quot;size23&quot;&gt;● CAP 이론&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;3694&quot; data-start=&quot;3566&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;3606&quot; data-start=&quot;3566&quot;&gt;&lt;b&gt;Consistency(일관성)&lt;/b&gt;: 모든 노드가 같은 데이터 보장&lt;/li&gt;
&lt;li data-end=&quot;3641&quot; data-start=&quot;3607&quot;&gt;&lt;b&gt;Availability(가용성)&lt;/b&gt;: 응답 가능성 유지&lt;/li&gt;
&lt;li data-end=&quot;3694&quot; data-start=&quot;3642&quot;&gt;&lt;b&gt;Partition Tolerance(분산 허용성)&lt;/b&gt;: 네트워크 분할 시에도 동작 보장&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;3724&quot; data-start=&quot;3696&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 이 세 가지 중 두 가지를 보장하는 구조만 가능&lt;/p&gt;
&lt;h3 data-end=&quot;3739&quot; data-start=&quot;3726&quot; data-ke-size=&quot;size23&quot;&gt;● BASE 이론&lt;/h3&gt;
&lt;p data-end=&quot;3763&quot; data-start=&quot;3740&quot; data-ke-size=&quot;size16&quot;&gt;NoSQL에서 전통적인 ACID 대신 사용&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;3835&quot; data-start=&quot;3765&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;3790&quot; data-start=&quot;3765&quot;&gt;&lt;b&gt;Basically Available&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;3807&quot; data-start=&quot;3791&quot;&gt;&lt;b&gt;Soft state&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;3835&quot; data-start=&quot;3808&quot;&gt;&lt;b&gt;Eventually consistent&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;3840&quot; data-start=&quot;3837&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;3869&quot; data-start=&quot;3842&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-end=&quot;3869&quot; data-start=&quot;3842&quot; data-ke-size=&quot;size26&quot;&gt;9. 실무 연계 흐름도 (학습 로드맵)&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;데이터 모델링 &amp;rarr; 정규화 &amp;rarr; 무결성 &amp;rarr; 키 설계 &amp;rarr; 트랜잭션 &amp;rarr; 동시성 제어 &amp;rarr; 성능 최적화 &amp;rarr; 보안 &amp;rarr; 최신 기술 연계 &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;4115&quot; data-start=&quot;3970&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>정보관리기술사/데이터베이스</category>
      <category>Database</category>
      <category>데이터베이스</category>
      <category>데이터베이스 개요</category>
      <category>데이터베이스 관리</category>
      <category>무결성</category>
      <category>정규화</category>
      <category>트랜잭션</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/257</guid>
      <comments>https://hungc.tistory.com/257#entry257comment</comments>
      <pubDate>Mon, 19 May 2025 10:51:30 +0900</pubDate>
    </item>
    <item>
      <title>136회 정보관리기술사 시험 후기</title>
      <link>https://hungc.tistory.com/256</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;정보관리기술사 빈자리 시험 접수를 하고 7일 후 5월 17일에 준비물을 챙겨서 바로 시험을 보러 갔다.&lt;/p&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;준비물&lt;/h3&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;다음에도 시험도 봐야 하니 내가 잊지 않기 위해 준비물을 추가 작성해 본다.&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;&lt;b&gt;신분증&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;수험표&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;공부자료(패드)&lt;/b&gt;&lt;/li&gt;&lt;li&gt;볼펜 4자루&lt;/li&gt;&lt;li&gt;자&lt;/li&gt;&lt;li&gt;테이프&lt;/li&gt;&lt;li&gt;타이머&lt;/li&gt;&lt;li&gt;물&lt;/li&gt;&lt;li&gt;옷 (에어컨 대비)&lt;/li&gt;&lt;li&gt;휴지&lt;/li&gt;&lt;li&gt;점심&lt;/li&gt;&lt;li&gt;초콜렛&lt;/li&gt;&lt;/ul&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;br&gt;집에서 7시 40분쯤 나와 택시 타고 도착해 보니 8시가 약간 넘은 시간이었다.&lt;/p&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;오래 봐야 하는 시험이다 보니 생긴 지 얼마 안 된 마곡하늬중학교로 선택했는데, 좋은 선택이었던 것 같다.&lt;/p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfV49y/btsN1gavQZX/KBQ4ctsTp7BXMkiDkLZbcK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfV49y/btsN1gavQZX/KBQ4ctsTp7BXMkiDkLZbcK/img.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot; style=&quot;width: 49.4186%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfV49y/btsN1gavQZX/KBQ4ctsTp7BXMkiDkLZbcK/img.jpg&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfV49y%2FbtsN1gavQZX%2FKBQ4ctsTp7BXMkiDkLZbcK%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;3024&quot; height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bm115f/btsN1TyQdaB/dIkbdceQft8P55aknFdZXK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bm115f/btsN1TyQdaB/dIkbdceQft8P55aknFdZXK/img.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot; style=&quot;width: 49.4186%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bm115f/btsN1TyQdaB/dIkbdceQft8P55aknFdZXK/img.jpg&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbm115f%2FbtsN1TyQdaB%2FdIkbdceQft8P55aknFdZXK%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;3024&quot; height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EcUcH/btsN1RuiYQm/3jdds8bhNAtQG8XRbLtIvK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EcUcH/btsN1RuiYQm/3jdds8bhNAtQG8XRbLtIvK/img.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot; style=&quot;width: 49.4186%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EcUcH/btsN1RuiYQm/3jdds8bhNAtQG8XRbLtIvK/img.jpg&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEcUcH%2FbtsN1RuiYQm%2F3jdds8bhNAtQG8XRbLtIvK%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;3024&quot; height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cxJm6C/btsN2mtKLa3/ZzUG57w2Qq2ZqyYJk8yKi0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cxJm6C/btsN2mtKLa3/ZzUG57w2Qq2ZqyYJk8yKi0/img.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot; style=&quot;width: 49.4186%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cxJm6C/btsN2mtKLa3/ZzUG57w2Qq2ZqyYJk8yKi0/img.jpg&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcxJm6C%2FbtsN2mtKLa3%2FZzUG57w2Qq2ZqyYJk8yKi0%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;3024&quot; height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;/div&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; style=&quot;text-align: left;&quot;&gt;일찍부터 사람들이 꽤 많았는데, 정보관리기술사 시험 응시자뿐만 아니라 건축, 전기 등 모든 기술사가 함께 시험을 응시한다&lt;br&gt;&lt;span style=&quot;color: #333333;&quot;&gt;일찍이 다들 공부 중이었는데,&amp;nbsp;&lt;/span&gt;나만 느긋하게 마음 편히 온 듯했다.&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;대충 훑어보니 나이가 있으신 분들이 꽤 있었고 나는 젊은 축에 속한 편이었던 것 같다.&lt;br&gt;새삼 참 많은 사람들이 열심히 살고 있구나란 생각이 들었다.&lt;br&gt;&amp;nbsp;&lt;br&gt;각 교시에 대한 정보는&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;1교시 09:00 ~ 10:40 (100분)&lt;/li&gt;&lt;li&gt;2교시 11:00 ~ 12:40 (100분)&lt;/li&gt;&lt;li&gt;점심&amp;nbsp; &amp;nbsp;12:40 ~ 13:30 (50분)&lt;/li&gt;&lt;li&gt;3교시 13:40 ~ 15:20 (100분)&lt;/li&gt;&lt;li&gt;4교시 15:40 ~ 17:20 (100분)&lt;/li&gt;&lt;/ul&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;br&gt;1교시는 13문제 중 10문제를 작성해야 하는데, 확실하게 1.2page 이상 쓸 수 있는 건 DevOps 1문제였다..&lt;br&gt;화이트 레이블 마케팅, 범용 인공지능 위험관리 프레임워크, Agentic AI, 4차 정규화, 프록시 디자인패턴, DevOps 장단점, 세그먼테이션 오류 등의 문제가 출제되었다.&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;2교시 ~ 4교시는 6문제 중 4문제를 작성해야 하며, 각 문제당 3~3.5 페이지를 작성해야 한다.&lt;br&gt;공급망관리, PMO, LLM, Product Line, 품질보증, 혼동행렬, AI 윤리 기준 등의 문제가 출제되었다.&lt;br&gt;&amp;nbsp;&lt;br&gt;각 교시는 6~7 페이지 정도씩 작성하고 빠르게 제출하고 나와서 그냥 쉬었다.&lt;/p&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;SW공학, 프로젝트 관리, 보안, 인공지능 쪽의 문제가 많이 출제되었다고 한다.&lt;br&gt;&amp;nbsp;&lt;br&gt;4교시를 마치고 짐을 싸서 나왔는데, 페이지를 많이 작성하지 않아서 그런지 손은 안 아팠는데 허리가 너무 아팠다.&lt;/p&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;가능할지 모르겠지만 이 시험 최대한 빨리 끝내야겠다..&lt;br&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>정보관리기술사</category>
      <category>정보관리기술사</category>
      <category>정보관리기술사 시험후기</category>
      <category>정보관리기술사 후기</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/256</guid>
      <comments>https://hungc.tistory.com/256#entry256comment</comments>
      <pubDate>Sat, 17 May 2025 08:10:05 +0900</pubDate>
    </item>
    <item>
      <title>6+6 육아휴직 2개월차 급여 입금</title>
      <link>https://hungc.tistory.com/255</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;벌써 육아휴직을 한 지 2개월이 지났다.&lt;br /&gt;육아휴직 시간은 참 빠르게 지나가고 특히 더 아깝게 느껴진다.&lt;br /&gt;&lt;br /&gt;2개월차 육아휴직 급여도 직접 신청해야 하고 방법은 이전과 동일하다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;a href=&quot;https://hungc.tistory.com/233&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span&gt;2025.04.18 - [Daily/육아] - 6+6 육아휴직 남편 급여신청&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;opengraph&quot; data-og-title=&quot;6+6 육아휴직 남편 급여신청&quot; data-ke-align=&quot;alignCenter&quot; data-og-description=&quot;6+6 육아휴직 급여신청3월에 육아휴직을 시작하고 한 달이 지나서 급여신청을 했다. 참고로 6+6 육아휴직은 부모 모두 통상임금이 월 450만원 이상일 때부: 250, 250, 300, 350, 400, 450 만원보: 250, 250, 300&quot; data-og-host=&quot;hungc.tistory.com&quot; data-og-source-url=&quot;https://hungc.tistory.com/233&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bjCFro/hyYVeKLgOQ/nxxt1Jeo0sR0IQadnclR2k/img.png?width=800&amp;amp;height=852&amp;amp;face=0_0_800_852,https://scrap.kakaocdn.net/dn/CCMlf/hyYVddZ2A1/9trmpii1gLTsirH6j9UBw0/img.png?width=800&amp;amp;height=852&amp;amp;face=0_0_800_852,https://scrap.kakaocdn.net/dn/UvYhO/hyYU9inStW/zfreAxe1NWYeKkOivggY01/img.jpg?width=1920&amp;amp;height=1275&amp;amp;face=0_0_1920_1275&quot; data-og-url=&quot;https://hungc.tistory.com/233&quot;&gt;&lt;a href=&quot;https://hungc.tistory.com/233&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://hungc.tistory.com/233&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bjCFro/hyYVeKLgOQ/nxxt1Jeo0sR0IQadnclR2k/img.png?width=800&amp;amp;height=852&amp;amp;face=0_0_800_852,https://scrap.kakaocdn.net/dn/CCMlf/hyYVddZ2A1/9trmpii1gLTsirH6j9UBw0/img.png?width=800&amp;amp;height=852&amp;amp;face=0_0_800_852,https://scrap.kakaocdn.net/dn/UvYhO/hyYU9inStW/zfreAxe1NWYeKkOivggY01/img.jpg?width=1920&amp;amp;height=1275&amp;amp;face=0_0_1920_1275');&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;6+6 육아휴직 남편 급여신청&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;6+6 육아휴직 급여신청3월에 육아휴직을 시작하고 한 달이 지나서 급여신청을 했다. 참고로 6+6 육아휴직은 부모 모두 통상임금이 월 450만원 이상일 때부: 250, 250, 300, 350, 400, 450 만원보: 250, 250, 300&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;hungc.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;br /&gt;1개월, 2개월 수당은 2,500,000원으로 동일하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 나는 마찬가지로 2,500,000원이 입금되었고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;와이프는 1,375,000원(이전에 받은 금액에서 250만원의 차액)이 입금되었다고 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;997&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/V21db/btsNWQWJLKB/ZkOlJIlKSZdsy9e94XPYMk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/V21db/btsNWQWJLKB/ZkOlJIlKSZdsy9e94XPYMk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/V21db/btsNWQWJLKB/ZkOlJIlKSZdsy9e94XPYMk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FV21db%2FbtsNWQWJLKB%2FZkOlJIlKSZdsy9e94XPYMk%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;997&quot; height=&quot;600&quot; data-origin-width=&quot;997&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;다음 달부터는 육아휴직 수당 금액이 늘어나서 나는 3,000,000원, 와이프는 1,875,000원이 들어올 것으로 예상된다.&lt;/p&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;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;007&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/007.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/007.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;</description>
      <category>Daily/육아</category>
      <category>6+6 육아휴직</category>
      <category>6+6 육아휴직 수당</category>
      <category>육아휴직 수당</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/255</guid>
      <comments>https://hungc.tistory.com/255#entry255comment</comments>
      <pubDate>Wed, 14 May 2025 15:00:01 +0900</pubDate>
    </item>
    <item>
      <title>기업 생존을 위한 재해복구 전략 BCP, DRP, BIA</title>
      <link>https://hungc.tistory.com/254</link>
      <description>&lt;h1 data-end=&quot;208&quot; data-start=&quot;146&quot;&gt;&amp;nbsp;&lt;/h1&gt;
&lt;blockquote data-end=&quot;208&quot; data-start=&quot;146&quot; data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;BIA, BCP, DRP, DRS, DR, ISO 22301&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-end=&quot;349&quot; data-start=&quot;210&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;349&quot; data-start=&quot;210&quot; data-ke-size=&quot;size16&quot;&gt;오늘날 기업이 예기치 못한 사고, 재해, 사이버 공격 등으로부터 살아남기 위해 반드시 갖춰야 할 전략이 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;349&quot; data-start=&quot;210&quot; data-ke-size=&quot;size16&quot;&gt;바로 비즈니스 연속성 관리(BCM)이며, 그 핵심에는 &lt;b&gt;DRS, DRP, BCP, BIA, ISO 22301 &lt;/b&gt;등이 존재합니다.&lt;/p&gt;
&lt;p data-end=&quot;414&quot; data-start=&quot;351&quot; data-ke-size=&quot;size16&quot;&gt;이번 포스트에서는 이 개념들이 어떻게 연결되고, 어떤 시스템과 기준으로 구현되는지를 이해하기 쉽게 풀어보겠습니다.&lt;/p&gt;
&lt;hr data-end=&quot;419&quot; data-start=&quot;416&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eaXZ0A/btsNRQCTAoM/oiSHgekw9WgL1UYUtEcioK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eaXZ0A/btsNRQCTAoM/oiSHgekw9WgL1UYUtEcioK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eaXZ0A/btsNRQCTAoM/oiSHgekw9WgL1UYUtEcioK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeaXZ0A%2FbtsNRQCTAoM%2FoiSHgekw9WgL1UYUtEcioK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;452&quot; height=&quot;452&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-end=&quot;453&quot; data-start=&quot;421&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-end=&quot;453&quot; data-start=&quot;421&quot; data-ke-size=&quot;size26&quot;&gt;1. DR(Disaster Recovery)란?&lt;/h2&gt;
&lt;p data-end=&quot;624&quot; data-start=&quot;455&quot; data-ke-size=&quot;size16&quot;&gt;재해복구(Disaster Recovery, DR)는 시스템 중단이나 데이터 손실 등의 위기 상황에서 &lt;b&gt;IT 서비스를 신속하게 복구하고 업무를 재개하는 전략&lt;/b&gt;입니다. DR은 단순한 백업이 아니라, 복구 시간(RTO)과 데이터 손실 허용범위(RPO)를 기준으로 한 &lt;b&gt;정교한 복구 체계&lt;/b&gt;입니다.&lt;/p&gt;
&lt;hr data-end=&quot;629&quot; data-start=&quot;626&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;682&quot; data-start=&quot;631&quot; data-ke-size=&quot;size26&quot;&gt;2. DR 형태 구분 (Mirror / Hot / Warm / Cold Site)&lt;/h2&gt;
&lt;p data-end=&quot;734&quot; data-start=&quot;684&quot; data-ke-size=&quot;size16&quot;&gt;DR 구현 방식은 &lt;b&gt;복구 시간의 속도와 비용 수준&lt;/b&gt;에 따라 네 가지 유형으로 나뉩니다:&lt;/p&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1101&quot; data-start=&quot;736&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;유형&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;RTO/RPO&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;비용&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;복구 속도&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;908&quot; data-start=&quot;832&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;849&quot; data-start=&quot;832&quot;&gt;  Mirror Site&lt;/td&gt;
&lt;td data-end=&quot;880&quot; data-start=&quot;849&quot; data-col-size=&quot;sm&quot;&gt;&lt;b&gt;실시간 복제&lt;/b&gt; + 자동 전환, 이중화 클러스터&lt;/td&gt;
&lt;td data-end=&quot;891&quot; data-start=&quot;880&quot; data-col-size=&quot;sm&quot;&gt;수 초 / 없음&lt;/td&gt;
&lt;td data-end=&quot;899&quot; data-start=&quot;891&quot; data-col-size=&quot;sm&quot;&gt;매우 높음&lt;/td&gt;
&lt;td data-end=&quot;908&quot; data-start=&quot;899&quot; data-col-size=&quot;sm&quot;&gt;매우 빠름&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;976&quot; data-start=&quot;909&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;926&quot; data-start=&quot;909&quot;&gt;  Hot Site&lt;/td&gt;
&lt;td data-end=&quot;951&quot; data-start=&quot;926&quot; data-col-size=&quot;sm&quot;&gt;주요 시스템을 실시간 복제하며 상시 대기&lt;/td&gt;
&lt;td data-end=&quot;965&quot; data-start=&quot;951&quot; data-col-size=&quot;sm&quot;&gt;수 분 / 거의 없음&lt;/td&gt;
&lt;td data-end=&quot;970&quot; data-start=&quot;965&quot; data-col-size=&quot;sm&quot;&gt;높음&lt;/td&gt;
&lt;td data-end=&quot;976&quot; data-start=&quot;970&quot; data-col-size=&quot;sm&quot;&gt;빠름&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1039&quot; data-start=&quot;977&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;994&quot; data-start=&quot;977&quot;&gt;  Warm Site&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1014&quot; data-start=&quot;994&quot;&gt;시스템/데이터 일부만 미리 준비&lt;/td&gt;
&lt;td data-end=&quot;1028&quot; data-start=&quot;1014&quot; data-col-size=&quot;sm&quot;&gt;수 시간 / 몇 시간&lt;/td&gt;
&lt;td data-end=&quot;1033&quot; data-start=&quot;1028&quot; data-col-size=&quot;sm&quot;&gt;중간&lt;/td&gt;
&lt;td data-end=&quot;1039&quot; data-start=&quot;1033&quot; data-col-size=&quot;sm&quot;&gt;보통&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1101&quot; data-start=&quot;1040&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1057&quot; data-start=&quot;1040&quot;&gt;  Cold Site&lt;/td&gt;
&lt;td data-end=&quot;1078&quot; data-start=&quot;1057&quot; data-col-size=&quot;sm&quot;&gt;공간만 확보, 필요 시 장비 설치&lt;/td&gt;
&lt;td data-end=&quot;1090&quot; data-start=&quot;1078&quot; data-col-size=&quot;sm&quot;&gt;수 일 / 수 일&lt;/td&gt;
&lt;td data-end=&quot;1095&quot; data-start=&quot;1090&quot; data-col-size=&quot;sm&quot;&gt;낮음&lt;/td&gt;
&lt;td data-end=&quot;1101&quot; data-start=&quot;1095&quot; data-col-size=&quot;sm&quot;&gt;느림&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1147&quot; data-start=&quot;1103&quot; data-ke-size=&quot;size16&quot;&gt;기업의 예산, 중요 시스템의 복구 필요성에 따라 &lt;b&gt;혼합 운영&lt;/b&gt;도 가능.&lt;/p&gt;
&lt;hr data-end=&quot;1152&quot; data-start=&quot;1149&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1190&quot; data-start=&quot;1154&quot; data-ke-size=&quot;size26&quot;&gt;3. DRP(Disaster Recovery Plan)&lt;/h2&gt;
&lt;p data-end=&quot;1218&quot; data-start=&quot;1192&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;DRP는 DR 실행을 위한 절차서입니다.&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1325&quot; data-start=&quot;1220&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1250&quot; data-start=&quot;1220&quot;&gt;누가, 무엇을, 언제, 어떻게 복구할지 상세히 기술&lt;/li&gt;
&lt;li data-end=&quot;1286&quot; data-start=&quot;1251&quot;&gt;역할 분담, 복구 우선순위, 연락 체계, 전환 시나리오 포함&lt;/li&gt;
&lt;li data-end=&quot;1325&quot; data-start=&quot;1287&quot;&gt;실제 재해 상황을 대비해 &lt;b&gt;모의훈련을 주기적으로 실행&lt;/b&gt;해야 함&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1330&quot; data-start=&quot;1327&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1370&quot; data-start=&quot;1332&quot; data-ke-size=&quot;size26&quot;&gt;4. DRS(Disaster Recovery System)&lt;/h2&gt;
&lt;p data-end=&quot;1400&quot; data-start=&quot;1372&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;DRS는 DR을 실현하는 기술 인프라입니다.&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1486&quot; data-start=&quot;1402&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1432&quot; data-start=&quot;1402&quot;&gt;백업 시스템, 재해복구 서버, 복제 시스템 등 포함&lt;/li&gt;
&lt;li data-end=&quot;1459&quot; data-start=&quot;1433&quot;&gt;온프레미스 혹은 클라우드 기반으로 구축 가능&lt;/li&gt;
&lt;li data-end=&quot;1486&quot; data-start=&quot;1460&quot;&gt;DRP에 따라 자동 또는 수동으로 전환 동작&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1541&quot; data-start=&quot;1488&quot; data-ke-size=&quot;size16&quot;&gt;최근에는 AWS, Azure와 같은 &lt;b&gt;클라우드 기반 DRS&lt;/b&gt; 구축이 증가하고 있습니다.&lt;/p&gt;
&lt;hr data-end=&quot;1546&quot; data-start=&quot;1543&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1586&quot; data-start=&quot;1548&quot; data-ke-size=&quot;size26&quot;&gt;5. BIA(Business Impact Analysis)&lt;/h2&gt;
&lt;p data-end=&quot;1634&quot; data-start=&quot;1588&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;BIA는 재해가 발생했을 때 업무에 어떤 영향이 있는지 분석하는 단계입니다.&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1709&quot; data-start=&quot;1636&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1667&quot; data-start=&quot;1636&quot;&gt;업무별 손실 규모, 고객 영향, 법적 책임 등을 평가&lt;/li&gt;
&lt;li data-end=&quot;1687&quot; data-start=&quot;1668&quot;&gt;복구 우선순위 결정의 핵심 도구&lt;/li&gt;
&lt;li data-end=&quot;1709&quot; data-start=&quot;1688&quot;&gt;DRP 및 BCP 수립의 기초 자료&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1714&quot; data-start=&quot;1711&quot; data-ke-size=&quot;size16&quot;&gt;예시:&lt;/p&gt;
&lt;blockquote data-end=&quot;1756&quot; data-start=&quot;1715&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1756&quot; data-start=&quot;1717&quot; data-ke-size=&quot;size16&quot;&gt;&quot;주문 시스템 다운 시 하루 손실 5억 원 &amp;rarr; 최우선 복구 대상 선정&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;1761&quot; data-start=&quot;1758&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1805&quot; data-start=&quot;1763&quot; data-ke-size=&quot;size26&quot;&gt;6. BCP(Business Continuity Planning)&lt;/h2&gt;
&lt;p data-end=&quot;1836&quot; data-start=&quot;1807&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;BCP는 전사적인 비즈니스 연속성 계획입니다.&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1938&quot; data-start=&quot;1838&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1889&quot; data-start=&quot;1838&quot;&gt;단순한 IT 복구를 넘어 &lt;b&gt;전 조직이 위기 상황에서도 운영을 지속&lt;/b&gt;할 수 있도록 계획&lt;/li&gt;
&lt;li data-end=&quot;1919&quot; data-start=&quot;1890&quot;&gt;인력 대체, 공급망 대책, 커뮤니케이션 방안 포함&lt;/li&gt;
&lt;li data-end=&quot;1938&quot; data-start=&quot;1920&quot;&gt;BIA와 DRP 기반으로 수립&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1948&quot; data-start=&quot;1940&quot; data-ke-size=&quot;size16&quot;&gt;  구성요소:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1998&quot; data-start=&quot;1949&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1958&quot; data-start=&quot;1949&quot;&gt;핵심업무 목록&lt;/li&gt;
&lt;li data-end=&quot;1971&quot; data-start=&quot;1959&quot;&gt;대체 업무 프로세스&lt;/li&gt;
&lt;li data-end=&quot;1986&quot; data-start=&quot;1972&quot;&gt;비상 대응팀 및 연락망&lt;/li&gt;
&lt;li data-end=&quot;1998&quot; data-start=&quot;1987&quot;&gt;복구 테스트 계획&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;2003&quot; data-start=&quot;2000&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2029&quot; data-start=&quot;2005&quot; data-ke-size=&quot;size26&quot;&gt;7. ISO 22301: 국제표준&lt;/h2&gt;
&lt;p data-end=&quot;2092&quot; data-start=&quot;2031&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ISO 22301&lt;/b&gt;은 BCP 및 BCM(비즈니스 연속성 관리)을 위한 &lt;b&gt;국제 표준 인증 체계&lt;/b&gt;입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2190&quot; data-start=&quot;2094&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2125&quot; data-start=&quot;2094&quot;&gt;위험 식별, BIA 수행, 문서화된 BCP 요건 포함&lt;/li&gt;
&lt;li data-end=&quot;2159&quot; data-start=&quot;2126&quot;&gt;기업이 위기 대응 능력을 체계적으로 보유하고 있음을 증명&lt;/li&gt;
&lt;li data-end=&quot;2190&quot; data-start=&quot;2160&quot;&gt;글로벌 비즈니스 및 공공 조달 시 신뢰 요소로 작용&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;2195&quot; data-start=&quot;2192&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2224&quot; data-start=&quot;2197&quot; data-ke-size=&quot;size26&quot;&gt;종합 구성도: BCP ~ DRS의 흐름&lt;/h2&gt;
&lt;p data-end=&quot;2268&quot; data-start=&quot;2226&quot; data-ke-size=&quot;size16&quot;&gt;다음 그림은 각 요소가 어떻게 유기적으로 연결되는지를 흐름입니다:&lt;/p&gt;
&lt;div&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;위험 발생&lt;/li&gt;
&lt;li&gt;BIA (업무 영향 분석)&lt;/li&gt;
&lt;li&gt;BCP (비즈니스 연속성 계획)&lt;/li&gt;
&lt;li&gt;DRP (재해복구 계획)&lt;/li&gt;
&lt;li&gt;DRS (재해복구 시스템)&lt;/li&gt;
&lt;li&gt;복구 실행: Mirror / Hot / Warm / Cold Site&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;2436&quot; data-start=&quot;2433&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2449&quot; data-start=&quot;2438&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-end=&quot;2449&quot; data-start=&quot;2438&quot; data-ke-size=&quot;size26&quot;&gt;요약&lt;/h2&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;2729&quot; data-start=&quot;2451&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;용어&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2530&quot; data-start=&quot;2493&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2507&quot; data-start=&quot;2493&quot;&gt;&lt;b&gt;DR&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2530&quot; data-start=&quot;2507&quot;&gt;시스템 및 서비스의 재해 복구 자체&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2573&quot; data-start=&quot;2531&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2545&quot; data-start=&quot;2531&quot;&gt;&lt;b&gt;DRP&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;2573&quot; data-start=&quot;2545&quot; data-col-size=&quot;sm&quot;&gt;복구 절차와 책임 분담을 문서화한 실행 계획&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2609&quot; data-start=&quot;2574&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2588&quot; data-start=&quot;2574&quot;&gt;&lt;b&gt;DRS&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2609&quot; data-start=&quot;2588&quot;&gt;복구를 위한 IT 인프라 시스템&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2646&quot; data-start=&quot;2610&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2624&quot; data-start=&quot;2610&quot;&gt;&lt;b&gt;BIA&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;2646&quot; data-start=&quot;2624&quot; data-col-size=&quot;sm&quot;&gt;재해가 업무에 미치는 영향을 분석&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2684&quot; data-start=&quot;2647&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2661&quot; data-start=&quot;2647&quot;&gt;&lt;b&gt;BCP&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;2684&quot; data-start=&quot;2661&quot; data-col-size=&quot;sm&quot;&gt;전사적 관점의 비즈니스 연속성 전략&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2729&quot; data-start=&quot;2685&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2701&quot; data-start=&quot;2685&quot;&gt;&lt;b&gt;ISO 22301&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2729&quot; data-start=&quot;2701&quot;&gt;BCP를 국제적 수준으로 표준화한 인증 체계&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;2734&quot; data-start=&quot;2731&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2743&quot; data-start=&quot;2736&quot; data-ke-size=&quot;size26&quot;&gt;결론&lt;/h2&gt;
&lt;p data-end=&quot;2892&quot; data-start=&quot;2745&quot; data-ke-size=&quot;size16&quot;&gt;기업은 단순한 백업을 넘어 &lt;b&gt;지속가능한 운영 체계&lt;/b&gt;를 갖춰야만 예기치 못한 위기 속에서도 살아남을 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;2892&quot; data-start=&quot;2745&quot; data-ke-size=&quot;size16&quot;&gt;DR, DRP, DRS는 기술적인 기반이고, BIA는 분석 도구, BCP는 전략, ISO 22301은 그 모든 것을 포괄하는 국제 인증 체계입니다.&lt;/p&gt;
&lt;p data-end=&quot;2924&quot; data-start=&quot;2894&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>정보관리기술사/경영전략</category>
      <category>BCMS</category>
      <category>BCP</category>
      <category>BIA</category>
      <category>Dr</category>
      <category>DRP</category>
      <category>DRS</category>
      <category>iso 22301</category>
      <category>기업 재해복구 전략</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/254</guid>
      <comments>https://hungc.tistory.com/254#entry254comment</comments>
      <pubDate>Mon, 12 May 2025 22:00:43 +0900</pubDate>
    </item>
    <item>
      <title>정보관리기술사 빈자리 시험접수</title>
      <link>https://hungc.tistory.com/253</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;많은 고민 끝에 정보관리기술사 빈자리 시험을 접수했다.&lt;br /&gt;아직 학원 기본반이 6주 차밖에 진행하지 않았지만 시험 당일의 분위기를 느껴보는 것도 중요할 것 같았다.&lt;br /&gt;&lt;br /&gt;본래 5월 시험은 4월 7일 ~4월 10일에 접수기간이었지만 당시에는 별 관심도 없었고, 뒤늦게 접수를 하려고 했지만 3일의 짧은 신청기간을 놓쳤었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;702&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brSD3G/btsNXnr4YpO/zlhJWJhYHxqFlcqaR6o1J0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brSD3G/btsNXnr4YpO/zlhJWJhYHxqFlcqaR6o1J0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brSD3G/btsNXnr4YpO/zlhJWJhYHxqFlcqaR6o1J0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrSD3G%2FbtsNXnr4YpO%2FzlhJWJhYHxqFlcqaR6o1J0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1302&quot; height=&quot;702&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;702&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;다행히 빈자리 접수를 시험 전 주에 접수를 받고 있었고 고민하다가 시험을 접수했다.&lt;br /&gt;자리가 없을까 봐 고민이었지만 생각보다&amp;nbsp; 포기한 사람들이 꽤 있었나 보다 ㅎㅎ&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;시험 접수는 Q-Net 에서 진행할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;대학생때 정보처리기사 시험 접수한 뒤로 거의 10년만에 접속한 것 같다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.q-net.or.kr/man001.do?gSite=Q&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.q-net.or.kr/man001.do?gSite=Q&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1747317636856&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;Q-net 자격의모든것&quot; data-og-description=&quot;원서접수 큐넷에서 원서접수를 더 쉽게! 원서접수 초일, 접수시작 시간안내 기술사, 기능장, 기사, 정기&amp;middot;상시 기능사 오전 10:00 부터 전문자격(공인중개사, 변리사 등 37종목) 오전 09:00 부터 --&amp;gt; [2&quot; data-og-host=&quot;www.q-net.or.kr&quot; data-og-source-url=&quot;https://www.q-net.or.kr/man001.do?gSite=Q&quot; data-og-url=&quot;https://www.q-net.or.kr/man001.do?gSite=Q&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.q-net.or.kr/man001.do?gSite=Q&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.q-net.or.kr/man001.do?gSite=Q&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Q-net 자격의모든것&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;원서접수 큐넷에서 원서접수를 더 쉽게! 원서접수 초일, 접수시작 시간안내 기술사, 기능장, 기사, 정기&amp;middot;상시 기능사 오전 10:00 부터 전문자격(공인중개사, 변리사 등 37종목) 오전 09:00 부터 --&amp;gt; [2&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.q-net.or.kr&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;5월 11일 00시 되자마자 들어갔는데 접수 메뉴가 없었고 알고 보니 오전 10시부터 접수를 할 수 있었다.&lt;br /&gt;마침 학원에서 수업을 듣고 있던 시간이라 수업을 들으면서 시험을 접수했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1288&quot; data-origin-height=&quot;410&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GczeO/btsNZf9rS90/eclSSfUNYlf16ywRQFQpp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GczeO/btsNZf9rS90/eclSSfUNYlf16ywRQFQpp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GczeO/btsNZf9rS90/eclSSfUNYlf16ywRQFQpp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGczeO%2FbtsNZf9rS90%2FeclSSfUNYlf16ywRQFQpp1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1288&quot; height=&quot;410&quot; data-origin-width=&quot;1288&quot; data-origin-height=&quot;410&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;서울은 시험 볼 수 있는 장소가 꽤 많은데, 마곡이 집에서 가깝고 건물이 신식이길래 마곡하늬중학교로 접수했다.&lt;br /&gt;별 생각이 없었는데 가격도 50% 할인이 됐다!?&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;알아보니 만 34세 청년(90년 1월 1일 이후 출생자)들의 취업을 위해 1년에 3번 응시료 50%를 지원해준다고 한다!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1068&quot; data-origin-height=&quot;408&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NXC3Q/btsNYpE2MCM/YQmAAYvTDoTrZY3cB4Yp20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NXC3Q/btsNYpE2MCM/YQmAAYvTDoTrZY3cB4Yp20/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NXC3Q/btsNYpE2MCM/YQmAAYvTDoTrZY3cB4Yp20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNXC3Q%2FbtsNYpE2MCM%2FYQmAAYvTDoTrZY3cB4Yp20%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1068&quot; height=&quot;408&quot; data-origin-width=&quot;1068&quot; data-origin-height=&quot;408&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;접수가 완료되면 한국산업인력공단에서 알림을 보내준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;904&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dmc9Ph/btsNV4f0ySp/939uRZUyfkL3E31c126W6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dmc9Ph/btsNV4f0ySp/939uRZUyfkL3E31c126W6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dmc9Ph/btsNV4f0ySp/939uRZUyfkL3E31c126W6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdmc9Ph%2FbtsNV4f0ySp%2F939uRZUyfkL3E31c126W6k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;588&quot; height=&quot;524&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;904&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;시험은 당장 이번 주 토요일인 5월 17일이다.&lt;br /&gt;&lt;br /&gt;1/3은 작성이라도 할 수 있을지 모르겠다.&lt;br /&gt;어차피 포기는 하지 않을 거니까 이번 시험을 통해 무언가를 느끼고 더 열공할 수 있길 바라본다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>정보관리기술사</category>
      <category>정보관리기술사</category>
      <category>정보관리기술사 빈자리</category>
      <category>정보관리기술사 시험접수</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/253</guid>
      <comments>https://hungc.tistory.com/253#entry253comment</comments>
      <pubDate>Mon, 12 May 2025 11:01:01 +0900</pubDate>
    </item>
    <item>
      <title>RDBMS vs NoSQL</title>
      <link>https://hungc.tistory.com/252</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8iMs2/btsNTEAI2wV/wUA4EYsQLzc9seDXav4n9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8iMs2/btsNTEAI2wV/wUA4EYsQLzc9seDXav4n9k/img.png&quot; data-alt=&quot;RDBMS vs. NoSQL&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8iMs2/btsNTEAI2wV/wUA4EYsQLzc9seDXav4n9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8iMs2%2FbtsNTEAI2wV%2FwUA4EYsQLzc9seDXav4n9k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;415&quot; height=&quot;415&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;RDBMS vs. NoSQL&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;298&quot; data-start=&quot;166&quot; data-ke-size=&quot;size16&quot;&gt;효율적인 데이터베이스 설계를 위해 가장 먼저 고려해야 할 것이 &lt;b&gt;RDBMS(관계형 DB)와 NoSQL(비관계형 DB)&lt;/b&gt;의 차이입니다.&lt;/p&gt;
&lt;p data-end=&quot;298&quot; data-start=&quot;166&quot; data-ke-size=&quot;size16&quot;&gt;이번 포스팅에서는 두 시스템의 구조적 차이부터 선택 기준까지 실무 중심으로 정리해보겠습니다.&lt;/p&gt;
&lt;hr data-end=&quot;303&quot; data-start=&quot;300&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;330&quot; data-start=&quot;305&quot; data-ke-size=&quot;size26&quot;&gt;1. RDBMS와 NoSQL의 구조적 차이&lt;/h2&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;777&quot; data-start=&quot;332&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;RDBMS(Relational DB)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;NoSQL(Not Only SQL)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;505&quot; data-start=&quot;445&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;458&quot; data-start=&quot;445&quot;&gt;&lt;b&gt;데이터 모델&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;476&quot; data-start=&quot;458&quot;&gt;테이블 기반 (행/열 구조)&lt;/td&gt;
&lt;td data-end=&quot;505&quot; data-start=&quot;476&quot; data-col-size=&quot;sm&quot;&gt;키-값, 문서, 컬럼, 그래프 등 다양한 구조&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;567&quot; data-start=&quot;506&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;519&quot; data-start=&quot;506&quot;&gt;&lt;b&gt;스키마 구조&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;540&quot; data-start=&quot;519&quot; data-col-size=&quot;sm&quot;&gt;고정된 스키마 (사전 정의 필수)&lt;/td&gt;
&lt;td data-end=&quot;567&quot; data-start=&quot;540&quot; data-col-size=&quot;sm&quot;&gt;유연한 스키마 (필요 시 동적 변경 가능)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;619&quot; data-start=&quot;568&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;580&quot; data-start=&quot;568&quot;&gt;&lt;b&gt;관계 표현&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;595&quot; data-start=&quot;580&quot; data-col-size=&quot;sm&quot;&gt;외래 키로 명시적 연결&lt;/td&gt;
&lt;td data-end=&quot;619&quot; data-start=&quot;595&quot; data-col-size=&quot;sm&quot;&gt;중첩 구조로 관계 표현 (중복 허용)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;671&quot; data-start=&quot;620&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;630&quot; data-start=&quot;620&quot;&gt;&lt;b&gt;확장성&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;651&quot; data-start=&quot;630&quot; data-col-size=&quot;sm&quot;&gt;수직 확장 중심 (서버 성능 &amp;uarr;)&lt;/td&gt;
&lt;td data-end=&quot;671&quot; data-start=&quot;651&quot; data-col-size=&quot;sm&quot;&gt;수평 확장 중심 (노드 추가)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;727&quot; data-start=&quot;672&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;684&quot; data-start=&quot;672&quot;&gt;&lt;b&gt;쿼리 언어&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;703&quot; data-start=&quot;684&quot;&gt;SQL (표준화된 쿼리 언어)&lt;/td&gt;
&lt;td data-end=&quot;727&quot; data-start=&quot;703&quot; data-col-size=&quot;sm&quot;&gt;JSON 기반 쿼리 또는 전용 API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;777&quot; data-start=&quot;728&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;741&quot; data-start=&quot;728&quot;&gt;&lt;b&gt;무결성 관리&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;757&quot; data-start=&quot;741&quot;&gt;제약조건 기반 내부 통제&lt;/td&gt;
&lt;td data-end=&quot;777&quot; data-start=&quot;757&quot; data-col-size=&quot;sm&quot;&gt;무결성은 어플리케이션에서 통제&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;782&quot; data-start=&quot;779&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;797&quot; data-start=&quot;784&quot; data-ke-size=&quot;size26&quot;&gt;2. 설계 철학 차이&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;946&quot; data-start=&quot;799&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;876&quot; data-start=&quot;799&quot;&gt;&lt;b&gt;RDBMS&lt;/b&gt;는 데이터를 &lt;b&gt;정규화(Normalization)&lt;/b&gt;하여 중복을 최소화하고, 무결성과 정합성을 유지하는 데 중점을 둡니다.&lt;/li&gt;
&lt;li data-end=&quot;946&quot; data-start=&quot;877&quot;&gt;&lt;b&gt;NoSQL&lt;/b&gt;은 &lt;b&gt;반정규화(Denormalization)&lt;/b&gt;와 중첩 구조로 빠른 응답성과 확장성에 최적화되어 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;992&quot; data-start=&quot;948&quot; data-ke-size=&quot;size16&quot;&gt;이처럼 &lt;b&gt;정합성 중심 vs 성능 중심&lt;/b&gt;이라는 설계 철학의 차이가 뚜렷합니다.&lt;/p&gt;
&lt;hr data-end=&quot;997&quot; data-start=&quot;994&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1024&quot; data-start=&quot;999&quot; data-ke-size=&quot;size26&quot;&gt;3. 어떤 상황에서 무엇을 선택해야 할까?&lt;/h2&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 105px;&quot; border=&quot;1&quot; data-end=&quot;1371&quot; data-start=&quot;1026&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;선택 기준&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;RDBMS가 적합한 경우&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;NoSQL이 적합한 경우&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot; data-end=&quot;1203&quot; data-start=&quot;1130&quot;&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;1144&quot; data-start=&quot;1130&quot;&gt;&lt;b&gt;정합성 중요도&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;1171&quot; data-start=&quot;1144&quot;&gt;데이터 무결성이 최우선 (예: 은행, 회계)&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;1203&quot; data-start=&quot;1171&quot; data-col-size=&quot;sm&quot;&gt;일시적인 불일치는 감수 가능 (예: SNS, 로그)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot; data-end=&quot;1257&quot; data-start=&quot;1204&quot;&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;1217&quot; data-start=&quot;1204&quot;&gt;&lt;b&gt;데이터 구조&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;1234&quot; data-start=&quot;1217&quot; data-col-size=&quot;sm&quot;&gt;스키마가 고정적이고 정형적&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;1257&quot; data-start=&quot;1234&quot; data-col-size=&quot;sm&quot;&gt;데이터 구조가 자주 바뀌거나 유연함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot; data-end=&quot;1317&quot; data-start=&quot;1258&quot;&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;1271&quot; data-start=&quot;1258&quot;&gt;&lt;b&gt;성능/확장성&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;1292&quot; data-start=&quot;1271&quot;&gt;안정된 서버 기반, 트랜잭션 중요&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;1317&quot; data-start=&quot;1292&quot;&gt;초대용량, 실시간 처리, 클라우드 환경&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot; data-end=&quot;1371&quot; data-start=&quot;1318&quot;&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;1331&quot; data-start=&quot;1318&quot;&gt;&lt;b&gt;쿼리 복잡도&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;1350&quot; data-start=&quot;1331&quot; data-col-size=&quot;sm&quot;&gt;복잡한 조인, 분석 쿼리 필요&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;1371&quot; data-start=&quot;1350&quot; data-col-size=&quot;sm&quot;&gt;단순한 Key 기반 조회가 많음&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;1376&quot; data-start=&quot;1373&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1396&quot; data-start=&quot;1378&quot; data-ke-size=&quot;size26&quot;&gt;4. 실무 사례로 보는 차이점&lt;/h2&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1642&quot; data-start=&quot;1398&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;분야&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;RDBMS&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;NoSQL&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1504&quot; data-start=&quot;1463&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1475&quot; data-start=&quot;1463&quot;&gt;&lt;b&gt;금융/보험&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1490&quot; data-start=&quot;1475&quot;&gt;고객 정보, 거래 기록&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1504&quot; data-start=&quot;1490&quot;&gt;거의 사용되지 않음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1552&quot; data-start=&quot;1505&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1517&quot; data-start=&quot;1505&quot;&gt;&lt;b&gt;전자상거래&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1531&quot; data-start=&quot;1517&quot;&gt;주문/결제/배송 정보&lt;/td&gt;
&lt;td data-end=&quot;1552&quot; data-start=&quot;1531&quot; data-col-size=&quot;sm&quot;&gt;상품 후기, 실시간 인기 검색어&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1599&quot; data-start=&quot;1553&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1567&quot; data-start=&quot;1553&quot;&gt;&lt;b&gt;SNS 플랫폼&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;1579&quot; data-start=&quot;1567&quot; data-col-size=&quot;sm&quot;&gt;회원/로그인 기록&lt;/td&gt;
&lt;td data-end=&quot;1599&quot; data-start=&quot;1579&quot; data-col-size=&quot;sm&quot;&gt;게시물, 좋아요, 실시간 댓글&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1642&quot; data-start=&quot;1600&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1616&quot; data-start=&quot;1600&quot;&gt;&lt;b&gt;IoT/로그 분석&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;1620&quot; data-start=&quot;1616&quot; data-col-size=&quot;sm&quot;&gt;-&lt;/td&gt;
&lt;td data-end=&quot;1642&quot; data-start=&quot;1620&quot; data-col-size=&quot;sm&quot;&gt;센서 데이터, 실시간 로그 스트림&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;1647&quot; data-start=&quot;1644&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1669&quot; data-start=&quot;1649&quot; data-ke-size=&quot;size26&quot;&gt;5. 혼합 설계&lt;/h2&gt;
&lt;p data-end=&quot;1784&quot; data-start=&quot;1671&quot; data-ke-size=&quot;size16&quot;&gt;현대의 많은 시스템은 &lt;b&gt;RDBMS와 NoSQL을 함께 사용하는 하이브리드 설계&lt;/b&gt;를 채택합니다. 예를 들어, 고객 정보는 RDBMS에 저장하고, 로그 데이터는 NoSQL로 수집 및 분석하는 구조입니다.&lt;/p&gt;
&lt;p data-end=&quot;1871&quot; data-start=&quot;1786&quot; data-ke-size=&quot;size16&quot;&gt;Polyglot Persistence(다중 DB 전략)과 &lt;b&gt;CQRS(명령/조회 분리)&lt;/b&gt; 같은 아키텍처는 이런 상황에 최적화된 방식입니다.&lt;/p&gt;
&lt;p data-end=&quot;1995&quot; data-start=&quot;1889&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1995&quot; data-start=&quot;1889&quot; data-ke-size=&quot;size16&quot;&gt;RDBMS와 NoSQL은 서로 대체 관계가 아니라 &lt;b&gt;보완 관계&lt;/b&gt;입니다.&lt;br /&gt;시스템의 특성과 요구사항을 정확히 분석한 뒤, 가장 적합한 데이터베이스 구조를 선택하는 것이 설계의 핵심입니다.&lt;/p&gt;</description>
      <category>정보관리기술사/데이터베이스</category>
      <category>nosql</category>
      <category>RDBMS</category>
      <category>rdbms nosql</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/252</guid>
      <comments>https://hungc.tistory.com/252#entry252comment</comments>
      <pubDate>Mon, 12 May 2025 08:22:16 +0900</pubDate>
    </item>
    <item>
      <title>AI 환각현상과 RAG 기술</title>
      <link>https://hungc.tistory.com/250</link>
      <description>&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;AI 환각현상(Hallucination)과 해결책 RAG(Retrieval-Augmented Generation)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-end=&quot;442&quot; data-start=&quot;212&quot; data-ke-size=&quot;size16&quot;&gt;인공지능이 아무리 똑똑해 보여도, 가끔 전혀 사실이 아닌 정보를 &lt;b&gt;그럴듯하게 말하는 경우&lt;/b&gt;가 있습니다.&lt;br /&gt;이처럼 &lt;b&gt;AI가 거짓 정보를 실제처럼 생성하는 현상&lt;/b&gt;을 &quot;AI 환각(Hallucination)&quot;이라고 부릅니다.&lt;br /&gt;&lt;b&gt;환각 문제의 개념&lt;/b&gt;과, 이를 해결하기 위한 핵심 기술 RAG (Retrieval-Augmented Generation)에 대해 알아보겠습니다.&lt;/p&gt;
&lt;hr data-end=&quot;447&quot; data-start=&quot;444&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;480&quot; data-start=&quot;449&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-end=&quot;480&quot; data-start=&quot;449&quot; data-ke-size=&quot;size26&quot;&gt;1. AI 환각현상(Hallucination)이란?&lt;/h2&gt;
&lt;p data-end=&quot;620&quot; data-start=&quot;482&quot; data-ke-size=&quot;size16&quot;&gt;AI 환각이란, &lt;b&gt;언어 모델이 존재하지 않는 정보나 틀린 사실을 진짜처럼 말하는 현상&lt;/b&gt;입니다.&lt;br /&gt;이것은 AI가 의도적으로 거짓말을 하는 것이 아니라, &lt;b&gt;내부에 저장된 지식을 바탕으로 확률적으로 가장 그럴듯한 문장을 만들어내기 때문&lt;/b&gt;입니다.&lt;/p&gt;
&lt;h3 data-end=&quot;638&quot; data-start=&quot;622&quot; data-ke-size=&quot;size23&quot;&gt;✔ 대표적인 환각 예시&lt;/h3&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;829&quot; data-start=&quot;640&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;입력환각&lt;/td&gt;
&lt;td&gt;응답 예시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;727&quot; data-start=&quot;684&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;700&quot; data-start=&quot;684&quot;&gt;테슬라의 CEO는 누구야?&lt;/td&gt;
&lt;td data-end=&quot;727&quot; data-start=&quot;700&quot; data-col-size=&quot;sm&quot;&gt;&quot;트럼프입니다.&quot; (틀림)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;780&quot; data-start=&quot;728&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;748&quot; data-start=&quot;728&quot;&gt;1990년 노벨 AI 수상자는?&lt;/td&gt;
&lt;td data-end=&quot;780&quot; data-start=&quot;748&quot; data-col-size=&quot;sm&quot;&gt;&quot;존 스미스가 받았습니다.&quot; (존재하지 않는 인물)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;829&quot; data-start=&quot;781&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;793&quot; data-start=&quot;781&quot;&gt;논문 출처 알려줘&lt;/td&gt;
&lt;td data-end=&quot;829&quot; data-start=&quot;793&quot; data-col-size=&quot;sm&quot;&gt;&quot;Journal of AI, 2017&quot; (없는 논문 생성)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-end=&quot;848&quot; data-start=&quot;831&quot; data-ke-size=&quot;size23&quot;&gt;✔ 왜 환각이 발생할까?&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;990&quot; data-start=&quot;850&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;888&quot; data-start=&quot;850&quot;&gt;&lt;b&gt;(데이터) 지식의 한계&lt;/b&gt;: 모델은 훈련 시점 이후의 정보를 알 수 없음&lt;/li&gt;
&lt;li data-end=&quot;923&quot; data-start=&quot;889&quot;&gt;&lt;b&gt;(검증) 정보 검증 불가&lt;/b&gt;: 외부 지식에 실시간 접근하지 않음&lt;/li&gt;
&lt;li data-end=&quot;990&quot; data-start=&quot;924&quot;&gt;&lt;b&gt;(모델) 확률적 생성 메커니즘&lt;/b&gt;: &amp;ldquo;가장 자연스러운 문장&amp;rdquo;을 만드는 것이 목표이지, &amp;ldquo;가장 정확한 정보&amp;rdquo;가 목표는 아님&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;995&quot; data-start=&quot;992&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1045&quot; data-start=&quot;997&quot; data-ke-size=&quot;size26&quot;&gt;2. RAG (Retrieval-Augmented Generation) 기술이란?&lt;/h2&gt;
&lt;p data-end=&quot;1156&quot; data-start=&quot;1047&quot; data-ke-size=&quot;size16&quot;&gt;RAG는 이러한 환각을 줄이기 위한 기술로, &lt;b&gt;언어 모델이 외부 지식 저장소(예: 문서, 데이터베이스)에서 실시간으로 관련 정보를 검색한 후, 그 내용을 바탕으로 답변을 생성하는 방식&lt;/b&gt;입니다.&lt;/p&gt;
&lt;h3 data-end=&quot;1172&quot; data-start=&quot;1158&quot; data-ke-size=&quot;size23&quot;&gt;✔ 핵심 개념 요약&lt;/h3&gt;
&lt;blockquote data-end=&quot;1251&quot; data-start=&quot;1174&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1251&quot; data-start=&quot;1176&quot; data-ke-size=&quot;size16&quot;&gt;RAG = &lt;b&gt;검색(Retrieval)&lt;/b&gt; + &lt;b&gt;생성(Generation)&lt;/b&gt;&lt;br /&gt;&amp;rarr; &quot;모르면 검색해서 답하자&quot;는 AI의 구조적 개선&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;1256&quot; data-start=&quot;1253&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1283&quot; data-start=&quot;1258&quot; data-ke-size=&quot;size26&quot;&gt;3. RAG의 작동 절차 (6단계 요약)&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1469&quot; data-start=&quot;1285&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1311&quot; data-start=&quot;1285&quot;&gt;&lt;b&gt;질문 입력&lt;/b&gt;: 사용자가 자연어로 질문&lt;/li&gt;
&lt;li data-end=&quot;1340&quot; data-start=&quot;1312&quot;&gt;&lt;b&gt;질문 임베딩&lt;/b&gt;: 의미를 숫자 벡터로 변환&lt;/li&gt;
&lt;li data-end=&quot;1371&quot; data-start=&quot;1341&quot;&gt;&lt;b&gt;문서 검색&lt;/b&gt;: 벡터 DB에서 유사 문서 검색&lt;/li&gt;
&lt;li data-end=&quot;1401&quot; data-start=&quot;1372&quot;&gt;&lt;b&gt;문서 선택/정제&lt;/b&gt;: 관련 문서를 압축 정리&lt;/li&gt;
&lt;li data-end=&quot;1436&quot; data-start=&quot;1402&quot;&gt;&lt;b&gt;응답 생성&lt;/b&gt;: 검색 결과 기반으로 LLM이 답 생성&lt;/li&gt;
&lt;li data-end=&quot;1469&quot; data-start=&quot;1437&quot;&gt;&lt;b&gt;응답 출력&lt;/b&gt;: 최종 결과 제공 (+ 출처 가능)&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-end=&quot;1474&quot; data-start=&quot;1471&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1494&quot; data-start=&quot;1476&quot; data-ke-size=&quot;size26&quot;&gt;4. 일반 vs RAG 비교&lt;/h2&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1683&quot; data-start=&quot;1496&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;항목&lt;/td&gt;
&lt;td&gt;일반 LLM&lt;/td&gt;
&lt;td&gt;RAG 기반 LLM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1596&quot; data-start=&quot;1562&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1570&quot; data-start=&quot;1562&quot;&gt;정보 출처&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1583&quot; data-start=&quot;1570&quot;&gt;내부 학습된 데이터&lt;/td&gt;
&lt;td data-end=&quot;1596&quot; data-start=&quot;1583&quot; data-col-size=&quot;sm&quot;&gt;외부 실시간 문서&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1628&quot; data-start=&quot;1597&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1603&quot; data-start=&quot;1597&quot;&gt;정확도&lt;/td&gt;
&lt;td data-end=&quot;1615&quot; data-start=&quot;1603&quot; data-col-size=&quot;sm&quot;&gt;환각 가능성 높음&lt;/td&gt;
&lt;td data-end=&quot;1628&quot; data-start=&quot;1615&quot; data-col-size=&quot;sm&quot;&gt;높은 신뢰도 유지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1652&quot; data-start=&quot;1629&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1640&quot; data-start=&quot;1629&quot;&gt;최신 정보 반영&lt;/td&gt;
&lt;td data-end=&quot;1646&quot; data-start=&quot;1640&quot; data-col-size=&quot;sm&quot;&gt;불가능&lt;/td&gt;
&lt;td data-end=&quot;1652&quot; data-start=&quot;1646&quot; data-col-size=&quot;sm&quot;&gt;가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1683&quot; data-start=&quot;1653&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1661&quot; data-start=&quot;1653&quot;&gt;출처 제시&lt;/td&gt;
&lt;td data-end=&quot;1667&quot; data-start=&quot;1661&quot; data-col-size=&quot;sm&quot;&gt;어려움&lt;/td&gt;
&lt;td data-end=&quot;1683&quot; data-start=&quot;1667&quot; data-col-size=&quot;sm&quot;&gt;명확한 출처 제공 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;1688&quot; data-start=&quot;1685&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1709&quot; data-start=&quot;1690&quot; data-ke-size=&quot;size26&quot;&gt;5. RAG 기술의 활용 사례&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1805&quot; data-start=&quot;1711&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1732&quot; data-start=&quot;1711&quot;&gt;기업용 사내 지식 검색 챗봇&lt;/li&gt;
&lt;li data-end=&quot;1756&quot; data-start=&quot;1733&quot;&gt;의료 분야 문헌 기반 진단 지원&lt;/li&gt;
&lt;li data-end=&quot;1779&quot; data-start=&quot;1757&quot;&gt;법률 문서 분석 및 조문 응답&lt;/li&gt;
&lt;li data-end=&quot;1805&quot; data-start=&quot;1780&quot;&gt;실시간 뉴스 기반 질문 응답 서비스&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;2015&quot; data-start=&quot;1823&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>정보관리기술사/인공지능</category>
      <category>ai 환각</category>
      <category>Hallucination</category>
      <category>Rag</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/250</guid>
      <comments>https://hungc.tistory.com/250#entry250comment</comments>
      <pubDate>Fri, 9 May 2025 23:31:08 +0900</pubDate>
    </item>
    <item>
      <title>AI 인공지능 용어 정리</title>
      <link>https://hungc.tistory.com/248</link>
      <description>&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: Noto Serif KR;&quot;&gt;AI 인공지능 맛보기&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Noto Serif KR;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;1. 인공지능(AI)이란?&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;AI (Artificial Intelligence)는 인간처럼 &lt;b&gt;사고하고 학습하며 판단&lt;/b&gt;하는 컴퓨터 시스템을 의미합니다.&lt;br /&gt;가장 상위 개념으로, 모든 스마트한 기술을 포괄합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예: 자율주행차, 챗봇, 번역기, 음성 인식 비서&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;2. AI 하위 개념: 머신러닝과 딥러닝&lt;/h2&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;1280&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIG8zl/btsNOpqhlwj/cAIIyoaIMcaub056IEKGTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIG8zl/btsNOpqhlwj/cAIIyoaIMcaub056IEKGTK/img.png&quot; data-alt=&quot;AI &amp;amp;gt; Machine Learning &amp;amp;gt; Deep Learning&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIG8zl/btsNOpqhlwj/cAIIyoaIMcaub056IEKGTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIG8zl%2FbtsNOpqhlwj%2FcAIIyoaIMcaub056IEKGTK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;427&quot; height=&quot;427&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1280&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;AI &amp;gt; Machine Learning &amp;gt; Deep Learning&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #777777; text-align: center;&quot;&gt;출처: &lt;a href=&quot;https://en.wikipedia.org/wiki/Artificial_intelligence#/media/File:AI_hierarchy.svg&quot;&gt;https://en.wikipedia.org/wiki/Artificial_intelligence#/media/File:AI_hierarchy.svg&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;머신러닝 (Machine Learning)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&amp;nbsp;머신러닝은 데이터를 기반으로 스스로 규칙을 학습하는 기술입니다. &lt;br /&gt;사람이 일일이 프로그래밍하지 않아도 데이터로부터 패턴을 찾아냅니다.&lt;/blockquote&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;딥러닝 (Deep Learning)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;딥러닝은 머신러닝의 한 분야로, 인간의 뇌 구조를 본뜬 인공 신경망(Neural Network)을 사용해 복잡한 문제를 해결합니다.&lt;br /&gt;현재 GPT 같은 최신 모델도 이 딥러닝 기술 기반입니다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;3. 머신러닝의 학습 유형&lt;/h2&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1024&quot; data-start=&quot;812&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;구분&lt;/td&gt;
&lt;td&gt;설명&lt;/td&gt;
&lt;td&gt;예시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;893&quot; data-start=&quot;852&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;859&quot; data-start=&quot;852&quot;&gt;지도학습&lt;/td&gt;
&lt;td data-end=&quot;880&quot; data-start=&quot;859&quot; data-col-size=&quot;sm&quot;&gt;정답(라벨)이 있는 데이터를 학습&lt;/td&gt;
&lt;td data-end=&quot;893&quot; data-start=&quot;880&quot; data-col-size=&quot;sm&quot;&gt;이메일 스팸 분류&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;931&quot; data-start=&quot;894&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;902&quot; data-start=&quot;894&quot;&gt;비지도학습&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;921&quot; data-start=&quot;902&quot;&gt;정답 없이 데이터의 패턴 탐색&lt;/td&gt;
&lt;td data-end=&quot;931&quot; data-start=&quot;921&quot; data-col-size=&quot;sm&quot;&gt;고객 군집화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;975&quot; data-start=&quot;932&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;940&quot; data-start=&quot;932&quot;&gt;준지도학습&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;963&quot; data-start=&quot;940&quot;&gt;일부만 라벨이 있는 혼합 데이터 사용&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;975&quot; data-start=&quot;963&quot;&gt;의료 영상 진단&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1024&quot; data-start=&quot;976&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;983&quot; data-start=&quot;976&quot;&gt;강화학습&lt;/td&gt;
&lt;td data-end=&quot;1008&quot; data-start=&quot;983&quot; data-col-size=&quot;sm&quot;&gt;보상을 기반으로 스스로 최적 행동을 학습&lt;/td&gt;
&lt;td data-end=&quot;1024&quot; data-start=&quot;1008&quot; data-col-size=&quot;sm&quot;&gt;게임 AI, 로봇 제어&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;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;714&quot; data-origin-height=&quot;317&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/R4jz5/btsNNjq4cQu/zraWcW48dnmxny8FHG5s11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/R4jz5/btsNNjq4cQu/zraWcW48dnmxny8FHG5s11/img.png&quot; data-alt=&quot;지도학습과 비지도학습&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/R4jz5/btsNNjq4cQu/zraWcW48dnmxny8FHG5s11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FR4jz5%2FbtsNNjq4cQu%2FzraWcW48dnmxny8FHG5s11%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;714&quot; height=&quot;317&quot; data-origin-width=&quot;714&quot; data-origin-height=&quot;317&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;지도학습과 비지도학습&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #777777; text-align: center;&quot;&gt;출처: &lt;a href=&quot;https://en.wikipedia.org/wiki/Artificial_intelligence#/media/File:Supervised_and_unsupervised_learning.png&quot;&gt;https://en.wikipedia.org/wiki/Artificial_intelligence#/media/File:Supervised_and_unsupervised_learning.png&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;4. 딥러닝의 구성 요소&lt;/h2&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;신경망 (Neural Network)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;입력 &amp;rarr; 은닉층(hidden layer) &amp;rarr; 출력 구조를 가지며, 데이터의 특징을 계층적으로 학습합니다.&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1715&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b061aX/btsNMS8hffE/YookaxhRom2hMdUwLL7TTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b061aX/btsNMS8hffE/YookaxhRom2hMdUwLL7TTK/img.png&quot; data-alt=&quot;신경망&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b061aX/btsNMS8hffE/YookaxhRom2hMdUwLL7TTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb061aX%2FbtsNMS8hffE%2FYookaxhRom2hMdUwLL7TTK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;375&quot; height=&quot;335&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1715&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;신경망&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;출처: &lt;a href=&quot;https://en.wikipedia.org/wiki/Artificial_intelligence#/media/File:Artificial_neural_network.svg&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Artificial_intelligence#/media/File:Artificial_neural_network.svg&lt;/a&gt;&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;활성화 함수 (Activation Function)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;각 뉴런이 활성화될지 결정합니다. 대표적으로 ReLU, Sigmoid 함수가 사용됩니다.&lt;/blockquote&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;손실 함수 (Loss Function)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;예측값과 실제값의 차이를 수치로 표현하며, 모델이 얼마나 틀렸는지 알려줍니다.&lt;/blockquote&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;경사하강법 (Gradient Descent)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;손실 값을 줄이기 위해 가중치를 조정하는 모델 최적화 알고리즘입니다.&lt;/blockquote&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;과적합 (Overfitting)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;학습 데이터에는 잘 맞지만, 새로운 데이터에는 성능이 떨어지는 현상입니다. 일반화 능력이 떨어지는 상태입니다.&lt;/blockquote&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;정규화 (Regularization)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;과적합을 방지하기 위한 기술로, Dropout이나 L2 정규화 등이 있습니다.&amp;nbsp;&lt;/blockquote&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;5. 최신 AI 트렌드: 트랜스포머와 LLM&lt;/h2&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;트랜스포머 (Transformer)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;자연어 처리(NLP)에서 사용되는 딥러닝 모델 구조로, 문장 내 단어들 사이의 관계를 동시에 처리할 수 있습니다.&lt;br /&gt;GPT, BERT 모델의 기반이 되는 구조입니다.&lt;/blockquote&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;어텐션 메커니즘 (Attention Mechanism)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&amp;nbsp;트랜스포머의 핵심 개념으로, 어떤 단어에 집중할지 가중치를 부여하여 문맥 이해를 향상시킵니다.&lt;/blockquote&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;LLM (Large Language Model)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;수십억~수천억 개의 파라미터를 가진 대규모 언어 모델입니다.&lt;br /&gt;&amp;nbsp;방대한 텍스트를 학습하여 사람처럼 자연스럽게 문장을 생성하고 이해합니다.&amp;nbsp;&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;대표 모델: GPT-4, Claude, Gemini, LLaMA 등&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;사전학습 &amp;amp; 파인튜닝 (Pretraining &amp;amp; Fine-tuning)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;사전학습(Pretraining): 일반 데이터를 이용해 모델이 언어를 기본적으로 이해하도록 학습&lt;br /&gt;&lt;b&gt;파인튜닝(Fine-tuning)&lt;/b&gt;: 특정 작업(요약, 번역 등)을 위해 추가 학습&lt;/blockquote&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;6. 주요 응용 분야&lt;/h2&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;2327&quot; data-start=&quot;2096&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;분야&lt;/td&gt;
&lt;td&gt;설명&lt;/td&gt;
&lt;td&gt;예시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2183&quot; data-start=&quot;2136&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2151&quot; data-start=&quot;2136&quot;&gt;자연어 처리 (NLP)&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2165&quot; data-start=&quot;2151&quot;&gt;텍스트 분석 및 생성&lt;/td&gt;
&lt;td data-end=&quot;2183&quot; data-start=&quot;2165&quot; data-col-size=&quot;sm&quot;&gt;번역기, 챗봇, 감성 분석&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2225&quot; data-start=&quot;2184&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2198&quot; data-start=&quot;2184&quot;&gt;컴퓨터 비전 (CV)&lt;/td&gt;
&lt;td data-end=&quot;2210&quot; data-start=&quot;2198&quot; data-col-size=&quot;sm&quot;&gt;이미지/영상 분석&lt;/td&gt;
&lt;td data-end=&quot;2225&quot; data-start=&quot;2210&quot; data-col-size=&quot;sm&quot;&gt;얼굴 인식, 자율주행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2272&quot; data-start=&quot;2226&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2242&quot; data-start=&quot;2226&quot;&gt;생성 AI (GAN 등)&lt;/td&gt;
&lt;td data-end=&quot;2256&quot; data-start=&quot;2242&quot; data-col-size=&quot;sm&quot;&gt;새로운 데이터를 생성&lt;/td&gt;
&lt;td data-end=&quot;2272&quot; data-start=&quot;2256&quot; data-col-size=&quot;sm&quot;&gt;AI 이미지, 딥페이크&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2327&quot; data-start=&quot;2273&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2290&quot; data-start=&quot;2273&quot;&gt;추론 (Inference)&lt;/td&gt;
&lt;td data-end=&quot;2306&quot; data-start=&quot;2290&quot; data-col-size=&quot;sm&quot;&gt;학습된 모델을 실제 적용&lt;/td&gt;
&lt;td data-end=&quot;2327&quot; data-start=&quot;2306&quot; data-col-size=&quot;sm&quot;&gt;고양이 이미지 인식, 문장 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;7. AI의 한계와 윤리적 이슈&lt;/h2&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;허위 생성 (Hallucination)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;LLM이 존재하지 않는 정보나 사실과 다른 내용을 만들어내는 현상입니다.&lt;/blockquote&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;편향 (Bias)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;학습 데이터가 편향되어 있으면, 모델도 차별적 결과를 낼 수 있습니다.&lt;/blockquote&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;설명가능성 (Explainability)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;AI가 어떤 이유로 그 결과를 냈는지 이해하고 설명할 수 있는 능력이 중요합니다.&lt;/blockquote&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;윤리와 규제&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;AI의 발전과 함께 개인정보 보호, 공정성, 책임 소재 등 사회적 기준 마련이 중요해졌습니다.&lt;/blockquote&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;요약&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;AI&lt;/b&gt;는 사람처럼 사고하는 기술 전체&lt;/li&gt;
&lt;li&gt;&lt;b&gt;머신러닝&lt;/b&gt;은 데이터를 통해 학습하는 기술&lt;/li&gt;
&lt;li&gt;&lt;b&gt;딥러닝&lt;/b&gt;은 신경망 기반의 심층 학습&lt;/li&gt;
&lt;li&gt;&lt;b&gt;트랜스포머 &amp;amp; LLM&lt;/b&gt;은 최신 언어 이해/생성 기술&lt;/li&gt;
&lt;li&gt;&lt;b&gt;실생활&lt;/b&gt;에 널리 응용되며, &lt;b&gt;윤리 문제&lt;/b&gt;도 반드시 고려해야 함&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>정보관리기술사/인공지능</category>
      <category>AI</category>
      <category>ai 용어</category>
      <category>인공지능</category>
      <category>정보관리기술사 ai</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/248</guid>
      <comments>https://hungc.tistory.com/248#entry248comment</comments>
      <pubDate>Thu, 8 May 2025 09:00:00 +0900</pubDate>
    </item>
    <item>
      <title>제네시스 홈투홈 서비스</title>
      <link>https://hungc.tistory.com/249</link>
      <description>&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: Noto Serif KR;&quot;&gt;제네시스 홈투홈 서비스&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;어느 날 차량에 엔진오일 교체 경고등 알람이 발생했고, MY GENESIS 어플에서는 배터리 주의, 기본점검 알림이와 있었다.&lt;br /&gt;총체적 난국이다..&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;2532&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/daJdiC/btsNNDC6PtQ/cMna7v9NnLsDFU0ieM6TN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/daJdiC/btsNNDC6PtQ/cMna7v9NnLsDFU0ieM6TN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/daJdiC/btsNNDC6PtQ/cMna7v9NnLsDFU0ieM6TN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdaJdiC%2FbtsNNDC6PtQ%2FcMna7v9NnLsDFU0ieM6TN1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;389&quot; height=&quot;842&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;2532&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;차량 정기점검받은 지도 얼마 안 됐었고 5월 중순에는 와이프 K3 결함이 있다고 점검받으라고 연락이 온터라, 차 점검으로만 시간이 너무 뺏긴다고 생각이 들어서 답답했다.. ㅠ&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;제네시스 홈투홈서비스 예약방법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어쨌든 차량 점검은 해야 하니 점검 예약을 진행하려고 했더니 제네시스 홈투홈 서비스를 제공하는 것이다!&lt;br /&gt;(참고로 제네시스 점검 예약은 'MY GENESIS' 어플로 쉽게 예약할 수 있다.)&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;어떤 정비를 할 건지 항목을 선택하는데, 크게 모빌리티케어, 소모품교체, 일반/품질 정비, 제네시스 안심점검으로 나눠진다.&lt;br /&gt;나는 엔진오일 교체하고 하는 김에 곧 여름이니 에어컨 필터 교체와 함께 안심점검을 선택했고 요청사항에 배터리 경고등 발생도 함께 작성했다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;그리고 날짜와 함께 장소를 선택하면 되는데, GPS 기반으로 현재 위치에서 가까운 장소가 나열된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3rkWA/btsNPIbOvXb/TEAwVseFBWoyAkKFqs9TW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3rkWA/btsNPIbOvXb/TEAwVseFBWoyAkKFqs9TW1/img.png&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;2532&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3rkWA/btsNPIbOvXb/TEAwVseFBWoyAkKFqs9TW1/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3rkWA%2FbtsNPIbOvXb%2FTEAwVseFBWoyAkKFqs9TW1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1170&quot; height=&quot;2532&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ppq8z/btsNPDImvqF/TJ1L1KbjN5gnj9wvegbdF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ppq8z/btsNPDImvqF/TJ1L1KbjN5gnj9wvegbdF1/img.png&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;2532&quot; style=&quot;width: 49.4186%;&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ppq8z/btsNPDImvqF/TJ1L1KbjN5gnj9wvegbdF1/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fppq8z%2FbtsNPDImvqF%2FTJ1L1KbjN5gnj9wvegbdF1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1170&quot; height=&quot;2532&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;그리고 정비 예약을 눌렀는데, 아래와 같이 홈투홈 서비스 팝업이 떴다!&lt;br /&gt;예약을 자연스럽게 유도해 주고 제네시스 앱에서 UX에 신경을 좀 썼네라고 생각이 들었다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;나도 몰랐는데 잔여 6개가 남아있었고 바로 홈투홈 서비스를 통해 예약을 진행했다.&lt;br /&gt;예약은 크게 안 어려웠고 어디로 차량을 픽업할 건지 주소와 연락처 정보를 기입하면 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;2532&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cAw0tA/btsNOraWp7O/sWQPQ6BOmIOm8VvWEPPZ31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cAw0tA/btsNOraWp7O/sWQPQ6BOmIOm8VvWEPPZ31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cAw0tA/btsNOraWp7O/sWQPQ6BOmIOm8VvWEPPZ31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcAw0tA%2FbtsNOraWp7O%2FsWQPQ6BOmIOm8VvWEPPZ31%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;649&quot; height=&quot;1405&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;2532&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;참고로 기본거리가 12km 초과 시 고객부담금액이 발생하므로 차량을 픽업할 수 있는 장소와 가까운 지점에서 검사를 받는 것을 권장한다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;예약을 하고 나면 약간이 시간이 흐른 뒤에 아래와 같이 카톡으로 알람 메시지가 전송된다. (개인정보 제거)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1157&quot; data-origin-height=&quot;2277&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bApSwd/btsNRK230hC/7JNpJieuzRTA6Xs9WHcuD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bApSwd/btsNRK230hC/7JNpJieuzRTA6Xs9WHcuD1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bApSwd/btsNRK230hC/7JNpJieuzRTA6Xs9WHcuD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbApSwd%2FbtsNRK230hC%2F7JNpJieuzRTA6Xs9WHcuD1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1157&quot; height=&quot;2277&quot; data-origin-width=&quot;1157&quot; data-origin-height=&quot;2277&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;아직 서비스를 직접 받진 않았는데, 받게 되면 후기를 아래에 다시 남기겠다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;홈투홈서비스 후기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 서비스 결과는 너무 만족스러웠다.&lt;br /&gt;3일 전, 하루 전에 예약 알림 문자가 와서 잊지 않도록 리마인드 해주고 당일에 기사님 출발 알림톡을 받을 수 있다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;그리고 차량 키를 전달해드리고 점검 후에 다시 차를 전달받으면 끝이다.&lt;br /&gt;그동안 기사님 출발 -&amp;gt; 차량 인수 -&amp;gt; 점검 시작 -&amp;gt; 점검완료 후 출발 -&amp;gt; 차량 인계 완료 알림톡이 계속 실시간 상황을 받아 볼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9Z92S/btsNTkRFW2r/4Q4XbV1Jb7QvYfxVWxXdC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9Z92S/btsNTkRFW2r/4Q4XbV1Jb7QvYfxVWxXdC0/img.png&quot; data-origin-width=&quot;1029&quot; data-origin-height=&quot;1274&quot; data-is-animation=&quot;false&quot; style=&quot;width: 40.758%; margin-right: 10px;&quot; data-widthpercent=&quot;41.24&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9Z92S/btsNTkRFW2r/4Q4XbV1Jb7QvYfxVWxXdC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9Z92S%2FbtsNTkRFW2r%2F4Q4XbV1Jb7QvYfxVWxXdC0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1029&quot; height=&quot;1274&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dLXbLg/btsNTzufqde/UZyVkdxlYAA94CoCUSOqlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dLXbLg/btsNTzufqde/UZyVkdxlYAA94CoCUSOqlK/img.png&quot; data-origin-width=&quot;1037&quot; data-origin-height=&quot;901&quot; data-is-animation=&quot;false&quot; width=&quot;614&quot; height=&quot;533&quot; data-widthpercent=&quot;58.76&quot; style=&quot;width: 58.0792%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dLXbLg/btsNTzufqde/UZyVkdxlYAA94CoCUSOqlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdLXbLg%2FbtsNTzufqde%2FUZyVkdxlYAA94CoCUSOqlK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1037&quot; height=&quot;901&quot;/&gt;&lt;/span&gt;&lt;/div&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;br /&gt;&amp;nbsp;&lt;br /&gt;마지막으로 만족도 조사 알람이 오는데, 당연히 너무 만족스러워서 5점으로 평가했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1007&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMoEoc/btsNUFttlwE/OKYCZ18R8gnR9i6YTkrUT1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMoEoc/btsNUFttlwE/OKYCZ18R8gnR9i6YTkrUT1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMoEoc/btsNUFttlwE/OKYCZ18R8gnR9i6YTkrUT1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMoEoc%2FbtsNUFttlwE%2FOKYCZ18R8gnR9i6YTkrUT1%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;653&quot; height=&quot;562&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1007&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;앞으로 잔여쿠폰 다 사용할 때까지 해당 서비스를 이용할 계획이다.&lt;br /&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Daily</category>
      <category>my genesis</category>
      <category>제네시스 점검</category>
      <category>제네시스 정비</category>
      <category>제네시스 홈투홈</category>
      <category>제네시스 홈투홈 서비스</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/249</guid>
      <comments>https://hungc.tistory.com/249#entry249comment</comments>
      <pubDate>Wed, 7 May 2025 10:10:23 +0900</pubDate>
    </item>
    <item>
      <title>가상화(Virtualization) 기술</title>
      <link>https://hungc.tistory.com/246</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;가상화(Virtualization)는 현대 IT 환경의 핵심 기술 중 하나로, 서버 자원의 효율적인 활용은 물론, 클라우드 인프라, 소프트웨어 테스트, 개발 환경 격리 등 다양한 분야에서 필수적으로 사용됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;가상화 기술의 개념부터 종류, 하이퍼바이저, LXC, Docker까지&lt;/b&gt; 구조와 비교를 포함해 쉽게 정리해봅시다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;hr data-end=&quot;294&quot; data-start=&quot;291&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;308&quot; data-start=&quot;296&quot; data-ke-size=&quot;size26&quot;&gt;1. 가상화란?&lt;/h2&gt;
&lt;p data-end=&quot;435&quot; data-start=&quot;310&quot; data-ke-size=&quot;size16&quot;&gt;가상화란, &lt;b&gt;물리적인 자원을 논리적으로 분리&lt;/b&gt;하여 하나의 시스템에서 여러 개의 독립된 시스템처럼 운영할 수 있게 하는 기술입니다. 서버, 운영체제, 저장소, 네트워크 등 다양한 자원을 가상화할 수 있으며, 효율성, 확장성, 보안성 측면에서 큰 이점을 제공합니다.&lt;/p&gt;
&lt;blockquote data-end=&quot;523&quot; data-start=&quot;437&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;523&quot; data-start=&quot;439&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어, 하나의 서버에서 여러 개의 운영체제를 동시에 실행하거나, 하나의 운영체제 안에서 여러 개의 앱을 각각 격리된 환경에서 실행할 수 있습니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-end=&quot;528&quot; data-start=&quot;525&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;547&quot; data-start=&quot;530&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-end=&quot;547&quot; data-start=&quot;530&quot; data-ke-size=&quot;size26&quot;&gt;2. 가상화 기술의 분류&lt;/h2&gt;
&lt;p data-end=&quot;565&quot; data-start=&quot;549&quot; data-ke-size=&quot;size16&quot;&gt;&amp;lt;목적에 따른 분류&amp;gt;&lt;/p&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1268&quot; data-start=&quot;567&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr data-end=&quot;893&quot; data-start=&quot;794&quot;&gt;
&lt;td style=&quot;width: 29.8837%;&quot; data-col-size=&quot;sm&quot; data-end=&quot;813&quot; data-start=&quot;794&quot;&gt;&lt;b&gt;서버 가상화&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 70%;&quot; data-col-size=&quot;sm&quot; data-end=&quot;858&quot; data-start=&quot;813&quot;&gt;물리 서버를 여러 가상 머신으로 분할&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;987&quot; data-start=&quot;894&quot;&gt;
&lt;td style=&quot;width: 29.8837%;&quot; data-col-size=&quot;sm&quot; data-end=&quot;911&quot; data-start=&quot;894&quot;&gt;&lt;b&gt;데스크탑 가상화&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 70%;&quot; data-end=&quot;952&quot; data-start=&quot;911&quot; data-col-size=&quot;sm&quot;&gt;사용자 환경을 중앙 서버에서 가상으로 제공&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1081&quot; data-start=&quot;988&quot;&gt;
&lt;td style=&quot;width: 29.8837%;&quot; data-col-size=&quot;sm&quot; data-end=&quot;1005&quot; data-start=&quot;988&quot;&gt;&lt;b&gt;스토리지 가상화&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 70%;&quot; data-col-size=&quot;sm&quot; data-end=&quot;1046&quot; data-start=&quot;1005&quot;&gt;다양한 저장소를 하나의 논리 저장소처럼 운영&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1172&quot; data-start=&quot;1082&quot;&gt;
&lt;td style=&quot;width: 29.8837%;&quot; data-col-size=&quot;sm&quot; data-end=&quot;1099&quot; data-start=&quot;1082&quot;&gt;&lt;b&gt;네트워크 가상화&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 70%;&quot; data-col-size=&quot;sm&quot; data-end=&quot;1137&quot; data-start=&quot;1099&quot;&gt;네트워크를 논리적으로 분리하여 다중 네트워크 구현&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1268&quot; data-start=&quot;1173&quot;&gt;
&lt;td style=&quot;width: 29.8837%;&quot; data-col-size=&quot;sm&quot; data-end=&quot;1189&quot; data-start=&quot;1173&quot;&gt;&lt;b&gt;애플리케이션 가상화&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 70%;&quot; data-col-size=&quot;sm&quot; data-end=&quot;1233&quot; data-start=&quot;1189&quot;&gt;OS와 애플리케이션 간의 실행 환경을 분리&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1294&quot; data-start=&quot;1275&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1294&quot; data-start=&quot;1275&quot; data-ke-size=&quot;size16&quot;&gt;&amp;lt;실행 방식에 따른 분류&amp;gt;&lt;/p&gt;
&lt;h4 data-end=&quot;1316&quot; data-start=&quot;1296&quot; data-ke-size=&quot;size20&quot;&gt;✅ 하이퍼바이저 기반 가상화&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1459&quot; data-start=&quot;1318&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1384&quot; data-start=&quot;1318&quot;&gt;&lt;b&gt;Type 1 (Bare-Metal)&lt;/b&gt;: 하드웨어에 직접 설치되어 실행 (ex. VMware ESXi, KVM)&lt;/li&gt;
&lt;li data-end=&quot;1459&quot; data-start=&quot;1385&quot;&gt;&lt;b&gt;Type 2 (Hosted)&lt;/b&gt;: 기존 운영체제 위에서 실행 (ex. VirtualBox, VMware Workstation)&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;1479&quot; data-start=&quot;1461&quot; data-ke-size=&quot;size20&quot;&gt;✅ 컨테이너 기반 가상화&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1555&quot; data-start=&quot;1481&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1555&quot; data-start=&quot;1515&quot;&gt;리눅스 커널의 namespace, cgroups 등을 이용하여 사용자 공간 격리&lt;/li&gt;
&lt;li data-end=&quot;1555&quot; data-start=&quot;1515&quot;&gt;대표 기술: &lt;b&gt;LXC&lt;/b&gt;, &lt;b&gt;Docker&lt;/b&gt;, &lt;b&gt;Podman&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-end=&quot;1560&quot; data-start=&quot;1557&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1577&quot; data-start=&quot;1562&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-end=&quot;1577&quot; data-start=&quot;1562&quot; data-ke-size=&quot;size26&quot;&gt;3. 하이퍼바이저란?&lt;/h2&gt;
&lt;p data-end=&quot;1633&quot; data-start=&quot;1579&quot; data-ke-size=&quot;size16&quot;&gt;하이퍼바이저(Hypervisor)는 가상 머신(VM)을 생성하고 관리하는 소프트웨어입니다.&lt;/p&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1928&quot; data-start=&quot;1635&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;1928&quot; data-start=&quot;1791&quot;&gt;
&lt;tr data-end=&quot;1860&quot; data-start=&quot;1791&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1801&quot; data-start=&quot;1791&quot;&gt;Type 1&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1829&quot; data-start=&quot;1801&quot;&gt;하드웨어에서 직접 실행&lt;/td&gt;
&lt;td data-end=&quot;1860&quot; data-start=&quot;1829&quot; data-col-size=&quot;sm&quot;&gt;VMware ESXi, Hyper-V, KVM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1928&quot; data-start=&quot;1861&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1871&quot; data-start=&quot;1861&quot;&gt;Type 2&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1894&quot; data-start=&quot;1871&quot;&gt;OS 위에서 실행되는 애플리케이션 형태&lt;/td&gt;
&lt;td data-end=&quot;1928&quot; data-start=&quot;1894&quot; data-col-size=&quot;sm&quot;&gt;VirtualBox, VMware Workstation&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1990&quot; data-start=&quot;1930&quot; data-ke-size=&quot;size16&quot;&gt;하이퍼바이저는 CPU, 메모리, I/O 등의 자원을 분리하여 각 VM에 분배하고, 격리된 환경을 제공합니다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2779&quot; data-origin-height=&quot;1180&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tn0xe/btsNKhzIrlI/RGShvJlmd6LV0ux6NOrSu0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tn0xe/btsNKhzIrlI/RGShvJlmd6LV0ux6NOrSu0/img.png&quot; data-alt=&quot;Hypervisor 유형&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tn0xe/btsNKhzIrlI/RGShvJlmd6LV0ux6NOrSu0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ftn0xe%2FbtsNKhzIrlI%2FRGShvJlmd6LV0ux6NOrSu0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2779&quot; height=&quot;1180&quot; data-origin-width=&quot;2779&quot; data-origin-height=&quot;1180&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Hypervisor 유형&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;hr data-end=&quot;1995&quot; data-start=&quot;1992&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2025&quot; data-start=&quot;1997&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-end=&quot;2025&quot; data-start=&quot;1997&quot; data-ke-size=&quot;size26&quot;&gt;4. LXC(Linux Containers)&lt;/h2&gt;
&lt;p data-end=&quot;2106&quot; data-start=&quot;2027&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;LXC&lt;/b&gt;는 리눅스 커널의 Namespaces와 Cgroups 기능을 활용하여 컨테이너를 구현하는 운영체제 수준 가상화 기술입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2176&quot; data-start=&quot;2108&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2130&quot; data-start=&quot;2108&quot;&gt;하이퍼바이저 없이 &lt;b&gt;커널을 공유&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;2300&quot; data-start=&quot;2271&quot;&gt;&lt;b&gt;컨테이너&lt;/b&gt;: 격리된 사용자 공간에서 앱 실행&lt;/li&gt;
&lt;li data-end=&quot;2337&quot; data-start=&quot;2301&quot;&gt;&lt;b&gt;libvirt / LXC 도구&lt;/b&gt;: 컨테이너 생성 및 관리&lt;/li&gt;
&lt;li data-end=&quot;2373&quot; data-start=&quot;2338&quot;&gt;&lt;b&gt;커널 공유&lt;/b&gt;: 모든 컨테이너가 동일한 리눅스 커널 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-end=&quot;2240&quot; data-start=&quot;2178&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;2240&quot; data-start=&quot;2180&quot; data-ke-size=&quot;size16&quot;&gt;Docker의 초기 버전도 내부적으로 LXC를 기반으로 했으며, 지금은 runc라는 런타임을 사용합니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;2245&quot; data-start=&quot;2242&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;hr data-end=&quot;2443&quot; data-start=&quot;2440&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2460&quot; data-start=&quot;2445&quot; data-ke-size=&quot;size26&quot;&gt;5. Docker&lt;/h2&gt;
&lt;p data-end=&quot;2620&quot; data-start=&quot;2462&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Docker&lt;/b&gt;는 컨테이너 기술을 더 쉽게 사용할 수 있도록 만든 &lt;b&gt;애플리케이션 중심의 가상화 플랫폼&lt;/b&gt;입니다. LXC와 유사하게 리눅스 커널을 공유하지만, 애플리케이션 단위로 패키징하고 배포할 수 있어 &lt;b&gt;DevOps, CI/CD, 마이크로서비스&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;2822&quot; data-start=&quot;2768&quot;&gt;&lt;b&gt;Docker Engine&lt;/b&gt;: 컨테이너 생성&amp;middot;실행&amp;middot;관리 (runc + containerd)&lt;/li&gt;
&lt;li data-end=&quot;2854&quot; data-start=&quot;2823&quot;&gt;&lt;b&gt;이미지 기반 배포&lt;/b&gt;: 앱과 환경을 하나로 패키징&lt;/li&gt;
&lt;li data-end=&quot;2896&quot; data-start=&quot;2855&quot;&gt;&lt;b&gt;오케스트레이션&lt;/b&gt;: Kubernetes와 연동하여 대규모 운영 가능&lt;/li&gt;
&lt;/ul&gt;
&amp;nbsp;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;2266&quot; data-start=&quot;2247&quot; data-ke-size=&quot;size26&quot;&gt;6. 차이점 분석&lt;/h2&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;2965&quot; data-start=&quot;2268&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;2965&quot; data-start=&quot;2484&quot;&gt;
&lt;tr&gt;
&lt;td&gt;구분&lt;/td&gt;
&lt;td&gt;가상머신&lt;/td&gt;
&lt;td&gt;LXC&lt;/td&gt;
&lt;td&gt;도커&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2578&quot; data-start=&quot;2484&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2493&quot; data-start=&quot;2484&quot;&gt;격리 수준&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2520&quot; data-start=&quot;2493&quot;&gt;하드웨어 수준&lt;/td&gt;
&lt;td data-end=&quot;2550&quot; data-start=&quot;2520&quot; data-col-size=&quot;sm&quot;&gt;OS 수준&lt;/td&gt;
&lt;td data-end=&quot;2578&quot; data-start=&quot;2550&quot; data-col-size=&quot;sm&quot;&gt;OS 수준 (경량화됨)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2677&quot; data-start=&quot;2579&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2588&quot; data-start=&quot;2579&quot;&gt;부팅 속도&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2618&quot; data-start=&quot;2588&quot;&gt;느림&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2648&quot; data-start=&quot;2618&quot;&gt;빠름&lt;/td&gt;
&lt;td data-end=&quot;2677&quot; data-start=&quot;2648&quot; data-col-size=&quot;sm&quot;&gt;매우 빠름&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2777&quot; data-start=&quot;2678&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2687&quot; data-start=&quot;2678&quot;&gt;커널 공유&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2713&quot; data-start=&quot;2687&quot;&gt;X (자체 커널 사용)&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2744&quot; data-start=&quot;2713&quot;&gt;O&lt;/td&gt;
&lt;td data-end=&quot;2777&quot; data-start=&quot;2744&quot; data-col-size=&quot;sm&quot;&gt;O&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2860&quot; data-start=&quot;2778&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2789&quot; data-start=&quot;2778&quot;&gt;용도&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2815&quot; data-start=&quot;2789&quot;&gt;OS 환경 전체 가상화&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2838&quot; data-start=&quot;2815&quot;&gt;시스템 단위 컨테이너&lt;/td&gt;
&lt;td data-end=&quot;2860&quot; data-start=&quot;2838&quot; data-col-size=&quot;sm&quot;&gt;애플리케이션 단위 컨테이너&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2965&quot; data-start=&quot;2861&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2870&quot; data-start=&quot;2861&quot;&gt;대표 기술&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2901&quot; data-start=&quot;2870&quot;&gt;VMware, Hyper-V, KVM&lt;/td&gt;
&lt;td data-end=&quot;2932&quot; data-start=&quot;2901&quot; data-col-size=&quot;sm&quot;&gt;LXC&lt;/td&gt;
&lt;td data-end=&quot;2965&quot; data-start=&quot;2932&quot; data-col-size=&quot;sm&quot;&gt;Docker, Kubernetes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;3371&quot; data-start=&quot;3364&quot; data-ke-size=&quot;size26&quot;&gt;결론&lt;/h2&gt;
&lt;p data-end=&quot;3513&quot; data-start=&quot;3373&quot; data-ke-size=&quot;size16&quot;&gt;가상화 기술은 &lt;b&gt;클라우드 컴퓨팅&lt;/b&gt;, &lt;b&gt;개발 환경 구성&lt;/b&gt;, &lt;b&gt;인프라 통합&lt;/b&gt;, &lt;b&gt;보안 강화&lt;/b&gt; 등 다양한 분야에서 핵심 역할을 합니다.&lt;br /&gt;특히, 컨테이너 기반 기술은 최근 DevOps와 마이크로서비스 아키텍처에서 표준처럼 사용되고 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;3513&quot; data-start=&quot;3373&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;3582&quot; data-start=&quot;3515&quot; data-ke-size=&quot;size16&quot;&gt;가상화를 통한 자원 효율성 향상, 비용 절감, 유연한 확장성, 격리성, 빠른 배포와 백업이 가능해집니다.&lt;/p&gt;</description>
      <category>정보관리기술사/디지털서비스</category>
      <category>hypervisor</category>
      <category>LXC</category>
      <category>가상머신</category>
      <category>가상화</category>
      <category>도커</category>
      <category>하이퍼바이저</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/246</guid>
      <comments>https://hungc.tistory.com/246#entry246comment</comments>
      <pubDate>Sat, 3 May 2025 12:54:44 +0900</pubDate>
    </item>
    <item>
      <title>상암 별소아청소년과 의원</title>
      <link>https://hungc.tistory.com/243</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: Noto Serif KR;&quot;&gt;상암 별소아청소년과 의원&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;상암으로 이사 온 뒤 맛집, 어린이집, 공원 등 만족스러운 게 많은데, 그 중 소아과 만족도가 Top 3 안에 드는 것 같다.&lt;br /&gt;이사오기 전에 다니던 소아과는 너무 불친절하고 접종주사를 착각할 뻔한 적도 있어서 다니기 싫었지만 근처 소아과가 하나뿐이라 억지로 다녔었다.&lt;br /&gt;&lt;br /&gt;아이가 한창 어린이집에 다니고 감기에 걸려올 일이 많아 병원 갈 일이 많은데, 상암 별 소아청소년과는 다녀본 병원 중 가장 친절한 병원이라고 생각된다.&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;iframe mapdata=&quot;addr=%EC%84%9C%EC%9A%B8%20%EB%A7%88%ED%8F%AC%EA%B5%AC%20%EC%83%81%EC%95%94%EB%8F%99%20115-11%20%EC%83%81%EC%95%94%EB%A9%94%EB%94%94%EC%BB%AC%EB%B9%8C%EB%94%A9%204%EC%B8%B5&amp;amp;addtype=1&amp;amp;confirmid=13010612&amp;amp;docid=&amp;amp;idx=1&amp;amp;ifrH=362px&amp;amp;ifrW=490px&amp;amp;mapHeight=362&amp;amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A476415%2C%22mapCenterY%22%3A1132453%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A476418%2C%22y%22%3A1132455%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%EB%B3%84%EC%86%8C%EC%95%84%EC%B2%AD%EC%86%8C%EB%85%84%EA%B3%BC%EC%9D%98%EC%9B%90%22%2C%22confirmid%22%3A13010612%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;amp;mapWidth=490&amp;amp;mapX=476415&amp;amp;mapY=1132453&amp;amp;map_hybrid=false&amp;amp;map_level=4&amp;amp;map_type=TYPE_MAP&amp;amp;rcode=1144074000&amp;amp;tel=02-375-7583&amp;amp;title=%EB%B3%84%EC%86%8C%EC%95%84%EC%B2%AD%EC%86%8C%EB%85%84%EA%B3%BC%EC%9D%98%EC%9B%90&quot; src=&quot;/proxy/plusmapViewer.php?id=maps_1746167161490&quot; id=&quot;maps_1746167161490&quot; width=&quot;540px&quot; height=&quot;350px&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; data-ke-type=&quot;map&quot; data-maps-data=&quot;addr=%EC%84%9C%EC%9A%B8%20%EB%A7%88%ED%8F%AC%EA%B5%AC%20%EC%83%81%EC%95%94%EB%8F%99%20115-11%20%EC%83%81%EC%95%94%EB%A9%94%EB%94%94%EC%BB%AC%EB%B9%8C%EB%94%A9%204%EC%B8%B5&amp;amp;addtype=1&amp;amp;confirmid=13010612&amp;amp;docid=&amp;amp;idx=1&amp;amp;ifrH=362px&amp;amp;ifrW=490px&amp;amp;mapHeight=362&amp;amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A476415%2C%22mapCenterY%22%3A1132453%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A476418%2C%22y%22%3A1132455%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%EB%B3%84%EC%86%8C%EC%95%84%EC%B2%AD%EC%86%8C%EB%85%84%EA%B3%BC%EC%9D%98%EC%9B%90%22%2C%22confirmid%22%3A13010612%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;amp;mapWidth=490&amp;amp;mapX=476415&amp;amp;mapY=1132453&amp;amp;map_hybrid=false&amp;amp;map_level=4&amp;amp;map_type=TYPE_MAP&amp;amp;rcode=1144074000&amp;amp;tel=02-375-7583&amp;amp;title=%EB%B3%84%EC%86%8C%EC%95%84%EC%B2%AD%EC%86%8C%EB%85%84%EA%B3%BC%EC%9D%98%EC%9B%90&quot; data-maps-thumbnail=&quot;https://ssl.daumcdn.net/map3/staticmap/image?center=476415%2C1132453&amp;amp;lv=4&amp;amp;size=540x350&amp;amp;srs=WCONGNAMUL&amp;amp;markers=symbol%3Asc_marker%7Clocation%3A476418%2C1132455&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;서울 마포구 월드컵북로 347 상암메디컬빌딩&amp;nbsp; 4층&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;상암초 정문 옆에 상암메디컬빌딩 4층에 위치하고 있다.&lt;br /&gt;빌딩 이름이 메디컬빌딩인 것처럼 다양한 종류의 병원이 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ISnw9/btsNIM08xMn/aPZKvf7FUapGzQWzAu0Qd0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ISnw9/btsNIM08xMn/aPZKvf7FUapGzQWzAu0Qd0/img.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot; style=&quot;width: 49.4186%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ISnw9/btsNIM08xMn/aPZKvf7FUapGzQWzAu0Qd0/img.jpg&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FISnw9%2FbtsNIM08xMn%2FaPZKvf7FUapGzQWzAu0Qd0%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;3024&quot; height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAQupc/btsNIO4oCfi/JxTFE8Bheyrbj9IXEo9Tuk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAQupc/btsNIO4oCfi/JxTFE8Bheyrbj9IXEo9Tuk/img.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot; style=&quot;width: 49.4186%;&quot; data-is-animation=&quot;false&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAQupc/btsNIO4oCfi/JxTFE8Bheyrbj9IXEo9Tuk/img.jpg&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAQupc%2FbtsNIO4oCfi%2FJxTFE8Bheyrbj9IXEo9Tuk%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;3024&quot; height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;병원 내부 사이즈는 아담한 편이다.&lt;br /&gt;두 분의 의사 선생님이 계시고 각각 1 진료실, 2 진료실에서 매일 번갈아가면서 진료를 봐주시는듯하다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;원장 선생님들과 간호사 선생님들이 너무 친절하고, 아이에게도 상냥하고 친근하게 대해 주시고 기억해 주시는 것 같다.&lt;br /&gt;그 덕에 처음에는 병원 엘리베이터만 타도 울던 아이가 점차 적응해서 이제 아~ 소리를 내며 입을 벌린다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IUJkL/btsNGIkNceC/4YDOzndrv4gXwGy9y2zKok/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IUJkL/btsNGIkNceC/4YDOzndrv4gXwGy9y2zKok/img.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot; style=&quot;width: 35.5814%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IUJkL/btsNGIkNceC/4YDOzndrv4gXwGy9y2zKok/img.jpg&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIUJkL%2FbtsNGIkNceC%2F4YDOzndrv4gXwGy9y2zKok%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;3024&quot; height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cOY4T2/btsNHMl8MXb/8md7mmdLzK1EKClQiGDK81/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cOY4T2/btsNHMl8MXb/8md7mmdLzK1EKClQiGDK81/img.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot; style=&quot;width: 63.2558%;&quot; data-is-animation=&quot;false&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cOY4T2/btsNHMl8MXb/8md7mmdLzK1EKClQiGDK81/img.jpg&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcOY4T2%2FbtsNHMl8MXb%2F8md7mmdLzK1EKClQiGDK81%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;진료가 끝나고 나서는 항상 비타민 사탕을 주시는데, 아기가 매번 기억하는지 끝나고 나오자마자 당당하게 &quot;삐약이 까까&quot;라고 외쳐서 머쓱했다. ㅎㅎ&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbx8jW/btsNG3IFgje/ZDlnoxH6Kw3XgaKkNgmHM0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbx8jW/btsNG3IFgje/ZDlnoxH6Kw3XgaKkNgmHM0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbx8jW/btsNG3IFgje/ZDlnoxH6Kw3XgaKkNgmHM0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbbx8jW%2FbtsNG3IFgje%2FZDlnoxH6Kw3XgaKkNgmHM0%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;422&quot; height=&quot;563&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;1층에는 약국이 있어서 편하게 약을 처방받을 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LevzZ/btsNIgAhDxD/yqN0kQcdytt8T7EP7CkVXK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LevzZ/btsNIgAhDxD/yqN0kQcdytt8T7EP7CkVXK/img.jpg&quot; data-alt=&quot;상암 세계로 약국&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LevzZ/btsNIgAhDxD/yqN0kQcdytt8T7EP7CkVXK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLevzZ%2FbtsNIgAhDxD%2FyqN0kQcdytt8T7EP7CkVXK%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;530&quot; height=&quot;707&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;상암 세계로 약국&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;참고로 똑딱으로 예약할 수 있으며, 똑딱을 통한 예약은 9시 10분부터 가능하고 환절기라 환자가 꽤 많기 때문에 10시 이전 예약은 대기가 오래 걸릴 수 있다.&lt;br /&gt;&lt;br /&gt;나도 8시 50분에 도착해서 대기했을 때, 대기 5번이었는데 9시 10분에 대기가 15명으로 는 걸 보면..&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;아이가 점차 병원과 약에 적응해 가는 게 대견하기도 하지만 안쓰럽고 미안한 마음도 동시에 드는 건 어쩔 수 없는 것 같다.&lt;br /&gt;이따 또 병원 가야지..&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Daily/육아</category>
      <category>별소아과</category>
      <category>별소아청소년과의원</category>
      <category>상암 별소아과</category>
      <category>상암 소아과</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/243</guid>
      <comments>https://hungc.tistory.com/243#entry243comment</comments>
      <pubDate>Wed, 30 Apr 2025 21:04:00 +0900</pubDate>
    </item>
    <item>
      <title>카드고릴라 삼성카드 탭탭 캐시백 후기</title>
      <link>https://hungc.tistory.com/241</link>
      <description>&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: Noto Serif KR;&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;카드고릴라 삼성카드 탭탭 캐시백&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br&gt;&lt;br&gt;2월부터 여행을 비롯해 돈 쓸 일이 꽤 많아서 카드테크를 해보기로 시도해 봤다.&lt;br&gt;&lt;br&gt;카드테크로 유명한 카드고릴라 사이트에서 적당한 카드를 살펴봤는데, 보통 캐시백 혜택이 많은 카드들은 이달의 이벤트카드라고 해서 홈페이지 접속하자마자 볼 수 있다.&lt;br&gt;&lt;br&gt;그리고 캐시백을 받기 위해서는 보통 6개월간 해당 카드의 거래 이력이 없어야 한다.&lt;br&gt;&lt;br&gt;이미 현대카드, KB카드, 신한카드를 사용 중이었기에 혜택과 캐시백을 고려했을 때 삼성카드 탭탭이 가장 적합해 보였다.&lt;/p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;464&quot; data-origin-height=&quot;579&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mctHu/btsNEev0DK8/HTcETcBtTOIqOGwSLaeyS0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mctHu/btsNEev0DK8/HTcETcBtTOIqOGwSLaeyS0/img.jpg&quot; data-alt=&quot;삼성카드 탭탭&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mctHu/btsNEev0DK8/HTcETcBtTOIqOGwSLaeyS0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmctHu%2FbtsNEev0DK8%2FHTcETcBtTOIqOGwSLaeyS0%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;464&quot; height=&quot;579&quot; data-origin-width=&quot;464&quot; data-origin-height=&quot;579&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;삼성카드 탭탭&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: justify;&quot;&gt;삼성카드 탭탭의 주요 정보는 다음과 같다.&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;연회비: 국내 1만원, 해외 1만원&lt;/li&gt;&lt;li&gt;기준실적: 직전 1개월 합계 30만원 이상&lt;/li&gt;&lt;li&gt;주요 혜택: 스타벅스 50%, 교통 10%, 쇼핑 7% 등 (한도 있음)&lt;/li&gt;&lt;/ul&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br&gt;게다가 스타벅스를 애용하는 나에게 50% 할인이라는 점이 매력적이었다. 월 할인 한도는 1만원까지 가능하다.&lt;br&gt;&lt;br&gt;나 같은 경우 2월 초에 카드를 신청했고 4월 결제일에 14만원 캐시백이 되는 구조였다.&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br&gt;&lt;br&gt;한참 잊고 있다가 오늘 명세서를 확인해 보니 캐시백이 지급된 걸 확인할 수 있었다.&lt;br&gt;&lt;br&gt;현금으로 지급되는 구조는 아니고 내가 쓴 금액에서 차감되는 형태였다.&lt;/p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1828&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3ZnEW/btsND4tv1He/YHFvQT3PO9ykj296s2kKF1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3ZnEW/btsND4tv1He/YHFvQT3PO9ykj296s2kKF1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3ZnEW/btsND4tv1He/YHFvQT3PO9ykj296s2kKF1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3ZnEW%2FbtsND4tv1He%2FYHFvQT3PO9ykj296s2kKF1%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;1170&quot; height=&quot;1828&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1828&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br&gt;만약 캐시백을 받는 14만원보다 덜 사용했을 경우 다음 달 명세서에서 차감된다고 하니 참고하자.&lt;br&gt;&lt;br&gt;여행이나 쇼핑 등 큰 돈이 나갈 계획이 있으면 카드테크를 해보는 것도 좋은 것 같다.&lt;br&gt;&lt;br&gt;다음엔 롯데카드를 신청할 계획이다.&lt;/p&gt;&lt;figure data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;014.gif&quot; data-emoticon-isanimation=&quot;true&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/014.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/014.gif&quot; width=&quot;150&quot;&gt;&lt;/figure&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br&gt;&lt;/p&gt;</description>
      <category>Daily</category>
      <category>삼성카드</category>
      <category>삼성카드 taptap</category>
      <category>삼성카드 캐시백</category>
      <category>삼성카드 탭탭</category>
      <category>삼성카드 페이백</category>
      <category>카드고릴라</category>
      <category>카드고릴리 캐시백</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/241</guid>
      <comments>https://hungc.tistory.com/241#entry241comment</comments>
      <pubDate>Sun, 27 Apr 2025 10:13:40 +0900</pubDate>
    </item>
    <item>
      <title>한국교통안전공단 성산 자동차 검사소</title>
      <link>https://hungc.tistory.com/240</link>
      <description>&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: Noto Serif KR;&quot;&gt;상암 성산 자동차 검사소&lt;/span&gt;&lt;/blockquote&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br&gt;&lt;br&gt;GV70을 운전한 지 어느새 2년이 지나 자동차 정기검사 알람이 왔다.&lt;br&gt;차량 정기검사 예약은 한국교통안전공단에서 진행할 수 있다.&lt;br&gt;&lt;a href=&quot;https://www.cyberts.kr/portal/main.do&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;https://www.cyberts.kr/portal/main.do&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;figure data-ke-type=&quot;opengraph&quot; data-og-title=&quot;사이버검사소 | 한국교통안전공단&quot; data-ke-align=&quot;alignCenter&quot; data-og-description=&quot;&amp;nbsp;현재 고객님께서는 인터넷 익스플로러 브라우저를 이용하고 계십니다. 인터넷 익스플로러(Internet Explorer)[] 브라우저 이용 시 일부 기능이 동작하지 않거나 오류가 발생할 수 있습니다. &amp;nbsp;보안&quot; data-og-host=&quot;www.cyberts.kr&quot; data-og-source-url=&quot;https://www.cyberts.kr/portal/main.do&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bjIzzf/hyYFzJtmtT/YWKcfy3KBtk81ArzP30WyK/img.png?width=1750&amp;amp;height=388&amp;amp;face=0_0_1750_388&quot; data-og-url=&quot;https://www.cyberts.kr/portal/main.do&quot;&gt;&lt;a href=&quot;https://www.cyberts.kr/portal/main.do&quot; target=&quot;_blank&quot; data-source-url=&quot;https://www.cyberts.kr/portal/main.do&quot;&gt;&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bjIzzf/hyYFzJtmtT/YWKcfy3KBtk81ArzP30WyK/img.png?width=1750&amp;amp;height=388&amp;amp;face=0_0_1750_388')&quot;&gt; &lt;/div&gt;&lt;div class=&quot;og-text&quot;&gt;&lt;p class=&quot;og-title&quot;&gt;사이버검사소 | 한국교통안전공단&lt;/p&gt;&lt;p class=&quot;og-desc&quot;&gt;&amp;nbsp;현재 고객님께서는 인터넷 익스플로러 브라우저를 이용하고 계십니다. 인터넷 익스플로러(Internet Explorer)[] 브라우저 이용 시 일부 기능이 동작하지 않거나 오류가 발생할 수 있습니다. &amp;nbsp;보안&lt;/p&gt;&lt;p class=&quot;og-host&quot;&gt;www.cyberts.kr&lt;/p&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;간단하게 예약을 진행할 수 있고 예약하게 되면 아래와 같이 카톡으로 알람이 온다.&lt;br&gt;검사 예약일 전날에도 까먹지 않게 알림을 보내준다.&lt;/p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/G1Bzy/btsNvy2IzHu/KCGhx6wCej1Dk4TFFuszTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/G1Bzy/btsNvy2IzHu/KCGhx6wCej1Dk4TFFuszTk/img.png&quot; data-origin-width=&quot;1135&quot; data-origin-height=&quot;999&quot; style=&quot;width: 57.4358%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/G1Bzy/btsNvy2IzHu/KCGhx6wCej1Dk4TFFuszTk/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FG1Bzy%2FbtsNvy2IzHu%2FKCGhx6wCej1Dk4TFFuszTk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1135&quot; height=&quot;999&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cwYs7e/btsNveJt462/dm0aE3F6QQaJ3l4Botqqd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cwYs7e/btsNveJt462/dm0aE3F6QQaJ3l4Botqqd0/img.png&quot; data-origin-width=&quot;1149&quot; data-origin-height=&quot;1403&quot; style=&quot;width: 41.4014%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cwYs7e/btsNveJt462/dm0aE3F6QQaJ3l4Botqqd0/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcwYs7e%2FbtsNveJt462%2Fdm0aE3F6QQaJ3l4Botqqd0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1149&quot; height=&quot;1403&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;한국교통안전공단 알림톡&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;참고로 예전에 차량 검사를 받을 때는 차량등록증이 필요했지만 이제는 필요하지 않다.&lt;br&gt;장소는 집에서 가까운 성산자동차 검사소로 예약을 했고, 마포구청 옆에 위치하고 있다.&lt;/p&gt;&lt;iframe id=&quot;maps_1745374758898&quot; data-ke-type=&quot;map&quot; mapdata=&quot;addr=%EC%84%9C%EC%9A%B8%20%EB%A7%88%ED%8F%AC%EA%B5%AC%20%EC%84%B1%EC%82%B0%EB%8F%99%20407-2&amp;amp;addtype=1&amp;amp;confirmid=8190513&amp;amp;docid=&amp;amp;idx=1&amp;amp;ifrH=362px&amp;amp;ifrW=490px&amp;amp;mapHeight=362&amp;amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A478055%2C%22mapCenterY%22%3A1129963%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A478056%2C%22y%22%3A1129965%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%ED%95%9C%EA%B5%AD%EA%B5%90%ED%86%B5%EC%95%88%EC%A0%84%EA%B3%B5%EB%8B%A8%20%EC%84%B1%EC%82%B0%EC%9E%90%EB%8F%99%EC%B0%A8%EA%B2%80%EC%82%AC%EC%86%8C%22%2C%22confirmid%22%3A8190513%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;amp;mapWidth=490&amp;amp;mapX=478055&amp;amp;mapY=1129963&amp;amp;map_hybrid=false&amp;amp;map_level=4&amp;amp;map_type=TYPE_MAP&amp;amp;rcode=1144073000&amp;amp;tel=02-306-5986&amp;amp;title=%ED%95%9C%EA%B5%AD%EA%B5%90%ED%86%B5%EC%95%88%EC%A0%84%EA%B3%B5%EB%8B%A8%20%EC%84%B1%EC%82%B0%EC%9E%90%EB%8F%99%EC%B0%A8%EA%B2%80%EC%82%AC%EC%86%8C&quot; data-maps-data=&quot;addr=%EC%84%9C%EC%9A%B8%20%EB%A7%88%ED%8F%AC%EA%B5%AC%20%EC%84%B1%EC%82%B0%EB%8F%99%20407-2&amp;amp;addtype=1&amp;amp;confirmid=8190513&amp;amp;docid=&amp;amp;idx=1&amp;amp;ifrH=362px&amp;amp;ifrW=490px&amp;amp;mapHeight=362&amp;amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A478055%2C%22mapCenterY%22%3A1129963%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A478056%2C%22y%22%3A1129965%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%ED%95%9C%EA%B5%AD%EA%B5%90%ED%86%B5%EC%95%88%EC%A0%84%EA%B3%B5%EB%8B%A8%20%EC%84%B1%EC%82%B0%EC%9E%90%EB%8F%99%EC%B0%A8%EA%B2%80%EC%82%AC%EC%86%8C%22%2C%22confirmid%22%3A8190513%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;amp;mapWidth=490&amp;amp;mapX=478055&amp;amp;mapY=1129963&amp;amp;map_hybrid=false&amp;amp;map_level=4&amp;amp;map_type=TYPE_MAP&amp;amp;rcode=1144073000&amp;amp;tel=02-306-5986&amp;amp;title=%ED%95%9C%EA%B5%AD%EA%B5%90%ED%86%B5%EC%95%88%EC%A0%84%EA%B3%B5%EB%8B%A8%20%EC%84%B1%EC%82%B0%EC%9E%90%EB%8F%99%EC%B0%A8%EA%B2%80%EC%82%AC%EC%86%8C&quot; data-maps-mapx=&quot;&quot; data-maps-mapy=&quot;&quot; data-maps-thumbnail=&quot;https://ssl.daumcdn.net/map3/staticmap/image?center=478055%2C1129963&amp;amp;lv=4&amp;amp;size=540x350&amp;amp;srs=WCONGNAMUL&amp;amp;markers=symbol%3Asc_marker%7Clocation%3A478056%2C1129965&quot; width=&quot;540px&quot; height=&quot;350px&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;/proxy/plusmapViewer.php?id=maps_1745374758898&quot;&gt;&lt;/iframe&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;위치: 서울 마포구 월드컵로 220 성산자동차 검사소&lt;/li&gt;&lt;/ul&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;참고로 처음에 티맵 네비가 알려주는 대로 후문?쪽으로 갔는데 막혀있어서 바로 정문으로 가는 걸 추천한다.&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2937&quot; data-origin-height=&quot;1732&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHC5MQ/btsNvBYJ0zs/70si8wXaCkkTiKTBj0Z2Zk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHC5MQ/btsNvBYJ0zs/70si8wXaCkkTiKTBj0Z2Zk/img.png&quot; data-alt=&quot;성산자동차검사소 정문&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHC5MQ/btsNvBYJ0zs/70si8wXaCkkTiKTBj0Z2Zk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHC5MQ%2FbtsNvBYJ0zs%2F70si8wXaCkkTiKTBj0Z2Zk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;729&quot; height=&quot;430&quot; data-origin-width=&quot;2937&quot; data-origin-height=&quot;1732&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;성산자동차검사소 정문&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;정문을 통해서 안으로 좀 들어가다 보면 안내해 주시는 분이 몇 번 라인으로 가서 서라고 알려주신다.&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rvo8o/btsNwvxbqxS/sPxyLdPAuKCotbRregQ5BK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rvo8o/btsNwvxbqxS/sPxyLdPAuKCotbRregQ5BK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rvo8o/btsNwvxbqxS/sPxyLdPAuKCotbRregQ5BK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Frvo8o%2FbtsNwvxbqxS%2FsPxyLdPAuKCotbRregQ5BK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;671&quot; height=&quot;895&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나 같은 경우에는 2번으로 알려주셨는데, 2번 라인에 차량이 많아서 4번 라인으로 갈아탔다 ㅎㅎ&lt;br&gt;총 6번 라인까지 있는데 눈치껏 줄을 잘 서는 것도 10~20분 정도는 단축시킬 수 있는 걸로 보인다.&lt;br&gt;&amp;nbsp;&lt;br&gt;내가 예약한 시간은 4월 23일 수요일 오전 10시 20분이었는데, 평일이었는데도 불구하고 대기 중인 차량이 많았다.&lt;/p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d29jmk/btsNvpLI7hr/ioNx44c1pUM86NFQ7xK0h0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d29jmk/btsNvpLI7hr/ioNx44c1pUM86NFQ7xK0h0/img.png&quot; data-origin-width=&quot;3015&quot; data-origin-height=&quot;3057&quot; style=&quot;width: 53.6076%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d29jmk/btsNvpLI7hr/ioNx44c1pUM86NFQ7xK0h0/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd29jmk%2FbtsNvpLI7hr%2FioNx44c1pUM86NFQ7xK0h0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3015&quot; height=&quot;3057&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUW5yR/btsNvGTIE6d/5mmXKkmaKqzQYWCIpsZkHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUW5yR/btsNvGTIE6d/5mmXKkmaKqzQYWCIpsZkHk/img.png&quot; data-origin-width=&quot;2181&quot; data-origin-height=&quot;2621&quot; style=&quot;width: 45.2296%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUW5yR/btsNvGTIE6d/5mmXKkmaKqzQYWCIpsZkHk/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUW5yR%2FbtsNvGTIE6d%2F5mmXKkmaKqzQYWCIpsZkHk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2181&quot; height=&quot;2621&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;10시 10분부터 줄을 섰는데 10시 40분부터 검사를 받을 수 있었다.&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/N9mow/btsNw5skofW/EbCpwlngDqpZDWPka4UpS0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/N9mow/btsNw5skofW/EbCpwlngDqpZDWPka4UpS0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/N9mow/btsNw5skofW/EbCpwlngDqpZDWPka4UpS0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FN9mow%2FbtsNw5skofW%2FEbCpwlngDqpZDWPka4UpS0%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;3024&quot; height=&quot;4032&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br&gt;차 키는 차에 두고 내리면 되고, 바닥에 표시된 고객대기실 안내를 따라서 고객대기실에서 대기하고 있으면 된다.&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/x3R6G/btsNw1pUQU0/vtg7THfYYnjm1H5aHaMJmk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/x3R6G/btsNw1pUQU0/vtg7THfYYnjm1H5aHaMJmk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/x3R6G/btsNw1pUQU0/vtg7THfYYnjm1H5aHaMJmk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fx3R6G%2FbtsNw1pUQU0%2Fvtg7THfYYnjm1H5aHaMJmk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;검사 시간은 대략 15분 정도 걸린다고 안내되어 있는데, 실제로 걸린 시간은 10분 정도였다.&lt;br&gt;10분 정도 뒤 관리사분께서 간단하게 요약해서 설명을 해주시는데, 다행히 차량에 아무 문제가 없어서 무사 귀가 할 수 있었다.&lt;br&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Daily</category>
      <category>마포자동차검사</category>
      <category>성산자동차검사소</category>
      <category>자동차검사</category>
      <category>차량정기검사</category>
      <category>한국교통안전공단</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/240</guid>
      <comments>https://hungc.tistory.com/240#entry240comment</comments>
      <pubDate>Wed, 23 Apr 2025 11:46:56 +0900</pubDate>
    </item>
    <item>
      <title>상암 햄버거, 크라이치즈버거</title>
      <link>https://hungc.tistory.com/239</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;늦은 점심을 뭐 먹을까 고민하다가 요새 홍보를 자주 하는 크라이치즈버거에 방문했다.&lt;br&gt;&amp;nbsp;&lt;br&gt;최근에 버거 탈을 쓰시고 전단지 나눠주시는 모습을 자주 봐서 그런지 갑자기 생각이 났다.&lt;br&gt;문득 이래서 기업에서 홍보에 그렇게 많은 돈을 쓰나 생각이 들었다.&lt;br&gt;&amp;nbsp;&lt;br&gt;위치는 상암 DDMC 건물로 내가 좋아하는 솥밥 맛집인 솔솥과 같은 건물이다.&lt;/p&gt;&lt;iframe id=&quot;maps_1745542840572&quot; data-ke-type=&quot;map&quot; mapdata=&quot;addr=%EC%84%9C%EC%9A%B8%20%EB%A7%88%ED%8F%AC%EA%B5%AC%20%EC%83%81%EC%95%94%EB%8F%99%201610%20%EC%A7%80%ED%95%981%EC%B8%B5%20109%2C110%ED%98%B8&amp;amp;addtype=1&amp;amp;confirmid=1652929268&amp;amp;docid=&amp;amp;idx=1&amp;amp;ifrH=362px&amp;amp;ifrW=490px&amp;amp;mapHeight=362&amp;amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A476345%2C%22mapCenterY%22%3A1133038%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A476349%2C%22y%22%3A1133042%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%ED%81%AC%EB%9D%BC%EC%9D%B4%EC%B9%98%EC%A6%88%EB%B2%84%EA%B1%B0%20%EC%83%81%EC%95%94%EC%A0%90%22%2C%22confirmid%22%3A1652929268%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;amp;mapWidth=490&amp;amp;mapX=476345&amp;amp;mapY=1133038&amp;amp;map_hybrid=false&amp;amp;map_level=4&amp;amp;map_type=TYPE_MAP&amp;amp;rcode=1144074000&amp;amp;tel=02-304-6244&amp;amp;title=%ED%81%AC%EB%9D%BC%EC%9D%B4%EC%B9%98%EC%A6%88%EB%B2%84%EA%B1%B0%20%EC%83%81%EC%95%94%EC%A0%90&quot; data-maps-data=&quot;addr=%EC%84%9C%EC%9A%B8%20%EB%A7%88%ED%8F%AC%EA%B5%AC%20%EC%83%81%EC%95%94%EB%8F%99%201610%20%EC%A7%80%ED%95%981%EC%B8%B5%20109%2C110%ED%98%B8&amp;amp;addtype=1&amp;amp;confirmid=1652929268&amp;amp;docid=&amp;amp;idx=1&amp;amp;ifrH=362px&amp;amp;ifrW=490px&amp;amp;mapHeight=362&amp;amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A476345%2C%22mapCenterY%22%3A1133038%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A476349%2C%22y%22%3A1133042%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%ED%81%AC%EB%9D%BC%EC%9D%B4%EC%B9%98%EC%A6%88%EB%B2%84%EA%B1%B0%20%EC%83%81%EC%95%94%EC%A0%90%22%2C%22confirmid%22%3A1652929268%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;amp;mapWidth=490&amp;amp;mapX=476345&amp;amp;mapY=1133038&amp;amp;map_hybrid=false&amp;amp;map_level=4&amp;amp;map_type=TYPE_MAP&amp;amp;rcode=1144074000&amp;amp;tel=02-304-6244&amp;amp;title=%ED%81%AC%EB%9D%BC%EC%9D%B4%EC%B9%98%EC%A6%88%EB%B2%84%EA%B1%B0%20%EC%83%81%EC%95%94%EC%A0%90&quot; data-maps-mapx=&quot;&quot; data-maps-mapy=&quot;&quot; data-maps-thumbnail=&quot;https://ssl.daumcdn.net/map3/staticmap/image?center=476345%2C1133038&amp;amp;lv=4&amp;amp;size=540x350&amp;amp;srs=WCONGNAMUL&amp;amp;markers=symbol%3Asc_marker%7Clocation%3A476349%2C1133042&quot; width=&quot;540px&quot; height=&quot;350px&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;/proxy/plusmapViewer.php?id=maps_1745542840572&quot;&gt;&lt;/iframe&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;위치 : 서울 마포구 매봉산로 75 B109, B110&lt;/li&gt;&lt;li&gt;영업시간 10:30 ~ 21:00&lt;/li&gt;&lt;/ul&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d123Wi/btsNwa0VhO8/JKmH40Jzzg9znGQScZPXG0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d123Wi/btsNwa0VhO8/JKmH40Jzzg9znGQScZPXG0/img.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot; style=&quot;width: 49.4186%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d123Wi/btsNwa0VhO8/JKmH40Jzzg9znGQScZPXG0/img.jpg&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd123Wi%2FbtsNwa0VhO8%2FJKmH40Jzzg9znGQScZPXG0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bf42Hv/btsNvhUvkCZ/0s5UwSkg1ZmvyteZXrCRk1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bf42Hv/btsNvhUvkCZ/0s5UwSkg1ZmvyteZXrCRk1/img.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot; style=&quot;width: 49.4186%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bf42Hv/btsNvhUvkCZ/0s5UwSkg1ZmvyteZXrCRk1/img.jpg&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbf42Hv%2FbtsNvhUvkCZ%2F0s5UwSkg1ZmvyteZXrCRk1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;크라이치즈버거&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2013년부터 시작해서 벌써 12년째라고 하며, 치즈버거만 집중하고 있다고 한다.&lt;br&gt;개인적으로 이름이 궁금해서 찾아봤는데, 치즈가 녹는 모습을 우는 모습이라고 생각해서 만들어진 이름이라고 한다.&lt;br&gt;&amp;nbsp;&lt;br&gt;DDMC 1층 입구로 들어가면 우측에 바로 매장 입구를 볼 수 있다.&lt;br&gt;&amp;nbsp;&lt;br&gt;키오스크에서 주문할 수 있다.&lt;/p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cA4h2y/btsNuCZoZSe/zi9ON2fReXnr8n6xiabfDk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cA4h2y/btsNuCZoZSe/zi9ON2fReXnr8n6xiabfDk/img.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot; style=&quot;width: 49.4186%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cA4h2y/btsNuCZoZSe/zi9ON2fReXnr8n6xiabfDk/img.jpg&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcA4h2y%2FbtsNuCZoZSe%2Fzi9ON2fReXnr8n6xiabfDk%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;3024&quot; height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1mSsZ/btsNuCZoZ5R/oFOlNeGmwuXU1uUojsq850/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1mSsZ/btsNuCZoZ5R/oFOlNeGmwuXU1uUojsq850/img.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot; style=&quot;width: 49.4186%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1mSsZ/btsNuCZoZ5R/oFOlNeGmwuXU1uUojsq850/img.jpg&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1mSsZ%2FbtsNuCZoZ5R%2FoFOlNeGmwuXU1uUojsq850%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;3024&quot; height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;치즈버거에만 집중해서 그런지 메뉴가 몇 개 없고 정말 심플하다.&amp;nbsp;&lt;br&gt;대표메뉴인 더블 치즈버거로 주문했다.&lt;br&gt;&amp;nbsp;&lt;br&gt;늦은 점심이라 그런지 사람이 1-2명밖에 없었다.&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJZmcj/btsNvGeXuGP/dBEbsNkjkElpy0eRRyZpyK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJZmcj/btsNvGeXuGP/dBEbsNkjkElpy0eRRyZpyK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJZmcj/btsNvGeXuGP/dBEbsNkjkElpy0eRRyZpyK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJZmcj%2FbtsNvGeXuGP%2FdBEbsNkjkElpy0eRRyZpyK%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;3024&quot; height=&quot;4032&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;콜라, 빨대, 케첩은 별도의 공간에 마련되어 있어서 자유롭게 가져갈 수 있다.&lt;/p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bddIWQ/btsNvTSDOTU/XNDH7LkoaqYR5hy7YSzi51/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bddIWQ/btsNvTSDOTU/XNDH7LkoaqYR5hy7YSzi51/img.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot; style=&quot;width: 49.4186%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bddIWQ/btsNvTSDOTU/XNDH7LkoaqYR5hy7YSzi51/img.jpg&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbddIWQ%2FbtsNvTSDOTU%2FXNDH7LkoaqYR5hy7YSzi51%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c7Lc70/btsNvA0knRi/2DUDGRdPbIMG01u1DBtc91/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c7Lc70/btsNvA0knRi/2DUDGRdPbIMG01u1DBtc91/img.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot; style=&quot;width: 49.4186%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c7Lc70/btsNvA0knRi/2DUDGRdPbIMG01u1DBtc91/img.jpg&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc7Lc70%2FbtsNvA0knRi%2F2DUDGRdPbIMG01u1DBtc91%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;메뉴는 아래와 같이 준비가 되고 패티 두 장에 치즈, 양파, 토마토, 양상추 등 기본으로 구성되어 있다.&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kKuZu/btsNuY2ejYy/jXWmz8Kr4jKNBfdltONfj0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kKuZu/btsNuY2ejYy/jXWmz8Kr4jKNBfdltONfj0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kKuZu/btsNuY2ejYy/jXWmz8Kr4jKNBfdltONfj0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkKuZu%2FbtsNuY2ejYy%2FjXWmz8Kr4jKNBfdltONfj0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;특히 번이 맛있었고 역시 생각했던 대로 담백하고 깔끔한 치즈버거 맛이다.&lt;br&gt;개인적으로 나는 마지막에 치즈가 약간 물리긴 했지만, 치즈버거를 좋아하는 사람들에겐 추천할 만하다.&lt;br&gt;&amp;nbsp;&lt;br&gt;세면대가 안에 있어서 화장실을 안 가도 돼서 편했다.&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dSZxbx/btsNvh1gwAj/Yo38NkeI0ZCBcKrzta7IG0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dSZxbx/btsNvh1gwAj/Yo38NkeI0ZCBcKrzta7IG0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dSZxbx/btsNvh1gwAj/Yo38NkeI0ZCBcKrzta7IG0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdSZxbx%2FbtsNvh1gwAj%2FYo38NkeI0ZCBcKrzta7IG0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Daily/맛집</category>
      <category>상암 맛집</category>
      <category>상암 수제버거</category>
      <category>상암 크라이치즈버거</category>
      <category>치즈버거</category>
      <category>크라이치즈버거</category>
      <category>햄버거</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/239</guid>
      <comments>https://hungc.tistory.com/239#entry239comment</comments>
      <pubDate>Wed, 23 Apr 2025 00:18:15 +0900</pubDate>
    </item>
    <item>
      <title>무중단 배포 (카나리, 블루그린, 롤링 배포)</title>
      <link>https://hungc.tistory.com/238</link>
      <description>&lt;p data-end=&quot;262&quot; data-start=&quot;131&quot; data-ke-size=&quot;size16&quot;&gt;현대의 소프트웨어 배포는 &lt;b&gt;무중단(Zero-Downtime)&lt;/b&gt;이 핵심입니다.&lt;/p&gt;
&lt;p data-end=&quot;262&quot; data-start=&quot;131&quot; data-ke-size=&quot;size16&quot;&gt;대표적인 3가지 배포 전략인 &lt;b&gt;카나리 배포, 블루-그린 배포, 롤링 배포&lt;/b&gt;에 대해 알아봅시다.&lt;/p&gt;
&lt;hr data-end=&quot;267&quot; data-start=&quot;264&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;304&quot; data-start=&quot;269&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-end=&quot;304&quot; data-start=&quot;269&quot; data-ke-size=&quot;size26&quot;&gt;1. 카나리 배포 (Canary Deployment)&lt;/h2&gt;
&lt;p data-end=&quot;469&quot; data-start=&quot;387&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;카나리 배포&lt;/b&gt;는 새로운 버전을 소수의 사용자에게만 먼저 제공해 테스트하고, 문제가 없으면 점진적으로 전체 사용자에게 확대 적용하는 방식입니다.&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-start=&quot;802&quot; data-end=&quot;810&quot; data-ke-size=&quot;size23&quot;&gt;✔&lt;span&gt;&amp;nbsp;&lt;/span&gt;특징&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;560&quot; data-start=&quot;480&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;521&quot; data-start=&quot;480&quot;&gt;초기에는 전체 트래픽 중 &lt;b&gt;일부(예: 5%)만 신규 버전으로 전환&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;541&quot; data-start=&quot;522&quot;&gt;문제 발생 시 빠르게 롤백 가능&lt;/li&gt;
&lt;li data-end=&quot;560&quot; data-start=&quot;542&quot;&gt;실제 사용자 기반 테스트 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;570&quot; data-start=&quot;562&quot; data-ke-size=&quot;size23&quot;&gt;✅ 장점&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;606&quot; data-start=&quot;571&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;594&quot; data-start=&quot;571&quot;&gt;실 사용자 피드백을 바탕으로 검증 가능&lt;/li&gt;
&lt;li data-end=&quot;606&quot; data-start=&quot;595&quot;&gt;롤백 속도가 빠름&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;616&quot; data-start=&quot;608&quot; data-ke-size=&quot;size23&quot;&gt;❗ 단점&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;659&quot; data-start=&quot;617&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;639&quot; data-start=&quot;617&quot;&gt;모니터링 및 트래픽 분산 설정이 필요&lt;/li&gt;
&lt;li data-end=&quot;659&quot; data-start=&quot;640&quot;&gt;테스트 범위가 제한적일 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;664&quot; data-start=&quot;661&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;707&quot; data-start=&quot;666&quot; data-ke-size=&quot;size26&quot;&gt;2. 블루-그린 배포 (Blue-Green Deployment)&lt;/h2&gt;
&lt;p data-end=&quot;800&quot; data-start=&quot;709&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;블루-그린 배포&lt;/b&gt;는 두 개의 환경(Blue, Green)을 번갈아 운영하면서 배포 시 환경 전환을 통해 즉시 전환 및 롤백을 가능하게 하는 전략입니다.&lt;/p&gt;
&lt;h3 data-end=&quot;810&quot; data-start=&quot;802&quot; data-ke-size=&quot;size23&quot;&gt;✔ 특징&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;913&quot; data-start=&quot;811&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;851&quot; data-start=&quot;811&quot;&gt;기존 운영 환경(Blue)은 유지한 채 신규 환경(Green)에 배포&lt;/li&gt;
&lt;li data-end=&quot;884&quot; data-start=&quot;852&quot;&gt;Green 환경이 검증되면 트래픽을 Green으로 전환&lt;/li&gt;
&lt;li data-end=&quot;913&quot; data-start=&quot;885&quot;&gt;문제가 생기면 다시 Blue로 빠르게 전환 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;923&quot; data-start=&quot;915&quot; data-ke-size=&quot;size23&quot;&gt;✅ 장점&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;964&quot; data-start=&quot;924&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;943&quot; data-start=&quot;924&quot;&gt;무중단 배포 + 즉시 롤백 가능&lt;/li&gt;
&lt;li data-end=&quot;964&quot; data-start=&quot;944&quot;&gt;운영 중인 버전과 완전 분리 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;974&quot; data-start=&quot;966&quot; data-ke-size=&quot;size23&quot;&gt;❗ 단점&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1026&quot; data-start=&quot;975&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1005&quot; data-start=&quot;975&quot;&gt;두 개의 환경 유지로 인한 &lt;b&gt;비용/리소스 부담&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;1026&quot; data-start=&quot;1006&quot;&gt;데이터베이스 변경 시 복잡성 증가&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1031&quot; data-start=&quot;1028&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1068&quot; data-start=&quot;1033&quot; data-ke-size=&quot;size26&quot;&gt;3. 롤링 배포 (Rolling Deployment)&lt;/h2&gt;
&lt;p data-end=&quot;1121&quot; data-start=&quot;1070&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;롤링 배포&lt;/b&gt;는 기존 인스턴스를 하나씩 점진적으로 새 버전으로 교체해 나가는 방식입니다.&lt;/p&gt;
&lt;h3 data-end=&quot;1131&quot; data-start=&quot;1123&quot; data-ke-size=&quot;size23&quot;&gt;✔ 특징&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1177&quot; data-start=&quot;1132&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1157&quot; data-start=&quot;1132&quot;&gt;전체 인프라 중 일부씩 순차적으로 업데이트&lt;/li&gt;
&lt;li data-end=&quot;1177&quot; data-start=&quot;1158&quot;&gt;배포 중에도 서비스는 계속 유지&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1187&quot; data-start=&quot;1179&quot; data-ke-size=&quot;size23&quot;&gt;✅ 장점&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1218&quot; data-start=&quot;1188&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1205&quot; data-start=&quot;1188&quot;&gt;리소스를 많이 사용하지 않음&lt;/li&gt;
&lt;li data-end=&quot;1218&quot; data-start=&quot;1206&quot;&gt;간단한 배포에 적합&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1228&quot; data-start=&quot;1220&quot; data-ke-size=&quot;size23&quot;&gt;❗ 단점&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1269&quot; data-start=&quot;1229&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1247&quot; data-start=&quot;1229&quot;&gt;롤백이 느리고 복잡할 수 있음&lt;/li&gt;
&lt;li data-end=&quot;1269&quot; data-start=&quot;1248&quot;&gt;실시간 트래픽에 영향을 줄 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1274&quot; data-start=&quot;1271&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1286&quot; data-start=&quot;1276&quot; data-ke-size=&quot;size26&quot;&gt;4. 비교 요약&lt;/h2&gt;
&lt;div&gt;항목카나리 배포블루-그린 배포롤링 배포
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1545&quot; data-start=&quot;1288&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;카나리 배포&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;블루-그린 배포&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;롤링 배포&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1418&quot; data-start=&quot;1376&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1388&quot; data-start=&quot;1376&quot;&gt;&lt;b&gt;배포 속도&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1399&quot; data-start=&quot;1388&quot;&gt;느림 (점진적)&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1412&quot; data-start=&quot;1399&quot;&gt;빠름 (즉시 전환)&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1418&quot; data-start=&quot;1412&quot;&gt;중간&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1451&quot; data-start=&quot;1419&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1432&quot; data-start=&quot;1419&quot;&gt;&lt;b&gt;롤백 용이성&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1437&quot; data-start=&quot;1432&quot;&gt;빠름&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1445&quot; data-start=&quot;1437&quot;&gt;매우 빠름&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1451&quot; data-start=&quot;1445&quot;&gt;느림&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1481&quot; data-start=&quot;1452&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1465&quot; data-start=&quot;1452&quot;&gt;&lt;b&gt;무중단 여부&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1470&quot; data-start=&quot;1465&quot;&gt;가능&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1475&quot; data-start=&quot;1470&quot;&gt;가능&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1481&quot; data-start=&quot;1475&quot;&gt;가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1511&quot; data-start=&quot;1482&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1495&quot; data-start=&quot;1482&quot;&gt;&lt;b&gt;리소스 소비&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1500&quot; data-start=&quot;1495&quot;&gt;중간&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1505&quot; data-start=&quot;1500&quot;&gt;높음&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1511&quot; data-start=&quot;1505&quot;&gt;낮음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1545&quot; data-start=&quot;1512&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1527&quot; data-start=&quot;1512&quot;&gt;&lt;b&gt;실사용자 테스트&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1532&quot; data-start=&quot;1527&quot;&gt;가능&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1538&quot; data-start=&quot;1532&quot;&gt;제한적&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1545&quot; data-start=&quot;1538&quot;&gt;제한적&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;1550&quot; data-start=&quot;1547&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1561&quot; data-start=&quot;1552&quot; data-ke-size=&quot;size26&quot;&gt;5. 마무리&lt;/h2&gt;
&lt;p data-end=&quot;1608&quot; data-start=&quot;1563&quot; data-ke-size=&quot;size16&quot;&gt;배포 전략은 &lt;b&gt;서비스 규모, 위험도, 예산, 인프라 구성&lt;/b&gt;에 따라 달라집니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1704&quot; data-start=&quot;1610&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1641&quot; data-start=&quot;1610&quot;&gt;  &lt;b&gt;신중한 검증이 필요&lt;/b&gt;하면: 카나리 배포&lt;/li&gt;
&lt;li data-end=&quot;1673&quot; data-start=&quot;1642&quot;&gt;⚡ &lt;b&gt;빠른 롤백이 중요&lt;/b&gt;하면: 블루-그린 배포&lt;/li&gt;
&lt;li data-end=&quot;1704&quot; data-start=&quot;1674&quot;&gt;  &lt;b&gt;자원 효율성이 중요&lt;/b&gt;하면: 롤링 배포&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>정보관리기술사/소프트웨어공학</category>
      <category>롤링배포</category>
      <category>무중단배포</category>
      <category>블루그린배포</category>
      <category>카나리배포</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/238</guid>
      <comments>https://hungc.tistory.com/238#entry238comment</comments>
      <pubDate>Tue, 22 Apr 2025 13:35:00 +0900</pubDate>
    </item>
    <item>
      <title>블랙박스 테스트 vs 화이트박스 테스트</title>
      <link>https://hungc.tistory.com/236</link>
      <description>&lt;h1 data-end=&quot;176&quot; data-start=&quot;132&quot;&gt;블랙박스 테스트 vs 화이트박스 테스트: 소프트웨어 품질 확보의 두 축&lt;/h1&gt;
&lt;p data-end=&quot;374&quot; data-start=&quot;178&quot; data-ke-size=&quot;size16&quot;&gt;소프트웨어 테스트는 단순한 기능 확인을 넘어서, 제품의 신뢰성과 안정성을 확보하는 핵심 품질 활동입니다.&lt;br /&gt;이 중에서도 &lt;b&gt;블랙박스 테스트(Black-box Testing)&lt;/b&gt;와 &lt;b&gt;화이트박스 테스트(White-box Testing)&lt;/b&gt;는 가장 기본적이면서도 상호보완적인 테스트 접근 방식으로, 다양한 프로젝트에서 병행 활용됩니다.&lt;/p&gt;
&lt;hr data-end=&quot;379&quot; data-start=&quot;376&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;414&quot; data-start=&quot;381&quot; data-ke-size=&quot;size26&quot;&gt;블랙박스 테스트(Black-box Testing)&lt;/h2&gt;
&lt;h3 data-end=&quot;426&quot; data-start=&quot;416&quot; data-ke-size=&quot;size23&quot;&gt;정의&lt;/h3&gt;
&lt;p data-end=&quot;624&quot; data-start=&quot;427&quot; data-ke-size=&quot;size16&quot;&gt;블랙박스 테스트는 시스템의 내부 구조나 구현 로직을 고려하지 않고, 입력(Input)과 출력(Output)만을 기준으로 소프트웨어의 기능을 검증하는 방식입니다.&lt;/p&gt;
&lt;p data-end=&quot;624&quot; data-start=&quot;427&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;624&quot; data-start=&quot;427&quot; data-ke-size=&quot;size16&quot;&gt;주로 &lt;b&gt;기능 명세서(Requirements Specification)&lt;/b&gt; 기반으로 설계되며, &lt;b&gt;사용자 관점에서의 정상/비정상 동작을 확인&lt;/b&gt;하는 데 초점을 둡니다.&lt;/p&gt;
&lt;h3 data-end=&quot;635&quot; data-start=&quot;626&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-end=&quot;635&quot; data-start=&quot;626&quot; data-ke-size=&quot;size23&quot;&gt;특징&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;767&quot; data-start=&quot;637&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;664&quot; data-start=&quot;637&quot;&gt;테스트 설계 시 &lt;b&gt;소스코드 접근이 불필요&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;694&quot; data-start=&quot;665&quot;&gt;기능 요구사항 기반의 &lt;b&gt;시나리오 중심 테스트&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;767&quot; data-start=&quot;695&quot;&gt;주로 &lt;b&gt;시스템 테스트(System Testing)&lt;/b&gt;, &lt;b&gt;인수 테스트(Acceptance Testing)&lt;/b&gt; 단계에서 활용&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;781&quot; data-start=&quot;769&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-end=&quot;781&quot; data-start=&quot;769&quot; data-ke-size=&quot;size23&quot;&gt;대표 기법&lt;/h3&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1041&quot; data-start=&quot;783&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;기법&lt;/td&gt;
&lt;td&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;875&quot; data-start=&quot;811&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;845&quot; data-start=&quot;811&quot;&gt;동등 분할(Equivalence Partitioning)&lt;/td&gt;
&lt;td data-end=&quot;875&quot; data-start=&quot;845&quot; data-col-size=&quot;sm&quot;&gt;유효/무효 입력값 그룹화 후 대표 값으로 테스트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;939&quot; data-start=&quot;876&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;910&quot; data-start=&quot;876&quot;&gt;경계값 분석(Boundary Value Analysis)&lt;/td&gt;
&lt;td data-end=&quot;939&quot; data-start=&quot;910&quot; data-col-size=&quot;sm&quot;&gt;경계 근처 값에서 오류 발생 가능성 집중 검증&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;992&quot; data-start=&quot;940&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;966&quot; data-start=&quot;940&quot;&gt;상태 전이(State Transition)&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;992&quot; data-start=&quot;966&quot;&gt;시스템의 상태 변화 및 전이 규칙 테스트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1041&quot; data-start=&quot;993&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1018&quot; data-start=&quot;993&quot;&gt;결정 테이블(Decision Table)&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1041&quot; data-start=&quot;1018&quot;&gt;조건 조합에 따른 결과 도출 구조화&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;1046&quot; data-start=&quot;1043&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1082&quot; data-start=&quot;1048&quot; data-ke-size=&quot;size26&quot;&gt;화이트박스 테스트(White-box Testing)&lt;/h2&gt;
&lt;h3 data-end=&quot;1094&quot; data-start=&quot;1084&quot; data-ke-size=&quot;size23&quot;&gt;정의&lt;/h3&gt;
&lt;p data-end=&quot;1247&quot; data-start=&quot;1095&quot; data-ke-size=&quot;size16&quot;&gt;화이트박스 테스트는 &lt;b&gt;시스템의 내부 로직, 알고리즘, 조건문 등의 구조를 기반으로 설계된 테스트&lt;/b&gt;입니다.&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;1247&quot; data-start=&quot;1095&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1247&quot; data-start=&quot;1095&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;코드가 어떻게 동작하는가&amp;rdquo;를 직접 확인하는 테스트 방식으로, 일반적으로 &lt;b&gt;개발자 또는 코드 레벨에서 품질을 보장해야 하는 역할&lt;/b&gt;에서 수행됩니다.&lt;/p&gt;
&lt;h3 data-end=&quot;1258&quot; data-start=&quot;1249&quot; data-ke-size=&quot;size23&quot;&gt;&lt;br /&gt;특징&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1380&quot; data-start=&quot;1260&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1286&quot; data-start=&quot;1260&quot;&gt;&lt;b&gt;소스코드 분석을 기반&lt;/b&gt;으로 테스트 설계&lt;/li&gt;
&lt;li data-end=&quot;1330&quot; data-start=&quot;1287&quot;&gt;로직 커버리지, 조건문 분기, 반복문 경로 등 &lt;b&gt;세부 제어 흐름 검증&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;1380&quot; data-start=&quot;1331&quot;&gt;주로 &lt;b&gt;단위 테스트(Unit Testing)&lt;/b&gt;, &lt;b&gt;구조 테스트&lt;/b&gt; 단계에서 활용&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1394&quot; data-start=&quot;1382&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-end=&quot;1394&quot; data-start=&quot;1382&quot; data-ke-size=&quot;size23&quot;&gt;대표 기법&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1605&quot; data-start=&quot;1396&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;기법&lt;/td&gt;
&lt;td&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1468&quot; data-start=&quot;1424&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1434&quot; data-start=&quot;1424&quot;&gt;문장 커버리지&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1468&quot; data-start=&quot;1434&quot;&gt;코드 내 모든 문장이 최소 1회 이상 실행되었는지 확인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1514&quot; data-start=&quot;1469&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1479&quot; data-start=&quot;1469&quot;&gt;분기 커버리지&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1514&quot; data-start=&quot;1479&quot;&gt;조건문(if/else 등)의 모든 경로를 실행해보는 방식&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1569&quot; data-start=&quot;1515&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1525&quot; data-start=&quot;1515&quot;&gt;조건 커버리지&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1569&quot; data-start=&quot;1525&quot;&gt;복합 조건문의 각 개별 조건이 True/False를 모두 가지도록 테스트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1605&quot; data-start=&quot;1570&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1580&quot; data-start=&quot;1570&quot;&gt;경로 커버리지&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1605&quot; data-start=&quot;1580&quot;&gt;가능한 모든 실행 경로를 조합해 테스트&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;1610&quot; data-start=&quot;1607&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1642&quot; data-start=&quot;1612&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-end=&quot;1642&quot; data-start=&quot;1612&quot; data-ke-size=&quot;size26&quot;&gt;블랙박스 테스트 vs 화이트박스 테스트 비교&lt;/h2&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1957&quot; data-start=&quot;1644&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;항목&lt;/td&gt;
&lt;td&gt;블랙박스 테스트&lt;/td&gt;
&lt;td&gt;화이트박스 테스트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1760&quot; data-start=&quot;1723&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1732&quot; data-start=&quot;1723&quot;&gt;테스트 기준&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1745&quot; data-start=&quot;1732&quot;&gt;요구사항/기능 명세&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1760&quot; data-start=&quot;1745&quot;&gt;코드 로직/제어 흐름&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1792&quot; data-start=&quot;1761&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1769&quot; data-start=&quot;1761&quot;&gt;접근 범위&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1780&quot; data-start=&quot;1769&quot;&gt;외부 동작 중심&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1792&quot; data-start=&quot;1780&quot;&gt;내부 구조 중심&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1822&quot; data-start=&quot;1793&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1805&quot; data-start=&quot;1793&quot;&gt;테스트 설계 주체&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1815&quot; data-start=&quot;1805&quot;&gt;QA, 테스터&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1822&quot; data-start=&quot;1815&quot;&gt;개발자&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1863&quot; data-start=&quot;1823&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1832&quot; data-start=&quot;1823&quot;&gt;테스트 시점&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1845&quot; data-start=&quot;1832&quot;&gt;시스템/인수 테스트&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1863&quot; data-start=&quot;1845&quot;&gt;단위 테스트, 구조 테스트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1917&quot; data-start=&quot;1864&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1869&quot; data-start=&quot;1864&quot;&gt;장점&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1893&quot; data-start=&quot;1869&quot;&gt;사용자 관점 오류 탐지, 요구사항 검증&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1917&quot; data-start=&quot;1893&quot;&gt;로직 결함, 경로 누락 탐지에 효과적&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1957&quot; data-start=&quot;1918&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1923&quot; data-start=&quot;1918&quot;&gt;단점&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1938&quot; data-start=&quot;1923&quot;&gt;내부 오류 탐지 어려움&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1957&quot; data-start=&quot;1938&quot;&gt;사용자 시나리오 검증 어려움&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;2362&quot; data-start=&quot;2359&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2385&quot; data-start=&quot;2364&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-end=&quot;2385&quot; data-start=&quot;2364&quot; data-ke-size=&quot;size26&quot;&gt;마무리&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2490&quot; data-start=&quot;2411&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2451&quot; data-start=&quot;2411&quot;&gt;블랙박스 테스트는 &lt;b&gt;사용자 요구사항이 제대로 구현되었는지를 검증&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;2490&quot; data-start=&quot;2452&quot;&gt;화이트박스 테스트는 &lt;b&gt;내부 코드가 의도대로 작동하는지를 검증&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;2627&quot; data-start=&quot;2492&quot; data-ke-size=&quot;size16&quot;&gt;두 테스트는 성격이 다르기 때문에, 서로를 보완적으로 활용하는 것이 이상적입니다.&lt;br /&gt;실무에서는 일반적으로 화이트박스 테스트로 단위 수준의 품질을 확보한 뒤, 블랙박스 테스트를 통해 전체 시스템의 안정성을 검증합니다.&lt;/p&gt;
&lt;p data-end=&quot;2714&quot; data-start=&quot;2644&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;2884&quot; data-start=&quot;2797&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>정보관리기술사/소프트웨어공학</category>
      <category>Blackbox Testing</category>
      <category>Whitebox Testing</category>
      <category>블랙박스 테스트</category>
      <category>블랙박스 화이트박스 테스트 비교</category>
      <category>화이트박스 테스트</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/236</guid>
      <comments>https://hungc.tistory.com/236#entry236comment</comments>
      <pubDate>Mon, 21 Apr 2025 23:24:17 +0900</pubDate>
    </item>
    <item>
      <title>솥밥 맛집, 솔솥 상암점</title>
      <link>https://hungc.tistory.com/235</link>
      <description>&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;솔솥 상암점&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;상암에 드디어 솔솥이 생겼다..!!&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;비슷한 계열의 맛집인 담솥도 있지만, 개인적으로 솔솥을 더 선호한다.&lt;br /&gt;담솥은 타임스퀘어 또는 상암에 이미 있어서 방문을 여러번 해봤지만 근처에 솔솥은 없어서 너무 아쉬웠었다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;처음에 판교에서 솔솥을 먹고 너무 맛있어서 종종 생각났었는데, 상암 DDMC 빌딩에 생겼길래 바로 방문했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;iframe mapdata=&quot;addr=%EC%84%9C%EC%9A%B8%20%EB%A7%88%ED%8F%AC%EA%B5%AC%20%EC%83%81%EC%95%94%EB%8F%99%201610%20DDMC%20%EC%A7%80%ED%95%981%EC%B8%B5%20B101%2C%2015%ED%98%B8&amp;amp;addtype=1&amp;amp;confirmid=664566110&amp;amp;docid=&amp;amp;idx=1&amp;amp;ifrH=362px&amp;amp;ifrW=490px&amp;amp;mapHeight=362&amp;amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A476345%2C%22mapCenterY%22%3A1133038%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A476349%2C%22y%22%3A1133042%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%EC%86%94%EC%86%A5%20%EC%83%81%EC%95%94%EC%A0%90%22%2C%22confirmid%22%3A664566110%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;amp;mapWidth=490&amp;amp;mapX=476345&amp;amp;mapY=1133038&amp;amp;map_hybrid=false&amp;amp;map_level=4&amp;amp;map_type=TYPE_MAP&amp;amp;rcode=1144074000&amp;amp;tel=070-4134-9999&amp;amp;title=%EC%86%94%EC%86%A5%20%EC%83%81%EC%95%94%EC%A0%90&quot; src=&quot;/proxy/plusmapViewer.php?id=maps_1745206090282&quot; id=&quot;maps_1745206090282&quot; width=&quot;540px&quot; height=&quot;350px&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; data-ke-type=&quot;map&quot; data-maps-data=&quot;addr=%EC%84%9C%EC%9A%B8%20%EB%A7%88%ED%8F%AC%EA%B5%AC%20%EC%83%81%EC%95%94%EB%8F%99%201610%20DDMC%20%EC%A7%80%ED%95%981%EC%B8%B5%20B101%2C%2015%ED%98%B8&amp;amp;addtype=1&amp;amp;confirmid=664566110&amp;amp;docid=&amp;amp;idx=1&amp;amp;ifrH=362px&amp;amp;ifrW=490px&amp;amp;mapHeight=362&amp;amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A476345%2C%22mapCenterY%22%3A1133038%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A476349%2C%22y%22%3A1133042%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%EC%86%94%EC%86%A5%20%EC%83%81%EC%95%94%EC%A0%90%22%2C%22confirmid%22%3A664566110%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;amp;mapWidth=490&amp;amp;mapX=476345&amp;amp;mapY=1133038&amp;amp;map_hybrid=false&amp;amp;map_level=4&amp;amp;map_type=TYPE_MAP&amp;amp;rcode=1144074000&amp;amp;tel=070-4134-9999&amp;amp;title=%EC%86%94%EC%86%A5%20%EC%83%81%EC%95%94%EC%A0%90&quot; data-maps-thumbnail=&quot;https://ssl.daumcdn.net/map3/staticmap/image?center=476345%2C1133038&amp;amp;lv=4&amp;amp;size=540x350&amp;amp;srs=WCONGNAMUL&amp;amp;markers=symbol%3Asc_marker%7Clocation%3A476349%2C1133042&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위치: 서울 마포구 매봉산로 75 지하1층, 101호&lt;/li&gt;
&lt;li&gt;영업시간 11:00 ~ 21:00&lt;/li&gt;
&lt;li&gt;브레이크타임 16:00 ~ 17:00&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;DDMC 지하 1층 에스컬레이터 바로 뒷편에 자리잡고 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2250&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAd0xU/btsNt0DTu6a/aJkcoSDUesChzmTyTFDNkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAd0xU/btsNt0DTu6a/aJkcoSDUesChzmTyTFDNkk/img.png&quot; data-alt=&quot;솔솥 상암점&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAd0xU/btsNt0DTu6a/aJkcoSDUesChzmTyTFDNkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAd0xU%2FbtsNt0DTu6a%2FaJkcoSDUesChzmTyTFDNkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3000&quot; height=&quot;2250&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2250&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;솔솥 상암점&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;주말 일요일 저녁에 방문해서 그런지 사람이 아무도 없었다.&lt;br /&gt;아마 평일 낮엔 사람이 엄청 많을 것으로 예상된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LY9Yz/btsNtp42KZh/kZt1QCtTItcCM50zHHDq71/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LY9Yz/btsNtp42KZh/kZt1QCtTItcCM50zHHDq71/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LY9Yz/btsNtp42KZh/kZt1QCtTItcCM50zHHDq71/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLY9Yz%2FbtsNtp42KZh%2FkZt1QCtTItcCM50zHHDq71%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;대표 메뉴는 11가지로 보통 스테이크 솥밥과 도미관자 솥밥을 많이 시켜먹는 것 같다.&lt;br /&gt;전에 스테이크 솥밥을 먹었어서 이번에는 도미관자 솥밥과 연어 솥밥을 주문했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dxh8EA/btsNscsLLhe/l31rKwgOAVXSTwXFQRVkC1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dxh8EA/btsNscsLLhe/l31rKwgOAVXSTwXFQRVkC1/img.jpg&quot; data-alt=&quot;솔솥 메뉴&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dxh8EA/btsNscsLLhe/l31rKwgOAVXSTwXFQRVkC1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdxh8EA%2FbtsNscsLLhe%2Fl31rKwgOAVXSTwXFQRVkC1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;솔솥 메뉴&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;오픈 이벤트라고 고로케도 주셨는데, 사진 찍는걸 깜빡했다. ㅎㅎ&lt;br /&gt;&amp;nbsp;&lt;br /&gt;그림처럼 메뉴가 서빙되며, 솥밥에 있는 밥과 내용물을 섞어서 그릇으로 옮긴 뒤에 먹고 나서 누룽지로 먹는 형태다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XKBbi/btsNsa2YW9I/MTtnARnpkxAS34bBkBLEtk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XKBbi/btsNsa2YW9I/MTtnARnpkxAS34bBkBLEtk/img.png&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2250&quot; style=&quot;width: 32.5581%;&quot; data-is-animation=&quot;false&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XKBbi/btsNsa2YW9I/MTtnARnpkxAS34bBkBLEtk/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXKBbi%2FbtsNsa2YW9I%2FMTtnARnpkxAS34bBkBLEtk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3000&quot; height=&quot;2250&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgjEgK/btsNt2ItHbt/lqUhWKLyyTNCUUiud0jpM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgjEgK/btsNt2ItHbt/lqUhWKLyyTNCUUiud0jpM0/img.png&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2250&quot; style=&quot;width: 32.5581%;&quot; data-is-animation=&quot;false&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgjEgK/btsNt2ItHbt/lqUhWKLyyTNCUUiud0jpM0/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgjEgK%2FbtsNt2ItHbt%2FlqUhWKLyyTNCUUiud0jpM0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3000&quot; height=&quot;2250&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dewK6A/btsNsMNP25e/46cS8FYwC6oBotflOrtRvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dewK6A/btsNsMNP25e/46cS8FYwC6oBotflOrtRvK/img.png&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2250&quot; style=&quot;width: 32.5581%;&quot; data-is-animation=&quot;false&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dewK6A/btsNsMNP25e/46cS8FYwC6oBotflOrtRvK/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdewK6A%2FbtsNsMNP25e%2F46cS8FYwC6oBotflOrtRvK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3000&quot; height=&quot;2250&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;연어 솥밥과 도미관자 솥밥&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;연어솥밥과 도미관자 솥밥 모두 맛있었는데, 개인적으로는 도미관자가 더 맛있던것 같다.&lt;br /&gt;연어는 간장 베이스의 양념 맛이 느껴지고 도미관자는 담백한 맛이다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;둘다 건강한 맛의 느낌이고, 와이프와 가족들 모두 만족스러운 식사였다.&lt;br /&gt;특히 어머니들이 좋아할만한 메뉴인 것 같다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c3Muwr/btsNtOQ3c41/pTF3FMG6OJ0AcPqKmmifFk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c3Muwr/btsNtOQ3c41/pTF3FMG6OJ0AcPqKmmifFk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c3Muwr/btsNtOQ3c41/pTF3FMG6OJ0AcPqKmmifFk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc3Muwr%2FbtsNtOQ3c41%2FpTF3FMG6OJ0AcPqKmmifFk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;주차는 1시간 지원 받았다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwwkEf/btsNsbgjC9f/jZbjLXX9iYzSzTEJzfMadK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwwkEf/btsNsbgjC9f/jZbjLXX9iYzSzTEJzfMadK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwwkEf/btsNsbgjC9f/jZbjLXX9iYzSzTEJzfMadK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwwkEf%2FbtsNsbgjC9f%2FjZbjLXX9iYzSzTEJzfMadK%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;532&quot; height=&quot;709&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;상암에 맛집들이 계속 생기는 것 같아서 이사오길 더 잘한 것 같다.&lt;br /&gt;다음에 장어솥밥을 먹으러 재방문할 계획이다.&lt;/p&gt;
&lt;figure data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;014&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/014.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/014.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;</description>
      <category>Daily/맛집</category>
      <category>상암맛집</category>
      <category>상암솔솥</category>
      <category>솔솥</category>
      <category>솔솥 상암점</category>
      <category>솥밥</category>
      <category>솥밥 맛집</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/235</guid>
      <comments>https://hungc.tistory.com/235#entry235comment</comments>
      <pubDate>Sun, 20 Apr 2025 10:32:03 +0900</pubDate>
    </item>
    <item>
      <title>SBOM (Software Bill of Materials)</title>
      <link>https://hungc.tistory.com/234</link>
      <description>&lt;h1 data-end=&quot;156&quot; data-start=&quot;125&quot;&gt;소프트웨어 자재 명세서, SBOM이란 무엇인가?&lt;/h1&gt;
&lt;p data-end=&quot;283&quot; data-start=&quot;158&quot; data-ke-size=&quot;size16&quot;&gt;최근 몇 년간 소프트웨어 공급망 보안과 투명성에 대한 요구가 크게 증가하면서, SBOM(Software Bill of Materials)이 필수 요소로 부상하고 있다.&lt;/p&gt;
&lt;p data-end=&quot;283&quot; data-start=&quot;158&quot; data-ke-size=&quot;size16&quot;&gt;SBOM이란 정확히 무엇이고 왜 중요할까?&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m8e77/btsNt5Aarcv/FfGSxaXzeIhOenddhc5Tn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m8e77/btsNt5Aarcv/FfGSxaXzeIhOenddhc5Tn0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m8e77/btsNt5Aarcv/FfGSxaXzeIhOenddhc5Tn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm8e77%2FbtsNt5Aarcv%2FFfGSxaXzeIhOenddhc5Tn0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;678&quot; height=&quot;678&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;283&quot; data-start=&quot;158&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;303&quot; data-start=&quot;290&quot; data-ke-size=&quot;size26&quot;&gt;  SBOM이란?&lt;/h2&gt;
&lt;p data-end=&quot;450&quot; data-start=&quot;305&quot; data-ke-size=&quot;size16&quot;&gt;SBOM은 &lt;b&gt;소프트웨어를 구성하는 모든 오픈소스 및 서드파티 컴포넌트의 목록&lt;/b&gt;을 정리한 문서이다.&lt;br /&gt;제조업에서 흔히 사용되는 제품에 사용된 모든 부품을 기록하는 '자재 명세서(BOM)'처럼, SBOM은 소프트웨어가 어떤 구성요소로 이루어져 있는지를 명확히 보여준다.&lt;/p&gt;
&lt;p data-end=&quot;450&quot; data-start=&quot;305&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;479&quot; data-start=&quot;452&quot; data-ke-size=&quot;size23&quot;&gt;  SBOM에는 어떤 정보가 들어있을까?&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;716&quot; data-start=&quot;481&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;514&quot; data-start=&quot;481&quot;&gt;&lt;b&gt;Component Name&lt;/b&gt; (예: log4j)&lt;/li&gt;
&lt;li data-end=&quot;542&quot; data-start=&quot;515&quot;&gt;&lt;b&gt;Version&lt;/b&gt; (예: 2.17.1)&lt;/li&gt;
&lt;li data-end=&quot;596&quot; data-start=&quot;543&quot;&gt;&lt;b&gt;Supplier/Author&lt;/b&gt; (예: Apache Software Foundation)&lt;/li&gt;
&lt;li data-end=&quot;633&quot; data-start=&quot;597&quot;&gt;&lt;b&gt;License&lt;/b&gt; (예: Apache-2.0, MIT 등)&lt;/li&gt;
&lt;li data-end=&quot;667&quot; data-start=&quot;634&quot;&gt;&lt;b&gt;Dependency Type&lt;/b&gt; (직접/간접 의존성)&lt;/li&gt;
&lt;li data-end=&quot;716&quot; data-start=&quot;668&quot;&gt;&lt;b&gt;Package URL (purl)&lt;/b&gt; 및 &lt;b&gt;Hash 정보&lt;/b&gt; (무결성 검증용)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;721&quot; data-start=&quot;718&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;742&quot; data-start=&quot;723&quot; data-ke-size=&quot;size26&quot;&gt;  왜 SBOM이 중요한가?&lt;/h2&gt;
&lt;p data-end=&quot;835&quot; data-start=&quot;744&quot; data-ke-size=&quot;size16&quot;&gt;SBOM은 소프트웨어의 &lt;b&gt;투명성&lt;/b&gt;, &lt;b&gt;보안&lt;/b&gt;, &lt;b&gt;법적 컴플라이언스&lt;/b&gt;, &lt;b&gt;공급망 리스크 관리&lt;/b&gt;에 핵심적인 역할을 한다.&lt;/p&gt;
&lt;div&gt;&lt;span data-state=&quot;closed&quot;&gt;&lt;/span&gt;
&lt;div&gt;주요 목적설명
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1041&quot; data-start=&quot;837&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;1041&quot; data-start=&quot;873&quot;&gt;
&lt;tr data-end=&quot;910&quot; data-start=&quot;873&quot;&gt;
&lt;td data-end=&quot;884&quot; data-start=&quot;873&quot;&gt;보안취약점 관리&lt;/td&gt;
&lt;td data-end=&quot;910&quot; data-start=&quot;884&quot;&gt;취약한 오픈소스 탐지 및 패치 대응 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;945&quot; data-start=&quot;911&quot;&gt;
&lt;td data-end=&quot;928&quot; data-start=&quot;911&quot;&gt;라이선스 컴플라이언스&lt;/td&gt;
&lt;td data-end=&quot;945&quot; data-start=&quot;928&quot;&gt;라이선스 위반 사전 방지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;991&quot; data-start=&quot;946&quot;&gt;
&lt;td data-end=&quot;962&quot; data-start=&quot;946&quot;&gt;공급망 리스크 관리&lt;/td&gt;
&lt;td data-end=&quot;991&quot; data-start=&quot;962&quot;&gt;외부 컴포넌트 변경 이력 추적 및 리스크 분석&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1041&quot; data-start=&quot;992&quot;&gt;
&lt;td data-end=&quot;1008&quot; data-start=&quot;992&quot;&gt;고객 및 감사 대응&lt;/td&gt;
&lt;td data-end=&quot;1041&quot; data-start=&quot;1008&quot;&gt;소프트웨어 구성요소를 명확하게 문서화하여 신뢰도 확보&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1154&quot; data-start=&quot;1043&quot; data-ke-size=&quot;size16&quot;&gt;미국 바이든 행정부는 2021년 행정명령(EO 14028)을 통해 &lt;b&gt;정부 납품용 소프트웨어에 SBOM 제공을 의무화&lt;/b&gt;했다.&lt;/p&gt;
&lt;p data-end=&quot;1154&quot; data-start=&quot;1043&quot; data-ke-size=&quot;size16&quot;&gt;이에 따라 글로벌 기업들도 SBOM 채택을 가속화하고 있다.&lt;/p&gt;
&lt;hr data-end=&quot;1159&quot; data-start=&quot;1156&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1184&quot; data-start=&quot;1161&quot; data-ke-size=&quot;size26&quot;&gt;  SBOM 표준은 무엇이 있을까?&lt;/h2&gt;
&lt;div&gt;&lt;span data-state=&quot;closed&quot;&gt;&lt;/span&gt;
&lt;div&gt;표준명설명
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1380&quot; data-start=&quot;1186&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;1380&quot; data-start=&quot;1217&quot;&gt;
&lt;tr data-end=&quot;1276&quot; data-start=&quot;1217&quot;&gt;
&lt;td data-end=&quot;1228&quot; data-start=&quot;1217&quot;&gt;&lt;b&gt;SPDX&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;1276&quot; data-start=&quot;1228&quot;&gt;Linux Foundation 주도, ISO/IEC 5962 국제표준으로 채택됨&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1321&quot; data-start=&quot;1277&quot;&gt;
&lt;td data-end=&quot;1293&quot; data-start=&quot;1277&quot;&gt;&lt;b&gt;CycloneDX&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;1321&quot; data-start=&quot;1293&quot;&gt;OWASP 주도, 보안 중심의 SBOM 포맷&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1380&quot; data-start=&quot;1322&quot;&gt;
&lt;td data-end=&quot;1338&quot; data-start=&quot;1322&quot;&gt;&lt;b&gt;SWID Tags&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;1380&quot; data-start=&quot;1338&quot;&gt;ISO/IEC 19770 기반, 상용 소프트웨어 중심 메타데이터 제공&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;1385&quot; data-start=&quot;1382&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1404&quot; data-start=&quot;1387&quot; data-ke-size=&quot;size26&quot;&gt; ️ SBOM 생성 도구&lt;/h2&gt;
&lt;p data-end=&quot;1460&quot; data-start=&quot;1406&quot; data-ke-size=&quot;size16&quot;&gt;SBOM을 수동으로 작성하기는 현실적으로 어렵기 때문에, 다양한 자동화 도구가 등장하고 있다.&lt;/p&gt;
&lt;div&gt;&lt;span data-state=&quot;closed&quot;&gt;&lt;/span&gt;
&lt;div&gt;도구특징
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1677&quot; data-start=&quot;1462&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;1677&quot; data-start=&quot;1490&quot;&gt;
&lt;tr data-end=&quot;1543&quot; data-start=&quot;1490&quot;&gt;
&lt;td data-end=&quot;1501&quot; data-start=&quot;1490&quot;&gt;&lt;b&gt;Syft&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;1543&quot; data-start=&quot;1501&quot;&gt;CLI 기반의 경량 SBOM 생성기, SPDX/CycloneDX 지원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1582&quot; data-start=&quot;1544&quot;&gt;
&lt;td data-end=&quot;1556&quot; data-start=&quot;1544&quot;&gt;&lt;b&gt;Trivy&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;1582&quot; data-start=&quot;1556&quot;&gt;보안 취약점 탐지 + SBOM 생성 기능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1627&quot; data-start=&quot;1583&quot;&gt;
&lt;td data-end=&quot;1599&quot; data-start=&quot;1583&quot;&gt;&lt;b&gt;FOSSology&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;1627&quot; data-start=&quot;1599&quot;&gt;라이선스 식별 및 SPDX 기반 리포트 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1677&quot; data-start=&quot;1628&quot;&gt;
&lt;td data-end=&quot;1648&quot; data-start=&quot;1628&quot;&gt;&lt;b&gt;CycloneDX CLI&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;1677&quot; data-start=&quot;1648&quot;&gt;CycloneDX 포맷 SBOM 생성 전용 툴&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;국내에서는 LG전자의 FOSSLight, 카카오의 Olive를 주로 활용하고 있다.&lt;/p&gt;
&lt;hr data-end=&quot;1682&quot; data-start=&quot;1679&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1702&quot; data-start=&quot;1684&quot; data-ke-size=&quot;size26&quot;&gt;✅ SBOM 도입을 위한 팁&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1883&quot; data-start=&quot;1704&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1751&quot; data-start=&quot;1704&quot;&gt;&lt;b&gt;자동화 도구 도입&lt;/b&gt;: 개발 파이프라인(CI/CD)에 SBOM 생성 툴 통합&lt;/li&gt;
&lt;li data-end=&quot;1795&quot; data-start=&quot;1752&quot;&gt;&lt;b&gt;주기적인 갱신&lt;/b&gt;: 소프트웨어 버전 업데이트 시 SBOM도 함께 갱신&lt;/li&gt;
&lt;li data-end=&quot;1836&quot; data-start=&quot;1796&quot;&gt;&lt;b&gt;라이선스 정책 정의&lt;/b&gt;: 조직 내 금지/허용 오픈소스 기준 마련&lt;/li&gt;
&lt;li data-end=&quot;1883&quot; data-start=&quot;1837&quot;&gt;&lt;b&gt;SBOM 저장소 관리&lt;/b&gt;: 중앙에서 SBOM 버전 관리 및 감사 로그 확보&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-end=&quot;1888&quot; data-start=&quot;1885&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-end=&quot;2005&quot; data-start=&quot;1901&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;2005&quot; data-start=&quot;1901&quot; data-ke-size=&quot;size16&quot;&gt;결국 회사의 서비스가 어떤 오픈소스와 컴포넌트로 구성되어 있는지 SBOM을 통해 관리될 수 있어야 하며,&lt;/p&gt;
&lt;p data-end=&quot;2005&quot; data-start=&quot;1901&quot; data-ke-size=&quot;size16&quot;&gt;Log4j와 같은 보안취약점 이슈가 발생했을때 Log4j를 사용하고 있는 서비스를 모두 식별하여 빠르게 조치할 수 있어야만 한다.&lt;/p&gt;</description>
      <category>정보관리기술사/소프트웨어공학</category>
      <category>SBOM</category>
      <category>software bill of materials</category>
      <category>오픈소스</category>
      <category>오픈소스관리</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/234</guid>
      <comments>https://hungc.tistory.com/234#entry234comment</comments>
      <pubDate>Sun, 20 Apr 2025 10:31:06 +0900</pubDate>
    </item>
    <item>
      <title>6+6 육아휴직 남편 급여신청</title>
      <link>https://hungc.tistory.com/233</link>
      <description>&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: Noto Serif KR;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;6+6 육아휴직 급여신청&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;3월에 육아휴직을 시작하고 한 달이 지나서 육아휴직 급여신청을 했다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;참고로 &lt;b&gt;6+6 육아휴직&lt;/b&gt;은 부모 모두 통상임금이 월 450만원 이상일 때&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;부: 250, 250, 300, 350, 400, 450 만원&lt;/li&gt;
&lt;li&gt;보: 250, 250, 300, 350, 400, 450 만원&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;총 4,000만원을 받을 수 있는 엄청난 혜택이다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;6+6 육아휴직에 대한 자세한 내용은 고용노동부 유튜브를 참조하자.&lt;br /&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=4w-EO8YU_pQ&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span&gt;https://www.youtube.com/watch?v=4w-EO8YU_pQ&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=4w-EO8YU_pQ&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/OfMrR/hyYG5VPVF9/TOe3a7yhND2Er0Puyc1rG0/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=140_196_1164_568,https://scrap.kakaocdn.net/dn/bk1iAa/hyYHbaGBBq/GjdgZFnuRjuBQMiaMaKIAK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=140_196_1164_568&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;엄마, 아빠 필수 시청! 2024년 6+6 부모육아휴직제! 정확하게 알아보고 최대 3,900만원 받자!&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/4w-EO8YU_pQ&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;(첫 달 금액이 200 -&amp;gt; 250만원으로 변경되면서 위의 영상에서 언급하는 3,900만원에서 4,000만원으로 올랐으니 참고)&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;우리 집 같은 경우에는 와이프가 23년 10월부터 1년 넘게 먼저 육아휴직을 사용했고,&lt;br /&gt;이때 150만원 * 0.75의 금액만큼 지급을 받았었다.&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;현재는 사후지급금이 폐지되었지만 당시에는 75%만큼 육아휴직 금액을 받고 회사에 복귀하면 25%를 추가로 돌려받는 시스템이었다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;육아휴직 급여신청 방법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;육아휴직 급여신청은 고용24 사이트에서 진행할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1322&quot; data-origin-height=&quot;310&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mVffW/btsO15ybDUY/jiAWiBOs7vi6OC0ahmeGdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mVffW/btsO15ybDUY/jiAWiBOs7vi6OC0ahmeGdk/img.png&quot; data-alt=&quot;고용24 육아휴직&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mVffW/btsO15ybDUY/jiAWiBOs7vi6OC0ahmeGdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmVffW%2FbtsO15ybDUY%2FjiAWiBOs7vi6OC0ahmeGdk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1322&quot; height=&quot;310&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1322&quot; data-origin-height=&quot;310&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;고용24 육아휴직&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;휴직하고 나서 얼마 뒤 접수를 하려고 했는데 아래와 같이 급여신청 제출 불가라고 나왔다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1147&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mPU0h/btsO2kV6zVj/H4KhhPrxtICk362aHfiTxk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mPU0h/btsO2kV6zVj/H4KhhPrxtICk362aHfiTxk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mPU0h/btsO2kV6zVj/H4KhhPrxtICk362aHfiTxk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmPU0h%2FbtsO2kV6zVj%2FH4KhhPrxtICk362aHfiTxk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;347&quot; height=&quot;340&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1147&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;검색을 해봤더니 회사에서 먼저 육아휴직 확인서를 등록해줘야 한다고 했다.&lt;br /&gt;회사가 등록해 줄 때까지 매주 한 번씩 확인을 했는데, 변화가 없어서 회사에 문의했더니 등록을 이미 했다고 전달을 받았다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;알고 보니 회사에서 등록을 해주고 한 달이 넘어야 급여 신청 제출이 가능했다.&lt;br /&gt;3월 4일에 휴직을 했는데, 4월 5일이 되니까 위와 같은 문구가 사라졌다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;신청인 정보, 배우자 정보, 계좌 등 각 항목들을 입력하는 건 크게 어렵지 않으니 생략한다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;4월 7일에 접수해서 4월 14일에 입금되었으니 입금되는데 기간은 일주일정도 소요되는 것 같다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1247&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcEj0k/btsO19AxVAM/tFDarb3J8y0GQU9OHfZ2K0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcEj0k/btsO19AxVAM/tFDarb3J8y0GQU9OHfZ2K0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcEj0k/btsO19AxVAM/tFDarb3J8y0GQU9OHfZ2K0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcEj0k%2FbtsO19AxVAM%2FtFDarb3J8y0GQU9OHfZ2K0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;721&quot; height=&quot;768&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;1247&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;와이프한테도 마찬가지로 사후지급금(150만원 * 0.25) 금액과&lt;br /&gt;첫 달에 받아야 할 250만원에서 차액 보전분까지 같이 입금되었다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;와이프가 육아휴직을 2년 쓰는 것보다 남편과 나눠서 사용했을 때 약 3천만 원 정도의 금액이 차이 나는 것으로 보인다.&lt;br /&gt;(물론 남편이 육아휴직을 쓸 수 있는 환경이어야 하고 통상임금에 대한 의존도가 있지만..)&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;이제 육아휴직을 한 지 한 달이 좀 지났는데, 아이와 소중한 시간을 보낼 수 있음에 너무 감사하게 생각하고 있다.&lt;br /&gt;아이가 아빠 껌딱지가 되어서 이제 엄마보다 날 더 찾는 것에 신기하고 뿌듯하다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;스무 살 이후로 처음으로 생긴 여유라 하루하루가 더 소중하고 감사한 것 같다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;이 혜택을 받을 수 있게 해 준 정책과 회사, 팀 동료, 와이프에게도 너무 고마운데,&lt;br /&gt;이 시간들을 낭비하지 말고 보람 있게 쓸 수 있도록 더 노력해야겠다.&lt;br /&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Daily/육아</category>
      <category>6+6</category>
      <category>6+6육아휴직</category>
      <category>남편육아휴직</category>
      <category>육아휴직</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/233</guid>
      <comments>https://hungc.tistory.com/233#entry233comment</comments>
      <pubDate>Fri, 18 Apr 2025 12:42:00 +0900</pubDate>
    </item>
    <item>
      <title>서울형 키즈카페 마포구 상암점</title>
      <link>https://hungc.tistory.com/232</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: Noto Serif KR;&quot;&gt;서울형 키즈카페 마포구 상암점&lt;/span&gt;&lt;span style=&quot;font-family: Noto Serif KR;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Noto Serif KR;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;아이가 어린이집에 끝나면 매번 아이와 어떻게 놀아줄지가 고민인데..&lt;br&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;853&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byDHq7/btsNmJcHssJ/cKvUSM87Q7gA1ICGKaGNlK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byDHq7/btsNmJcHssJ/cKvUSM87Q7gA1ICGKaGNlK/img.jpg&quot; data-alt=&quot;서울형키즈카페 상암점&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byDHq7/btsNmJcHssJ/cKvUSM87Q7gA1ICGKaGNlK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyDHq7%2FbtsNmJcHssJ%2FcKvUSM87Q7gA1ICGKaGNlK%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;1280&quot; height=&quot;853&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;853&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;서울형키즈카페 상암점&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;가격이 저렴(영유아 2,000원 / 보호자 1,000원)하고 시설도 좋고 넓은데, 평일엔 사람이 별로 없다.&lt;br&gt;2층과 3층으로 구분되어 있고 2층은 활동적인 놀이 중심으로 구성되어 있고, 3층은 좀 더 정적인 활동(책읽기, 블록쌓기) 할 수 있는 것 같다.&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;blockquote data-ke-style=&quot;style2&quot;&gt;2층 이미지&lt;/blockquote&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0PhG6/btsNvyIfgYw/ux1SK3oOm7zjEsvKOYNdeK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0PhG6/btsNvyIfgYw/ux1SK3oOm7zjEsvKOYNdeK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0PhG6/btsNvyIfgYw/ux1SK3oOm7zjEsvKOYNdeK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0PhG6%2FbtsNvyIfgYw%2Fux1SK3oOm7zjEsvKOYNdeK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcCYLU/btsNuZUmhf2/5MjeXuMQBcpwLv8F7qeHPK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcCYLU/btsNuZUmhf2/5MjeXuMQBcpwLv8F7qeHPK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcCYLU/btsNuZUmhf2/5MjeXuMQBcpwLv8F7qeHPK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcCYLU%2FbtsNuZUmhf2%2F5MjeXuMQBcpwLv8F7qeHPK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byLH5O/btsNvfvEDAW/CgmF72mM3JGGyB2jKeHMfK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byLH5O/btsNvfvEDAW/CgmF72mM3JGGyB2jKeHMfK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byLH5O/btsNvfvEDAW/CgmF72mM3JGGyB2jKeHMfK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyLH5O%2FbtsNvfvEDAW%2FCgmF72mM3JGGyB2jKeHMfK%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;3024&quot; height=&quot;4032&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xe1i3/btsNu15F2h8/YV3osY2b2gmTFteyKYwDF0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xe1i3/btsNu15F2h8/YV3osY2b2gmTFteyKYwDF0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xe1i3/btsNu15F2h8/YV3osY2b2gmTFteyKYwDF0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fxe1i3%2FbtsNu15F2h8%2FYV3osY2b2gmTFteyKYwDF0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGqjBR/btsNu3a8wDv/GBJ4UvyH4KcIWW2XHZkwtk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGqjBR/btsNu3a8wDv/GBJ4UvyH4KcIWW2XHZkwtk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGqjBR/btsNu3a8wDv/GBJ4UvyH4KcIWW2XHZkwtk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGqjBR%2FbtsNu3a8wDv%2FGBJ4UvyH4KcIWW2XHZkwtk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;h4 data-ke-size=&quot;size20&quot;&gt;서울형 키즈카페 마포구 상암동점&lt;/h4&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;이용정원: 개인 46명&lt;/li&gt;&lt;li&gt;이용연령: 1~6세&lt;/li&gt;&lt;li&gt;주소: 서울특별시 마포구 상암산로1길 71 마포구육아종합지원센터 2~3층 서울형 키즈카페 마포구 상암점 (상암동)&lt;/li&gt;&lt;/ul&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/em8yvR/btsNnLBLoY5/lcCTknSaZGBgFYyv4n8MPk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/em8yvR/btsNnLBLoY5/lcCTknSaZGBgFYyv4n8MPk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/em8yvR/btsNnLBLoY5/lcCTknSaZGBgFYyv4n8MPk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fem8yvR%2FbtsNnLBLoY5%2FlcCTknSaZGBgFYyv4n8MPk%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;3024&quot; height=&quot;4032&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주차가 헬이라 차는 가지고 오지 않는것이 좋다.&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;h4 data-ke-size=&quot;size20&quot;&gt;서울형 키즈카페 예약&lt;/h4&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://icare.seoul.go.kr/icare/user/kidsCafe/BD_selectKidsCafeList.do&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;https://icare.seoul.go.kr/icare/user/kidsCafe/BD_selectKidsCafeList.do&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;figure data-ke-type=&quot;opengraph&quot; data-og-title=&quot;서울형 키즈카페 예약 : HOME &gt; 예약신청 &gt; 서울형키즈카페  &gt; 서울형 키즈카페 예약&quot; data-ke-align=&quot;alignCenter&quot; data-og-host=&quot;icare.seoul.go.kr&quot; data-og-source-url=&quot;https://icare.seoul.go.kr/icare/user/kidsCafe/BD_selectKidsCafeList.do&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cjjZ2l/hyYB9EThYv/w9w4hKTaC5AdiAO7nZeFjK/img.jpg?width=1400&amp;amp;height=1050&amp;amp;face=0_0_1400_1050,https://scrap.kakaocdn.net/dn/pGhMd/hyYHedlFq9/8bz8n9CS8rNzczTgLQ9hlk/img.jpg?width=1600&amp;amp;height=901&amp;amp;face=0_0_1600_901&quot; data-og-url=&quot;https://icare.seoul.go.kr/icare/user/kidsCafe/BD_selectKidsCafeList.do&quot;&gt;&lt;a href=&quot;https://icare.seoul.go.kr/icare/user/kidsCafe/BD_selectKidsCafeList.do&quot; target=&quot;_blank&quot; data-source-url=&quot;https://icare.seoul.go.kr/icare/user/kidsCafe/BD_selectKidsCafeList.do&quot;&gt;&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cjjZ2l/hyYB9EThYv/w9w4hKTaC5AdiAO7nZeFjK/img.jpg?width=1400&amp;amp;height=1050&amp;amp;face=0_0_1400_1050,https://scrap.kakaocdn.net/dn/pGhMd/hyYHedlFq9/8bz8n9CS8rNzczTgLQ9hlk/img.jpg?width=1600&amp;amp;height=901&amp;amp;face=0_0_1600_901')&quot;&gt; &lt;/div&gt;&lt;div class=&quot;og-text&quot;&gt;&lt;p class=&quot;og-title&quot;&gt;서울형 키즈카페 예약 : HOME &amp;gt; 예약신청 &amp;gt; 서울형키즈카페&amp;nbsp;&amp;nbsp;&amp;gt; 서울형 키즈카페 예약&lt;/p&gt;&lt;p class=&quot;og-host&quot;&gt;icare.seoul.go.kr&lt;/p&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;아래와 같은 시간대로 운영되며, 본인이 가고자 하는 날짜와 시간을 선택해야 한다.&lt;/p&gt;&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;br&gt;&amp;lt;평일운영시간&amp;gt;&lt;br&gt;-1회차 : 9:40~11:40 (단체)&lt;br&gt;-2회차 : 13:20~15:20 (공용)&lt;br&gt;-3회차 : 16:00~18:00 (공용)&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;lt;토요일, 일요일 운영시간&amp;gt;&lt;br&gt;-1회차 : 9:10~11:00&lt;br&gt;-2회차 : 11:10~13:00&lt;br&gt;-3회차 : 14:10~16:00&lt;br&gt;-4회차 : 16:10~18:00&lt;br&gt;&amp;nbsp;&lt;/blockquote&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1253&quot; data-origin-height=&quot;977&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Jx4Zz/btsNmatMGxX/ob7jiWSca1R2j5qba6IJT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Jx4Zz/btsNmatMGxX/ob7jiWSca1R2j5qba6IJT1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Jx4Zz/btsNmatMGxX/ob7jiWSca1R2j5qba6IJT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJx4Zz%2FbtsNmatMGxX%2Fob7jiWSca1R2j5qba6IJT1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1253&quot; height=&quot;977&quot; data-origin-width=&quot;1253&quot; data-origin-height=&quot;977&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;&lt;span style=&quot;color: #000000;&quot;&gt;보호자는 최대 2인까지 입장 가능하며, 1일 1회만 입장이 가능하다.&lt;/span&gt;&lt;br&gt;&lt;span style=&quot;color: #000000;&quot;&gt;중요한 점이 만약 예약을 하고 못 갈것 같다면,&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt; 이용 시작 시간 30분전까지는 반드시 직접 취소해야 한다. (전화 취소 불가)&lt;/span&gt;&lt;br&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;노쇼 패널티로 30일간 예약 및 이용이 불가할 수가 있기 때문이다.&lt;/span&gt;&lt;br&gt;&amp;nbsp;&lt;br&gt;그리고 입장시 등본을 확인하기 때문에 항상 가방에 등본을 챙겨서 다니고 있다.&lt;br&gt;&amp;nbsp;&lt;br&gt;오늘도 어린이집 하원 후 들러서 아이와 놀아줘야겠다.&lt;/p&gt;&lt;figure data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;006.gif&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/006.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/006.gif&quot; width=&quot;150&quot;&gt;&lt;/figure&gt;</description>
      <category>Daily/육아</category>
      <category>상암키즈카페</category>
      <category>서울형키즈카페</category>
      <category>서울형키즈카페 상암점</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/232</guid>
      <comments>https://hungc.tistory.com/232#entry232comment</comments>
      <pubDate>Wed, 16 Apr 2025 13:54:52 +0900</pubDate>
    </item>
    <item>
      <title>정보관리기술사(Professional Engineer Information Management) 준비</title>
      <link>https://hungc.tistory.com/231</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;육아휴직 중 어떻게하면 좀 더 의미있게 시간을 보낼 수 있을까 고민하다가&lt;br&gt;&lt;b&gt;정보관리기술사(Professional Engineer Information Management)&lt;/b&gt;를 준비하기로 했다.&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;정보관리기술사 준비 이유&lt;/h3&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;정보관리기술사를 취득하게 되면 따라오는 혜택은 다음과 같다.&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;자격 수당&lt;/li&gt;&lt;li&gt;수석감리자격&lt;/li&gt;&lt;li&gt;평가위원&lt;/li&gt;&lt;li&gt;멘토링, 강의, 저서&lt;/li&gt;&lt;li&gt;전문직 대출&lt;/li&gt;&lt;li&gt;5급공무원 지원자격&lt;/li&gt;&lt;/ul&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;나에게 기술사를 추천해준 친구는 회사에서 매달 30만원의 자격 수당을 지원해준다고 한다.&lt;br&gt;내가 다니는 회사는 정보관리기술사에 대해 딱히 크게 혜택을 제공해주진 않아서 취득하게 되더라도 평가위원이나 멘토링 정도 할 수 있으려나.. 당장은 크게 피부로 와닿을만한 메리트는 없어보였다.&lt;br&gt;노후를 위한 감리자격도 큰 메리트이긴 하지만 빠른 은퇴가 목표인 나에겐 크게 와닿진 않았다.&lt;br&gt;&amp;nbsp;&lt;br&gt;그럼에도 도전하게 된 이유는 IT 분야 최고 자격증이라는 점과 여태까지 배운 기술을 다시 한번 정리하고 큰 숲을 보고 싶었다.&lt;br&gt;그리고 학부에서 컴퓨터공학, 대학원에서는 소프트웨어공학을 전공하고 회사를 다니며 방통대에서 통계를 전공했기 때문에 남들보다 조금 더 수월하지 않을까 생각했고 육아휴직 기간동안 준비하기에 최적의 자격증이라고 생각했다.&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;정보관리기술사 시험범위&lt;/h3&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;참고로 정보관리기술사란 한국산업인력공단에서 시행하는 시험이다.&lt;br&gt;년 3회 정도 시험이 있으며, 1차 필기시험은 400분 시간동안 손으로 시험을 봐야하는 엄청난 시험이다.&lt;br&gt;&amp;nbsp;&lt;br&gt;우선 공부해야 할 범위가 너무나 방대한데, 과목은 아래와 같다.&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;IT경영전략&lt;/li&gt;&lt;li&gt;소프트웨어공학&lt;/li&gt;&lt;li&gt;프로젝트관리&lt;/li&gt;&lt;li&gt;디지털서비스&lt;/li&gt;&lt;li&gt;디지털네트워크&lt;/li&gt;&lt;li&gt;보안&lt;/li&gt;&lt;li&gt;DB&lt;/li&gt;&lt;li&gt;CA/OS&lt;/li&gt;&lt;li&gt;DS/알고리즘&lt;/li&gt;&lt;li&gt;AI/통계&lt;/li&gt;&lt;/ul&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;자격증을 취득하기 위해서 보통 회사를 다니면서 평일 4시간, 주말 10시간 공부(주 40시간)를 하면&lt;br&gt;보통 1년~1년 반 정도의 시간이 소요된다고 한다..&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;정보관리기술사 학원등록&amp;nbsp;&lt;/h3&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;4월 6일 일요일부터 시작하는 ITPE을 등록했고,&lt;br&gt;현재 한 주 싸이클을 돌아봤는데 범위가 너무 방대해서 생각했던거보다 더 빡센 것 같다.&lt;br&gt;&amp;nbsp;&lt;br&gt;&lt;a href=&quot;https://itpe.co.kr/main/course/courseView.do?menuType=off&amp;amp;cateId=XAL0000219&amp;amp;pntCateId=XAL0000080&amp;amp;subCode=1&amp;amp;courseId=002940&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;https://itpe.co.kr/main/course/courseView.do?menuType=off&amp;amp;cateId=XAL0000219&amp;amp;pntCateId=XAL0000080&amp;amp;subCode=1&amp;amp;courseId=002940&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;figure data-ke-type=&quot;opengraph&quot; data-og-title=&quot;ITPE 정보관리기술사 PMP자격증 감리사 정보통신기술사 Flipped Learning!&quot; data-ke-align=&quot;alignCenter&quot; data-og-description=&quot;ITPE 정보관리기술사 PMP자격증 감리사 정보통신기술사 Flipped Learning!&quot; data-og-host=&quot;itpe.co.kr&quot; data-og-source-url=&quot;https://itpe.co.kr/main/course/courseView.do?menuType=off&amp;amp;cateId=XAL0000219&amp;amp;pntCateId=XAL0000080&amp;amp;subCode=1&amp;amp;courseId=002940&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bxTKYQ/hyYB9LHCgx/AzzcM89uK43Bx8YvnUVWok/img.jpg?width=478&amp;amp;height=481&amp;amp;face=0_0_478_481&quot; data-og-url=&quot;https://itpe.co.kr/main/course/courseView.do?cateId=XAL0000219&amp;amp;courseId=002940&amp;amp;menuType=off&amp;amp;pntCateId=XAL0000080&amp;amp;subCode=1&quot;&gt;&lt;a href=&quot;https://itpe.co.kr/main/course/courseView.do?cateId=XAL0000219&amp;amp;courseId=002940&amp;amp;menuType=off&amp;amp;pntCateId=XAL0000080&amp;amp;subCode=1&quot; target=&quot;_blank&quot; data-source-url=&quot;https://itpe.co.kr/main/course/courseView.do?menuType=off&amp;amp;cateId=XAL0000219&amp;amp;pntCateId=XAL0000080&amp;amp;subCode=1&amp;amp;courseId=002940&quot;&gt;&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bxTKYQ/hyYB9LHCgx/AzzcM89uK43Bx8YvnUVWok/img.jpg?width=478&amp;amp;height=481&amp;amp;face=0_0_478_481')&quot;&gt; &lt;/div&gt;&lt;div class=&quot;og-text&quot;&gt;&lt;p class=&quot;og-title&quot;&gt;ITPE 정보관리기술사 PMP자격증 감리사 정보통신기술사 Flipped Learning!&lt;/p&gt;&lt;p class=&quot;og-desc&quot;&gt;ITPE 정보관리기술사 PMP자격증 감리사 정보통신기술사 Flipped Learning!&lt;/p&gt;&lt;p class=&quot;og-host&quot;&gt;itpe.co.kr&lt;/p&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;한 주의 사이클은&lt;br&gt;- 일요일에 09:00 ~ 20:00 수업&lt;br&gt;- 수요일까지 과제&lt;br&gt;- 토요일까지 셀프테스트&lt;br&gt;물론 매일 한 주의 범위에 해당하는 도메인당 30-50개의 토픽을 외우기 위해서 공부도 해야 하며, 차주 수업 예습 인터넷 강의도 들어야 한다.&lt;br&gt;&amp;nbsp;&lt;br&gt;언제 합격하게 될 지는 모르겠지만.. 1년 후 합격 후기를 다시 쓸 수 있길 바라본다.&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>정보관리기술사</category>
      <category>ITPE</category>
      <category>정보관리기술사</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/231</guid>
      <comments>https://hungc.tistory.com/231#entry231comment</comments>
      <pubDate>Wed, 16 Apr 2025 10:02:27 +0900</pubDate>
    </item>
    <item>
      <title>폭포수 모델 (Waterfall Model)</title>
      <link>https://hungc.tistory.com/230</link>
      <description>&lt;h2 data-end=&quot;354&quot; data-start=&quot;339&quot; data-ke-size=&quot;size26&quot;&gt;폭포수 모델이란?&lt;/h2&gt;
&lt;p data-end=&quot;466&quot; data-start=&quot;356&quot; data-ke-size=&quot;size16&quot;&gt;폭포수 모델은 &lt;b&gt;개발 단계를 순차적으로 수행하는 전통적인 방식&lt;/b&gt;의 소프트웨어 개발 방법론으로 각 단계가 완료되어야 다음 단계로 넘어갈 수 있으며, 마치 폭포수가 위에서 아래로 흐르듯, 한 단계가 끝나야 다음 단계로 넘어갈 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mt4EL/btsNlW4LzGg/V6747SKkERp8JwdJr4wCl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mt4EL/btsNlW4LzGg/V6747SKkERp8JwdJr4wCl1/img.png&quot; data-alt=&quot;폭포수 모델(Waterfall Model)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mt4EL/btsNlW4LzGg/V6747SKkERp8JwdJr4wCl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fmt4EL%2FbtsNlW4LzGg%2FV6747SKkERp8JwdJr4wCl1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1536&quot; height=&quot;1024&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;폭포수 모델(Waterfall Model)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;466&quot; data-start=&quot;356&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;480&quot; data-start=&quot;468&quot; data-ke-size=&quot;size23&quot;&gt;  주요 단계&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;642&quot; data-start=&quot;481&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;513&quot; data-start=&quot;481&quot;&gt;&lt;b&gt;요구사항 분석&lt;/b&gt; &amp;ndash; 사용자 요구를 명확하게 정의&lt;/li&gt;
&lt;li data-end=&quot;540&quot; data-start=&quot;514&quot;&gt;&lt;b&gt;설계&lt;/b&gt; &amp;ndash; 시스템 구조 및 세부 설계&lt;/li&gt;
&lt;li data-end=&quot;565&quot; data-start=&quot;541&quot;&gt;&lt;b&gt;개발&lt;/b&gt; &amp;ndash; 설계서를 기반으로 코딩&lt;/li&gt;
&lt;li data-end=&quot;590&quot; data-start=&quot;566&quot;&gt;&lt;b&gt;테스트&lt;/b&gt; &amp;ndash; 소프트웨어 품질 검증&lt;/li&gt;
&lt;li data-end=&quot;612&quot; data-start=&quot;591&quot;&gt;&lt;b&gt;배포&lt;/b&gt; &amp;ndash; 운영 환경에 설치&lt;/li&gt;
&lt;li data-end=&quot;642&quot; data-start=&quot;613&quot;&gt;&lt;b&gt;유지보수&lt;/b&gt; &amp;ndash; 배포 후 오류 수정 및 개선&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-end=&quot;652&quot; data-start=&quot;644&quot; data-ke-size=&quot;size23&quot;&gt;✅ 장점&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;725&quot; data-start=&quot;653&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;675&quot; data-start=&quot;653&quot;&gt;개발 절차가 명확하고 문서화가 잘 됨&lt;/li&gt;
&lt;li data-end=&quot;703&quot; data-start=&quot;676&quot;&gt;초기 계획 수립이 잘 되어 있으면 관리가 용이&lt;/li&gt;
&lt;li data-end=&quot;725&quot; data-start=&quot;704&quot;&gt;변경 가능성이 낮은 프로젝트에 적합&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;735&quot; data-start=&quot;727&quot; data-ke-size=&quot;size23&quot;&gt;❌ 단점&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;790&quot; data-start=&quot;736&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;748&quot; data-start=&quot;736&quot;&gt;변경에 매우 취약함&lt;/li&gt;
&lt;li data-end=&quot;764&quot; data-start=&quot;749&quot;&gt;고객 피드백 반영이 늦음&lt;/li&gt;
&lt;li data-end=&quot;790&quot; data-start=&quot;765&quot;&gt;작동 가능한 소프트웨어를 늦게 볼 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;1208&quot; data-start=&quot;1183&quot; data-ke-size=&quot;size26&quot;&gt;  폭포수 모델 vs 애자일 모델 비교&lt;span data-state=&quot;closed&quot;&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1538&quot; data-start=&quot;1210&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;1538&quot; data-start=&quot;1290&quot;&gt;
&lt;tr data-end=&quot;1331&quot; data-start=&quot;1290&quot;&gt;
&lt;td data-end=&quot;1302&quot; data-start=&quot;1290&quot;&gt;&lt;b&gt;진행 방식&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;1316&quot; data-start=&quot;1302&quot;&gt;선형적, 단계별 진행&lt;/td&gt;
&lt;td data-end=&quot;1331&quot; data-start=&quot;1316&quot;&gt;반복적, 점진적 진행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1366&quot; data-start=&quot;1332&quot;&gt;
&lt;td data-end=&quot;1346&quot; data-start=&quot;1332&quot;&gt;&lt;b&gt;요구사항 변경&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;1355&quot; data-start=&quot;1346&quot;&gt;변경 어려움&lt;/td&gt;
&lt;td data-end=&quot;1366&quot; data-start=&quot;1355&quot;&gt;언제든지 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1403&quot; data-start=&quot;1367&quot;&gt;
&lt;td data-end=&quot;1379&quot; data-start=&quot;1367&quot;&gt;&lt;b&gt;고객 참여&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;1388&quot; data-start=&quot;1379&quot;&gt;초기만 참여&lt;/td&gt;
&lt;td data-end=&quot;1403&quot; data-start=&quot;1388&quot;&gt;지속적인 피드백 제공&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1444&quot; data-start=&quot;1404&quot;&gt;
&lt;td data-end=&quot;1414&quot; data-start=&quot;1404&quot;&gt;&lt;b&gt;문서화&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;1426&quot; data-start=&quot;1414&quot;&gt;상세한 문서 중심&lt;/td&gt;
&lt;td data-end=&quot;1444&quot; data-start=&quot;1426&quot;&gt;최소한의 문서, 실용 중심&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1483&quot; data-start=&quot;1445&quot;&gt;
&lt;td data-end=&quot;1457&quot; data-start=&quot;1445&quot;&gt;&lt;b&gt;위험 관리&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;1465&quot; data-start=&quot;1457&quot;&gt;후기 발견&lt;/td&gt;
&lt;td data-end=&quot;1483&quot; data-start=&quot;1465&quot;&gt;조기 피드백으로 빠른 대응&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1538&quot; data-start=&quot;1484&quot;&gt;
&lt;td data-end=&quot;1496&quot; data-start=&quot;1484&quot;&gt;&lt;b&gt;배포 시점&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;1511&quot; data-start=&quot;1496&quot;&gt;개발 후반에 전체 배포&lt;/td&gt;
&lt;td data-end=&quot;1538&quot; data-start=&quot;1511&quot;&gt;매 이터레이션마다 작동 가능한 결과물 제공&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;1566&quot; data-start=&quot;1545&quot; data-ke-size=&quot;size26&quot;&gt; 어떤 모델을 선택해야 할까?&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1786&quot; data-start=&quot;1568&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1682&quot; data-start=&quot;1568&quot;&gt;&lt;b&gt;폭포수 모델이 적합한 경우&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1682&quot; data-start=&quot;1593&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1621&quot; data-start=&quot;1593&quot;&gt;요구사항이 명확하고 변경 가능성이 낮은 프로젝트&lt;/li&gt;
&lt;li data-end=&quot;1657&quot; data-start=&quot;1624&quot;&gt;안전성과 품질이 중요한 분야 (예: 항공, 금융, 의료)&lt;/li&gt;
&lt;li data-end=&quot;1682&quot; data-start=&quot;1660&quot;&gt;문서화가 필수인 계약 기반 개발 환경&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1786&quot; data-start=&quot;1684&quot;&gt;&lt;b&gt;애자일 모델이 적합한 경우&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1786&quot; data-start=&quot;1709&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1728&quot; data-start=&quot;1709&quot;&gt;요구사항이 자주 바뀌는 프로젝트&lt;/li&gt;
&lt;li data-end=&quot;1758&quot; data-start=&quot;1731&quot;&gt;빠른 피드백이 필요한 스타트업이나 MVP 개발&lt;/li&gt;
&lt;li data-end=&quot;1786&quot; data-start=&quot;1761&quot;&gt;고객과의 소통이 중요한 B2C 서비스 개발&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;b&gt;하이브리드 방식&lt;/b&gt;도 좋은 선택이 될 수 있다.&lt;/p&gt;</description>
      <category>정보관리기술사/소프트웨어공학</category>
      <category>agile</category>
      <category>Waterfall</category>
      <category>애자일</category>
      <category>폭포수모델</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/230</guid>
      <comments>https://hungc.tistory.com/230#entry230comment</comments>
      <pubDate>Tue, 15 Apr 2025 13:09:37 +0900</pubDate>
    </item>
    <item>
      <title>FastAPI Data Validation</title>
      <link>https://hungc.tistory.com/227</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;FastAPI Data Validation&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유데미 FastAPI 강의 스터디를 진행하면서 내용을 정리해본다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;FastAPI - The Complete Course 2023 (Beginner + Advanced) (총 196강, 17시간)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.udemy.com/course/fastapi-the-complete-course/&quot;&gt;https://www.udemy.com/course/fastapi-the-complete-course/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1672447436676&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;udemy_com:course&quot; data-og-title=&quot;FastAPI - The Complete Course 2023 (Beginner + Advanced)&quot; data-og-description=&quot;Dive in and learn FastAPI from scratch! Learn FastAPI, RESTful APIs using Python, SQLAlchemy, OAuth, JWT and way more!&quot; data-og-host=&quot;www.udemy.com&quot; data-og-source-url=&quot;https://www.udemy.com/course/fastapi-the-complete-course/&quot; data-og-url=&quot;https://www.udemy.com/course/fastapi-the-complete-course/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bv8BDa/hyQ5C1DvJw/dIDi9BLyeaprCAoiKGmLW1/img.jpg?width=480&amp;amp;height=270&amp;amp;face=0_0_480_270,https://scrap.kakaocdn.net/dn/bi0Ckn/hyQ6OsCMJ0/2AInsTv2JE3PbKj2pjUdD1/img.jpg?width=480&amp;amp;height=270&amp;amp;face=0_0_480_270&quot;&gt;&lt;a href=&quot;https://www.udemy.com/course/fastapi-the-complete-course/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.udemy.com/course/fastapi-the-complete-course/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bv8BDa/hyQ5C1DvJw/dIDi9BLyeaprCAoiKGmLW1/img.jpg?width=480&amp;amp;height=270&amp;amp;face=0_0_480_270,https://scrap.kakaocdn.net/dn/bi0Ckn/hyQ6OsCMJ0/2AInsTv2JE3PbKj2pjUdD1/img.jpg?width=480&amp;amp;height=270&amp;amp;face=0_0_480_270');&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;FastAPI - The Complete Course 2023 (Beginner + Advanced)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Dive in and learn FastAPI from scratch! Learn FastAPI, RESTful APIs using Python, SQLAlchemy, OAuth, JWT and way more!&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.udemy.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;h2 data-ke-size=&quot;size26&quot;&gt;Data Validation&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Field를 이용해 min_length, max_length, gt, lt 등을 확용하여 validation 할 수 있다.&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #272727; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;12&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;13&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;14&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;15&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;16&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;17&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;18&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;19&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;20&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;21&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;22&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;23&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;24&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;25&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;26&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;27&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;from&lt;/span&gt;&amp;nbsp;typing&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;import&lt;/span&gt;&amp;nbsp;Optional&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;from&lt;/span&gt;&amp;nbsp;fastapi&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;import&lt;/span&gt;&amp;nbsp;FastAPI&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;from&lt;/span&gt;&amp;nbsp;pydantic&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;import&lt;/span&gt;&amp;nbsp;BaseModel,&amp;nbsp;Field&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;from&lt;/span&gt;&amp;nbsp;uuid&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;import&lt;/span&gt;&amp;nbsp;UUID&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;app&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;FastAPI()&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;class&lt;/span&gt;&amp;nbsp;Book(BaseModel):&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;id:&amp;nbsp;UUID&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;title:&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;str&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;Field(min_length&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #c10aff;&quot;&gt;1&lt;/span&gt;)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;author:&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;str&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;Field(min_length&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #c10aff;&quot;&gt;1&lt;/span&gt;,&amp;nbsp;max_length&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #c10aff;&quot;&gt;100&lt;/span&gt;)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;description:&amp;nbsp;Optional[&lt;span style=&quot;color: #4be6fa;&quot;&gt;str&lt;/span&gt;]&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;Field(title&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;Description&amp;nbsp;of&amp;nbsp;the&amp;nbsp;book&quot;&lt;/span&gt;,&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;max_length&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #c10aff;&quot;&gt;100&lt;/span&gt;,&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;min_length&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #c10aff;&quot;&gt;1&lt;/span&gt;)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rating:&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;int&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;Field(gt&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #c10aff;&quot;&gt;1&lt;/span&gt;,&amp;nbsp;lt&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #c10aff;&quot;&gt;101&lt;/span&gt;)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;BOOKS&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;[]&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;@app.get(&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;/&quot;&lt;/span&gt;)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;async&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;def&lt;/span&gt;&amp;nbsp;read_all_books():&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;return&lt;/span&gt;&amp;nbsp;BOOKS&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;@app.post(&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;/&quot;&lt;/span&gt;)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;async&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;def&lt;/span&gt;&amp;nbsp;create_book(book:&amp;nbsp;Book):&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BOOKS.append(book)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;return&lt;/span&gt;&amp;nbsp;book&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a style=&quot;color: #4f4f4ftext-decoration:none;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&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;1076&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/crWYsC/btrWgijAFCq/9FKX4j4YAfQgukMK08KS7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/crWYsC/btrWgijAFCq/9FKX4j4YAfQgukMK08KS7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/crWYsC/btrWgijAFCq/9FKX4j4YAfQgukMK08KS7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcrWYsC%2FbtrWgijAFCq%2F9FKX4j4YAfQgukMK08KS7k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;1076&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1076&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;BaseModel Configurations&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Swagger 문서 내에 기본으로 스키마를 제공해줄 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같이 BaseModel을 상속으로 받는 Book 클래스 내에 Config 클래스를 작성하면..&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #272727; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;12&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;13&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;14&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;15&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;16&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;17&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;18&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;19&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;class&lt;/span&gt;&amp;nbsp;Book(BaseModel):&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;id:&amp;nbsp;UUID&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;title:&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;str&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;Field(min_length&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #c10aff;&quot;&gt;1&lt;/span&gt;)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;author:&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;str&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;Field(min_length&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #c10aff;&quot;&gt;1&lt;/span&gt;,&amp;nbsp;max_length&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #c10aff;&quot;&gt;100&lt;/span&gt;)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;description:&amp;nbsp;Optional[&lt;span style=&quot;color: #4be6fa;&quot;&gt;str&lt;/span&gt;]&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;Field(title&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;Description&amp;nbsp;of&amp;nbsp;the&amp;nbsp;book&quot;&lt;/span&gt;,&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;max_length&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #c10aff;&quot;&gt;100&lt;/span&gt;,&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;min_length&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #c10aff;&quot;&gt;1&lt;/span&gt;)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rating:&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;int&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;Field(gt&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #c10aff;&quot;&gt;1&lt;/span&gt;,&amp;nbsp;lt&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #c10aff;&quot;&gt;101&lt;/span&gt;)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;class&lt;/span&gt;&amp;nbsp;Config:&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;schema_extra&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;example&quot;&lt;/span&gt;:&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;id&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;fa9e694b-efb6-41b0-bdb6-606975d23290&quot;&lt;/span&gt;,&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;title&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;Computer&amp;nbsp;Science&quot;&lt;/span&gt;,&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;author&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;hunk&quot;&lt;/span&gt;,&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;description&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;A&amp;nbsp;very&amp;nbsp;nice&amp;nbsp;description&amp;nbsp;of&amp;nbsp;a&amp;nbsp;book&quot;&lt;/span&gt;,&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;rating&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;70&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a style=&quot;color: #4f4f4ftext-decoration:none;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Request Body에 아래와 같이 값이 기본으로 세팅된다.&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;359&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2TcTJ/btrWde3AyRJ/zgsSJ1auYZeJSoxKU6DRI0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2TcTJ/btrWde3AyRJ/zgsSJ1auYZeJSoxKU6DRI0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2TcTJ/btrWde3AyRJ/zgsSJ1auYZeJSoxKU6DRI0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2TcTJ%2FbtrWde3AyRJ%2FzgsSJ1auYZeJSoxKU6DRI0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;359&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;359&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Web/FastAPI</category>
      <category>fastapi</category>
      <category>FastAPI BaseModel</category>
      <category>fastapi data validation</category>
      <category>유데미 FastAPI</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/227</guid>
      <comments>https://hungc.tistory.com/227#entry227comment</comments>
      <pubDate>Sun, 15 Jan 2023 19:33:10 +0900</pubDate>
    </item>
    <item>
      <title>FastAPI BaseModel</title>
      <link>https://hungc.tistory.com/226</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;FastAPI BaseModel&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유데미 FastAPI 강의 스터디를 진행하면서 내용을 정리해본다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;FastAPI - The Complete Course 2023 (Beginner + Advanced) (총 196강, 17시간)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.udemy.com/course/fastapi-the-complete-course/&quot;&gt;https://www.udemy.com/course/fastapi-the-complete-course/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1672447436676&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;udemy_com:course&quot; data-og-title=&quot;FastAPI - The Complete Course 2023 (Beginner + Advanced)&quot; data-og-description=&quot;Dive in and learn FastAPI from scratch! Learn FastAPI, RESTful APIs using Python, SQLAlchemy, OAuth, JWT and way more!&quot; data-og-host=&quot;www.udemy.com&quot; data-og-source-url=&quot;https://www.udemy.com/course/fastapi-the-complete-course/&quot; data-og-url=&quot;https://www.udemy.com/course/fastapi-the-complete-course/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bv8BDa/hyQ5C1DvJw/dIDi9BLyeaprCAoiKGmLW1/img.jpg?width=480&amp;amp;height=270&amp;amp;face=0_0_480_270,https://scrap.kakaocdn.net/dn/bi0Ckn/hyQ6OsCMJ0/2AInsTv2JE3PbKj2pjUdD1/img.jpg?width=480&amp;amp;height=270&amp;amp;face=0_0_480_270&quot;&gt;&lt;a href=&quot;https://www.udemy.com/course/fastapi-the-complete-course/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.udemy.com/course/fastapi-the-complete-course/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bv8BDa/hyQ5C1DvJw/dIDi9BLyeaprCAoiKGmLW1/img.jpg?width=480&amp;amp;height=270&amp;amp;face=0_0_480_270,https://scrap.kakaocdn.net/dn/bi0Ckn/hyQ6OsCMJ0/2AInsTv2JE3PbKj2pjUdD1/img.jpg?width=480&amp;amp;height=270&amp;amp;face=0_0_480_270');&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;FastAPI - The Complete Course 2023 (Beginner + Advanced)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Dive in and learn FastAPI from scratch! Learn FastAPI, RESTful APIs using Python, SQLAlchemy, OAuth, JWT and way more!&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.udemy.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;REST USES HTTP REQUEST METHODS&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;GET / =&amp;gt; Get all the books&lt;/li&gt;
&lt;li&gt;GET / &amp;lt;book UUID&amp;gt; =&amp;gt; Get specific book&lt;/li&gt;
&lt;li&gt;PUT / &amp;lt;book UUID&amp;gt; =&amp;gt; Update specific book&lt;/li&gt;
&lt;li&gt;POST / =&amp;gt; Create new book&lt;/li&gt;
&lt;li&gt;DELETE / &amp;lt;book UUID&amp;gt; =&amp;gt; Delete specific book&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;BaseModel&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;pydantic: Data validation and settings management using Python type hints.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Type annotation을 통해 데이터 유효성 검사 목적으로 타입을 강제하고 타입이 유효하지 않은 경우 에러를 발생시킨다.&lt;/p&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;UUID(Universally Unique IDentifier)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;고유성을 보장하는 ID로 DB의 primary key로 종종 사용된다.&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #272727; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;12&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;13&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;14&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;15&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;16&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;17&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;18&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;19&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;20&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;21&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;22&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;23&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;24&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;from&lt;/span&gt;&amp;nbsp;fastapi&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;import&lt;/span&gt;&amp;nbsp;FastAPI&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;from&lt;/span&gt;&amp;nbsp;pydantic&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;import&lt;/span&gt;&amp;nbsp;BaseModel&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;from&lt;/span&gt;&amp;nbsp;uuid&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;import&lt;/span&gt;&amp;nbsp;UUID&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;app&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;FastAPI()&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;class&lt;/span&gt;&amp;nbsp;Book(BaseModel):&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;id:&amp;nbsp;UUID&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;title:&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;str&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;author:&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;str&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;description:&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;str&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rating:&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;int&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;BOOKS&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;[]&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;@app.get(&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;/&quot;&lt;/span&gt;)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;async&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;def&lt;/span&gt;&amp;nbsp;read_all_books():&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;return&lt;/span&gt;&amp;nbsp;BOOKS&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;@app.post(&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;/&quot;&lt;/span&gt;)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;async&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;def&lt;/span&gt;&amp;nbsp;create_book(book:&amp;nbsp;Book):&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BOOKS.append(book)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;return&lt;/span&gt;&amp;nbsp;book&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Swagger Example Value에 아래와 같이 스키마 양식을 보여준다.&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;383&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lgLPp/btrUYQa9qdy/6kDKk1KkKNANRiFLGlkTF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lgLPp/btrUYQa9qdy/6kDKk1KkKNANRiFLGlkTF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lgLPp/btrUYQa9qdy/6kDKk1KkKNANRiFLGlkTF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlgLPp%2FbtrUYQa9qdy%2F6kDKk1KkKNANRiFLGlkTF1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;383&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;383&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Curl에 -d (data)로 Request Body가 함께 요청됨을 볼 수 있다.&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;1027&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tzpbU/btrUZXgUljW/ak225NxftaESb6tmtqAnek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tzpbU/btrUZXgUljW/ak225NxftaESb6tmtqAnek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tzpbU/btrUZXgUljW/ak225NxftaESb6tmtqAnek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtzpbU%2FbtrUZXgUljW%2Fak225NxftaESb6tmtqAnek%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;1027&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1027&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;author를 제외하고 요청을 보내면 field required 메시지와 함께 422 오류 발생한다.&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;401&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CCeVS/btrU44TwawO/tUTbxF8qxtdeZGMGaeS2aK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CCeVS/btrU44TwawO/tUTbxF8qxtdeZGMGaeS2aK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CCeVS/btrU44TwawO/tUTbxF8qxtdeZGMGaeS2aK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCCeVS%2FbtrU44TwawO%2FtUTbxF8qxtdeZGMGaeS2aK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;401&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;401&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 author를 숫자로 13을 보내면 문자열 &amp;ldquo;13&amp;rdquo;으로 변경해서 요청된다.&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #010101; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;&amp;nbsp;&lt;/div&gt;</description>
      <category>Web/FastAPI</category>
      <category>BaseModel</category>
      <category>fastapi</category>
      <category>FastAPI BaseModel</category>
      <category>Pydantic</category>
      <category>유데미 FastAPI</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/226</guid>
      <comments>https://hungc.tistory.com/226#entry226comment</comments>
      <pubDate>Sat, 31 Dec 2022 09:47:53 +0900</pubDate>
    </item>
    <item>
      <title>남자 연예인 인스타 팔로워 순위</title>
      <link>https://hungc.tistory.com/222</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;남자연예인 인스타 팔로워&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;남자 연예인 인스타그램 팔로워 순위입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0d0d0d;&quot;&gt;&lt;span&gt;BTS 압도적이네요.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=xF57aniHwrI&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/CrENp/hyQZMpPuFE/dxOnppB8njaSeCbTVlRB3k/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/xF57aniHwrI&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Youtube</category>
      <category>bts</category>
      <category>남자연예인인스타</category>
      <category>방탄소년단</category>
      <category>인스타</category>
      <category>인스타팔로워</category>
      <category>잭슨</category>
      <category>차은우</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/222</guid>
      <comments>https://hungc.tistory.com/222#entry222comment</comments>
      <pubDate>Sat, 24 Dec 2022 17:20:22 +0900</pubDate>
    </item>
    <item>
      <title>여자 연예인 인스타 팔로워 순위</title>
      <link>https://hungc.tistory.com/220</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;여자연예인 인스타 팔로워&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;여자 연예인 인스타 팔로워 순위입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0d0d0d;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;역시 블랙핑크가 탑이네요.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=fbRqQEYUhLQ&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/loOHs/hyQU4vPeGq/W06ZAQ0WwmTRIEn6rr2TKk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/fbRqQEYUhLQ&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Youtube</category>
      <category>블랙핑크</category>
      <category>인스타</category>
      <category>인스타그램</category>
      <category>인스타팔로워순위</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/220</guid>
      <comments>https://hungc.tistory.com/220#entry220comment</comments>
      <pubDate>Thu, 15 Dec 2022 22:30:30 +0900</pubDate>
    </item>
    <item>
      <title>AWS Certified Solutions Architect 오답정리</title>
      <link>https://hungc.tistory.com/215</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;AWS Certified Solutions Architect 오답정리&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;자격증을 준비하면서 문제풀이 중 정리할만한 내용을 기록해봄&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;S3에 수백만명 사용자 접속, 원본 부하 줄이기 위한 방법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; S3 버킷앞에 CloudFront&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AWS 계정에 대한 공격 방어&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; GuardDuty&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터베이스 write가 drop되지 않도록 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; Amazon Simple Queue Service(SQS) FIFO 대기열 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;S3 버킷 사진 업로드 속도 향상&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; S3 Transfer Acceleration&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 리전의 S3 버킷에 데이터 복사&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; S3 교차 리전 복제 구성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;초당 수백만 요청 처리, 밀리 초 응답&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; Amazon DynamoDB&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클릭스트림 데이터 전송 처리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; Amazon Kinesis Data Streams&lt;/p&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, S3 간 비공개 보안 연결&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; VPC 엔드포인트를 통해 VPC와 S3간 연결 구성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;온프레미스 데이터를 네트워크를 통해 AWS로 전송&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; AWS Data 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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; Redis용 Amazon ElastiCache&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Amazon EMR 클러스터&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;Amazon EFS&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; 여러 가용영역의 EC2 인스턴스에서 동시 연결 가능, EBS는 단일 가용영역의 EC2만 연결&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; 여러 EC2에 하나의 EFS를 연결해 컨텐츠를 저장하여 변경사항 일관성을 가질 수 있음&lt;/p&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 Lambda&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; 최대 15분까지만 실행 가능. 장기 실행 프로세스에 부적합&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Transit Gateway&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; VPC, VPN을 하나의 Transit gateway로 연결하므로 중앙 관리형 네트워킹 설정 충족&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인터넷 통하지 않고 S3 액세스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; VPC 엔드포인트를 사용해서 S3에 프라이빗 연결&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Global Accelerator&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;RedShift&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; SQL 쿼리 및 BI 도구 액세스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DynamoDB 일정 기간 데이터만 필요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; TTL을 사용해 타임스탬프 유지시간 뒤 데이터 제거하도록 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>DevOps/Cloud</category>
      <category>AWS</category>
      <category>AWS Certified Solutions Architect</category>
      <category>aws 자격증</category>
      <category>AWS 자격증 준비</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/215</guid>
      <comments>https://hungc.tistory.com/215#entry215comment</comments>
      <pubDate>Sun, 11 Dec 2022 14:27:28 +0900</pubDate>
    </item>
    <item>
      <title>AWS 서비스 (관리, 거버넌스, 보안, 컨테이너, 머신러닝 등)</title>
      <link>https://hungc.tistory.com/217</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;AWS 서비스&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;AWS Certified Solutions Architect&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;클라우드 자격증 취득 준비를 위해 AWS 서비스에 대해 요약 정리해본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AWS Console에서 서비스를 검색해보면 아래와 같이 많은 서비스가 있는데, 일부 중요한 서비스에 대해 알아보자.&lt;/p&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://hungc.tistory.com/216&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.12.04 - [Web/Cloud] - AWS 서비스 (컴퓨팅, 스토리지, 데이터베이스, 네트워킹 및 컨텐츠 전송)&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1670742965618&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 Certified Solutions Architect 클라우드 자격증 취득 준비를 위해 AWS 서비스에 대해 요약 정리해본다. AWS Console에서 서비스를 검색해보면 아래와 같이 많은 서비스가 있는데, 일부 중&quot; data-og-host=&quot;hungc.tistory.com&quot; data-og-source-url=&quot;https://hungc.tistory.com/216&quot; data-og-url=&quot;https://hungc.tistory.com/216&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/7w0Rq/hyQQtxaC3L/tuCx8wFBhU8N1jlZlR3Ki1/img.png?width=800&amp;amp;height=669&amp;amp;face=0_0_800_669,https://scrap.kakaocdn.net/dn/bMZCxq/hyQRWYNCdO/p6XSXW7UyEek0tKXqokpnk/img.png?width=800&amp;amp;height=669&amp;amp;face=0_0_800_669,https://scrap.kakaocdn.net/dn/Mc9mU/hyQQtjB7Zu/3FwAsrIWJIyAFnt5ANdLC0/img.jpg?width=1920&amp;amp;height=1275&amp;amp;face=0_0_1920_1275&quot;&gt;&lt;a href=&quot;https://hungc.tistory.com/216&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://hungc.tistory.com/216&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/7w0Rq/hyQQtxaC3L/tuCx8wFBhU8N1jlZlR3Ki1/img.png?width=800&amp;amp;height=669&amp;amp;face=0_0_800_669,https://scrap.kakaocdn.net/dn/bMZCxq/hyQRWYNCdO/p6XSXW7UyEek0tKXqokpnk/img.png?width=800&amp;amp;height=669&amp;amp;face=0_0_800_669,https://scrap.kakaocdn.net/dn/Mc9mU/hyQQtjB7Zu/3FwAsrIWJIyAFnt5ANdLC0/img.jpg?width=1920&amp;amp;height=1275&amp;amp;face=0_0_1920_1275');&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 Certified Solutions Architect 클라우드 자격증 취득 준비를 위해 AWS 서비스에 대해 요약 정리해본다. AWS Console에서 서비스를 검색해보면 아래와 같이 많은 서비스가 있는데, 일부 중&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;hungc.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;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;관리 및 거버넌스&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;IAM &lt;br /&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;계정&amp;nbsp;및&amp;nbsp;권한&amp;nbsp;관리&amp;nbsp;서비스&amp;nbsp;(글로벌&amp;nbsp;서비스)&lt;/li&gt;
&lt;li&gt;사용자,&amp;nbsp;그룹,&amp;nbsp;역할,&amp;nbsp;정책&lt;/li&gt;
&lt;li&gt;역할: 특정 AWS서비스가 다른 서비스에 액세스하여 작업을 수행할 때 필요한 권한&lt;/li&gt;
&lt;li&gt;신뢰정책을&amp;nbsp;이용해서&amp;nbsp;다른&amp;nbsp;AWS&amp;nbsp;계정에&amp;nbsp;역할&amp;nbsp;위임&amp;nbsp;가능&amp;nbsp;(dev.&amp;nbsp;prod&amp;nbsp;예제)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;AWS Organizations&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;OU: 조직 단위로 그룹화하여 관리, Root OU&lt;/li&gt;
&lt;li&gt;SCP: 서비스 제어 정책. 계정 또는 OU 단위로 적용&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;CloudWatch&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;AWS 리소스 상태 모니터링&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;CloudTrail &lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;AWS계정이 수행하는 작업에 대해 로그 기록&lt;/li&gt;
&lt;li&gt;기본으로 활성화되어 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Config &lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;AWS 리소스 구성 변경사항을 로그기록하는 기능&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;System Manager&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;앱 및 인프라를 관리하는데 도움이 되는 기능 모음&lt;/li&gt;
&lt;li&gt;애플리케이션 관리, 변경관리, 노드관리, 운영관리&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;보안, 자격증명 및 규정 준수&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Certificate Manager&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SSL/TLS 인증서를 중앙에서 관리하는 서비스&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;Shield&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Standard는 기본적으로 적용됨&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;WAF(Web Application Firewall)&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;규칙에 기반해서 허용, 거부 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;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;GuardDuty&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위협 탐지 서비스&lt;/li&gt;
&lt;li&gt;Macie: 민감한 데이터 검색 보호&lt;/li&gt;
&lt;li&gt;Inspector: 취약성 관리 서비스&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;컨테이너 서비스&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;ECS(Elastic Container Service)&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;도커 컨테이너를 배포, 관리하는 컨테이너 오케스트레이션 서비스&lt;/li&gt;
&lt;/ul&gt;
&lt;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;EKS(Elastic Kubernetes Service)&lt;/b&gt;&lt;/h4&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;Fargate&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버리스 컨테이너 서비스&lt;/li&gt;
&lt;/ul&gt;
&lt;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;ECR(Elastic Container Registry)&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;머신러닝&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Comprehend&lt;/b&gt;: 텍스트에서 특정 항목을 찾아내는 서비스&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Rekog&lt;/b&gt;&lt;b&gt;nition&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;b&gt;: &lt;/b&gt;이미지, 비디오 분석&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Polly: &lt;/b&gt;텍스트 -&amp;gt; 음성&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Lex: &lt;/b&gt;음성인식, 챗봇&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Textract: &lt;/b&gt;스캔문서에서 문자, 테이블, 양식 추출&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Translate: &lt;/b&gt;번역&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Transcribe: &lt;/b&gt;음성 -&amp;gt; 텍스트&lt;/li&gt;
&lt;li&gt;&lt;b&gt;SageMaker: &lt;/b&gt;머신러닝 모델 구축,훈련 및 배포&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Forecast: &lt;/b&gt;시계열 예측&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Kendera: &lt;/b&gt;지능형 검색&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Personalize: &lt;/b&gt;추천&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Connect: &lt;/b&gt;클라우드 기반 고객센터 서비스&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;애플리케이션 통합&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Simple Queue Service(SQS)&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;표준, FIFO 중 선택&lt;/li&gt;
&lt;li&gt;DLQ&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;Kinesis&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실시간 스트리밍 데이터를 수집, 처리, 분석하는 서비스&lt;/li&gt;
&lt;li&gt;Data Streams: 데이터 스트림을 캡처, 처리, 저장&lt;/li&gt;
&lt;li&gt;Data Firehose: 스트리밍 데이터를 데이터 스토어와 분석도구에 로드&lt;/li&gt;
&lt;li&gt;Data Analytics: SQL 또는 Apache Flink를 사용하여 스트리밍 데이터를 변환하고 분석&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;API Gateway&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;개발자가 API 생성, 게시, 유지관리, 모니터링, 보안 유지할 수 있게 하는 서비스&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;Amazon EventBridge&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;거의 실시간 이벤트 자동 전송 서비스&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;마이그레이션 및 전송&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Snow&amp;nbsp;Family&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터를&amp;nbsp;네트워크가&amp;nbsp;아닌&amp;nbsp;물리적인&amp;nbsp;장치에&amp;nbsp;저장하여&amp;nbsp;전송할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;디바이스.&lt;/li&gt;
&lt;li&gt;1회성 대용량 마이그레이션 용도&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;Data&amp;nbsp;Sync&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;snowball과&amp;nbsp;달리&amp;nbsp;온라인으로&amp;nbsp;데이터&amp;nbsp;전송.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;storage&amp;nbsp;gateway와&amp;nbsp;달리&amp;nbsp;1회성&amp;nbsp;초기용&amp;nbsp;마이그레이션.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>DevOps/Cloud</category>
      <category>AWS</category>
      <category>AWS 서비스</category>
      <category>AWS 서비스 요약</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/217</guid>
      <comments>https://hungc.tistory.com/217#entry217comment</comments>
      <pubDate>Sun, 4 Dec 2022 22:04:32 +0900</pubDate>
    </item>
    <item>
      <title>AWS 서비스 (컴퓨팅, 스토리지, 데이터베이스, 네트워킹 및 컨텐츠 전송)</title>
      <link>https://hungc.tistory.com/216</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;AWS 서비스&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;AWS Certified Solutions Architect &lt;/span&gt;클라우드 자격증 취득 준비를 위해 AWS 서비스에 대해 요약 정리해본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AWS Console에서 서비스를 검색해보면 아래와 같이 많은 서비스가 있는데, 일부 중요한 서비스에 대해 알아보자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1284&quot; data-origin-height=&quot;1074&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cG8Wzw/btrTgHuqmQ8/GtKljyXZj96wmNlPbG6kN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cG8Wzw/btrTgHuqmQ8/GtKljyXZj96wmNlPbG6kN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cG8Wzw/btrTgHuqmQ8/GtKljyXZj96wmNlPbG6kN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcG8Wzw%2FbtrTgHuqmQ8%2FGtKljyXZj96wmNlPbG6kN1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;487&quot; height=&quot;407&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1284&quot; data-origin-height=&quot;1074&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;컴퓨팅&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;EC2 (Elastic Compute Cloud)&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;가상 서버로 가장 많이 쓰는 서비스 중 하나&lt;/li&gt;
&lt;li&gt;On-Demand Instance: 사용한만큼 지불&lt;/li&gt;
&lt;li&gt;Reserved Instance: 1년 또는 3년 약정. 저렴하며 예측가능한 경우 사용&lt;/li&gt;
&lt;li&gt;Saving Plans: 1년 또는 3년 기간에 특정 사용량 약정. 시간당 $5 약정하면 $5까진 Saving 그 이후 On-Demand&lt;/li&gt;
&lt;li&gt;Spot Instance: 사용하지 않는 예비 EC2 용량을 경매방식으로 구매&lt;/li&gt;
&lt;li&gt;보안그룹: 인바웃드 및 아웃바운드 트래픽 제어하는 가상 방화벽 역할. ENI와 연결됨. 허용규칙만 지정가능. 인바운드 허용이면 아웃바운드는 자동허용&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;EC2 Auto Scaling&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;EC2의 규모가 자동으로 조절되는 서비스로 최소 용량, 원하는 용량, 최대 용량을 정할 수 있음&lt;/li&gt;
&lt;li&gt;오토스케일링 그룹, 시작템플릿&lt;/li&gt;
&lt;li&gt;조정 정책: 현재 인스턴스 수준 관리, 수동 조정, 일정 기반 조정, 온디맨드 기반 조정, 예측 조정&lt;/li&gt;
&lt;li&gt;수명주기 후크&lt;/li&gt;
&lt;/ul&gt;
&lt;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;Lambda&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;코드를 실행하여 동작하는 서버리스(서버를 사용자가 관리할 필요가 없음) 컴퓨팅&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;온디맨드 방식의 이벤트 중심 실행. 자동으로 용량 확장되므로 확장성이 뛰어나며 다양한 프로그래밍 언어 지원&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;스토리지&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;S3(Simple Storage Service)&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터 저장 방식은 오브젝트 스토리지(식별자, 키 이용), 블록 스토리지, 파일 스토리지가 있는데 S3는 오브젝트 스토리지에 해당함&lt;/li&gt;
&lt;li&gt;버킷(=project)과 객체(file)로 구성. 버킷은 리전 단위 생성이고 유니크해야함&lt;/li&gt;
&lt;li&gt;버킷 정책(json), 퍼블릭 액세스 차단, ACL(액세스 제어 목록) 관리&lt;/li&gt;
&lt;li&gt;버전 관리 가능. 암호화 가능&lt;/li&gt;
&lt;li&gt;정적 웹사이트 호스팅 가능&lt;/li&gt;
&lt;li&gt;Replication (복제 규칙), 버전관리 되어 있어야 함&lt;/li&gt;
&lt;li&gt;HTTP Referer(어디서 접속했는지), 버저닝, 수명주기 관리 가능(오래 된 객체 스토리지 클래스 낮추거나 삭제)&lt;/li&gt;
&lt;li&gt;S3 Glacier, S3 Glacier Deep Archive: 데이터 아카이브 용도&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;EFS(Elastic File System)&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리눅스 전용 네트워크 파일 스토리지&lt;/li&gt;
&lt;li&gt;NFS 프로토콜 지원&lt;/li&gt;
&lt;li&gt;여러 가용영역 가능, 보안그룹 통해 연결&lt;/li&gt;
&lt;li&gt;표준스토리지(3개 가용영역), 표준IA, One Zone, One Zone IA&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;EBS(Elastic Block Storage)&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;EC2와 연결하는 저장장치&lt;/li&gt;
&lt;li&gt;HDD, SSD 등 선택.&lt;/li&gt;
&lt;li&gt;스냅샷 기능 있음, 스냅샷으로 이미지(AMI) 생성 가능&lt;/li&gt;
&lt;li&gt;하나의 볼륨은 하나의 EC2랑 연결 가능.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;FSx&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리눅스 환경을 위한 고성능 병렬 스토리지 시스템&lt;/li&gt;
&lt;li&gt;분산파일 시스템&lt;/li&gt;
&lt;li&gt;FSx for Windows File Server: SMB 프로토콜&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;Storage Gateway&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;온프레미스 데이터센터의 데이터와 클라우드 스토리지 연결&lt;/li&gt;
&lt;/ul&gt;
&lt;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;AWS Backup&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;중앙 집중식 백업 관리 서비스&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;데이터베이스&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;RDS(Relational Database Service)&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기존 앱, 전사적 자원 관리(ERP), 고객 관계 관리(CRM), 전자 상거래 등에 사용&lt;/li&gt;
&lt;li&gt;Aurora, RDS, Redshift, PostgreSQL, MySQL 등&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;br /&gt;&lt;b&gt;NoSQL&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;높은 트래픽 웹, 전자 상거래, 게임 등에 사용&lt;/li&gt;
&lt;li&gt;DynamoDB&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;br /&gt;&lt;b&gt;인메모리 데이터베이스&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;디스크가 아닌 주 메모리에 데이터 저장. 속도가 빠름&lt;/li&gt;
&lt;li&gt;Elasticashe, MemoryDB for Redis&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;br /&gt;&lt;b&gt;기타 &lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문서: DocumentDB(MongoDB 호환)&lt;/li&gt;
&lt;li&gt;와이드 컬럼: Keyspaces&lt;/li&gt;
&lt;li&gt;그래프: Neptune&lt;/li&gt;
&lt;li&gt;시계열: Timestream&lt;/li&gt;
&lt;li&gt;원장: Ledger Database Services(QLDB)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;네트워킹 및 컨텐츠 전송&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;VPC(Virtual&amp;nbsp;Private&amp;nbsp;Cloud)&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;가상네트워크, 기본 VPC 네트워크는 인터넷과 연결되어 있고 EC2를 생성하면 기본 VPC에 연결됨&lt;/li&gt;
&lt;li&gt;CIDR(Classless Inter-Domain Routing): IP 주소 범위를 정의하는 방식. 192.168.32.1/24 -&amp;gt; 24는 서브넷 마스크. IP대역을 24비트로 나눈것(32.0~32.255)&lt;/li&gt;
&lt;li&gt;Private IP 대역 사용 (10, 172, 192)&lt;/li&gt;
&lt;li&gt;기본 VPC, CIDR 방식으로 IP 할당, VPC 내에 서브넷이 할당되어 있고 IP가 할당됨. EC2가 생성되면 해당 서브넷에 할당. 서브넷은 라우팅테이블에 연결되어 있고 igw가 연결되어 있음&lt;/li&gt;
&lt;li&gt;NACL은 개별 EC2가 아닌 서브넷 단위로 설정&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;Route 53&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DNS 서비스, 라우팅 정책 적용 가능&lt;/li&gt;
&lt;li&gt;TTL: Time To Live. DNS를 재요청하는 시간&lt;/li&gt;
&lt;li&gt;Simple, Weidgted Routing Policy&lt;/li&gt;
&lt;li&gt;Latency Routing Policy (리전 설정 후 가까운 지연 시간으로)&lt;/li&gt;
&lt;li&gt;Failover Routing Policy (상태 검사 생성 후 장애조치 및 기본 보조로 설정) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;CloudFront&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;컨텐츠 전송 네트워크 서비스(CDN)&lt;/li&gt;
&lt;li&gt;엣지 로케이션(캐시 서버)의 콘텐츠 캐싱을 이용해 사용자에게 더 빨리 서비스 가능&lt;/li&gt;
&lt;li&gt;EC2등 오리진 서버 부하 줄일 수 있음&lt;/li&gt;
&lt;li&gt;사용자 요청 헤더 값에 따라 다른 버전 컨텐츠 제공 가능&lt;/li&gt;
&lt;li&gt;3가지 가격 등급 존재&lt;/li&gt;
&lt;li&gt;고가용성을 위한 Origin Group. 기본 오리진이 실패하면 보조 오리진으로 전환&lt;/li&gt;
&lt;li&gt;보안 액세스 - Signed URL, Signed Cookies, 지역 제한, 필드 레벨 암호화(오리진 서버로 안전하게 전송)&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;Global Accelerator&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;고정된 IP주소 사용, 가장 가까운 리전의 엔드포인트로 최적화된 경로 찾는데 사용&lt;/li&gt;
&lt;li&gt;TCP/UDP 프로토콜 적합(UDP 기반 게임, VoIP, 모바일 앱 등) &lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>DevOps/Cloud</category>
      <category>AWS 네트워크</category>
      <category>AWS 데이터베이스</category>
      <category>AWS 서비스</category>
      <category>AWS 스토리지</category>
      <category>AWS 컨텐츠 전송</category>
      <category>AWS 컴퓨팅</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/216</guid>
      <comments>https://hungc.tistory.com/216#entry216comment</comments>
      <pubDate>Sun, 4 Dec 2022 18:40:58 +0900</pubDate>
    </item>
    <item>
      <title>2022년 넷플릭스 인기 TV프로그램 순위</title>
      <link>https://hungc.tistory.com/209</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;넷플릭스 TV프로그램 순위&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;2022년 넷플릭스 TV프로그램 전세계 순위입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;넷플릭스 볼만한거 찾던 분에게 유용할만한 영상입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터는 Flixpatrol에서 크롤링으로 가져와서 영상을 만들었습니다.&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=i01iQg0wavY&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/1UaYI/hyQHVgFotE/RsXjMVeH7DSaGKfngY2k00/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/i01iQg0wavY&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&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;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;#넷플릭스&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;순위&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;#넷플릭스&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;인기순위&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;#넷플릭스순위&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;#넷플릭스인기순위&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;#netflix&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;#netflix&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;rank&lt;/span&gt;&lt;/p&gt;</description>
      <category>Youtube</category>
      <category>넷플릭스 TV프로그램</category>
      <category>넷플릭스 순위</category>
      <category>넷플릭스 인기</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/209</guid>
      <comments>https://hungc.tistory.com/209#entry209comment</comments>
      <pubDate>Mon, 28 Nov 2022 23:15:21 +0900</pubDate>
    </item>
    <item>
      <title>About Me</title>
      <link>https://hungc.tistory.com/pages/About-Me</link>
      <description></description>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/pages/About-Me</guid>
      <pubDate>Mon, 10 Oct 2022 13:42:00 +0900</pubDate>
    </item>
    <item>
      <title>VSCODE 주석 단축키 오류</title>
      <link>https://hungc.tistory.com/204</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;가끔 Visual Studio Code에서 주석 단축키가 안 먹히고 '/' 만 입력되는 경우가 있는데 한국어 입력키와 관련이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CTRL + SHIFT 를 누른 상태에서 SHIFT만 떼면 정상동작된다.&lt;/p&gt;</description>
      <category>Programming</category>
      <category>vscode 주석</category>
      <category>vscode 주석 단축키</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/204</guid>
      <comments>https://hungc.tistory.com/204#entry204comment</comments>
      <pubDate>Mon, 10 Oct 2022 00:52:42 +0900</pubDate>
    </item>
    <item>
      <title>파이썬 코루틴(coroutine)</title>
      <link>https://hungc.tistory.com/203</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;파이썬&amp;nbsp;코루틴(coroutine)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬 비동기 함수는 코루틴 함수로 만들 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코루틴은 진입점과 탈출점이 여러 개가 있는 함수라고 할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬 코루틴 공식 홈페이지에 있는 예제를 살펴보면 asyncio API에 대해 설명하고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 코드는 &quot;hello&quot;를 인쇄하고 1초를 기다린 다음 &quot;world&quot;를 인쇄한다.&lt;/p&gt;
&lt;pre id=&quot;code_1664670184665&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import asyncio

async def main():
    print('hello')
    await asyncio.sleep(1)
    print('world')

asyncio.run(main())&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;코루틴 함수를 만들기 위해는 함수 앞에 async 키워드를 붙여주면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;await는 어웨이터블 객체만 사용할 수 있으며, 코루틴 내에서 다른 코루틴을 호출하고 결과를 받을 때 사용된다.&lt;/p&gt;
&lt;pre id=&quot;code_1664670502625&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import asyncio
import time

async def say_after(delay, what):
    await asyncio.sleep(delay)
    print(what)

async def main():
    print(f&quot;started at {time.strftime('%X')}&quot;)

    await say_after(1, 'hello')
    await say_after(2, 'world')

    print(f&quot;finished at {time.strftime('%X')}&quot;)

asyncio.run(main())&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;약 3초가 걸린다.&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;asyncio.create_task()로 태스크를 실행하도록 예약해야 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1664697166427&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import asyncio
import time

async def say_after(delay, what):
    await asyncio.sleep(delay)
    print(what)

async def main():
    task1 = asyncio.create_task(say_after(1, 'hello'))
    task2 = asyncio.create_task(say_after(2, 'world'))

    print(f&quot;started at {time.strftime('%X')}&quot;)

    # await say_after(1, 'hello')
    # await say_after(2, 'world')

    await task1
    await task2

    print(f&quot;finished at {time.strftime('%X')}&quot;)

asyncio.run(main())&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2초로 줄어드는 걸 볼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;asyncio.gather로 여러 태스크를 한번에 등록할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&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;네이버, 구글, 인스타그램을 각각 10번씩 요청해서 그에 대한 응답을 가져오는데, 약 10초정도 소요된다.&lt;/p&gt;
&lt;pre id=&quot;code_1664703896402&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import requests
import time


def fetcher(session, url):
    with session.get(url) as response:
        return response.text


def main():
    urls = [&quot;https://naver.com&quot;, &quot;https://google.com&quot;,
            &quot;https://instagram.com&quot;] * 10

    with requests.Session() as session:
        result = [fetcher(session, url) for url in urls]
        print(result)


if __name__ == &quot;__main__&quot;:
    start = time.time()
    main()
    end = time.time()
    print(end - start)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 코드를 비동기 코드로 변경해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 aiohttp 패키지가 필요하므로 이를 pip를 이용해서 설치하고 변경하면 아래와 같다.&lt;/p&gt;
&lt;pre id=&quot;code_1664704116468&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import aiohttp
import time
import asyncio


async def fetcher(session, url):
    async with session.get(url) as response:
        return await response.text()


async def main():
    urls = [&quot;https://naver.com&quot;, &quot;https://google.com&quot;, &quot;https://instagram.com&quot;] * 10

    async with aiohttp.ClientSession() as session:
        result = await asyncio.gather(*[fetcher(session, url) for url in urls])
        print(result)


if __name__ == &quot;__main__&quot;:
    start = time.time()
    asyncio.run(main())
    end = time.time()
    print(end - start)&lt;/code&gt;&lt;/pre&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;적절한 때에 비동기 형태로 코드를 구성하면 많은 시간을 단축할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&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;References:&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.python.org/ko/3/library/asyncio-task.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://docs.python.org/ko/3/library/asyncio-task.html&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664669881730&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;코루틴과 태스크 &amp;mdash; Python 3.10.7 문서&quot; data-og-description=&quot;코루틴과 태스크 이 절에서는 코루틴과 태스크로 작업하기 위한 고급 asyncio API에 관해 설명합니다. Coroutines declared with the async/await syntax is the preferred way of writing asyncio applications. For example, the follo&quot; data-og-host=&quot;docs.python.org&quot; data-og-source-url=&quot;https://docs.python.org/ko/3/library/asyncio-task.html&quot; data-og-url=&quot;https://docs.python.org/ko/3/library/asyncio-task.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://docs.python.org/ko/3/library/asyncio-task.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.python.org/ko/3/library/asyncio-task.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;코루틴과 태스크 &amp;mdash; Python 3.10.7 문서&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코루틴과 태스크 이 절에서는 코루틴과 태스크로 작업하기 위한 고급 asyncio API에 관해 설명합니다. Coroutines declared with the async/await syntax is the preferred way of writing asyncio applications. For example, the follo&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.python.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/amamov/teaching-async-python&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/amamov/teaching-async-python&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664703684408&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - amamov/teaching-async-python: [인프런] 파이썬 동시성 프로그래밍 (feat. FastAPI)&quot; data-og-description=&quot;[인프런] 파이썬 동시성 프로그래밍 (feat. FastAPI). Contribute to amamov/teaching-async-python development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/amamov/teaching-async-python&quot; data-og-url=&quot;https://github.com/amamov/teaching-async-python&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/iybvG/hyPYVA4FME/ANSkIOyQwJEkGgOcsn6H61/img.png?width=1200&amp;amp;height=600&amp;amp;face=1001_133_1044_179&quot;&gt;&lt;a href=&quot;https://github.com/amamov/teaching-async-python&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/amamov/teaching-async-python&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/iybvG/hyPYVA4FME/ANSkIOyQwJEkGgOcsn6H61/img.png?width=1200&amp;amp;height=600&amp;amp;face=1001_133_1044_179');&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;GitHub - amamov/teaching-async-python: [인프런] 파이썬 동시성 프로그래밍 (feat. FastAPI)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;[인프런] 파이썬 동시성 프로그래밍 (feat. FastAPI). Contribute to amamov/teaching-async-python development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.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>Programming/Python</category>
      <category>async/await</category>
      <category>python async</category>
      <category>pytohn coroutine</category>
      <category>파이썬 coroutine</category>
      <category>파이썬 코루틴</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/203</guid>
      <comments>https://hungc.tistory.com/203#entry203comment</comments>
      <pubDate>Sun, 2 Oct 2022 16:17:42 +0900</pubDate>
    </item>
    <item>
      <title>Kubernetes Architecture</title>
      <link>https://hungc.tistory.com/200</link>
      <description>&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;1165&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dqHvQf/btrIxCQ9kKv/uFxPvSvawuKgqPR5kYA421/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dqHvQf/btrIxCQ9kKv/uFxPvSvawuKgqPR5kYA421/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dqHvQf/btrIxCQ9kKv/uFxPvSvawuKgqPR5kYA421/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdqHvQf%2FbtrIxCQ9kKv%2FuFxPvSvawuKgqPR5kYA421%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;250&quot; height=&quot;243&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;1165&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;컨트롤 플레인 컴포넌트&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;kube-apiserver: 쿠버네티스 API를 노출하는 쿠버네티스 컴포넌트&lt;/li&gt;
&lt;li&gt;etcd: 모든 클러스터 데이터를 담는 키-값 저장소&lt;/li&gt;
&lt;li&gt;kube-scheduler: 노드가 배정되지 않은 새로 생성된 파드를 감지하고 실행할 노드를 선택하는 컴포넌트&lt;/li&gt;
&lt;li&gt;kube-controller-manager: 노드 컨트롤러, 레플리케이션 컨트롤러, 엔드포인트 컨트롤러, 서비스 어카운트, 토큰 컨트롤러를 포함한다.&lt;/li&gt;
&lt;li&gt;cloud-controller-manager: 클라우드별 컨트롤 로직을 포함하는 컴포넌트&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;노트 컴포넌트&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;kubelet: 각 노드에서 실행되는 에이전트. 파드에서 컨테이너가 확실하게 동작하도록 관리&lt;/li&gt;
&lt;li&gt;kube-proxy: 각 노드에서 실행되는 네트워크 프록시로 서비스 개념의 구현부&lt;/li&gt;
&lt;li&gt;컨테이너 런타임: 컨테이너 실행을 담당하는 소프트웨어&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마스터 노드에는 etcd, kube-scheduler, kube-apiserver가 존재하고 이는 /etc/kubernetes/manifests에 각각 해당하는 yaml 파일이 존재한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;워커 노드에는 kubelet과 container runtime이 구성되어 있으며, 데몬셋인 kube-proxy가 구성되어 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1185&quot; data-origin-height=&quot;614&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cm3YFT/btrGWynNwTz/pviipAWUsXrkNUN8c0iUQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cm3YFT/btrGWynNwTz/pviipAWUsXrkNUN8c0iUQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cm3YFT/btrGWynNwTz/pviipAWUsXrkNUN8c0iUQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcm3YFT%2FbtrGWynNwTz%2FpviipAWUsXrkNUN8c0iUQ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1185&quot; height=&quot;614&quot; data-origin-width=&quot;1185&quot; data-origin-height=&quot;614&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;요청자가 kubectl create 명령어로 파드 생성 요청&lt;/li&gt;
&lt;li&gt;kube-apiserver로 전달되며, etcd에 pod에 대한 이력정보를 저장&lt;/li&gt;
&lt;li&gt;kube-scheduler는 수시로 각각의 노드 자원을 수집하고 있으며, kube-apiserver에 watch 기능으로 etcd에 파드 생성요청이 왔는지 모니터링 후 노드 자원 상태를 확인한 후 etcd 파드에 노드정보를 추가&lt;/li&gt;
&lt;li&gt;kubelet도 kube-apiserver에 watch가 걸려있고 자신의 노드가 붙어있는 파드를 발견하면 정보를 가져와서 파드를 생성하고자 함&lt;/li&gt;
&lt;li&gt;kubelet이 container runtime에 컨테이너를 생성하라고 요청&lt;/li&gt;
&lt;li&gt;kubelet은 kube-proxy한테 네트워크 생성요청을 하고 kube-proxy가 통신이 되도록 설정&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;디플로이먼트 생성 과정&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;1176&quot; data-origin-height=&quot;616&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k7UEd/btrGTya2j1h/tc3qznTlLvyAJbccu2RxJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k7UEd/btrGTya2j1h/tc3qznTlLvyAJbccu2RxJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k7UEd/btrGTya2j1h/tc3qznTlLvyAJbccu2RxJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk7UEd%2FbtrGTya2j1h%2Ftc3qznTlLvyAJbccu2RxJ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1176&quot; height=&quot;616&quot; data-origin-width=&quot;1176&quot; data-origin-height=&quot;616&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;kube-controller-manager.yaml 파일에 의해 Controller Manager가 존재하며 여러 컨트롤러가 각 스레드로 도는중&lt;/li&gt;
&lt;li&gt;요청자가 kubectl create 명령어로 디플로이먼트(replicas:2) 생성 요청&lt;/li&gt;
&lt;li&gt;kube-apiserver로 전달되며, etcd에 정보를 저장&lt;/li&gt;
&lt;li&gt;Controller Manager의 Deployment가 kube-apiserver에 watch로 모니터링 중이며, 레플리카셋을 생성하라고 요청함&lt;/li&gt;
&lt;li&gt;ReplicaSet도 watch가 걸려있어 감지 후 파드를 생성하라고 요청&lt;/li&gt;
&lt;li&gt;kube-scheduler는 수시로 각각의 노드 자원을 수집하고 있으며, kube-apiserver에 watch 기능으로 etcd에 파드 생성요청이 왔는지 모니터링 후 노드 자원 상태를 확인한 후 etcd 파드에 노드정보를 추가&lt;/li&gt;
&lt;li&gt;kubelet도 kube-apiserver에 watch가 걸려있고 자신의 노드가 붙어있는 파드를 발견하면 정보를 가져와서 파드를 생성하고자 함&lt;/li&gt;
&lt;li&gt;kubelet이 container runtime에 컨테이너를 생성하라고 요청&lt;/li&gt;
&lt;li&gt;kubelet은 kube-proxy한테 네트워크 생성요청을 하고 kube-proxy가 통신이 되도록 설정&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;References&lt;/b&gt;:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://kubernetes.io/ko/docs/concepts/overview/components/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://kubernetes.io/ko/docs/concepts/overview/components/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1657448229151&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;쿠버네티스 컴포넌트&quot; data-og-description=&quot;쿠버네티스 클러스터는 컴퓨터 집합인 노드 컴포넌트와 컨트롤 플레인 컴포넌트로 구성된다.&quot; data-og-host=&quot;kubernetes.io&quot; data-og-source-url=&quot;https://kubernetes.io/ko/docs/concepts/overview/components/&quot; data-og-url=&quot;https://kubernetes.io/ko/docs/concepts/overview/components/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ZXr26/hyO1Z5KITI/HEJACLy35abikmSixb1mC0/img.png?width=1727&amp;amp;height=373&amp;amp;face=0_0_1727_373,https://scrap.kakaocdn.net/dn/bNg4cy/hyO3hcEiaE/lHOysYCWytsjV3K0jK68x1/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512&quot;&gt;&lt;a href=&quot;https://kubernetes.io/ko/docs/concepts/overview/components/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kubernetes.io/ko/docs/concepts/overview/components/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ZXr26/hyO1Z5KITI/HEJACLy35abikmSixb1mC0/img.png?width=1727&amp;amp;height=373&amp;amp;face=0_0_1727_373,https://scrap.kakaocdn.net/dn/bNg4cy/hyO3hcEiaE/lHOysYCWytsjV3K0jK68x1/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512');&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;쿠버네티스 컴포넌트&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;쿠버네티스 클러스터는 컴퓨터 집합인 노드 컴포넌트와 컨트롤 플레인 컴포넌트로 구성된다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;kubernetes.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://kubetm.github.io/k8s/09-intermediate-architecture/component/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://kubetm.github.io/k8s/09-intermediate-architecture/component/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>DevOps/Kubernetes</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/200</guid>
      <comments>https://hungc.tistory.com/200#entry200comment</comments>
      <pubDate>Sun, 10 Jul 2022 18:02:59 +0900</pubDate>
    </item>
    <item>
      <title>쿠버네티스 (Kubernetes) 배포를 위한 고급 설정</title>
      <link>https://hungc.tistory.com/197</link>
      <description>&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;1165&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Xo3g3/btrIxCKqp8t/vHgyTPsBIR1wS5rxZdlrVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Xo3g3/btrIxCKqp8t/vHgyTPsBIR1wS5rxZdlrVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Xo3g3/btrIxCKqp8t/vHgyTPsBIR1wS5rxZdlrVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXo3g3%2FbtrIxCKqp8t%2FvHgyTPsBIR1wS5rxZdlrVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;250&quot; height=&quot;243&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;1165&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쿠버네티스는 클러스터 내부에서 컴퓨팅 자원 활용률(Utilization)을 늘리는 것이 중요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;컨테이너와 포드의 자원 사용량 제한: Limit, Request&lt;/h3&gt;
&lt;pre id=&quot;code_1656168352512&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: Pod
metadata:
  name: resource-limit-with-request-pod
  labels:
    name: resource-limit-with-request-pod
spec:
  containers:
    - name: nginx
      image: nginx:latest
  resources:
    limits:
      memory: &quot;256Mi&quot;
      cpu: &quot;1000m&quot;
    requests:
      memory: &quot;128Mi&quot;
      cpu: &quot;500m&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 참고: cpu 1개를 뜻하는 1000m(밀리코어)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;requests는 적어도 이만큼의 자원은 컨테이너에게 보장되어야 한다라는 의미이며 limits은 최대사용량&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 위에서는 최소 128Mi 메모리 사용은 보장되지만 유휴 메모리 자원이 있다면 최대 256Mi까지 사용할 수 있다란 의미&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;QoS 클래스와 메모리 자원 사용량 제한 원리&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CPU 사용량에 경합이 발생하면 throttle이 발생하지만 컨테이너 자체에는 문제가 발생하지 않는다.&lt;br /&gt;하지만 메모리는 incompressible 자원으로 경합이 발생하면 우선순위가 낮은 포드 또는 프로세스가 종료된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;강제 종료된 포드는 다른 노드로 옮겨가게 되는데, 이를 퇴거(Eviction)이라고 표현한다.&lt;/p&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가지 종류의 QoS(Quality of Service) 클래스를 명시적으로 포드에 설정한다. 우선순위는 OOM(Out Of Memory) 값으로 설정되며 OOM 점수가 높을수록 우선순위가 낮아져 강제종료된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 클래스는 kubectl describe 명령어로 확인 가능&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Guaranteed 클래스 - Limit과 Request의 값이 동일할 때 부여되는 클래스. Requests를 생략하면 Limit으로 동일하게 설정되며 이 경우 OOM 점수는 -998로 설정된다.&lt;/li&gt;
&lt;li&gt;Burstable 클래스 - Limit의 값이 Request보다 큰 포드를 의미함.&lt;/li&gt;
&lt;li&gt;BestEffort 클래스 - Limit과 Request를 아예 설정하지 않은 포드에 설정되는 클래스.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적으로 Guaranteed가 우선순위가 가장 높으며, 그 뒤로 Burstable와 BestEffort 순이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 노드에 메모리가 부족하면 BestEffort 클래스 포드 먼저 종료된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 메모리 사용량에 따라 우선순위가 역전될 수도 있는데, 메모리를 많이 사용하면 사용할수록 우선순위가 낮아진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;ResourceQuota로 네임스페이스의 자원 사용량 제한&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;네임스페이스에서 할당할 수 있는 자원의 총합을 제한할 수 있음&lt;/li&gt;
&lt;li&gt;네임스페이스에서 생성할 수 있는 리소스의 개수를 제한할 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ResourceQuota와 LimitRange는 namespace 에서 이미 살펴봤으므로 간단하게 넘어가자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1656244479201&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl get quota
$ kubectl describe quota&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;리소스 개수를 제한하려면 count/&amp;lt;오브젝트이름&amp;gt;을 명시&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;scope로 BestEffort 클래스의 포드 개수 제한 가능&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;LimitRange로 자원 사용량 제한&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;포드의 컨테이너에 CPU나 메모리 할당량이 설정돼 있지 않은 경우, 컨테이너에 자동으로 기본 Request 또는 Limit 값을 설정할 수 있음&lt;/li&gt;
&lt;li&gt;포드 또는 컨테이너의 CPU, 메모리, 퍼시스턴트 볼륨 클레임 스토리지 크기의 최소값/ 최대값 설정 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;쿠버네티스 스케줄링&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스케줄링에 관여하는 컴포넌트는 kube-scheduler와 쿠버네티스 클러스터의 전반적인 상태 데이터를 저장하는 일종의 데이터베이스인 etcd이다.&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;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;nodeName (노드명 지정, 그러나 노드가 삭제되면 이름이 바뀌기 때문에 유의)&lt;/li&gt;
&lt;li&gt;nodeSelector (키, 값이 있는 노드로 지정, 그러나 매칭이 되는 라벨이 없으면 어느 노드에도 매칭이 안됨)&lt;/li&gt;
&lt;li&gt;nodeAffinity (키만 설정해도 자원이 많은 노드에 설정됨. 매칭이 안 되어도 스케줄러가 자원이 많은 노드에 매칭가능)&lt;/li&gt;
&lt;li&gt;podAffinity (관련 파드가 같은 노드에 매칭이 되어야 하는 경우에 사용, ex. PV)&lt;/li&gt;
&lt;li&gt;podAntiAffinity (관련 파드가 다른 노드에 매칭이 되어야 하는 경우에 사용, ex. master-slave)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1219&quot; data-origin-height=&quot;589&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/z5MiR/btrGhZ7En9O/8GsoQwKZVQgAln7Y4kUPKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/z5MiR/btrGhZ7En9O/8GsoQwKZVQgAln7Y4kUPKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/z5MiR/btrGhZ7En9O/8GsoQwKZVQgAln7Y4kUPKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz5MiR%2FbtrGhZ7En9O%2F8GsoQwKZVQgAln7Y4kUPKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1219&quot; height=&quot;589&quot; data-origin-width=&quot;1219&quot; data-origin-height=&quot;589&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1218&quot; data-origin-height=&quot;563&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bW7eKv/btrGjDKy397/HxOJf9XQEN20uHN51Q1Npk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bW7eKv/btrGjDKy397/HxOJf9XQEN20uHN51Q1Npk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bW7eKv/btrGjDKy397/HxOJf9XQEN20uHN51Q1Npk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbW7eKv%2FbtrGjDKy397%2FHxOJf9XQEN20uHN51Q1Npk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1218&quot; height=&quot;563&quot; data-origin-width=&quot;1218&quot; data-origin-height=&quot;563&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;노드 라벨 생성 명령어&lt;/p&gt;
&lt;pre id=&quot;code_1656838458971&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl label nodes k8s-node1 kr=az-1
$ kubectl label nodes k8s-node2 us=az-1&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Taints와 Tolerations를 이용한 포드 스케줄링&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Taints는 특정 노드에 얼룩(Taint)을 지정함으로써 해당 노드에 포드가 할당되는 것을 막는 기능이며, 이에 대응하는 Tolerations를 포드에 설정하면 Taints가 설정된 노드에도 포드를 할당할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쿠버네티스는 기본적으로 다양한 Taints를 노드에 설정한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금까지 포드를 생성하면 기본적으로 마스터 노드가 아닌 워커 노드에 할당됐는데, 이는 기본적으로 마스터 노드에 Taints NoSchedule이 설정되어 있기 때문이다. 장애가 발생한 경우엔 NoExecute로 다른 노드에 설정되게끔 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Taints 효과에는 NoSchedule(포드를 처음 매칭할 때 스케줄링하지 않음), NoExecute(포드의 실행 자체를 허용하지 않음), PreferNoSchedule(가능하면 스케줄링하지 않음) 총 3가지가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1656244577977&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl taint node ip-10-43-0-30.ap-northeast-2.compute.internal alicek106/your-taint=your-taint-value:NoExecute&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포드가 디플로이먼트나 레플리카셋 등과 같은 리소스로 생성됐다면 NoExecute에 의해 포드가 종료됐더라도 포드는 다른 노드로 옮겨가는 퇴거(Eviction)가 발생한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 쿠버네티스는 특정 문제가 발생한 노드에 대해서는 자동으로 Taint를 추가한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대표적으로 아직 노드가 준비되지 않은 상태(NotReady), 네트워크가 불안정한 상태(Unreachable), 메모리 부족(memory-pressure)이나 디스크 공간 부족(disk-pressure)에 대한 Taint 등이 있다.&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;cordon을 이용한 스케줄링 비활성화&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cordon 명령어로 지정된 노드는 새로운 포드가 할당되지 않는다.&lt;/p&gt;
&lt;pre id=&quot;code_1656244587451&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl cordon ip-10-43-0-30.ap-northeast-2.compute.internal&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;kubectl get nodes 명령어로 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;size18&quot;&gt;&lt;b&gt;drain 명령어로 노드 비활성화&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;drain은 cordon처럼 해당 노드에 스케줄링을 금지한다는 것은 같지만, 노드에서 기존에 실행중이던 포드를 다른 노드로 옮겨가도록 퇴거(Eviction)를 수행한다는 점이 다르다.&lt;/p&gt;
&lt;pre id=&quot;code_1656244593584&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl drain ip-10-43-0-30.ap-northeast-2.compute.internal&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;size18&quot;&gt;&lt;b&gt;PodDisruptionBudget으로 포드 개수 유지&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;kubectl drain 명령어 등으로 포드에 퇴거가 발생할 때, 특정 개수 또는 비율만큼의 포드는 반드시 정상적인 상태를 유지하기 위해 사용된다.&lt;/p&gt;
&lt;pre id=&quot;code_1656244600018&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl get pdb&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;lt;simple-pdb-example.yaml&amp;gt;&lt;/p&gt;
&lt;pre id=&quot;code_1656213217171&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
  name: simple-pdb-example
spec:
  maxUnavailable: 1 # 비활성화될 수 있는 포드의 최대 개수 또는 비율
  # minAvailable: 2
  selector:
    matchLabels:
      app: webserve&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;size18&quot;&gt;&lt;b&gt;커스텀 스케줄러 및 스케줄러 확장&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포드를 생성하면 기본적으로 기본 스케줄러(kube-scheduler)를 사용하게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가로 본인이 스케줄러를 구현해서 사용할 수도 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;쿠버네티스 애플리케이션 상태와 배포&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단히 사용하기에는 kubectl apply -f 명령어도 나쁜 방법은 아니지만 좀 더 고도화된 배포방식을 원한다면 Spinnaker, Helm, Kustomize 또는 ArgoCD나 Jenkins와 같은 CD 도구를 사용할 수 있다.&lt;/p&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;--record 옵션을 추가해 디플로이먼트의 변경사항을 적용하면 이전에 사용하던 레플리카 셋의 정보는 디플로이먼트 히스토리에 기록된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1656244664458&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl apply -f deployment-v1.yaml --record
$ kubectl apply -f deployment-v2.yaml --record
$ kubectl rollout history deployment nginx-deployment&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;배포중에 애플리케이션이 중단돼도 괜찮은 경우는 ReCreate 방법을 사용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;deployment-recreate.yaml&amp;gt;&lt;/p&gt;
&lt;pre id=&quot;code_1656214017188&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-recreate
spec:
  replicas: 3
  strategy:
    type: Recreate&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;하지만 이를 허용하지 않았을때는 ReCreate 방식은 적절하지 않으며, 쿠버네티스에서는 포드를 조금씩 삭제하고 생성하는 롤링 업데이트 기능을 제공한다. 별도의 설정하지 않아도 롤링 업데이트를 사용하도록 설정돼있음&lt;/p&gt;
&lt;pre id=&quot;code_1656214099365&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;...
spec:
  replicas: 3
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 2
      maxUnavailable: 2
...&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;maxUnavailable: 롤링 업데이트 도중 사용 불가능한 상태가 되는 포드의 최대 개수 설정&lt;/li&gt;
&lt;li&gt;maxSurge: 롤링 업데이트 도중 전체 포드의 개수가 디플로이먼트의 replicas 값보다 얼마나 더 많이 존재할 수 있는지 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;블루그린 배포&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;특정 순간에는 디플로이먼트에 설정된 replicas 개수의 두 배에 해당하는 포드가 실행되기 때문에 자원을 많이 소모할 수 있다.&lt;/p&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-origin-width=&quot;1219&quot; data-origin-height=&quot;572&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ch6U5v/btrFIdfzyZ9/LYmbZmfbPsbgsqFtfsTiD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ch6U5v/btrFIdfzyZ9/LYmbZmfbPsbgsqFtfsTiD0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ch6U5v/btrFIdfzyZ9/LYmbZmfbPsbgsqFtfsTiD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fch6U5v%2FbtrFIdfzyZ9%2FLYmbZmfbPsbgsqFtfsTiD0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1219&quot; height=&quot;572&quot; data-origin-width=&quot;1219&quot; data-origin-height=&quot;572&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;포드의 생애 주기(Lifecycle)&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Pending: 포드를 생성하는 요청이 API 서버에 의해 승인됐지만, 문제가 발생해서 생성되지 않은 상태&lt;/li&gt;
&lt;li&gt;Running: 정상적으로 실행&lt;/li&gt;
&lt;li&gt;Completed: 포드가 정상적으로 실행돼 종료됐음을 의미함. 포드 컨테이너의 init 프로세스가 종료 코드로 0을 반환&lt;/li&gt;
&lt;li&gt;Error: 포드가 정상적으로 실행되지 않은 상태로 종료됐음을 의미. init 프로세스가 0이 아닌 종료 코드 반환&lt;/li&gt;
&lt;li&gt;Terminating: 포드가 삭제 또는 퇴거 되기 위해 삭제 상태에 머물러있는 경우에 해당&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포드의 재시작 정책을 설정하는 restartPolicy는 기본적으로 Always로 설정되어 있고 포드의 컨테이너가 종료되면 자동으로 재시작한다. restartPolicy 값을 Never로 설정하면 재시작하지 않는다.&lt;/p&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;Running 상태가 되기 위한 조건&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포드가 Running 상태에 머물러 있다고 해서 컨테이너 내부의 애플리케이션이 제대로 동작하고 있을 것이란 보장은 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쿠버네티스는 다음과 같은 기능을 제공함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- InitContainer&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- postStart&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- livenessProbe, readinessProbe&lt;/p&gt;
&lt;pre id=&quot;code_1656216588140&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: Pod
metadata:
  name: init-container-example
spec:
  initContainers: # 초기화 컨테이너를 항목에 정의합니다.
    - name: my-init-container
      image: busybox
      command: [&quot; sh&quot; , &quot;-e&quot; , &quot;echo Hello World!&quot;]
  containers: # 애플리케이션 컨테이너를 항목에 정의합니다.
    - name: nginx
      image: nginx&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포드의 컨테이너가 실행되거나 삭제될 때, 특정 작업을 수행하도록 훅을 정의할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컨테이너가 시작될 때 실행되는 postStart와 종료될 때 실행되는 preStop 이다.&lt;/p&gt;
&lt;pre id=&quot;code_1656216733972&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: Pod
metadata:
  name: poststart-hook
spec:
  containers:
    - name: poststart-hook
      image: nginx
      lifecycle:
        postStart:
          exec:
            command: [&quot;sh&quot;, &quot;-c&quot;, &quot;touch /myfile&quot;]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;postStart 명령이나 HTTP 요청이 제대로 실행되지 않으면 컨테이너는 Running 상태로 전환되지 않으며, Init 컨테이너와 마찬가지로 restartPolicy에 의해 해당 컨테이너가 재시작된다. 또한 시간이 오래 걸리면 그만큼 Running 상태까지 도달하는 시간이 길어질 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&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;애플리케이션의 상태 검사, livenessProbe, readinessProbe&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Init 컨테이너나 postStart 훅이 정상적으로 실행됐다고 해서 애플리케이션이 제대로 동작하고 있다고 보장할 수 없다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1157&quot; data-origin-height=&quot;519&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buAZwu/btrGlUdhNau/I8NY3ic4CVm8Q18xKPZ0t0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buAZwu/btrGlUdhNau/I8NY3ic4CVm8Q18xKPZ0t0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buAZwu/btrGlUdhNau/I8NY3ic4CVm8Q18xKPZ0t0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuAZwu%2FbtrGlUdhNau%2FI8NY3ic4CVm8Q18xKPZ0t0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1157&quot; height=&quot;519&quot; data-origin-width=&quot;1157&quot; data-origin-height=&quot;519&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;livenessProbe: 컨테이너 내부의 애플리케이션이 살아있는지 검사. 실패인 경우 restartPolicy에 의해 재시작&lt;/li&gt;
&lt;li&gt;readinessProbe: 컨테이너 내부의 애플리케이션이 사용자 요청을 처리할 준비가 됐는지 검사. 실패할 경우 컨테이너는 서비스의 라우팅 대상에서 제외됨&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1656217054485&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: Pod
metadata:
  name: livenessprobe-pod
spec:
  containers:
    - name: livenessprobe-pod
      image: nginx
      livenessProbe: # 컨테이너에 대해 livenessProbe 정의합니다.
        httpGet: # HTTP 요청을 통해 애플리케이션의 상태를 검사합니다.
        port: 80 # &amp;lt;포드으 IP):801 경로를 통해 헬스 체크 요청을 보냄니다.
        path: /&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3가지 방식이 있으며 httpGet, exec, tcpSocket 등이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 파드를 생성한 후, 일부러 index.html 파일을 삭제해서 livenessProbe가 실패하도록 유도하면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시간이 지난 뒤 포드의 RESTARTS 횟수가 증가하고 컨테이너가 재시작함으로써 Nginx 서버의 index.html 파일이 원래대로 돌아오기 때문에 livenessProbe는 다시 성공하게 됨 (describe 명령어로 확인 가능)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;readinessprobe-pod-svc.yaml&amp;gt;&lt;/p&gt;
&lt;pre id=&quot;code_1656217314334&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: Pod
metadata:
  name: readinessprobe-pod
  labels:
    my-readinessprobe: test
spec:
  containers:
    - name: readinessprobe-pod
      image: nginx              # Nginx 서버 컨테이너를 생성합니다.
      readinessProbe:           # &amp;lt;포드의 IP):80/ 상태 검사 요청을 전송합니다.
        httpGet:
          port: 80
          path: /

---
apiVersion: v1
kind: Service
metadata:
  name: readinessprobe-svc
spec:
  ports:
    - name: nginx
      port: 80
      targetPort: 80
  selector:
    my-readinessprobe: test
  type: ClusterIP&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파드를 생성한 후 엔드포인트 리소스 목록을 확인해보면 서비스로 접근하는 요청이 포드의 IP로 라우팅되고 있는것을 볼 수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1656766668039&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl get endpoints&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마찬가지로 고의적으로 index.html 파일을 삭제하면 livenessProbe와 달리 RESTARTS 횟수가 증가하지 않고 단순히 READY 상태인 컨테이너가 하나 줄어든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;readinessProbe가 실패했기 때문에 컨테이너가 준비되지 않았다고 간주하며 서비스 리소스는 사용자 요청을 이 포드로 전달하지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;엔드포인트 리소스 목록을 확인해보면 라우팅 대상에서 포드의 IP가 제거되어 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세부옵션&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;periodSeconds :상태 검사를 진행할 주기를 설정합니다. 기본값은 10초&lt;/li&gt;
&lt;li&gt;initialDelaySeconds: 포드가 생성된 상태 검사를 시작할 때까지의 대기 시간을 설정합니다. 기본적으로는 설정돼 있지 않음&lt;/li&gt;
&lt;li&gt;timeoutSeconds :요청에 대한 타임이웃 시간을 설정합니다. 기본값은 1초&lt;/li&gt;
&lt;li&gt;successThreshold: 상태 검사에 성공했다고 간주할 검사 성공 횟수를 설정합니다. 기본값은 1&lt;/li&gt;
&lt;li&gt;failureThreshold: 상태 검사가 실패했다고 간주할 검사 실패 횟수를 설정합니다. 기본값은 3&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1212&quot; data-origin-height=&quot;594&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHwxTq/btrGhwZqExe/je5J77ZUUO7IVlFkIy1bi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHwxTq/btrGhwZqExe/je5J77ZUUO7IVlFkIy1bi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHwxTq/btrGhwZqExe/je5J77ZUUO7IVlFkIy1bi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHwxTq%2FbtrGhwZqExe%2Fje5J77ZUUO7IVlFkIy1bi0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1212&quot; height=&quot;594&quot; data-origin-width=&quot;1212&quot; data-origin-height=&quot;594&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;명령어 Tip)&lt;/p&gt;
&lt;pre id=&quot;code_1656838399436&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl get events -w | grep [pod 이름]                                      # 파드 이벤트 확인
$ kubectl describe pod [pod 이름] | grep -A5 Conditions              # 파드 컨디션 확인&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;Terminating 상태와 애플리케이션의 종료&lt;/p&gt;
&lt;pre id=&quot;code_1656217735323&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: Pod
metadata:
  name: prestop-hook
spec:
  containers:
    - name: prestop-hook
      image: nginx
      lifecycle:
        preStop:
          exec:
            command: [&quot;/usr/sbin/nginx&quot;, &quot;-s&quot;, &quot;quit&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;preStop 훅이 실행되고나면 포드의 컨테이너들에게 SIGTERM 시그널을 보냄으로써 포드가 곧 종료될 것이라고 알린다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 애플리케이션의 소스코드에서는 SIGTERM 시그널을 수신했을 때 어떤 행동을 취할 것인지 별도로 구현해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 포드 내부의 애플리케이션이 SIGTERM을 수신했는데도 특정 유예 시간 이내에 종료되지 않으면 쿠버네티스는 SIGKILL 시그널을 전송해 강제로 프로세스를 종료하게 된다. (기본 30초이며 terminationGracePeriodSeconds 값을 통해 조정 가능)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&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;References&lt;/b&gt;:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://kubetm.github.io/k8s/04-beginner-controller/deployment/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://kubetm.github.io/k8s/04-beginner-controller/deployment/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1656244733507&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;Deployment&quot; data-og-description=&quot;Recreate, RollingUpdate&quot; data-og-host=&quot;kubetm.github.io&quot; data-og-source-url=&quot;https://kubetm.github.io/k8s/04-beginner-controller/deployment/&quot; data-og-url=&quot;https://kubetm.github.io/k8s/04-beginner-controller/deployment/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/05FYX/hyOUYDYK4Z/qavh4ZTNW10bLBnBif9eCk/img.jpg?width=885&amp;amp;height=232&amp;amp;face=0_0_885_232,https://scrap.kakaocdn.net/dn/fNQ68/hyOSMSIilm/EJNcYN1WwN1Y7BJTAi5YMK/img.jpg?width=504&amp;amp;height=254&amp;amp;face=0_0_504_254,https://scrap.kakaocdn.net/dn/uZ3Sk/hyOSPaP986/6XepvpZKwK8kwpmvx8AIlk/img.jpg?width=504&amp;amp;height=254&amp;amp;face=0_0_504_254&quot;&gt;&lt;a href=&quot;https://kubetm.github.io/k8s/04-beginner-controller/deployment/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kubetm.github.io/k8s/04-beginner-controller/deployment/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/05FYX/hyOUYDYK4Z/qavh4ZTNW10bLBnBif9eCk/img.jpg?width=885&amp;amp;height=232&amp;amp;face=0_0_885_232,https://scrap.kakaocdn.net/dn/fNQ68/hyOSMSIilm/EJNcYN1WwN1Y7BJTAi5YMK/img.jpg?width=504&amp;amp;height=254&amp;amp;face=0_0_504_254,https://scrap.kakaocdn.net/dn/uZ3Sk/hyOSPaP986/6XepvpZKwK8kwpmvx8AIlk/img.jpg?width=504&amp;amp;height=254&amp;amp;face=0_0_504_254');&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;Deployment&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Recreate, RollingUpdate&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;kubetm.github.io&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>DevOps/Kubernetes</category>
      <category>k8s limit request</category>
      <category>k8s LivenessProbe</category>
      <category>k8s Node Scheduling</category>
      <category>k8s QoS</category>
      <category>k8s ReadinessProbe</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/197</guid>
      <comments>https://hungc.tistory.com/197#entry197comment</comments>
      <pubDate>Sun, 26 Jun 2022 00:48:10 +0900</pubDate>
    </item>
    <item>
      <title>SonarQube on Kubernetes</title>
      <link>https://hungc.tistory.com/196</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;SonarQube&amp;nbsp;on&amp;nbsp;Kubernetes&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Azure에서 쿠버네티스를 기반으로 SonarQube를 적용해보자.&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;PersistentVolumeClaim 생성&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;data와 plugin 저장을 위한 2개 PVC 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;sonar-data.yaml&amp;gt;&lt;/p&gt;
&lt;pre id=&quot;code_1656848921302&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: sonar-data
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: default
  resources:
    requests:
      storage: 31Gi&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;lt;sonar-extension.yaml&amp;gt;&lt;/p&gt;
&lt;pre id=&quot;code_1656849264122&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: sonar-extensions
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: default
  resources:
    requests:
      storage: 31Gi&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;935&quot; data-origin-height=&quot;73&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cd4c4A/btrGqJiqDBO/65v815wKKaK5XV32ygz9xk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cd4c4A/btrGqJiqDBO/65v815wKKaK5XV32ygz9xk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cd4c4A/btrGqJiqDBO/65v815wKKaK5XV32ygz9xk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcd4c4A%2FbtrGqJiqDBO%2F65v815wKKaK5XV32ygz9xk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;935&quot; height=&quot;73&quot; data-origin-width=&quot;935&quot; data-origin-height=&quot;73&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;h4 data-ke-size=&quot;size20&quot;&gt;시크릿 생성&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PostgreSQL 패스워드 저장을 위한 Secret 생성&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;438&quot; data-origin-height=&quot;35&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/t4LBF/btrGmoTTmBq/0pZeOMCwJT8WG1NJ3znIPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/t4LBF/btrGmoTTmBq/0pZeOMCwJT8WG1NJ3znIPK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/t4LBF/btrGmoTTmBq/0pZeOMCwJT8WG1NJ3znIPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ft4LBF%2FbtrGmoTTmBq%2F0pZeOMCwJT8WG1NJ3znIPK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;438&quot; height=&quot;35&quot; data-origin-width=&quot;438&quot; data-origin-height=&quot;35&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;sonar-secret.yaml&amp;gt;&lt;/p&gt;
&lt;pre id=&quot;code_1656849318824&quot; class=&quot;routeros&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: Secret
metadata:
  name: postgres
type: Opaque
data:
  password: aHVuZ3Bvc3RncmVz&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;디플로이먼트 생성&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;sonar-deployment.yaml&amp;gt;&lt;/p&gt;
&lt;pre id=&quot;code_1656849634797&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: sonarqube
  name: sonarqube
spec:
  replicas: 1
  selector:
    matchLabels:
      app: sonarqube
  template:
    metadata:
      labels:
        app: sonarqube
    spec:
      containers:
        - name: sonarqube
          image: sonarqube:latest
          volumeMounts:
            - mountPath: &quot;/opt/sonarqube/data/&quot;
              name: sonar-data
            - mountPath: &quot;/opt/sonarqube/extensions/&quot;
              name: sonar-extensions
          env:
            - name: &quot;SONARQUBE_JDBC_USERNAME&quot;
              value: &quot;hung&quot;
            - name: &quot;SONARUQBE_JDBC_URL&quot;
              value: jdbc:postgresql://sonar-postgres:5432/sonar
            - name: &quot;SONARQUBE_JDBC_PASSWORD&quot;
              valueFrom:
                secretKeyRef:
                  name: postgres
                  key: password
          ports:
            - containerPort: 9000
              protocol: TCP
      volumes:
        - name: sonar-data
          persistentVolumeClaim:
            claimName: sonar-data
        - name: sonar-extensions
          persistentVolumeClaim:
            claimName: sonar-extensions&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;496&quot; data-origin-height=&quot;54&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbdyor/btrGjE4b28h/fw7w3hDaUmsZ6PzUKwOvaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbdyor/btrGjE4b28h/fw7w3hDaUmsZ6PzUKwOvaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbdyor/btrGjE4b28h/fw7w3hDaUmsZ6PzUKwOvaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbbdyor%2FbtrGjE4b28h%2Ffw7w3hDaUmsZ6PzUKwOvaK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;496&quot; height=&quot;54&quot; data-origin-width=&quot;496&quot; data-origin-height=&quot;54&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;h4 data-ke-size=&quot;size20&quot;&gt;서비스 생성&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;sonar-svc.yaml&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1656849774787&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: Service
metadata:
  labels:
    app: sonarqube
  name: sonarqube
spec:
  ports:
    - name: sonar
      port: 80
      protocol: TCP
      targetPort: 9000
  selector:
    app: sonarqube
  type: LoadBalancer&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;644&quot; data-origin-height=&quot;75&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wt2f5/btrFJ9vygER/tR9TljAzUoElqaA4jm8itK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wt2f5/btrFJ9vygER/tR9TljAzUoElqaA4jm8itK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wt2f5/btrFJ9vygER/tR9TljAzUoElqaA4jm8itK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwt2f5%2FbtrFJ9vygER%2FtR9TljAzUoElqaA4jm8itK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;644&quot; height=&quot;75&quot; data-origin-width=&quot;644&quot; data-origin-height=&quot;75&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 external-ip로 서비스 접속 확인&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1213&quot; data-origin-height=&quot;865&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1Fn5L/btrGjFvjT7q/9jllBMdtDCKiK6VCpx0X61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1Fn5L/btrGjFvjT7q/9jllBMdtDCKiK6VCpx0X61/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1Fn5L/btrGjFvjT7q/9jllBMdtDCKiK6VCpx0X61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1Fn5L%2FbtrGjFvjT7q%2F9jllBMdtDCKiK6VCpx0X61%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1213&quot; height=&quot;865&quot; data-origin-width=&quot;1213&quot; data-origin-height=&quot;865&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;References:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://medium.com/@akamenev/running-sonarqube-on-azure-kubernetes-92a1b9051120&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://medium.com/@akamenev/running-sonarqube-on-azure-kubernetes-92a1b9051120&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1656850247754&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;Running SonarQube on Kubernetes&quot; data-og-description=&quot;Running SonarQube on Kubernetes&quot; data-og-host=&quot;medium.com&quot; data-og-source-url=&quot;https://medium.com/@akamenev/running-sonarqube-on-azure-kubernetes-92a1b9051120&quot; data-og-url=&quot;https://medium.com/@akamenev/running-sonarqube-on-azure-kubernetes-92a1b9051120&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cigpCt/hyOYgMtg83/Ux0y5ERiuVq5Dr7tEkbe70/img.png?width=1200&amp;amp;height=399&amp;amp;face=0_0_1200_399,https://scrap.kakaocdn.net/dn/W0Ybr/hyOYndIvEP/c4epyer7QN0m1YfB1l1CEK/img.png?width=1400&amp;amp;height=903&amp;amp;face=0_0_1400_903,https://scrap.kakaocdn.net/dn/dE8yD2/hyOYf7RLJG/O5wpO0ToeHtmjmG8jrMlbk/img.png?width=1400&amp;amp;height=465&amp;amp;face=0_0_1400_465&quot;&gt;&lt;a href=&quot;https://medium.com/@akamenev/running-sonarqube-on-azure-kubernetes-92a1b9051120&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://medium.com/@akamenev/running-sonarqube-on-azure-kubernetes-92a1b9051120&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cigpCt/hyOYgMtg83/Ux0y5ERiuVq5Dr7tEkbe70/img.png?width=1200&amp;amp;height=399&amp;amp;face=0_0_1200_399,https://scrap.kakaocdn.net/dn/W0Ybr/hyOYndIvEP/c4epyer7QN0m1YfB1l1CEK/img.png?width=1400&amp;amp;height=903&amp;amp;face=0_0_1400_903,https://scrap.kakaocdn.net/dn/dE8yD2/hyOYf7RLJG/O5wpO0ToeHtmjmG8jrMlbk/img.png?width=1400&amp;amp;height=465&amp;amp;face=0_0_1400_465');&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;Running SonarQube on Kubernetes&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Running SonarQube on Kubernetes&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;medium.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>DevOps/Kubernetes</category>
      <category>k8s sonarqube</category>
      <category>kubernetes sonarqube</category>
      <category>SonarQube</category>
      <category>쿠버네티스 소나큐브</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/196</guid>
      <comments>https://hungc.tistory.com/196#entry196comment</comments>
      <pubDate>Sat, 25 Jun 2022 14:14:48 +0900</pubDate>
    </item>
    <item>
      <title>쿠버네티스 워커노드 초기화</title>
      <link>https://hungc.tistory.com/195</link>
      <description>&lt;pre id=&quot;code_1655003458391&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubeadm reset&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;명령어를 수행하면 아래와 같이 메시지가 나오고 메뉴얼대로 /etc/cni/net.d 삭제할 것&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;835&quot; data-origin-height=&quot;131&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zZgiX/btrEvM4cUXY/xhkNGWWA8LYCXqkryPcliK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zZgiX/btrEvM4cUXY/xhkNGWWA8LYCXqkryPcliK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zZgiX/btrEvM4cUXY/xhkNGWWA8LYCXqkryPcliK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzZgiX%2FbtrEvM4cUXY%2FxhkNGWWA8LYCXqkryPcliK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;835&quot; height=&quot;131&quot; data-origin-width=&quot;835&quot; data-origin-height=&quot;131&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>DevOps/Kubernetes</category>
      <category>kubernetes</category>
      <category>워커노드 초기화</category>
      <category>쿠버네티스</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/195</guid>
      <comments>https://hungc.tistory.com/195#entry195comment</comments>
      <pubDate>Sun, 12 Jun 2022 12:11:23 +0900</pubDate>
    </item>
    <item>
      <title>google-cloud-sdk 설치</title>
      <link>https://hungc.tistory.com/193</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;google-cloud-sdk&amp;nbsp;설치&lt;/h2&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;echo &quot;deb [signed-by=/usr/share/keyrings/cloud.google.gpg] http://packages.cloud.google.com/apt cloud-sdk main&quot; | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list

curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -

sudo apt-get update

sudo apt-get install google-cloud-sdk&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>DevOps/Cloud</category>
      <category>google cloud sdk</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/193</guid>
      <comments>https://hungc.tistory.com/193#entry193comment</comments>
      <pubDate>Mon, 23 May 2022 10:58:00 +0900</pubDate>
    </item>
    <item>
      <title>여의도 오마카세 스시코하루</title>
      <link>https://hungc.tistory.com/192</link>
      <description>&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #fafbfc; color: #000000;&quot;&gt;여의도&amp;nbsp;오마카세&amp;nbsp;스시코하루&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #fafbfc; color: #000000;&quot;&gt;서울 영등포구 국제금융로8길 27-9 지하 1층 101호&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;캐치테이블로 예약 필요&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c3VKqk/btrCJTKwNkY/MOotTsiIgQH7WtHyxbCGP1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c3VKqk/btrCJTKwNkY/MOotTsiIgQH7WtHyxbCGP1/img.jpg&quot; data-alt=&quot;입구&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c3VKqk/btrCJTKwNkY/MOotTsiIgQH7WtHyxbCGP1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc3VKqk%2FbtrCJTKwNkY%2FMOotTsiIgQH7WtHyxbCGP1%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;3000&quot; height=&quot;4000&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;입구&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;3686&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yop3V/btrCMaEulCr/Cdz6yQnKDHbkK6Ei0ESNk0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yop3V/btrCMaEulCr/Cdz6yQnKDHbkK6Ei0ESNk0/img.jpg&quot; data-alt=&quot;내부&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yop3V/btrCMaEulCr/Cdz6yQnKDHbkK6Ei0ESNk0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fyop3V%2FbtrCMaEulCr%2FCdz6yQnKDHbkK6Ei0ESNk0%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;3000&quot; height=&quot;3686&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;3686&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;내부&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIRyoK/btrCKjB99EU/DNtHYkuNNPJ0QHKKTSD4Y0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIRyoK/btrCKjB99EU/DNtHYkuNNPJ0QHKKTSD4Y0/img.jpg&quot; data-alt=&quot;계란찜&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIRyoK/btrCKjB99EU/DNtHYkuNNPJ0QHKKTSD4Y0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIRyoK%2FbtrCKjB99EU%2FDNtHYkuNNPJ0QHKKTSD4Y0%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;3000&quot; height=&quot;4000&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;계란찜&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dcBfeC/btrCKja41lC/QLI5vf8exfOvw69kPhgXGK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dcBfeC/btrCKja41lC/QLI5vf8exfOvw69kPhgXGK/img.jpg&quot; data-alt=&quot;전복과 전복내장&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dcBfeC/btrCKja41lC/QLI5vf8exfOvw69kPhgXGK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdcBfeC%2FbtrCKja41lC%2FQLI5vf8exfOvw69kPhgXGK%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;3000&quot; height=&quot;4000&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;전복과 전복내장&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Hv0Kz/btrCMcvxb1Z/ZaH4TfvkOIGN9wNyQ42sN0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Hv0Kz/btrCMcvxb1Z/ZaH4TfvkOIGN9wNyQ42sN0/img.jpg&quot; data-alt=&quot;숙성시킨 광어&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Hv0Kz/btrCMcvxb1Z/ZaH4TfvkOIGN9wNyQ42sN0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHv0Kz%2FbtrCMcvxb1Z%2FZaH4TfvkOIGN9wNyQ42sN0%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;4000&quot; height=&quot;3000&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;숙성시킨 광어&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UoE5G/btrCIHRAcMY/gQl7kKhoX4PIGililjlB20/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UoE5G/btrCIHRAcMY/gQl7kKhoX4PIGililjlB20/img.jpg&quot; data-alt=&quot;참돔&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UoE5G/btrCIHRAcMY/gQl7kKhoX4PIGililjlB20/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUoE5G%2FbtrCIHRAcMY%2FgQl7kKhoX4PIGililjlB20%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;4000&quot; height=&quot;3000&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;참돔&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cnFwim/btrCJvXpblA/4e56bWKFQRXKkydMLEY0XK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cnFwim/btrCJvXpblA/4e56bWKFQRXKkydMLEY0XK/img.jpg&quot; data-alt=&quot;참치중뱃살&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cnFwim/btrCJvXpblA/4e56bWKFQRXKkydMLEY0XK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcnFwim%2FbtrCJvXpblA%2F4e56bWKFQRXKkydMLEY0XK%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;4000&quot; height=&quot;3000&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;참치중뱃살&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cS5WYS/btrCIGyjsMR/h82tF3exjTbvrzuATs4my0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cS5WYS/btrCIGyjsMR/h82tF3exjTbvrzuATs4my0/img.jpg&quot; data-alt=&quot;한치&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cS5WYS/btrCIGyjsMR/h82tF3exjTbvrzuATs4my0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcS5WYS%2FbtrCIGyjsMR%2Fh82tF3exjTbvrzuATs4my0%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;4000&quot; height=&quot;3000&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;한치&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqFcR2/btrCKXyQ5NM/aG4hNiRQZvJXolyXTBYnEk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqFcR2/btrCKXyQ5NM/aG4hNiRQZvJXolyXTBYnEk/img.jpg&quot; data-alt=&quot;단새우 with 우니크림&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqFcR2/btrCKXyQ5NM/aG4hNiRQZvJXolyXTBYnEk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqFcR2%2FbtrCKXyQ5NM%2FaG4hNiRQZvJXolyXTBYnEk%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;3000&quot; height=&quot;4000&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;단새우 with 우니크림&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2bKi7/btrCI37V4fD/mlxl3MRRZK1rQ7UWDXxzpk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2bKi7/btrCI37V4fD/mlxl3MRRZK1rQ7UWDXxzpk/img.jpg&quot; data-alt=&quot;간장에 절인 참치속살&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2bKi7/btrCI37V4fD/mlxl3MRRZK1rQ7UWDXxzpk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2bKi7%2FbtrCI37V4fD%2Fmlxl3MRRZK1rQ7UWDXxzpk%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;3000&quot; height=&quot;4000&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;간장에 절인 참치속살&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b42FIw/btrCMWssOte/TCMYY6xn1jfyIkddavUwO0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b42FIw/btrCMWssOte/TCMYY6xn1jfyIkddavUwO0/img.jpg&quot; data-alt=&quot;잿방어&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b42FIw/btrCMWssOte/TCMYY6xn1jfyIkddavUwO0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb42FIw%2FbtrCMWssOte%2FTCMYY6xn1jfyIkddavUwO0%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;4000&quot; height=&quot;3000&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;잿방어&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/srRbV/btrCNNaYmCz/nusZfGCY1ccknUJfFYYXK0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/srRbV/btrCNNaYmCz/nusZfGCY1ccknUJfFYYXK0/img.jpg&quot; data-alt=&quot;줄무늬 전갱이&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/srRbV/btrCNNaYmCz/nusZfGCY1ccknUJfFYYXK0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsrRbV%2FbtrCNNaYmCz%2FnusZfGCY1ccknUJfFYYXK0%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;4000&quot; height=&quot;3000&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;줄무늬 전갱이&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SeM6Z/btrCJSSix3r/7KIkYBcIGL39cspbcriaY1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SeM6Z/btrCJSSix3r/7KIkYBcIGL39cspbcriaY1/img.jpg&quot; data-alt=&quot;청어&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SeM6Z/btrCJSSix3r/7KIkYBcIGL39cspbcriaY1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSeM6Z%2FbtrCJSSix3r%2F7KIkYBcIGL39cspbcriaY1%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;4000&quot; height=&quot;3000&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;청어&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tQhWO/btrCJUimVgA/VKwND1ivPv4V2jRJJ0wnR0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tQhWO/btrCJUimVgA/VKwND1ivPv4V2jRJJ0wnR0/img.jpg&quot; data-alt=&quot;홍새우&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tQhWO/btrCJUimVgA/VKwND1ivPv4V2jRJJ0wnR0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtQhWO%2FbtrCJUimVgA%2FVKwND1ivPv4V2jRJJ0wnR0%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;3000&quot; height=&quot;4000&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;홍새우&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wpZZR/btrCLBh1qMH/jK25ftrwScPk2PuYUMNvTK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wpZZR/btrCLBh1qMH/jK25ftrwScPk2PuYUMNvTK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wpZZR/btrCLBh1qMH/jK25ftrwScPk2PuYUMNvTK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwpZZR%2FbtrCLBh1qMH%2FjK25ftrwScPk2PuYUMNvTK%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;3000&quot; height=&quot;4000&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cUkO1F/btrCLAJ87IY/7Lv6kBFjtYZMjmfyPKFul1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cUkO1F/btrCLAJ87IY/7Lv6kBFjtYZMjmfyPKFul1/img.jpg&quot; data-alt=&quot;고등어봉초밥&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cUkO1F/btrCLAJ87IY/7Lv6kBFjtYZMjmfyPKFul1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcUkO1F%2FbtrCLAJ87IY%2F7Lv6kBFjtYZMjmfyPKFul1%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;3000&quot; height=&quot;4000&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;고등어봉초밥&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boXpjc/btrCJUvQhsL/F4xaOyk9kPc2NSynNGOMi0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boXpjc/btrCJUvQhsL/F4xaOyk9kPc2NSynNGOMi0/img.jpg&quot; data-alt=&quot;간장에 절인 삼치&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boXpjc/btrCJUvQhsL/F4xaOyk9kPc2NSynNGOMi0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboXpjc%2FbtrCJUvQhsL%2FF4xaOyk9kPc2NSynNGOMi0%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;3000&quot; height=&quot;4000&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;간장에 절인 삼치&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/85gES/btrCI4eF4Ls/yEOwRMoeet0g2l0KXDpo4K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/85gES/btrCI4eF4Ls/yEOwRMoeet0g2l0KXDpo4K/img.jpg&quot; data-alt=&quot;연근, 새우튀김 고로케&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/85gES/btrCI4eF4Ls/yEOwRMoeet0g2l0KXDpo4K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F85gES%2FbtrCI4eF4Ls%2FyEOwRMoeet0g2l0KXDpo4K%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;3000&quot; height=&quot;4000&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;연근, 새우튀김 고로케&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/u0XSI/btrCKknzpDx/g7kmc7wSdteGleAzIR0ON1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/u0XSI/btrCKknzpDx/g7kmc7wSdteGleAzIR0ON1/img.jpg&quot; data-alt=&quot;뭐였지?&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/u0XSI/btrCKknzpDx/g7kmc7wSdteGleAzIR0ON1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fu0XSI%2FbtrCKknzpDx%2Fg7kmc7wSdteGleAzIR0ON1%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;4000&quot; height=&quot;3000&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;뭐였지?&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/emEeAY/btrCKWNs98a/L0wNsL4T2R3clFQc4ewWG0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/emEeAY/btrCKWNs98a/L0wNsL4T2R3clFQc4ewWG0/img.jpg&quot; data-alt=&quot;지라시스시 with 아귀간&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/emEeAY/btrCKWNs98a/L0wNsL4T2R3clFQc4ewWG0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FemEeAY%2FbtrCKWNs98a%2FL0wNsL4T2R3clFQc4ewWG0%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;3000&quot; height=&quot;4000&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;지라시스시 with 아귀간&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cWd2ka/btrCMWMLJJM/OZ4JzpcRPZksg2abiSVFQK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cWd2ka/btrCMWMLJJM/OZ4JzpcRPZksg2abiSVFQK/img.jpg&quot; data-alt=&quot;바다장어&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cWd2ka/btrCMWMLJJM/OZ4JzpcRPZksg2abiSVFQK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWd2ka%2FbtrCMWMLJJM%2FOZ4JzpcRPZksg2abiSVFQK%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;4000&quot; height=&quot;3000&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;바다장어&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c5TvyD/btrCNOAWWab/IV10ViKR1YUJ9HT9cZJbnK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c5TvyD/btrCNOAWWab/IV10ViKR1YUJ9HT9cZJbnK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c5TvyD/btrCNOAWWab/IV10ViKR1YUJ9HT9cZJbnK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc5TvyD%2FbtrCNOAWWab%2FIV10ViKR1YUJ9HT9cZJbnK%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;3000&quot; height=&quot;4000&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/S0j2Z/btrCKi4j3TY/zOXDfkUzo6PeHpbKqRxmV1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/S0j2Z/btrCKi4j3TY/zOXDfkUzo6PeHpbKqRxmV1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/S0j2Z/btrCKi4j3TY/zOXDfkUzo6PeHpbKqRxmV1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FS0j2Z%2FbtrCKi4j3TY%2FzOXDfkUzo6PeHpbKqRxmV1%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;3000&quot; height=&quot;4000&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yPw6w/btrCKkgLhag/D5Kk2sz97DWPm9TrKbbZt1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yPw6w/btrCKkgLhag/D5Kk2sz97DWPm9TrKbbZt1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yPw6w/btrCKkgLhag/D5Kk2sz97DWPm9TrKbbZt1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyPw6w%2FbtrCKkgLhag%2FD5Kk2sz97DWPm9TrKbbZt1%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;3000&quot; height=&quot;4000&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/x9El3/btrCMXEUCKN/SepLxzogA74cM5iVjV8oVk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/x9El3/btrCMXEUCKN/SepLxzogA74cM5iVjV8oVk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/x9El3/btrCMXEUCKN/SepLxzogA74cM5iVjV8oVk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fx9El3%2FbtrCMXEUCKN%2FSepLxzogA74cM5iVjV8oVk%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;3000&quot; height=&quot;4000&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sbDZg/btrCKX6HEz3/dibo1SXM9jhSneX93bDSCk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sbDZg/btrCKX6HEz3/dibo1SXM9jhSneX93bDSCk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sbDZg/btrCKX6HEz3/dibo1SXM9jhSneX93bDSCk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsbDZg%2FbtrCKX6HEz3%2Fdibo1SXM9jhSneX93bDSCk%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;3000&quot; height=&quot;4000&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Daily</category>
      <category>스시코하루</category>
      <category>여의도 맛집</category>
      <category>여의도 스시코하루</category>
      <category>여의도 오마카세</category>
      <category>오마카세</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/192</guid>
      <comments>https://hungc.tistory.com/192#entry192comment</comments>
      <pubDate>Sat, 21 May 2022 19:19:47 +0900</pubDate>
    </item>
    <item>
      <title>쿠버네티스(Kubernetes) PV, PVC</title>
      <link>https://hungc.tistory.com/191</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;쿠버네티스(Kubernetes) PV, PVC&lt;/h2&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;1165&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdTp2r/btrIzD2DeVN/O1p5MYW0n4KIktiVbe7cc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdTp2r/btrIzD2DeVN/O1p5MYW0n4KIktiVbe7cc0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdTp2r/btrIzD2DeVN/O1p5MYW0n4KIktiVbe7cc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdTp2r%2FbtrIzD2DeVN%2FO1p5MYW0n4KIktiVbe7cc0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;250&quot; height=&quot;243&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;1165&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여태껏 각 포드는 별도의 데이터를 갖고 있지 않았고 단순히 요청에 대한 응답만을 반환했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DB처럼 포드 내부에서 특정 데이터를 보유해야 하는 상태가 있는(stateful) 애플리케이션의 경우 데이터를 어떻게 관리해야 할지 고민해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MySQL 디플로이먼트를 통해 포드를 생성했더라도 디플로이먼트를 삭제하면 포드도 함께 삭제되고 데이터도 함께 삭제된다. 이를 해결하기위해 쿠버네티스에서도 호스트에 위치한 디렉토리를 각 포드와 공유함으로써 데이터를 보존하는 것이 가능하다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1240&quot; data-origin-height=&quot;627&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/v8tgO/btrFAQjb5x6/K3qhH3DjUtQ3w5oIvVarK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/v8tgO/btrFAQjb5x6/K3qhH3DjUtQ3w5oIvVarK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/v8tgO/btrFAQjb5x6/K3qhH3DjUtQ3w5oIvVarK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fv8tgO%2FbtrFAQjb5x6%2FK3qhH3DjUtQ3w5oIvVarK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1240&quot; height=&quot;627&quot; data-origin-width=&quot;1240&quot; data-origin-height=&quot;627&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;로컬볼륨: hostPath, emptyDir&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;hostPath는 호스트와 볼륨을 공유하기 위해 사용하고 emptyDir은 포드의 컨테이너 간에 볼륨을 공유하기 위해 사용함&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;워커 노드의 로컬 디렉터리를 볼륨으로 사용: hostPath&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포드의 데이터를 보존할 수 있는 가장 간단한 방법은 호스트의 디렉터리를 포드와 공유하는 것&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;lt;hostpath-pod.yaml&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1653032834478&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: Pod
metadata:
  name: hostpath-pod
spec:
  containers:
    - name: my-container
      image: busybox
      args: [ &quot;tail&quot;, &quot;-f&quot;, &quot;/dev/null&quot; ]
      volumeMounts:
      - name: my-hostpath-volume
        mountPath: /etc/data
  volumes:
    - name: my-hostpath-volume
      hostPath:
        path: /tmp&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;volumes 항목에 볼륨을 정의한 뒤, 이를 containers 항목에서 참조해서 사용함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;호스트의 /tmp를 포드의 /etc/data에 마운트 함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1653035642720&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl apply -f hostpath-pod.yaml  
$ kubectl exec -it hostpath-pod touch /etc/data/mydata&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포드가 생성된 워커 노드로 접속한 뒤, /tmp 디렉터리를 확인하면 확인 가능함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고) volumes.hostPath.type에 DirectoryOrCreate를 명시하면 실제 경로가 없다면 새로 생성함&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DirectoryOrCreate : 실제 경로가 없다면 생성&lt;/li&gt;
&lt;li&gt;Directory : 실제 경로가 있어야됨&lt;/li&gt;
&lt;li&gt;FileOrCreate : 실제 경로에 파일이 없다면 생성&lt;/li&gt;
&lt;li&gt;File : 실제 파일이 었어야함&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 위와 같은 데이터 보존은 바람직하지 않다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디플로이먼트의 포드에 장애가 생겨 다른 노드로 포드가 옮겨간 경우 이전 노드에 저장된 데이터를 사용할 수 없기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정 노드에만 포드를 배치하는 방법도 생각할 수 있지만 이 방법 또한 호스트 서버에 장애가 생기면 데이터를 잃게 된다는 단점이 존재한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;hostPath 볼륨은 모든 노드에 배치해야 하는 특수한 포드의 경우에 유용하게 사용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 CAdvisor와 같은 모니터링 툴을 쿠버네티스의 모든 워커 노드에 배포해야 한다면 hostPath를 사용하는 것이 옳을 수 있지만 그 외에는 보안 및 활용성 측면에서 그다지 바람직하지 않으므로 사용을 고려해보는 것이 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;포드 내의 컨테이너 간 임시 데이터 공유: emptyDir&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포드가 실행되는 도중에만 필요한 휘발성 데이터를 각 컨테이너가 함께 사용할 수 있도록 임시저장 공간을 생성함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;lt;empty-pod.yaml&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1653097051697&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: Pod
metadata:
  name: emptydir-pod
spec:
  containers:
    - name: content-creator
      image: alicek106/alpine-wget:latest
      args: [&quot;tail&quot; , &quot;-f&quot;, &quot;/dev/null&quot;]
      volumeMounts:
        - name: my-emptydir-volume
          mountPath: /data 

    - name: apache-webserver
      image: httpd:2
      volumeMounts:
        - name: my-emptydir-volume
          mountPath: /usr/local/apache2/htdocs

  volumes:
    - name: my-emptydir-volume
      emptyDir: {}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1653097062130&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl apply -f emptydir-pod.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;content-creator 컨테이너 내부로 들어가 /data 디렉터리에 웹 컨텐츠를 생성하면 apache-webserver 컨테이너의 htdocs 디렉터리에도 동일하게 웹 컨텐츠 파일이 생성될 것이고(mount 명령어로 확인 가능), 이는 최종적으로 웹 서버에 의해 외부에 제공됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&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;NFS(Network File System)는 대부분의 운영체제에서 사용할 수 있는 네트워크 스토리지로 여러 개의 클라이언트가 동시에 마운트 해서 사용할 수 있는 특징이 있다. NFS는 NFS 서버와 NFS 클라이언트가 필요하며, 서버는 영속적인 데이터가 저장되는 네트워크 스토리지 서버이며, 클라이언트는 NFS 서버에 마운트해 스토리지에 파일을 읽고 쓰는 역할이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;임시 NFS 서버 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;lt;nfs-deployment.yaml&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1653134073475&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: apps/v1
kind: Deployment
metadata:
  name: nfs-server
spec:
  selector:
    matchLabels:
      role: nfs-server
  template:
    metadata:
      labels:
        role: nfs-server
    spec:
      containers:
        - name: nfs-server
          image: gcr.io/google_containers/volume-nfs:0.8
          ports:
            - name: nfs
              containerPort: 2049
            - name: mountd
              containerPort: 20048
            - name: rpcbind
              containerPort: 111
          securityContext:
            priviledged: true&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;lt;nfs-service.yaml&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1653134103083&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: Service
metadata:
  name: nfs-service
spec:
  ports:
    - name: nfs
      port: 2049
    - name: mountd
      port: 20048
    - name: rpcbind
      port: 111
  selector:
    role: nfs-server&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1653134111491&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl apply -f nfs-deployment.yaml
$ kubectl apply -f nfs-service.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;lt;nfs-pod.yaml&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1653134159493&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: Pod
metadata:
  name: nfs-pod
spec:
  contaIners:
    - name: nfs-mount-container
      image: busybox
      args: [ &quot;tail&quot; , &quot;-f&quot; , &quot;/dev/null&quot; ]
      volumeMounts:
        - name: nfs-volume
          mountPath: /mnt 
  volumes:
    - name : nfs-volume
      nfs:
        path: /
        server: {NFS_SERVICE_IP}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포드 컨테이너의 /mnt 디렉터리에 파일을 저장하면 NFS 서버에 데이터가 저장됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NFS 볼륨의 마운트는 컨테이너 내부가 아닌 워커 노드에서 발생하므로 서비스의 DNS 이름으로 NFS 서버에 접근할 수 없으므로 NFS 서비스의 Cluser IP를 직접 얻은 뒤 YAML 파일에 사용하는 방식으로 포드를 생성해보자.&lt;/p&gt;
&lt;pre id=&quot;code_1653134307586&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ export NFS_CLUSTER_IP=$(kubectl get svc/nfs-service -o jsonpath='{.spec.clusterIP}')
$ cat nfs-pod.yaml | sed &quot;s/{NFS_SERVICE_IP}/$NFS_CLUSTER_IP/g&quot; | kubectl apply -f -&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;756&quot; data-origin-height=&quot;255&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bltWIi/btrCMccn8fW/O011zVIrPzcfVokkqov85k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bltWIi/btrCMccn8fW/O011zVIrPzcfVokkqov85k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bltWIi/btrCMccn8fW/O011zVIrPzcfVokkqov85k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbltWIi%2FbtrCMccn8fW%2FO011zVIrPzcfVokkqov85k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;756&quot; height=&quot;255&quot; data-origin-width=&quot;756&quot; data-origin-height=&quot;255&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;883&quot; data-origin-height=&quot;89&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Owowq/btrCMW8aVv7/zCMcwTS3uv9xyKHHksxSH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Owowq/btrCMW8aVv7/zCMcwTS3uv9xyKHHksxSH0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Owowq/btrCMW8aVv7/zCMcwTS3uv9xyKHHksxSH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOwowq%2FbtrCMW8aVv7%2FzCMcwTS3uv9xyKHHksxSH0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;883&quot; height=&quot;89&quot; data-origin-width=&quot;883&quot; data-origin-height=&quot;89&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혹시 ContainerCreating 상태에서 파드가 생성되지 않는다면 kubectl describe pods 명령어로 무엇이 문제인지 파악하고 포드가 할당된 워커노드에서 apt-get install nfs-common 명령어로 패키지를 설치해야 함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NFS 서버가 /mnt 디렉터리에 마운트 됐으므로 포드의 컨테이너 내부의 /mnt 디렉터리에 저장된 파일은 포드가 다른 노드로 옮겨가거나 포드를 재시작해도 삭제되지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 운영 환경에서는 NFS 서버를 도입하려면 백업 스토리지를 구축해 NFS 데이터 손실에 대비하거나 서버의 설정 튜닝 및 접근하기 위한 DNS를 준비해야 할 수도 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;PV, PVC를 이용한 볼륨 관리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PV와 PVC는 포드를 생성하는 YAML 입장에서 네트워크 볼륨이 NFS인지, AWS의 EBS 인지 상관없이 볼륨을 사용할 수 있도록 추상화해주는 역할을 담당한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인프라 관리자는 네트워크 볼륨의 정보를 이용해 퍼시스턴트 볼륨 리소스를 미리 생성해두고 사용자(개발자)는 퍼시스턴트 볼륨 클레임을 명시하고 생성하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AWS의 EBS를 퍼시스턴트 볼륨으로 사용해보는 예제(EBS 생성했다는 가정)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;lt;ebs-pv.yaml&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1653139085376&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: PersistentVolume
metadata:
  name: ebs-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce 
  awsElasticBlockStore:
    fsType: ext4
    volumeID: &amp;lt;VOLUME_ID&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5Gi 볼륨의 크기와 ReadWriteOnce는 해당 볼륨이 1:1로 마운트 가능함을 의미한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 항목들은 볼륨의 속성을 나타내며, 퍼시스턴트 볼륨 클레임의 요구 조건을 매칭할 때 사용한다.&lt;/p&gt;
&lt;pre id=&quot;code_1653139199534&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ cat ebs-pv.yaml | sed &quot;s/&amp;lt;VOLUME_ID&amp;gt;/$VOLUME_ID/g&quot; | kubectl apply -f -
$ kubectl get pv&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아직 퍼시스턴트 볼륨 클레임을 생성하지 않았기 때문에 Status가 Available로 나오는 것을 확인할 수 있음&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;62&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tmNij/btrCOqmTLPl/OjNHrkPcGTMzyrtwqdSGLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tmNij/btrCOqmTLPl/OjNHrkPcGTMzyrtwqdSGLk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tmNij/btrCOqmTLPl/OjNHrkPcGTMzyrtwqdSGLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtmNij%2FbtrCOqmTLPl%2FOjNHrkPcGTMzyrtwqdSGLk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;940&quot; height=&quot;62&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;62&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;&amp;lt;ebs-pod-pvc.yaml&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1653139316849&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-ebs-pvc
spec:
  storageClassName: &quot;&quot;
  accessModes:
    - ReadWriteOnce 
  resources:
    requests:
      storage: 5Gi
 
-----
apiVersion: v1
kind: Pod
metadata:
  name: ebs-mount-container
spec:
  containers:
    - name: ebs-mount-container
      image: busybox
      args: [&quot;tail&quot;, &quot;-f&quot;, &quot;/dev/null&quot;]
      volumeMounts:
        - name: ebs-volume
          mountPath: /mnt
  volumes:
    - name: ebs-volume
      persistentVolumeClaim:
        className: my-ebs-pvc&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포드와 퍼시스턴트 볼륨 생성&lt;/p&gt;
&lt;pre id=&quot;code_1653139413766&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl apply -f ebs-pod-pvc.yaml
$ kubectl get pv, pvc
$ kubectl get pods
$ kubectl exec ebs-mount-container -- df -h | grep /mnt&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;80&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4L7pa/btrCPIuD89N/npKzlyWTfPih1uvIvplu71/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4L7pa/btrCPIuD89N/npKzlyWTfPih1uvIvplu71/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4L7pa/btrCPIuD89N/npKzlyWTfPih1uvIvplu71/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4L7pa%2FbtrCPIuD89N%2FnpKzlyWTfPih1uvIvplu71%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;940&quot; height=&quot;80&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;80&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요약하자면..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AWS에서 EBS 볼륨을 생성하고 ebs-pv.yaml 파일을 통해 퍼시스턴트 볼륨을 등록한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ebs-pod-pvc.yaml 파일을 통해 퍼시스턴트 볼륨 클레임을 생성하고, 요구조건이 만족되면 퍼시스턴트 볼륨과 퍼시스턴트 볼륨 클레임이 bound 된다. 마지막으로 파드에서 볼륨 클레임을 사용한다고 명시하면 최종적으로 EBS 볼륨이 컨테이너 내부에 마운트된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;퍼시스턴트 볼륨을 선택하기 위한 조건 명시로 accessMode, 볼륨 크기 등이 이런 조건에 해당한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;accessMode와 볼륨 크기, 스토리지 클래스, 라벨 셀렉터를 이용한 퍼시스턴트 볼륨을 선택할 수 있다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ReadWriteOnce(RWO) -&amp;gt; 1:1 마운트만 가능, 읽기 쓰기 가능&lt;/li&gt;
&lt;li&gt;ReadOnlyMany(ROX) -&amp;gt; 1:N 마운트 가능, 읽기 전용&lt;/li&gt;
&lt;li&gt;ReadWriteMany(RWX) -&amp;gt; 1:N 마운트 가능, 읽기 쓰기 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;storageClassName 이름을 사용하면 일치하는 퍼시스턴트 볼륨과 퍼시스턴트 볼륨 클레임이 서로 연결된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또는 라벨 셀렉터를 사용할 수도 있다. labels &amp;lt;-&amp;gt; selector.matchLabels&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&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;Recliam Policy&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;퍼시스턴트 볼륨은 처음에 생성했을 때 Status가 Available 이었다가 퍼시스턴트 볼륨 클레임을 연결하면 Bound로 변경됐는데, 퍼시스턴트 볼륨 클레임을 삭제하면 다시 Available이 되는 것이 아니라 Released로 변경된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Released 상태의 퍼시스턴트 볼륨은 다시 사용할 수 없지만 데이터는 볼륨안에 보존되어 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;퍼시스턴트 볼륨의 사용이 끝났을 때 해당 볼륨을 어떻게 초기화할 것인지 별도로 설정할 수 있는데, 이를 Reclaim Policy라고 한다. Retain, Delete, Recycle 방식이 있으며, 기본적으로 데이터를 보존하는 방식인 Retain을 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Delete는 PV도 함께 삭제되는 방식이며, Recycle은 deprecated 될 예정이다.&lt;/p&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;다이나믹 프로비저닝은 퍼시스턴트 볼륨 클레임이 요구하는 조건과 일치하는 퍼시스턴트 볼륨이 존재하지 않는다면 자동으로 퍼시스턴트 볼륨과 외부 스토리지를 함께 프로비저닝 하는 기능이다.&lt;/p&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;&amp;lt;storageclass-slow.yaml&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1653147469216&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: slow
provisioner: kubernetes.io/aws-ebs
parameters:
  type: st1
  fsType: ext4
  zones: ap-northeast-2a&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;lt;storageclass-fast.yaml&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1653147498442&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: fast
provisioner: kubernetes.io/aws-ebs
parameters:
  type: gp2
  fsType: ext4
  zones: ap-northeast-2a&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스토리지 클래스 생성&lt;/p&gt;
&lt;pre id=&quot;code_1653147528924&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl apply -f storageclass-slow.yaml
$ kubectl apply -f storageclass-fast.yaml
$ kubectl get sc&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;lt;pvc-fast-sc.yaml&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1653147619040&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-fast-sc
spec:
  storageClassName: fast
  accessModes:
    ReadWriteOnce
  Resources:
    requests:
      storage: 1Gi&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1653147629704&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; $ kubectl apply -f pvc-fast-sc.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원래라면 퍼시스턴트 볼륨이 없기 때문에 퍼시스턴트 볼륨 클레임은 계속 pending 상태로 남아있어야 하지만 다이나믹 프로비저닝을 통해 동적으로 SSD 타입의 EBS가 생성되고, 이로부터 퍼시스턴트 볼륨이 생성된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&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-origin-width=&quot;541&quot; data-origin-height=&quot;238&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/loOEj/btrCOJNDoz9/5kabsOt2zyOa2syVCkAQOK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/loOEj/btrCOJNDoz9/5kabsOt2zyOa2syVCkAQOK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/loOEj/btrCOJNDoz9/5kabsOt2zyOa2syVCkAQOK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FloOEj%2FbtrCOJNDoz9%2F5kabsOt2zyOa2syVCkAQOK%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;541&quot; height=&quot;238&quot; data-origin-width=&quot;541&quot; data-origin-height=&quot;238&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1653192463046&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-03
spec:
  capacity:
    storage: 2G
  accessModes:
  - ReadWriteOnce
  local:
    path: /node-v
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - {key: kubernetes.io/hostname, operator: In, values: [k8s-node1]}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1653192471986&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-01
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 1G
  storageClassName: &quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1653192480582&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: Pod
metadata:
  name: pod-volume-3
spec:
  containers:
  - name: container
    image: kubetm/init
    volumeMounts:
    - name: pvc-pv
      mountPath: /mount3
  volumes:
  - name : pvc-pv
    persistentVolumeClaim:
      claimName: pvc-01&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;References:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;http://www.yes24.com/Product/Goods/84927385&quot;&gt;http://www.yes24.com/Product/Goods/84927385&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1659233100718&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;book&quot; data-og-title=&quot;시작하세요! 도커/쿠버네티스 - YES24&quot; data-og-description=&quot;본서는 도커를 처음 접하는 개발자를 위한 도커 컨테이너와 이미지의 기본적인 개념을 먼저 설명한 뒤, 도커 컴포즈와 스웜 모드를 통해 컨테이너 애플리케이션을 YAML 파일로 작성하고 클러스&quot; data-og-host=&quot;www.yes24.com&quot; data-og-source-url=&quot;http://www.yes24.com/Product/Goods/84927385&quot; data-og-url=&quot;http://www.yes24.com/Product/Goods/84927385&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dE1H44/hyOk4ytV2a/wIJuXk6WlQClQ6pkRYkAv1/img.jpg?width=976&amp;amp;height=1200&amp;amp;face=0_0_976_1200,https://scrap.kakaocdn.net/dn/QIQXt/hyOi4tkhjj/KdnLIRNuwjkU5918KzAakk/img.jpg?width=976&amp;amp;height=1200&amp;amp;face=0_0_976_1200,https://scrap.kakaocdn.net/dn/ZwhPm/hyOk1uZ8bQ/WymOrGkD4SBt7ctIixtOLK/img.jpg?width=976&amp;amp;height=1200&amp;amp;face=0_0_976_1200&quot;&gt;&lt;a href=&quot;http://www.yes24.com/Product/Goods/84927385&quot; data-source-url=&quot;http://www.yes24.com/Product/Goods/84927385&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dE1H44/hyOk4ytV2a/wIJuXk6WlQClQ6pkRYkAv1/img.jpg?width=976&amp;amp;height=1200&amp;amp;face=0_0_976_1200,https://scrap.kakaocdn.net/dn/QIQXt/hyOi4tkhjj/KdnLIRNuwjkU5918KzAakk/img.jpg?width=976&amp;amp;height=1200&amp;amp;face=0_0_976_1200,https://scrap.kakaocdn.net/dn/ZwhPm/hyOk1uZ8bQ/WymOrGkD4SBt7ctIixtOLK/img.jpg?width=976&amp;amp;height=1200&amp;amp;face=0_0_976_1200');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://kubetm.github.io/k8s/03-beginner-basic-resource/volume/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://kubetm.github.io/k8s/03-beginner-basic-resource/volume/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1653203452132&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;Volume&quot; data-og-description=&quot;emptyDir, hostPath, PV/PVC&quot; data-og-host=&quot;kubetm.github.io&quot; data-og-source-url=&quot;https://kubetm.github.io/k8s/03-beginner-basic-resource/volume/&quot; data-og-url=&quot;https://kubetm.github.io/k8s/03-beginner-basic-resource/volume/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cRkhgx/hyOueIkIQz/2ktJAQvy8YIq5Qmpf7KQC1/img.jpg?width=884&amp;amp;height=230&amp;amp;face=0_0_884_230,https://scrap.kakaocdn.net/dn/cDTWuC/hyOul1JABQ/jPnLTKdlkj9GKgXD0HrxSK/img.jpg?width=541&amp;amp;height=238&amp;amp;face=0_0_541_238,https://scrap.kakaocdn.net/dn/ekQdy3/hyOuhdYUm1/o1BJtKJ3TtI6JDuTpXgkXK/img.jpg?width=317&amp;amp;height=222&amp;amp;face=0_0_317_222&quot;&gt;&lt;a href=&quot;https://kubetm.github.io/k8s/03-beginner-basic-resource/volume/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kubetm.github.io/k8s/03-beginner-basic-resource/volume/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cRkhgx/hyOueIkIQz/2ktJAQvy8YIq5Qmpf7KQC1/img.jpg?width=884&amp;amp;height=230&amp;amp;face=0_0_884_230,https://scrap.kakaocdn.net/dn/cDTWuC/hyOul1JABQ/jPnLTKdlkj9GKgXD0HrxSK/img.jpg?width=541&amp;amp;height=238&amp;amp;face=0_0_541_238,https://scrap.kakaocdn.net/dn/ekQdy3/hyOuhdYUm1/o1BJtKJ3TtI6JDuTpXgkXK/img.jpg?width=317&amp;amp;height=222&amp;amp;face=0_0_317_222');&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;Volume&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;emptyDir, hostPath, PV/PVC&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;kubetm.github.io&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>DevOps/Kubernetes</category>
      <category>emptydir</category>
      <category>hostpath</category>
      <category>Kubernetes PV</category>
      <category>Kubernetes PVC</category>
      <category>PersistentVolume</category>
      <category>persistentVolumeClaim</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/191</guid>
      <comments>https://hungc.tistory.com/191#entry191comment</comments>
      <pubDate>Fri, 20 May 2022 18:08:08 +0900</pubDate>
    </item>
    <item>
      <title>[troubleshooting] [ERROR CRI]: container runtime is not running</title>
      <link>https://hungc.tistory.com/186</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[ERROR CRI]: container runtime is not running&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;/etc/containerd/config.toml 파일에서&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;disabled_plugins 항목에서 CRI 제거한 뒤&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1652457924330&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ systemctl restart containerd&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>DevOps/Kubernetes</category>
      <category>kubernetes</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/186</guid>
      <comments>https://hungc.tistory.com/186#entry186comment</comments>
      <pubDate>Mon, 16 May 2022 02:05:42 +0900</pubDate>
    </item>
    <item>
      <title>쿠버네티스(kubernetes) ingress</title>
      <link>https://hungc.tistory.com/189</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;쿠버네티스(kubernetes)&amp;nbsp;ingress&lt;/h2&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;1165&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnegg8/btrIBTKEEP8/sYXohlIKt1JN7uF8xad4ik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnegg8/btrIBTKEEP8/sYXohlIKt1JN7uF8xad4ik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnegg8/btrIBTKEEP8/sYXohlIKt1JN7uF8xad4ik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbnegg8%2FbtrIBTKEEP8%2FsYXohlIKt1JN7uF8xad4ik%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;250&quot; height=&quot;243&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;1165&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인그레스(Ingress)는 일반적으로 외부에서 내부로 향하는 것을 지칭하는 단어&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;외부 요청을 어떻게 처리할 것인지 네트워크 7계층 레벨에서 정의하는 쿠버네티스 오브젝트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;외부 요청의 라우팅&lt;/li&gt;
&lt;li&gt;가상 호스트 기반의 요청 처리&lt;/li&gt;
&lt;li&gt;SSL/TLS 보안 연결 처리&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;외부 요청에 대한 처리 규칙을 쿠버네티스 자체 기능으로 편리하게 관리할 수 있다는 것이 인그레이스의 핵심&lt;/p&gt;
&lt;pre id=&quot;code_1652573262413&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl get ing&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;lt;ingress-example.yaml&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1652541434775&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress-example
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    kubernetes.io/ingress.class: &quot;nginx&quot;
spec;
  rules:
  - host: alicek106.example.com 
    http:
      paths:
      - path: /echo-hostname 
        backend:
          serviceName: hostname-service 
          servicePort: 80&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;host: 해당 도메인으로 접근하는 요청에 대해서 처리 규칙을 적용&lt;/li&gt;
&lt;li&gt;path: 해당 경로에 들어온 요청을 어느 서비스로 전달할 것인지 정의. 위에서는 backend로 처리함&lt;/li&gt;
&lt;li&gt;serviceName, servicePort: path로 들어온 요청이 전달될 서비스와 포트&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인그레이스 생성&lt;/p&gt;
&lt;pre id=&quot;code_1652573418411&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl apply -f ingress-example.yaml
$ kubectl get ingress&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인그레스는 규칙을 적용하는 인그레스 컨트롤러와 함께 사용해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ngnix 웹 서버 인그레이스 컨트롤러 설치&lt;/p&gt;
&lt;pre id=&quot;code_1652542761116&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl apply -f https:llraw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.0.0/deploy/static/provider/baremetal/deploy.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;463&quot; data-origin-height=&quot;275&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XT4qT/btrB673YZHR/JUguXtZ48VrbdkBEdo4lA1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XT4qT/btrB673YZHR/JUguXtZ48VrbdkBEdo4lA1/img.jpg&quot; data-alt=&quot;https://kubetm.github.io/k8s/08-intermediate-controller/ingress/&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XT4qT/btrB673YZHR/JUguXtZ48VrbdkBEdo4lA1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXT4qT%2FbtrB673YZHR%2FJUguXtZ48VrbdkBEdo4lA1%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;463&quot; height=&quot;275&quot; data-origin-width=&quot;463&quot; data-origin-height=&quot;275&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://kubetm.github.io/k8s/08-intermediate-controller/ingress/&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Nginx 인그레스 컨트롤러를 설치하기 위해 다양한 쿠버네티스 리소스를 한번에 생성함&lt;/p&gt;
&lt;pre id=&quot;code_1652573513813&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl get pods, deployment -n ingress-nginx&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;167&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnGqOy/btrB7MyKUU4/1S5uHEvlh8auzyAaWzUuy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnGqOy/btrB7MyKUU4/1S5uHEvlh8auzyAaWzUuy1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnGqOy/btrB7MyKUU4/1S5uHEvlh8auzyAaWzUuy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnGqOy%2FbtrB7MyKUU4%2F1S5uHEvlh8auzyAaWzUuy1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;940&quot; height=&quot;167&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;167&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;Nginx 웹 서버를 외부에 노출하기 위한 서비스를 생성해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;lt;ingress-service-lb.yaml&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1652543247427&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;kind: Service
apiVersion: v1
metadata:
  name: ingress-nglnx
  namespace: ingress-nglnx
spec:
  type: loadBalancer
  selector:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
  ports:
  - name: http
    port: 80
    targetPort: http
  - name: https
    port: 443
    targetPort: https&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성 후 확인&lt;/p&gt;
&lt;pre id=&quot;code_1652613248260&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl apply -f ingress-service-lb.yaml
$ kubectl get svc -n ingress-nginx&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;47&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VXC1z/btrB5amj63M/gbzbsLaK2QhecVc3CKyUy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VXC1z/btrB5amj63M/gbzbsLaK2QhecVc3CKyUy1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VXC1z/btrB5amj63M/gbzbsLaK2QhecVc3CKyUy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVXC1z%2FbtrB5amj63M%2FgbzbsLaK2QhecVc3CKyUy1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;940&quot; height=&quot;47&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;47&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-------------------&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대세는 쿠버네티스 강의 실습&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쇼핑과 고객서비스를 위한 pod, service 각각 두개 생성&lt;/p&gt;
&lt;pre id=&quot;code_1652614333371&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: Pod
metadata:
  name: pod-shopping
  labels:
    category: shopping
spec:
  containers:
  - name: container
    image: kubetm/shopping
---
apiVersion: v1
kind: Service
metadata:
  name: svc-shopping
spec:
  selector:
    category: shopping
  ports:
  - port: 8080&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1652614344857&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: Pod
metadata:
  name: pod-customer
  labels:
    category: customer
spec:
  containers:
  - name: container
    image: kubetm/customer
---
apiVersion: v1
kind: Service
metadata:
  name: svc-customer
spec:
  selector:
    category: customer
  ports:
  - port: 8080&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;서비스로 curl 날려서 응답 확인&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;238&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3225R/btrB9trYu4N/i4qPNgCqMC7iM4mwKFwX80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3225R/btrB9trYu4N/i4qPNgCqMC7iM4mwKFwX80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3225R/btrB9trYu4N/i4qPNgCqMC7iM4mwKFwX80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3225R%2FbtrB9trYu4N%2Fi4qPNgCqMC7iM4mwKFwX80%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;940&quot; height=&quot;238&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;238&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ingress 생성&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: service-loadbalancing
spec:
  ingressClassName: nginx
  rules:
  - http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: svc-shopping
            port:
              number: 8080
      - path: /customer
        pathType: Prefix
        backend:
          service:
            name: svc-customer
            port:
              number: 8080&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;ingress 생성 후 Port와 path를 통해 응답 확인&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;166&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NuToS/btrCflMZZcq/og4l0KzSFbSktxithKUBBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NuToS/btrCflMZZcq/og4l0KzSFbSktxithKUBBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NuToS/btrCflMZZcq/og4l0KzSFbSktxithKUBBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNuToS%2FbtrCflMZZcq%2Fog4l0KzSFbSktxithKUBBk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;940&quot; height=&quot;166&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;166&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;References:&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;http://www.yes24.com/Product/Goods/84927385&quot;&gt;http://www.yes24.com/Product/Goods/84927385&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1659233035741&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;book&quot; data-og-title=&quot;시작하세요! 도커/쿠버네티스 - YES24&quot; data-og-description=&quot;본서는 도커를 처음 접하는 개발자를 위한 도커 컨테이너와 이미지의 기본적인 개념을 먼저 설명한 뒤, 도커 컴포즈와 스웜 모드를 통해 컨테이너 애플리케이션을 YAML 파일로 작성하고 클러스&quot; data-og-host=&quot;www.yes24.com&quot; data-og-source-url=&quot;http://www.yes24.com/Product/Goods/84927385&quot; data-og-url=&quot;http://www.yes24.com/Product/Goods/84927385&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dE1H44/hyOk4ytV2a/wIJuXk6WlQClQ6pkRYkAv1/img.jpg?width=976&amp;amp;height=1200&amp;amp;face=0_0_976_1200,https://scrap.kakaocdn.net/dn/QIQXt/hyOi4tkhjj/KdnLIRNuwjkU5918KzAakk/img.jpg?width=976&amp;amp;height=1200&amp;amp;face=0_0_976_1200,https://scrap.kakaocdn.net/dn/ZwhPm/hyOk1uZ8bQ/WymOrGkD4SBt7ctIixtOLK/img.jpg?width=976&amp;amp;height=1200&amp;amp;face=0_0_976_1200&quot;&gt;&lt;a href=&quot;http://www.yes24.com/Product/Goods/84927385&quot; data-source-url=&quot;http://www.yes24.com/Product/Goods/84927385&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dE1H44/hyOk4ytV2a/wIJuXk6WlQClQ6pkRYkAv1/img.jpg?width=976&amp;amp;height=1200&amp;amp;face=0_0_976_1200,https://scrap.kakaocdn.net/dn/QIQXt/hyOi4tkhjj/KdnLIRNuwjkU5918KzAakk/img.jpg?width=976&amp;amp;height=1200&amp;amp;face=0_0_976_1200,https://scrap.kakaocdn.net/dn/ZwhPm/hyOk1uZ8bQ/WymOrGkD4SBt7ctIixtOLK/img.jpg?width=976&amp;amp;height=1200&amp;amp;face=0_0_976_1200');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://kubetm.github.io/k8s/08-intermediate-controller/ingress/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://kubetm.github.io/k8s/08-intermediate-controller/ingress/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1652613303962&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;Ingress&quot; data-og-description=&quot;Service Loadbalancing, Canary Upgrade&quot; data-og-host=&quot;kubetm.github.io&quot; data-og-source-url=&quot;https://kubetm.github.io/k8s/08-intermediate-controller/ingress/&quot; data-og-url=&quot;https://kubetm.github.io/k8s/08-intermediate-controller/ingress/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/KWnML/hyOpAKMziX/axegWdTnkTrs6K9CDFdC3K/img.jpg?width=1097&amp;amp;height=557&amp;amp;face=0_0_1097_557,https://scrap.kakaocdn.net/dn/BGyTT/hyOpJubB7T/u8DK0jUdSwE1RYGcarJdXK/img.jpg?width=430&amp;amp;height=522&amp;amp;face=0_0_430_522,https://scrap.kakaocdn.net/dn/eFsIo/hyOoMe4SbE/arFFSh0j4FTuGAs12K1jf1/img.jpg?width=885&amp;amp;height=232&amp;amp;face=0_0_885_232&quot;&gt;&lt;a href=&quot;https://kubetm.github.io/k8s/08-intermediate-controller/ingress/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kubetm.github.io/k8s/08-intermediate-controller/ingress/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/KWnML/hyOpAKMziX/axegWdTnkTrs6K9CDFdC3K/img.jpg?width=1097&amp;amp;height=557&amp;amp;face=0_0_1097_557,https://scrap.kakaocdn.net/dn/BGyTT/hyOpJubB7T/u8DK0jUdSwE1RYGcarJdXK/img.jpg?width=430&amp;amp;height=522&amp;amp;face=0_0_430_522,https://scrap.kakaocdn.net/dn/eFsIo/hyOoMe4SbE/arFFSh0j4FTuGAs12K1jf1/img.jpg?width=885&amp;amp;height=232&amp;amp;face=0_0_885_232');&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;Ingress&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Service Loadbalancing, Canary Upgrade&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;kubetm.github.io&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>DevOps/Kubernetes</category>
      <category>ingress</category>
      <category>k8s ingress</category>
      <category>kubernetes</category>
      <category>kubernetes ingress</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/189</guid>
      <comments>https://hungc.tistory.com/189#entry189comment</comments>
      <pubDate>Sun, 15 May 2022 09:39:16 +0900</pubDate>
    </item>
    <item>
      <title>쿠버네티스(kubernetes) Namespace, ConfigMap, Secret</title>
      <link>https://hungc.tistory.com/188</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;쿠버네티스(kubernetes)&amp;nbsp;Namespace,&amp;nbsp;ConfigMap,&amp;nbsp;Secret&lt;/h2&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;1165&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/C5d1l/btrCgJHHAVn/UKpL4OD9sQTC8EFDPOHKP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/C5d1l/btrCgJHHAVn/UKpL4OD9sQTC8EFDPOHKP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/C5d1l/btrCgJHHAVn/UKpL4OD9sQTC8EFDPOHKP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FC5d1l%2FbtrCgJHHAVn%2FUKpL4OD9sQTC8EFDPOHKP1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;250&quot; height=&quot;243&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;1165&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;네임스페이스(Namespace): 리소스를 논리적으로 구분하는 장벽&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네임스페이스는 일종의 포드, 레플리카셋, 디플로이먼트, 서비스 등과 같은&lt;b&gt; 리소스들이 묶여 있는 하나의 가상공간 또는 그룹&lt;/b&gt;이라고 이해하면 됨&lt;/p&gt;
&lt;pre id=&quot;code_1652576339637&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl get namespaces
$ kubectl get ns&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;default라는 이름의 네임스페이스에 생성된 포드를 확인하려면..&lt;/p&gt;
&lt;pre id=&quot;code_1652586929183&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl get pods --namespace default&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;--namespace 옵션을 명시하지 않으면 모두 default 네임스페이스에서 수행된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쿠버네티스 클러스터를 여러 명이 동시에 사용해야 한다면 사용자마다 네임스페이스를 별도로 생성해 사용하도록 설정할 수 있음. &lt;b&gt;용도에 따라 네임스페이스를 생성해서 특정 네임스페이스에서만 존재하도록 구성하도록 가능&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 리눅스 네임스페이스는 컨테이너의 격리된 공간을 생성하기 위해 리눅스 커널 자체 기능을 활용하는 것이며, 일반적으로 네트워크나 마운트, 프로세스 네임스페이스를 의미하며 쿠버네티스의 네임스페이스 오브젝트는 리눅스 네임스페이스와 완전히 다른 것&lt;/p&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;&amp;lt;production-namespace.yaml&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1652530092540&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: Namespace
metadata:
  name: production&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1652586958267&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl apply -f production-namespace.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또는 명령어로 바로 생성할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1652586981382&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl create namespace production&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 파일에서 &lt;b&gt;metadata - namespace: production 만 추가해주면 된다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쿠버네티스 클러스터 내부에서는 서비스 이름을 통해 포드에 접근할 수 있는데, 이는 같은 네임스페이스 내의 서비스만 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네임스페이스를 삭제하려면&lt;/p&gt;
&lt;pre id=&quot;code_1652587015977&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl delete namespace production&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네임스페이스에 존재하는 모든 리소스가 함께 삭제되니 리소스 목록을 미리 확인할 것&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네임스페이스에 존재하는 오브젝트의 종류를 확인하려면&lt;/p&gt;
&lt;pre id=&quot;code_1652587024466&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl api-resources --namespaced=true&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;569&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RYmch/btrCcDUTLKW/pXrxodOOl9ZJVuvnSix8p1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RYmch/btrCcDUTLKW/pXrxodOOl9ZJVuvnSix8p1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RYmch/btrCcDUTLKW/pXrxodOOl9ZJVuvnSix8p1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRYmch%2FbtrCcDUTLKW%2FpXrxodOOl9ZJVuvnSix8p1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;940&quot; height=&quot;569&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;569&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;추가로 네임스페이스에는 ResourceQuota와 LimitRange를 설정할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ResourceQuota는 네임스페이스의 자원 한계를 설정하는 오브젝트로 네임스페이스에 들어갈 파드의 전체 requests와 limits을 설정할 수 있다. 이 경우에는 파드에 requests와 limits의 스펙을 명시해야만 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LimitRange는 각 파드마다 네임스페이스에 들어올 수 있는지 자원을 체크하는 오브젝트이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1546&quot; data-origin-height=&quot;781&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GoBKe/btrFFAveZYx/wc00LCE6WO1DQ1HPr981ok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GoBKe/btrFFAveZYx/wc00LCE6WO1DQ1HPr981ok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GoBKe/btrFFAveZYx/wc00LCE6WO1DQ1HPr981ok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGoBKe%2FbtrFFAveZYx%2Fwc00LCE6WO1DQ1HPr981ok%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1546&quot; height=&quot;781&quot; data-origin-width=&quot;1546&quot; data-origin-height=&quot;781&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;컨피그맵(Configmap), 시크릿(Secret): 설정값을 포드에 전달&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설정값을 YAML 파일에 env 옵션을 통해 작성할 수 있지만 이런 경우에는 개발, 운영 파일마다 각각 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;이러한 제약을 해결하기 위해 컨피그맵을 사용하면 1개의 포드 YAML 파일만을 사용하되 환경에 따라 다른 컨피그맵을 생성해서 사용할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1652587115628&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl create configmap &amp;lt;컨피그맵이름&amp;gt; &amp;lt;설정값들&amp;gt;
$ kubectl create configmap log-level-configmap --from-literal LOG_LEVEL=DEBUG4
$ kubectl create configmap start-k8s --from-literal k8s=kubernetes --from-literal container=docker&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확인하려면..&lt;/p&gt;
&lt;pre id=&quot;code_1652587125117&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl get cm
$ kubectl describe configmap log-level-configmap&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컨테이너 내부에서 env 명령어를 통해 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성된 컨피그맵을 포드에서 사용하려면 환경변수로 사용하거나 포드 내부 파일로 마운트해 사용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컨피그맵의 값을 포드에서 환경변수로 사용하려면..&lt;/p&gt;
&lt;pre id=&quot;code_1652534133900&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;...

spec:
  containers:
  - name: my-container
    image: busybox
    agrs: ['tail', '-f', '/dev/null']
    envFrom:
    - configMapRef:
        name: log-level-configmap
    - configMapRef:
        name: start-k8s&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;envFrom 항목은 하나의 컨피그맵에 여러 키-값 쌍이 존재하더라도 모두 환경변수로 가져오도록 설정&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;p data-ke-size=&quot;size16&quot;&gt;다른 방법으로 컨피그맵에서 특정 데이터만 가져오려면..&lt;/p&gt;
&lt;pre id=&quot;code_1652534311689&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;...
env:
- name: ENV_KEYNAME_1
  valueFrom:
    configMapKeyRef:
      name: log-level-configmap
      key: LOG_LEVEL
- name: ENV_KEYNAME_2
  valueFrom:
    configMapKeyRef:
      name: start-k8s
      key: k8s&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포드 내부에 마운트하려면..&lt;/p&gt;
&lt;pre id=&quot;code_1652534499717&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: Pod
metadata:
  name: configmap-volume-pod
spec:
  containers:
  - name: my-container
    image: busybox
    args: [&quot;tail&quot; &quot;-f&quot;, &quot;/dev/null&quot; ]
    volumeMounts:
    - name: configmap-volume 
      mountPath: /etc/config 

  volumes:
  - name: configmap-volume
    configMap:
      name: start-k8s&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;컨피그맵을 생성한 후 etc/config 맵을 조회해보면 값을 출력할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1652587237226&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl apply -f volume-mount-configmap.yaml
$ kubectl exec configmap-volume-pod ls /etc/config
$ kubectl exec configmap-volume-pod cat /etc/config/k8s&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;136&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btffiL/btrB7M6Cb6k/kMsiP0PKRA9IA0hkkptcT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btffiL/btrB7M6Cb6k/kMsiP0PKRA9IA0hkkptcT0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btffiL/btrB7M6Cb6k/kMsiP0PKRA9IA0hkkptcT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtffiL%2FbtrB7M6Cb6k%2FkMsiP0PKRA9IA0hkkptcT0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;940&quot; height=&quot;136&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;136&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;items와 path 항목을 통해 원하는 키-쌍 데이터만 선택해서 포드에 파일로 가져올 수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일로부터 컨피그맵을 생성하려면..&lt;/p&gt;
&lt;pre id=&quot;code_1652588236326&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl create configmap &amp;lt;컨피그맵이름&amp;gt; --from-file &amp;lt;파일이름&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적으로 파일 이름이 키로, 내용이 값으로 저장된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;--from-env-file 옵션으로 여러 개의 키-값, 여러 줄로 구성된 설정 파일을 한번에 컨피그맵으로 가져올 수도 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&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 파일로 작성한 뒤, kubectl 명령어로 컨피그맵 생성 가능&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;151&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7bqEz/btrCfmd4eO9/pj61pj7WgU85ajf4TgjilK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7bqEz/btrCfmd4eO9/pj61pj7WgU85ajf4TgjilK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7bqEz/btrCfmd4eO9/pj61pj7WgU85ajf4TgjilK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7bqEz%2FbtrCfmd4eO9%2Fpj61pj7WgU85ajf4TgjilK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;940&quot; height=&quot;151&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;151&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1652588278257&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl create configmap my-configmap --from-literal mykey=myvalue --dry-run -o yaml &amp;gt;my-configmap.yaml
$ kubectl apply -f my-configmap.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;시크릿은 SSH 키, 비밀번호 등과 같이 민감 정보를 저장하기 위한 용도&lt;/b&gt;로 사용되며, 네임스페이스에 종속되는 쿠버네티스 오브젝트로 컨피그맵과 사용 방법이 비슷하다. 일반적인 쿠버네티스 오브젝트 값들은 쿠버네티스 DB에 저장되는데, 시크릿은 메모리에 저장된다. 컨피그맵의 경우 key, value 쌍을 무한히 넣을 수 있지만 시크릿은 1Mbyte까지 가능하다.&lt;/p&gt;
&lt;pre id=&quot;code_1652588312670&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl create secret generic my-password --from-literal password=123123&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;--from-file 이나 --from-env-file 옵션도 사용 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1652588320896&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl get secrets my-password -o yaml&lt;/code&gt;&lt;/pre&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;컨피그맵과 사용 방법이 비슷하므로 YAML 파일에서 secretRef로 가져오거나 secretKeyRef로 특정 데이터만 선택해 원하는 이름의 환경변수로도 가져올 수 있고, 볼륨 마운트도 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시크릿의 종류는 Type으로 볼 수 있는데, 기본은 Opaque이며 생성할 때 generic이라고 명시했던 것이 Opaque 타입에 해당하는 종류임&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;503&quot; data-origin-height=&quot;84&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cNsa57/btrB6jWXPWz/wJYf3sfMbpHJMqOKfFbGHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cNsa57/btrB6jWXPWz/wJYf3sfMbpHJMqOKfFbGHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cNsa57/btrB6jWXPWz/wJYf3sfMbpHJMqOKfFbGHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcNsa57%2FbtrB6jWXPWz%2FwJYf3sfMbpHJMqOKfFbGHk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;503&quot; height=&quot;84&quot; data-origin-width=&quot;503&quot; data-origin-height=&quot;84&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도커 허브에 공개돼있는 이미지는 다운받는데 문제없지만 사설 레지스트리 또는 도커 허브, 클라우드 레지스트리를 사용한다면 인증 절차가 필요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쿠버네티스에서는 docker login 명령어 대신 별도의 시크릿을 생성해서 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 가지 방법이 있는데 첫 번째는 docker login 명령어로 성공했을 때 도커 엔진이 생성하는 ~/.docker/config.json 파일을 이용하는 것이다.&lt;/p&gt;
&lt;pre id=&quot;code_1652539170296&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl create secret generic registry-auth \
--from-file=.dockerconfigjson=/root/.docker/config.json \
--type=kubernetes.io/dockerconfigjson&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또는 직접 --docker-username과 --docker-password 옵션을 통해 직접 입력하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 생성한 시크릿은 디플로이먼트 또는 포드 등에서 imagePullSecrets, name 항목을 통해 이미지를 받아올 때 사용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&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 파일에 데이터를 저장하는 것은 가독성이나 관리에 있어 바람직하지 않다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 단점을 해결하기 위해 시크릿이나 컨피그맵을 배포하기 위해 YAML 파일을 작성할 때 데이터를 YAML 파일로부터 분리할 수 있는 kustomize 기능을 사용할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1652540547749&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;secretGenerator:
- name: kustomize-secret
  type: kubernetes.io/tls
  files:
  - tls.crt=cert.crt
  - tls.key=cert.key&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;시크릿을 생성하기 전에 kustomize로부터 생성될 시크릿의 정보를 미리 확인하려면..&lt;/p&gt;
&lt;pre id=&quot;code_1652588393112&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl kustomize ./&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;kustomize.yaml 파일로부터 시크릿을 생성하려면..&lt;/p&gt;
&lt;pre id=&quot;code_1652588400965&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl apply -k ./&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컨피그맵이나 시크릿을 포드에 제공하는 방법으로 두 가지 중 환경변수로 설정 값을 제공하는 방법과 볼륨 파일로 마운트하는 방법이 있었는데, 첫 번째는 컨피그맵이나 시크릿 값을 변경해도 자동으로 재설정되지 않으며 디플로이먼트의 포드를 다시 생성해야만 한다. 파일로 포드 내부에 마운트 된 설정 파일은 컨피그맵이나 시크릿을 변경하면 내용도 자동으로 갱신된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단, 포드 내부에 마운트된 설정 파일이 변경됐다고 해서 실행중인 애플리케이션의 설정이 자동으로 변경되는 것은 아니니 로직을 직접 구현해야 한다.&lt;/p&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-origin-width=&quot;884&quot; data-origin-height=&quot;230&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tyrnP/btrCMcpkjvj/LxRy0KtFiDmisYK9kWP8Kk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tyrnP/btrCMcpkjvj/LxRy0KtFiDmisYK9kWP8Kk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tyrnP/btrCMcpkjvj/LxRy0KtFiDmisYK9kWP8Kk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtyrnP%2FbtrCMcpkjvj%2FLxRy0KtFiDmisYK9kWP8Kk%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;884&quot; height=&quot;230&quot; data-origin-width=&quot;884&quot; data-origin-height=&quot;230&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&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;References:&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://kubetm.github.io/k8s/03-beginner-basic-resource/configmap/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://kubetm.github.io/k8s/03-beginner-basic-resource/configmap/&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1653180130062&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;ConfigMap, Secret&quot; data-og-description=&quot;Env(Literal, File), Mount(File)&quot; data-og-host=&quot;kubetm.github.io&quot; data-og-source-url=&quot;https://kubetm.github.io/k8s/03-beginner-basic-resource/configmap/&quot; data-og-url=&quot;https://kubetm.github.io/k8s/03-beginner-basic-resource/configmap/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b2v1Xc/hyOueHXqbk/QYbt8llk7R9TS0brj6v1T0/img.jpg?width=884&amp;amp;height=230&amp;amp;face=0_0_884_230,https://scrap.kakaocdn.net/dn/bNd4Y1/hyOudoKHU5/3DeUehvqfMgrx47LK7EL2K/img.jpg?width=385&amp;amp;height=228&amp;amp;face=0_0_385_228,https://scrap.kakaocdn.net/dn/dkrEWy/hyOumFZyEJ/ZaWKAsM2rxsdgqKxeIhvpK/img.jpg?width=385&amp;amp;height=228&amp;amp;face=0_0_385_228&quot;&gt;&lt;a href=&quot;https://kubetm.github.io/k8s/03-beginner-basic-resource/configmap/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kubetm.github.io/k8s/03-beginner-basic-resource/configmap/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b2v1Xc/hyOueHXqbk/QYbt8llk7R9TS0brj6v1T0/img.jpg?width=884&amp;amp;height=230&amp;amp;face=0_0_884_230,https://scrap.kakaocdn.net/dn/bNd4Y1/hyOudoKHU5/3DeUehvqfMgrx47LK7EL2K/img.jpg?width=385&amp;amp;height=228&amp;amp;face=0_0_385_228,https://scrap.kakaocdn.net/dn/dkrEWy/hyOumFZyEJ/ZaWKAsM2rxsdgqKxeIhvpK/img.jpg?width=385&amp;amp;height=228&amp;amp;face=0_0_385_228');&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;ConfigMap, Secret&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Env(Literal, File), Mount(File)&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;kubetm.github.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;http://www.yes24.com/Product/Goods/84927385&quot;&gt;http://www.yes24.com/Product/Goods/84927385&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1652675015797&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;book&quot; data-og-title=&quot;시작하세요! 도커/쿠버네티스 - YES24&quot; data-og-description=&quot;본서는 도커를 처음 접하는 개발자를 위한 도커 컨테이너와 이미지의 기본적인 개념을 먼저 설명한 뒤, 도커 컴포즈와 스웜 모드를 통해 컨테이너 애플리케이션을 YAML 파일로 작성하고 클러스&quot; data-og-host=&quot;www.yes24.com&quot; data-og-source-url=&quot;http://www.yes24.com/Product/Goods/84927385&quot; data-og-url=&quot;http://www.yes24.com/Product/Goods/84927385&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/XdiD7/hyOpIJqwEb/6uny9KbYwTdUHZavHGSYI0/img.jpg?width=976&amp;amp;height=1200&amp;amp;face=0_0_976_1200,https://scrap.kakaocdn.net/dn/chjfYq/hyOpHcGJ6b/AiDGkATaJK0LkstSfIFpR0/img.jpg?width=976&amp;amp;height=1200&amp;amp;face=0_0_976_1200,https://scrap.kakaocdn.net/dn/jivkg/hyOpCWJUAr/SRSc0hWTMz8kPBKrF8duH0/img.jpg?width=976&amp;amp;height=1200&amp;amp;face=0_0_976_1200&quot;&gt;&lt;a href=&quot;http://www.yes24.com/Product/Goods/84927385&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://www.yes24.com/Product/Goods/84927385&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/XdiD7/hyOpIJqwEb/6uny9KbYwTdUHZavHGSYI0/img.jpg?width=976&amp;amp;height=1200&amp;amp;face=0_0_976_1200,https://scrap.kakaocdn.net/dn/chjfYq/hyOpHcGJ6b/AiDGkATaJK0LkstSfIFpR0/img.jpg?width=976&amp;amp;height=1200&amp;amp;face=0_0_976_1200,https://scrap.kakaocdn.net/dn/jivkg/hyOpCWJUAr/SRSc0hWTMz8kPBKrF8duH0/img.jpg?width=976&amp;amp;height=1200&amp;amp;face=0_0_976_1200');&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;시작하세요! 도커/쿠버네티스 - YES24&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;본서는 도커를 처음 접하는 개발자를 위한 도커 컨테이너와 이미지의 기본적인 개념을 먼저 설명한 뒤, 도커 컴포즈와 스웜 모드를 통해 컨테이너 애플리케이션을 YAML 파일로 작성하고 클러스&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.yes24.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>DevOps/Kubernetes</category>
      <category>configmap</category>
      <category>kubernetes</category>
      <category>namespace</category>
      <category>secret</category>
      <category>쿠버네티스</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/188</guid>
      <comments>https://hungc.tistory.com/188#entry188comment</comments>
      <pubDate>Sat, 14 May 2022 23:08:35 +0900</pubDate>
    </item>
    <item>
      <title>쿠버네티스(kubernetes) Deployment, Service</title>
      <link>https://hungc.tistory.com/187</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;쿠버네티스(kubernetes)&amp;nbsp;Deployment,&amp;nbsp;Service&lt;/h2&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;1165&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xLwzf/btrCdHWCcUl/uu1KiJCzK5tzcw9JVfC1I1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xLwzf/btrCdHWCcUl/uu1KiJCzK5tzcw9JVfC1I1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xLwzf/btrCdHWCcUl/uu1KiJCzK5tzcw9JVfC1I1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxLwzf%2FbtrCdHWCcUl%2Fuu1KiJCzK5tzcw9JVfC1I1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;250&quot; height=&quot;243&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;1165&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;디플로이먼트(Deployment): 레플리카셋, 포드의 배포를 관리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쿠버네티스 운영환경에서 레플리카셋을 YAML 파일을 통해 사용하는 경우는 거의 없고, 대부분은 레플리카셋과 포드의 정보를 정의하는 디플로이먼트라는 이름의 오브젝트를 YAML 파일로 정의해서 사용한다. (디플로이먼트는 레플리카셋의 상위 수준의 오브젝트)&lt;/p&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;&amp;lt;deployment-nginx.yaml&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1652491835159&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-nginx
  template:
    metadata:
      name: my-nginx-pod
      labels:
        app: my-nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.10
        ports:
        - containerPort: 80&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디플로이먼트 생성&lt;/p&gt;
&lt;pre id=&quot;code_1652491835159&quot; class=&quot;routeros&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl apply -f deployment-nginx.yaml
$ kubectl get deploy
$ kubectl get replicasets
$ kubectl get pods&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디플로이먼트, 레플리카셋 함께 생성되어 있음&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;259&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cewM5z/btrCcDUsaQZ/s0qRTnsTBv3LS4dcwNYQm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cewM5z/btrCcDUsaQZ/s0qRTnsTBv3LS4dcwNYQm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cewM5z/btrCcDUsaQZ/s0qRTnsTBv3LS4dcwNYQm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcewM5z%2FbtrCcDUsaQZ%2Fs0qRTnsTBv3LS4dcwNYQm0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;940&quot; height=&quot;259&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;259&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디플로이먼트를 삭제하면 레플리카셋, 포드 또한 삭제됨&lt;/p&gt;
&lt;pre id=&quot;code_1652491835160&quot; class=&quot;perl&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;kubectl delete deploy my-nginx-deployment&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디플로이먼트를 사용하는 이유는 애플리케이션의 업데이트와 배포를 더 편하게 만들기 위해서다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디플로이먼트를 이용해 앱의 버전을 업데이트해 배포하는 간단한 예시를 살펴보자.&lt;/p&gt;
&lt;pre id=&quot;code_1652491835160&quot; class=&quot;applescript&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl apply -f deployment-nginx.yaml --record
$ kubectl get pods&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;nginx의 버전을 변경하려면..&lt;/p&gt;
&lt;pre id=&quot;code_1652491835160&quot; class=&quot;routeros&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl set image deployment my-nginx-deployment nginx=nginx:1.11 --record&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;YAML 파일에서 직접 수정하거나 kubectl edit 명령어로도 사용 가능함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 뒤에 레플리카셋의 목록을 출력해보면?&lt;/p&gt;
&lt;pre id=&quot;code_1652491835160&quot; class=&quot;routeros&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl get replicasets&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 개의 레플리카셋이 있는 걸 볼 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;922&quot; data-origin-height=&quot;116&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJLq3x/btrB6vD9Qn8/bGS8bB9ALGvtURjX98pXmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJLq3x/btrB6vD9Qn8/bGS8bB9ALGvtURjX98pXmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJLq3x/btrB6vD9Qn8/bGS8bB9ALGvtURjX98pXmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJLq3x%2FbtrB6vD9Qn8%2FbGS8bB9ALGvtURjX98pXmK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;922&quot; height=&quot;116&quot; data-origin-width=&quot;922&quot; data-origin-height=&quot;116&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디플로이먼트는 포드의 정보를 업데이트함으로써 새로운 레플리카셋과 포드를 생성했음에도 불구하고 이전 버전의 레플리카셋을 삭제하지 않고 남겨두고 있다. 해쉬값이 변경되어 관리되며 이전의 정보를 리비전으로 보존한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리비전 정보를 다음 명령어로 더 자세히 확인 가능&lt;/p&gt;
&lt;pre id=&quot;code_1652491835160&quot; class=&quot;shell&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl rollout history deployment my-nginx-deployment&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 버전으로 롤백하고 싶다면?&lt;/p&gt;
&lt;pre id=&quot;code_1652491835160&quot; class=&quot;applescript&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl rollout undo deployment my-nginx-deployment --to-revision=1&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리소스 정리&lt;/p&gt;
&lt;pre id=&quot;code_1652491835160&quot; class=&quot;gams&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl delete deployment, pod ,rs --all&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;h3 data-ke-size=&quot;size23&quot;&gt;서비스(Service): 포드를 연결하고 외부에 노출&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재까지는 로컬 개발 환경 또는 클러스터 내부에서만 접근이 가능했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포트를 외부로 노출해 사용자들이 접근하거나, 다른 디플로이먼트의 포드들이 내부적으로 접근하려면 서비스라고 부르는 별도의 오브젝트를 생성해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서비스 기능&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;고유한 도메인 이름을 부여함&lt;/li&gt;
&lt;li&gt;로드 밸런서 기능 수행&lt;/li&gt;
&lt;li&gt;포드를 외부로 노출&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;호스트 이름을 반환하는 간단한 웹 서버의 디플로이먼트 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;lt;deployment-hostname.yaml&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1652491835160&quot; class=&quot;yaml&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: apps/v1
kind: Deployment
metadata:
  name: hostname-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: webserver
  template:
    metadata:
      name: my-webserver
      labels:
        app: webserver
    spec:
      containers:
      - name: my-webserver
        image: alicek106/rr-test:echo-hostname
        ports:
        - containerPort: 80&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1652491835160&quot; class=&quot;coq&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl apply -f deployment-hostname.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서비스는 포드에 어떻게 접근할 것이냐에 따라 종류가 여러개로 세분화 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;목적에 맞는 적절한 서비스의 종류를 선택해야 하며 주로 사용하는 서비스 타입은 3가지다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;ClusterIP&lt;/b&gt;: 쿠버네티스 내부에서만 포드에 접근할 때 (관리자가 주로 사용)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;NodePort&lt;/b&gt;: 클러스터의 모든 노드에 동일하게 개방&lt;/li&gt;
&lt;li&gt;&lt;b&gt;LoadBalancer&lt;/b&gt;: 로드 밸런스를 동적으로 프로비저닝하여 포드에 연결&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ClusterIP 타입의 서비스&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;lt;hostname-svc-clusterip.yaml&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1652491835161&quot; class=&quot;yaml&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: Service
metadata:
  name: hostname-svc-clusterip
spec:
  ports:
  - name: web-port
    port: 8080
    targetPort: 80
  selector:
    app: webserver
  type: ClusterIP&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;spec.selector 어떤 라벨을 갖는 포드에 접근할 수 있게 만들 것인지 결정&lt;/li&gt;
&lt;li&gt;spec.ports.port: 쿠버네티스 내부에서만 사용할 수 있는 고유한 IP&lt;/li&gt;
&lt;li&gt;spec.ports.tartgetPort: selector 항목에 의해 정의된 라벨에 의해 접근 대상이 된 포드들이 내부적으로 사용하고 있는 포트&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서비스 목록 확인&lt;/p&gt;
&lt;pre id=&quot;code_1652491835161&quot; class=&quot;coq&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl apply -f hostname-svc-clusterip.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1652491835161&quot; class=&quot;routeros&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl get services
$ kubectl get svc # services&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;생성된 서비스를 확인할 수 있고, 출력 내용 중에서 CLUSTER-IP와 PORT(S)를 통해 요청 보내면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;임시 포드를 만들어 요청해보면..&lt;/p&gt;
&lt;pre id=&quot;code_1652491835161&quot; class=&quot;routeros&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl run -i --tty --rm debug --image=alicek106/ubuntu:curl --restart=Never -- bash

# 서버에 접속한 뒤
$ curl 10.101.98.33:8080 --silent | grep Hello
$ curl hostname-svc-clusterip:8080 --silent | grep Hello&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서비스 이름 자체로도 접근 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서비스의 IP와 포트를 통해 포드에 접근하고 있으며, 별도의 설정을 하지 않아도 로드 밸런싱이 수행되어 요청이 분산됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서비스 삭제&lt;/p&gt;
&lt;pre id=&quot;code_1652491835161&quot; class=&quot;vim&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl delete svc hostname-svc-clusterip
$ kubectl delete -f hostname-svc-clusterip.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;NodePort 타입의 서비스&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ClusterIP 타입의 서비스는 내부에서만 접근 가능하지만, NodePort 타입의 서비스는 클러스터 외부에서도 접근 가능함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 노드의 특정 포트를 개방해 서비스에 접근하는 방식&lt;/p&gt;
&lt;pre id=&quot;code_1652491835161&quot; class=&quot;yaml&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: Service
metadata:
  name: hostname-svc-nodeport
spec:
  ports:
    - name: web-port
      port: 8080
      targetPort: 80
  selector:
    app: webserver
  type: NodePort&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서비스 생성하면..&lt;/p&gt;
&lt;pre id=&quot;code_1652491835161&quot; class=&quot;armasm&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl apply -f hostname-svc-nodeport.yaml
$ kubectl get services&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;PORT(S) 항목에 31514라고 출력되는데, 이는 모든 노드에서 동일하게 접근할 수 있는 포트를 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 노드에 내부 IP 또는 외부 IP를 통해 31514 포트로 접근하면 동일한 서비스에 연결할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 가지 특이한 점은 kubectl get service 명령어에서 CLUSTER-IP 항목에 내부 IP가 할당되어 있는데, 이는 NodePort 타입의 서비스가 ClusterIP의 기능을 포함하고 있기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, NodePort 타입의 서비스는 내부 네트워크와 외부 네트워크 양쪽에서 접근할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&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;LoadBalancer 타입의 서비스는 서비스 생성과 동시에 로드 밸런서를 새롭게 생성해 포드와 연결한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NodePort를 사용할 때는 각 노드의 IP를 알아야만 접근할 수 있었지만 LoadBalancer 타입의 서비스는 클라우드 플랫폼으로부터 도메인 이름과 IP를 할당받기 때문에 더 쉽게 접근할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반적으로 AWS, GCP와 같은 클라우드 플랫폼 환경에서 LoadBalancer 타입을 사용할 수 있으며 가상 머신이나 온프레미스 환경에선 힘들 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;hostname-deployment라는 디플로이먼트는 미리 생성되어 있다고 가정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;lt;hostname-svc-lb.yaml&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1652491835161&quot; class=&quot;yaml&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: Service
metadata:
  name: hostname-svc-lb
spec:
  ports:
    - name: web-port
      port: 80
      targetPort: 80
  selector:
    app: webserver
  type: LoadBalancer&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서비스 생성&lt;/p&gt;
&lt;pre id=&quot;code_1652491835162&quot; class=&quot;vim&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl apply -f hostname-svc-lb.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LoadBalancer 타입 또한 NodePort나 ClusterIP와 동일하게 IP가 할당됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;눈여겨봐야 할 것은 EXTERNAL-IP가 생성되며 이는 클라우드 플랫폼에서 자동으로 할당된 것임&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인프런: 대세는 쿠버네티스 강의자료 참조&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1231&quot; data-origin-height=&quot;648&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cy7aBl/btrB8Yr4Uh1/IgWWPNReVdHTnKOrIzj0MK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cy7aBl/btrB8Yr4Uh1/IgWWPNReVdHTnKOrIzj0MK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cy7aBl/btrB8Yr4Uh1/IgWWPNReVdHTnKOrIzj0MK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcy7aBl%2FbtrB8Yr4Uh1%2FIgWWPNReVdHTnKOrIzj0MK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1231&quot; height=&quot;648&quot; data-origin-width=&quot;1231&quot; data-origin-height=&quot;648&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가 중급 서비스 내용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파드를 동시에 생성하는 경우에 파드에서 파드로 접근할 때, IP를 알 수 없으니 Headless를 이용하여 도메인을 통한 접근하는 방법과 파드와 서비스를 연결하는 Endpoint 그리고 ExternalName도 알아둘 것&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1228&quot; data-origin-height=&quot;628&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lxggr/btrGQoGXDTL/cZVFactanS0vHi9E2toGf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lxggr/btrGQoGXDTL/cZVFactanS0vHi9E2toGf0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lxggr/btrGQoGXDTL/cZVFactanS0vHi9E2toGf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flxggr%2FbtrGQoGXDTL%2FcZVFactanS0vHi9E2toGf0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1228&quot; height=&quot;628&quot; data-origin-width=&quot;1228&quot; data-origin-height=&quot;628&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;References:&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://kubetm.github.io/k8s/03-beginner-basic-resource/service/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://kubetm.github.io/k8s/03-beginner-basic-resource/service/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1652607810291&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;Service&quot; data-og-description=&quot;ClusterIP, NodePort, LoadBalancer&quot; data-og-host=&quot;kubetm.github.io&quot; data-og-source-url=&quot;https://kubetm.github.io/k8s/03-beginner-basic-resource/service/&quot; data-og-url=&quot;https://kubetm.github.io/k8s/03-beginner-basic-resource/service/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/6ZhVj/hyOoGsbuHO/X074jEMHBA6ULz9l5PSGO1/img.jpg?width=884&amp;amp;height=230&amp;amp;face=0_0_884_230,https://scrap.kakaocdn.net/dn/6lU6Q/hyOoIKj7ZC/gjSghKRuSKmKafM5zrchMk/img.jpg?width=386&amp;amp;height=326&amp;amp;face=0_0_386_326,https://scrap.kakaocdn.net/dn/dp0Ht9/hyOpPgOZ9h/emtfbUCzkiaIWvbitffHE1/img.jpg?width=385&amp;amp;height=302&amp;amp;face=0_0_385_302&quot;&gt;&lt;a href=&quot;https://kubetm.github.io/k8s/03-beginner-basic-resource/service/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kubetm.github.io/k8s/03-beginner-basic-resource/service/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/6ZhVj/hyOoGsbuHO/X074jEMHBA6ULz9l5PSGO1/img.jpg?width=884&amp;amp;height=230&amp;amp;face=0_0_884_230,https://scrap.kakaocdn.net/dn/6lU6Q/hyOoIKj7ZC/gjSghKRuSKmKafM5zrchMk/img.jpg?width=386&amp;amp;height=326&amp;amp;face=0_0_386_326,https://scrap.kakaocdn.net/dn/dp0Ht9/hyOpPgOZ9h/emtfbUCzkiaIWvbitffHE1/img.jpg?width=385&amp;amp;height=302&amp;amp;face=0_0_385_302');&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;Service&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;ClusterIP, NodePort, LoadBalancer&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;kubetm.github.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;http://www.yes24.com/Product/Goods/84927385&quot;&gt;http://www.yes24.com/Product/Goods/84927385&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1652607827586&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;book&quot; data-og-title=&quot;시작하세요! 도커/쿠버네티스 - YES24&quot; data-og-description=&quot;본서는 도커를 처음 접하는 개발자를 위한 도커 컨테이너와 이미지의 기본적인 개념을 먼저 설명한 뒤, 도커 컴포즈와 스웜 모드를 통해 컨테이너 애플리케이션을 YAML 파일로 작성하고 클러스&quot; data-og-host=&quot;www.yes24.com&quot; data-og-source-url=&quot;http://www.yes24.com/Product/Goods/84927385&quot; data-og-url=&quot;http://www.yes24.com/Product/Goods/84927385&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/MZOBh/hyOpIvdhKQ/iQie2j33IWLxsg2N2nohF0/img.jpg?width=976&amp;amp;height=1200&amp;amp;face=0_0_976_1200,https://scrap.kakaocdn.net/dn/bIhJs8/hyOoGFKs9y/lf3Cap9paR9gp8RqYEMlY0/img.jpg?width=976&amp;amp;height=1200&amp;amp;face=0_0_976_1200,https://scrap.kakaocdn.net/dn/ysO9F/hyOpJOqowP/jVtS1XlT7fPrOi7wid4fi0/img.jpg?width=976&amp;amp;height=1200&amp;amp;face=0_0_976_1200&quot;&gt;&lt;a href=&quot;http://www.yes24.com/Product/Goods/84927385&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://www.yes24.com/Product/Goods/84927385&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/MZOBh/hyOpIvdhKQ/iQie2j33IWLxsg2N2nohF0/img.jpg?width=976&amp;amp;height=1200&amp;amp;face=0_0_976_1200,https://scrap.kakaocdn.net/dn/bIhJs8/hyOoGFKs9y/lf3Cap9paR9gp8RqYEMlY0/img.jpg?width=976&amp;amp;height=1200&amp;amp;face=0_0_976_1200,https://scrap.kakaocdn.net/dn/ysO9F/hyOpJOqowP/jVtS1XlT7fPrOi7wid4fi0/img.jpg?width=976&amp;amp;height=1200&amp;amp;face=0_0_976_1200');&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;시작하세요! 도커/쿠버네티스 - YES24&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;본서는 도커를 처음 접하는 개발자를 위한 도커 컨테이너와 이미지의 기본적인 개념을 먼저 설명한 뒤, 도커 컴포즈와 스웜 모드를 통해 컨테이너 애플리케이션을 YAML 파일로 작성하고 클러스&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.yes24.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>DevOps/Kubernetes</category>
      <category>deployment</category>
      <category>kubernetes</category>
      <category>kubernetes deployment</category>
      <category>kubernetes service</category>
      <category>Service</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/187</guid>
      <comments>https://hungc.tistory.com/187#entry187comment</comments>
      <pubDate>Sat, 14 May 2022 10:31:13 +0900</pubDate>
    </item>
    <item>
      <title>[troubleshooting] [kubelet-check] It seems like the kubelet isn't running or healthy.</title>
      <link>https://hungc.tistory.com/185</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;오류 메시지: [kubelet-check]&amp;nbsp;It&amp;nbsp;seems&amp;nbsp;like&amp;nbsp;the&amp;nbsp;kubelet&amp;nbsp;isn't&amp;nbsp;running&amp;nbsp;or&amp;nbsp;healthy.&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;218&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cymeuN/btrB7MKxY33/TWwAs3cm0ViMaJ6VQL3wX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cymeuN/btrB7MKxY33/TWwAs3cm0ViMaJ6VQL3wX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cymeuN/btrB7MKxY33/TWwAs3cm0ViMaJ6VQL3wX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcymeuN%2FbtrB7MKxY33%2FTWwAs3cm0ViMaJ6VQL3wX1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;932&quot; height=&quot;218&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;218&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;/etc/docker/daemon.json에 아래와 같이 작성 후&lt;/p&gt;
&lt;pre id=&quot;code_1652455690753&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
&quot;exec-opts&quot;: [&quot;native.cgroupdriver=systemd&quot;],
&quot;log-driver&quot;: &quot;json-file&quot;,
&quot;log-opts&quot;: {
&quot;max-size&quot;: &quot;100m&quot;
},
&quot;storage-driver&quot;: &quot;overlay2&quot;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 초기화&lt;/p&gt;
&lt;pre id=&quot;code_1652455702375&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubeadm reset
$ kubeadm init&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래도 안되면 리부팅 후 다시 초기화 진행&lt;/p&gt;</description>
      <category>DevOps/Kubernetes</category>
      <category>kubeadm init</category>
      <category>kubeadm 오류</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/185</guid>
      <comments>https://hungc.tistory.com/185#entry185comment</comments>
      <pubDate>Sat, 14 May 2022 00:29:33 +0900</pubDate>
    </item>
    <item>
      <title>쿠버네티스(kubernetes) Pod, Replica Set</title>
      <link>https://hungc.tistory.com/182</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;쿠버네티스(kubernetes) 포드(Pod), 레플리카셋(Replica Set)&lt;/h2&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;1165&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfDImP/btrBDmfH1a9/extV50ORXv6fcJcp13ki81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfDImP/btrBDmfH1a9/extV50ORXv6fcJcp13ki81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfDImP/btrBDmfH1a9/extV50ORXv6fcJcp13ki81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfDImP%2FbtrBDmfH1a9%2FextV50ORXv6fcJcp13ki81%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;250&quot; height=&quot;243&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;1165&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;쿠버네티스의 모든 리소스는 오브젝트 형태로 관리된다.&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1652000655519&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl api-resources
$ kubelctl explain pod&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;size18&quot;&gt;&lt;b&gt;쿠버네티스는 명령어보다 YAML 파일을 더 많이 사용한다.&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;size18&quot;&gt;&lt;b&gt;쿠버네티스는 여러 개의 컴포넌트로 구성되어 있다.&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;마스터 노드는 클러스터를 관리하는 역할을 담당하고, 워커 노드에 애플리케이션 컨테이너가 생성됨&lt;/li&gt;
&lt;li&gt;마스터 노드에는 API 서버, 컨트롤러 매니저, 스케줄러, DNS 서버 등이 실행되며 모든 노드에는 오버레이 네트워크 구성을 위해 프락시와 네트워크 플러그인이 실행됨&lt;/li&gt;
&lt;li&gt;마스터 노드에서 &quot;docker ps&quot; 명령어를 실행해보면 매우 많은 컨테이너가 실행되고 있음&lt;/li&gt;
&lt;li&gt;kubelet이라는 에이전트가 모든 노드에서 실행되는데, 컨테이너 생성, 삭제 뿐만 아니라 마스터와 워커 노드 간의 통신 역할을 담당하는 에이전트임&lt;/li&gt;
&lt;li&gt;쿠버네티스가 반드시 도커를 사용해야 하는 것은 아니며, OCI(Open Container Initiative)라는 컨테이너 런타임 표준을 구현한 CRI(Container Runtime Interface)를 갖추고 있다면 어떤 컨테이너를 써도 상관없음&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;포드(Pod): 컨테이너를 다루는 기본 단위&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1개 이상의 컨테이너로 구성된 컨테이너의 집합&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;YAML 파일은 일반적으로 apiVersion, kind, metadata, spec 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;&lt;b&gt;&amp;lt;nginx-pod.yaml&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1652000798890&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1        # 오브젝트의 API 버전
kind: Pod             # 리소스 종류
metadata:             # 라벨, 주석, 이름 등 부가 정보 입력
  name: my-nginx-pod
spec:                 # 리소스 생성을 위한 자세한 정보 입력
  containers:
  - name: my-nginx-container
    image: nginx:latest
    ports:
    - containerPort: 80
      protocol: TCP&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포드 생성하기&lt;/p&gt;
&lt;pre id=&quot;code_1652000766396&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl apply -f nginx-pod.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포드 목록 출력&lt;/p&gt;
&lt;pre id=&quot;code_1652000885397&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl get pods&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;727&quot; data-origin-height=&quot;227&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lWQOO/btrB489JgSG/WNM4WISqv5xHoP6o6KJXUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lWQOO/btrB489JgSG/WNM4WISqv5xHoP6o6KJXUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lWQOO/btrB489JgSG/WNM4WISqv5xHoP6o6KJXUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlWQOO%2FbtrB489JgSG%2FWNM4WISqv5xHoP6o6KJXUK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;727&quot; height=&quot;227&quot; data-origin-width=&quot;727&quot; data-origin-height=&quot;227&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리소스의 자세한 정보를 얻어오려면..&lt;/p&gt;
&lt;pre id=&quot;code_1652000925358&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl describe pods my-nginx-pod&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포드의 IP가 출력되는데, 이는 외부에서 접근할 수 있는 IP가 아니라 클러스터 내부에서만 접근 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 외부 또는 내부에서 포드에 접근하려면 서비스(service)라고 하는 오브젝트를 따로 생성해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단은 클러스터의 노드 중 하나에 접속한 뒤 nginx 포드의 ip로 http 전송하면 정상 실행임을 알 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포드 컨테이너 내부로 접속하려면..&lt;/p&gt;
&lt;pre id=&quot;code_1652000987310&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl exec -it my-nginx-pod bash&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로그 확인&lt;/p&gt;
&lt;pre id=&quot;code_1652521391912&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl logs my-nginx-pod&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;쿠버네티스의 오브젝트는 kubectl delete -f 명령어로 삭제할 수 있음&lt;/p&gt;
&lt;pre id=&quot;code_1652001033764&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl delete -f nginx-pod.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쿠버네티스가 포드를 사용하는 이유는 여러가지가 있지만 그 이유 중 하나는 여러 리눅스 네임스페이스를 공유하는 여러 컨테이너를 추상화된 집합으로 사용하기 위해서이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;kubectl get pods 명령어로 포드의 목록을 출력했을 때, READY 항목의 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;b&gt;&amp;lt;nginx-pod-with-ubuntu.yaml&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1652001087704&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1        # 오브젝트의 API 버전
kind: Pod             # 리소스 종류
metadata:             # 라벨, 주석, 이름 등 부가 정보 입력
  name: my-nginx-pod
spec:                 # 리소스 생성을 위한 자세한 정보 입력
  containers:
  - name: my-nginx-container
    image: nginx:latest
    ports:
    - containerPort: 80
      protocol: rep
  - name: ubuntu-sidecar-container
    image: alicek106/rr-test:curl
    command: [&quot;tail&quot;]
    args: [&quot;-f&quot;, &quot;/dev/null&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;yaml 파일을 쿠버네티스에 적용해보면 2개의 컨테이너가 실행중인 것을 확인할 수 있음&lt;/p&gt;
&lt;pre id=&quot;code_1652001143837&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl apply -f nginx-pod-with-ubuntu.yaml
$ kubectl get pods&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우분투 컨테이너 내부로 들어가려면..&lt;/p&gt;
&lt;pre id=&quot;code_1652001182563&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl exec -it my-nginx-pod -c ubuntu-sidecar-container bash&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 컨테이너에서 로컬호스토로 HTTP 전송을 하면 nginx 서버 응답이 도착하는데, 이는 포드 내의 컨테이너들이 네트워크 네임스페이스 등과 같은 리눅스 네임스페이스를 공유해 사용하기 때문이다.&lt;/p&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개의 컨테이너로 구성된 포드를 사용하는 경우가 많지만 기능 확장을 위한 추가 컨테이너를 포함시킬 수 있으며 이러한 부가적인 컨테이너를 사이드카(sidecar) 컨테이너라고 부른다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;레플리카셋(Replica Set): 일정 개수의 포드를 유지하는 컨트롤러&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동일한 여러 개의 포드를 직접 생성하는 방법은 적절하지 않다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포드가 어떤 이유로 삭제되거나 장애가 발생해 더 이상 포드에 접근하지 못 하게 됐을 때, 직접 삭제하고 생성하지 않는 한 해당 포드는 복구되지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 한계점을 해결해주는 것이 레플리카셋인데 정해진 수의 동일한 포드가 항상 실행되도록 관리하거나 노드 장애 등의 이유로 포드를 사용할 수 없다면 다른 노드에서 포드를 다시 생성할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;lt;replicaset-nginx.yaml&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1652522884524&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: replicaset-nginx
spec:
  replicas: 2
  selector:
    matchLabels: 
      app: my-nginx-pods-label
  template:
    metadata:
      name: my-nginx-pod
      labels:
        app: my-nginx-pods-label
    spec:
      containers:
      - name: my-nginx-container
        image: nginx:latest
        ports:
        - containerPort: 80&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레플리카셋 생성&lt;/p&gt;
&lt;pre id=&quot;code_1652522884527&quot; class=&quot;coq&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; $ kubectl apply -f replicaset-nginx.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레플리카셋과 포드 목록 확인&lt;/p&gt;
&lt;pre id=&quot;code_1652522884527&quot; class=&quot;routeros&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kebectl get po
$ kubectl get rs&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;823&quot; data-origin-height=&quot;194&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GEgq0/btrB4QO28m0/E0Mq8U2Mi5KsFU2nTFPPy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GEgq0/btrB4QO28m0/E0Mq8U2Mi5KsFU2nTFPPy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GEgq0/btrB4QO28m0/E0Mq8U2Mi5KsFU2nTFPPy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGEgq0%2FbtrB4QO28m0%2FE0Mq8U2Mi5KsFU2nTFPPy0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;823&quot; height=&quot;194&quot; data-origin-width=&quot;823&quot; data-origin-height=&quot;194&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;yaml 파일에서 포드를 3개로 늘리면 이미 생성된 래플리카셋을 다시 삭제하고 생성할 필요없이 1개가 더 추가된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 Label Selector를 이용해 이뤄지기 때문에 동일한 라벨을 가지는 포드를 미리 생성한다음 레플리카셋을 생성하더라도 동일하게 동작한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레플리카셋이 생성해 놓은 1개 포드의 라벨을 삭제한다면?&lt;/p&gt;
&lt;pre id=&quot;code_1652522884528&quot; class=&quot;routeros&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl edit pods replicaset-nginx-(hash값)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 파드는 이제 더 이상 관리 대상이 아니게 되며, 새로운 파드를 하나 더 생성된다.&lt;/p&gt;
&lt;pre id=&quot;code_1652522884528&quot; class=&quot;maxima&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl get pods --show-label&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 더 이상 관리대상이 아니기 때문에 레플리카셋을 삭제하더라도 해당 포드는 삭제되지 않으므로 직접 수동으로 삭제해야 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1652522884528&quot; class=&quot;shell&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl delete rs replicaset-nginx
$ kubectl get pods
$ kubectl delete pods replicaset-nginx-(hash값)&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;레플레카셋의 목적은 포드를 생성하는 것이 아닌 일정 개수의 포드를 유지하는 것이기 때문에 포드가 너무 많으면 포드를 삭제해 replicas에 설정된 숫자만큼 포드를 유지하고자 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&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-origin-width=&quot;1240&quot; data-origin-height=&quot;698&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdYDda/btrDoVg5fBm/aiWtE82jQTSEDBWEuSloXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdYDda/btrDoVg5fBm/aiWtE82jQTSEDBWEuSloXk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdYDda/btrDoVg5fBm/aiWtE82jQTSEDBWEuSloXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdYDda%2FbtrDoVg5fBm%2FaiWtE82jQTSEDBWEuSloXk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1240&quot; height=&quot;698&quot; data-origin-width=&quot;1240&quot; data-origin-height=&quot;698&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&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;References.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;http://www.yes24.com/Product/Goods/84927385&quot;&gt;http://www.yes24.com/Product/Goods/84927385&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1652492567238&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;book&quot; data-og-title=&quot;시작하세요! 도커/쿠버네티스 - YES24&quot; data-og-description=&quot;본서는 도커를 처음 접하는 개발자를 위한 도커 컨테이너와 이미지의 기본적인 개념을 먼저 설명한 뒤, 도커 컴포즈와 스웜 모드를 통해 컨테이너 애플리케이션을 YAML 파일로 작성하고 클러스&quot; data-og-host=&quot;www.yes24.com&quot; data-og-source-url=&quot;http://www.yes24.com/Product/Goods/84927385&quot; data-og-url=&quot;http://www.yes24.com/Product/Goods/84927385&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Txxwu/hyOnYfECbA/NRm0YftiLkFg1uOLP19bA0/img.jpg?width=976&amp;amp;height=1200&amp;amp;face=0_0_976_1200,https://scrap.kakaocdn.net/dn/bx7j5h/hyOoIoLnwN/GRgf7UeMIf97sPRSv82iik/img.jpg?width=976&amp;amp;height=1200&amp;amp;face=0_0_976_1200,https://scrap.kakaocdn.net/dn/cBNUMg/hyOnNSKgq4/Ef9Kzjb9RAiyXf575JH0P1/img.jpg?width=976&amp;amp;height=1200&amp;amp;face=0_0_976_1200&quot;&gt;&lt;a href=&quot;http://www.yes24.com/Product/Goods/84927385&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://www.yes24.com/Product/Goods/84927385&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Txxwu/hyOnYfECbA/NRm0YftiLkFg1uOLP19bA0/img.jpg?width=976&amp;amp;height=1200&amp;amp;face=0_0_976_1200,https://scrap.kakaocdn.net/dn/bx7j5h/hyOoIoLnwN/GRgf7UeMIf97sPRSv82iik/img.jpg?width=976&amp;amp;height=1200&amp;amp;face=0_0_976_1200,https://scrap.kakaocdn.net/dn/cBNUMg/hyOnNSKgq4/Ef9Kzjb9RAiyXf575JH0P1/img.jpg?width=976&amp;amp;height=1200&amp;amp;face=0_0_976_1200');&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;시작하세요! 도커/쿠버네티스 - YES24&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;본서는 도커를 처음 접하는 개발자를 위한 도커 컨테이너와 이미지의 기본적인 개념을 먼저 설명한 뒤, 도커 컴포즈와 스웜 모드를 통해 컨테이너 애플리케이션을 YAML 파일로 작성하고 클러스&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.yes24.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://kubetm.github.io/k8s/04-beginner-controller/replicaset/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://kubetm.github.io/k8s/04-beginner-controller/replicaset/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1653880539340&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;Replication Controller, ReplicaSet&quot; data-og-description=&quot;Template, Replicas, Selector&quot; data-og-host=&quot;kubetm.github.io&quot; data-og-source-url=&quot;https://kubetm.github.io/k8s/04-beginner-controller/replicaset/&quot; data-og-url=&quot;https://kubetm.github.io/k8s/04-beginner-controller/replicaset/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dlWVmk/hyOzMk5FzZ/waQYBaipOFQLOBzMmylnw0/img.jpg?width=885&amp;amp;height=232&amp;amp;face=0_0_885_232,https://scrap.kakaocdn.net/dn/cADTxa/hyOzMk5FB2/mEQS4e8vXNxl2ZarOVEkf1/img.jpg?width=413&amp;amp;height=315&amp;amp;face=0_0_413_315,https://scrap.kakaocdn.net/dn/kbXTr/hyOzVCjQxp/ZGk5eYMKmXbKvXeyJzNqdK/img.jpg?width=448&amp;amp;height=228&amp;amp;face=0_0_448_228&quot;&gt;&lt;a href=&quot;https://kubetm.github.io/k8s/04-beginner-controller/replicaset/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kubetm.github.io/k8s/04-beginner-controller/replicaset/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dlWVmk/hyOzMk5FzZ/waQYBaipOFQLOBzMmylnw0/img.jpg?width=885&amp;amp;height=232&amp;amp;face=0_0_885_232,https://scrap.kakaocdn.net/dn/cADTxa/hyOzMk5FB2/mEQS4e8vXNxl2ZarOVEkf1/img.jpg?width=413&amp;amp;height=315&amp;amp;face=0_0_413_315,https://scrap.kakaocdn.net/dn/kbXTr/hyOzVCjQxp/ZGk5eYMKmXbKvXeyJzNqdK/img.jpg?width=448&amp;amp;height=228&amp;amp;face=0_0_448_228');&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;Replication Controller, ReplicaSet&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Template, Replicas, Selector&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;kubetm.github.io&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>DevOps/Kubernetes</category>
      <category>kubernetes</category>
      <category>kubernetes pod</category>
      <category>kubernetes replicaset</category>
      <category>Replicaset</category>
      <category>쿠버네티스 포드</category>
      <author>알로그</author>
      <guid isPermaLink="true">https://hungc.tistory.com/182</guid>
      <comments>https://hungc.tistory.com/182#entry182comment</comments>
      <pubDate>Sun, 8 May 2022 16:14:53 +0900</pubDate>
    </item>
  </channel>
</rss>