<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>devNote</title>
    <link>https://sddev.tistory.com/</link>
    <description>노력형 영재의 개발 블로그입니다.
IT에 대한 생각, 개발 지식 등을 정리합니다.</description>
    <language>ko</language>
    <pubDate>Wed, 8 Apr 2026 05:24:05 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>sddev</managingEditor>
    <image>
      <title>devNote</title>
      <url>https://tistory1.daumcdn.net/tistory/4044297/attach/e92cce42109d4e9d80495784dcd9d917</url>
      <link>https://sddev.tistory.com</link>
    </image>
    <item>
      <title>AI 시대에 시간관리 앱이 필요할까?</title>
      <link>https://sddev.tistory.com/458</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;최근 몇 년 사이 AI 기술이 빠르게 발전했습니다.&lt;/p&gt;
&lt;p data-end=&quot;247&quot; data-start=&quot;212&quot; data-ke-size=&quot;size16&quot;&gt;ChatGPT, Claude, Copilot 같은 AI 도구들은&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;301&quot; data-start=&quot;249&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;259&quot; data-start=&quot;249&quot; data-section-id=&quot;1shj12w&quot;&gt;글을 써주고&lt;/li&gt;
&lt;li data-end=&quot;272&quot; data-start=&quot;260&quot; data-section-id=&quot;17nork4&quot;&gt;코드를 작성하고&lt;/li&gt;
&lt;li data-end=&quot;286&quot; data-start=&quot;273&quot; data-section-id=&quot;1gf2dq8&quot;&gt;업무를 자동화하고&lt;/li&gt;
&lt;li data-end=&quot;301&quot; data-start=&quot;287&quot; data-section-id=&quot;1mlj6hj&quot;&gt;정보를 정리해 줍니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;324&quot; data-start=&quot;303&quot; data-ke-size=&quot;size16&quot;&gt;그래서 어떤 사람들은 이렇게 말합니다.&lt;/p&gt;
&lt;p data-end=&quot;352&quot; data-start=&quot;326&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;ldquo;AI 시대에 시간관리 앱이 필요할까?&amp;rdquo;&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;401&quot; data-start=&quot;354&quot; data-ke-size=&quot;size16&quot;&gt;AI가 대부분의 일을 대신해 주는 시대라면&lt;br /&gt;시간관리는 더 이상 중요하지 않을까요?&lt;/p&gt;
&lt;p data-end=&quot;423&quot; data-start=&quot;403&quot; data-ke-size=&quot;size16&quot;&gt;하지만 실제로는 &lt;b&gt;정반대입니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;470&quot; data-start=&quot;425&quot; data-ke-size=&quot;size16&quot;&gt;AI 시대일수록&lt;br /&gt;&lt;b&gt;시간 관리와 할일 관리의 중요성은 더 커지고 있습니다.&lt;/b&gt;&lt;/p&gt;
&lt;hr data-end=&quot;475&quot; data-start=&quot;472&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;505&quot; data-start=&quot;477&quot; data-section-id=&quot;70g2da&quot;&gt;AI는 일을 대신하지만, 삶을 대신하지는 않는다&lt;/h1&gt;
&lt;p data-end=&quot;528&quot; data-start=&quot;507&quot; data-ke-size=&quot;size16&quot;&gt;AI는 많은 일을 대신할 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;535&quot; data-start=&quot;530&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;576&quot; data-start=&quot;537&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;547&quot; data-start=&quot;537&quot; data-section-id=&quot;1egac5c&quot;&gt;보고서 작성&lt;/li&gt;
&lt;li data-end=&quot;557&quot; data-start=&quot;548&quot; data-section-id=&quot;1d56kek&quot;&gt;코드 생성&lt;/li&gt;
&lt;li data-end=&quot;567&quot; data-start=&quot;558&quot; data-section-id=&quot;vn9le0&quot;&gt;자료 조사&lt;/li&gt;
&lt;li data-end=&quot;576&quot; data-start=&quot;568&quot; data-section-id=&quot;1kq8zts&quot;&gt;콘텐츠 작성&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;603&quot; data-start=&quot;578&quot; data-ke-size=&quot;size16&quot;&gt;하지만 AI가 대신할 수 없는 것이 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;607&quot; data-start=&quot;605&quot; data-ke-size=&quot;size16&quot;&gt;바로&lt;/p&gt;
&lt;p data-end=&quot;669&quot; data-start=&quot;609&quot; data-ke-size=&quot;size16&quot;&gt;✔ 무엇을 해야 하는지 결정하는 것&lt;br /&gt;✔ 어떤 일을 먼저 할지 선택하는 것&lt;br /&gt;✔ 인생의 방향을 정하는 것&lt;/p&gt;
&lt;p data-end=&quot;675&quot; data-start=&quot;671&quot; data-ke-size=&quot;size16&quot;&gt;입니다.&lt;/p&gt;
&lt;p data-end=&quot;730&quot; data-start=&quot;677&quot; data-ke-size=&quot;size16&quot;&gt;AI는 &lt;b&gt;도구(tool)&lt;/b&gt; 입니다.&lt;br /&gt;하지만 인생의 방향은 &lt;b&gt;사람이 결정해야 합니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;767&quot; data-start=&quot;732&quot; data-ke-size=&quot;size16&quot;&gt;그래서 여전히 &lt;b&gt;시간관리와 할일 관리 시스템&lt;/b&gt;이 필요합니다.&lt;/p&gt;
&lt;hr data-end=&quot;772&quot; data-start=&quot;769&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;799&quot; data-start=&quot;774&quot; data-section-id=&quot;1fri14f&quot;&gt;AI 시대의 문제는 &quot;시간 부족&quot;이 아니다&lt;/h1&gt;
&lt;p data-end=&quot;824&quot; data-start=&quot;801&quot; data-ke-size=&quot;size16&quot;&gt;예전에는 많은 사람들이 이렇게 말했습니다.&lt;/p&gt;
&lt;p data-end=&quot;841&quot; data-start=&quot;826&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;ldquo;시간이 부족하다.&amp;rdquo;&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;866&quot; data-start=&quot;843&quot; data-ke-size=&quot;size16&quot;&gt;하지만 AI 시대의 문제는 조금 다릅니다.&lt;/p&gt;
&lt;p data-end=&quot;871&quot; data-start=&quot;868&quot; data-ke-size=&quot;size16&quot;&gt;이제는&lt;/p&gt;
&lt;p data-end=&quot;895&quot; data-start=&quot;873&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;ldquo;무엇을 해야 할지 너무 많다.&amp;rdquo;&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;943&quot; data-start=&quot;897&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;911&quot; data-start=&quot;897&quot; data-section-id=&quot;s3qsg6&quot;&gt;해야 할 일이 많고&lt;/li&gt;
&lt;li data-end=&quot;924&quot; data-start=&quot;912&quot; data-section-id=&quot;13u1p89&quot;&gt;정보가 넘쳐나고&lt;/li&gt;
&lt;li data-end=&quot;943&quot; data-start=&quot;925&quot; data-section-id=&quot;1bnk7x3&quot;&gt;선택해야 할 것들이 많습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;953&quot; data-start=&quot;945&quot; data-ke-size=&quot;size16&quot;&gt;이런 상황에서는&lt;/p&gt;
&lt;p data-end=&quot;1006&quot; data-start=&quot;955&quot; data-ke-size=&quot;size16&quot;&gt;단순한 일정관리보다&lt;br /&gt;&lt;b&gt;할일 관리(Task Management)&lt;/b&gt; 가 더 중요해집니다.&lt;/p&gt;
&lt;hr data-end=&quot;1011&quot; data-start=&quot;1008&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;1039&quot; data-start=&quot;1013&quot; data-section-id=&quot;1vbtrw3&quot;&gt;AI 시대에는 Task 중심 관리가 중요하다&lt;/h1&gt;
&lt;p data-end=&quot;1053&quot; data-start=&quot;1041&quot; data-ke-size=&quot;size16&quot;&gt;기존의 시간관리 방식은&lt;/p&gt;
&lt;p data-end=&quot;1070&quot; data-start=&quot;1055&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;시간(Time) 중심&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;1078&quot; data-start=&quot;1072&quot; data-ke-size=&quot;size16&quot;&gt;이었습니다.&lt;/p&gt;
&lt;p data-end=&quot;1085&quot; data-start=&quot;1080&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1112&quot; data-start=&quot;1087&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1094&quot; data-start=&quot;1087&quot; data-section-id=&quot;vqgny4&quot;&gt;9시 업무&lt;/li&gt;
&lt;li data-end=&quot;1103&quot; data-start=&quot;1095&quot; data-section-id=&quot;n0zjc0&quot;&gt;11시 회의&lt;/li&gt;
&lt;li data-end=&quot;1112&quot; data-start=&quot;1104&quot; data-section-id=&quot;4dbev9&quot;&gt;14시 작업&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1141&quot; data-start=&quot;1114&quot; data-ke-size=&quot;size16&quot;&gt;하지만 AI 시대의 업무는 훨씬 더 유동적입니다.&lt;/p&gt;
&lt;p data-end=&quot;1151&quot; data-start=&quot;1143&quot; data-ke-size=&quot;size16&quot;&gt;AI를 활용하면&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1214&quot; data-start=&quot;1153&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1172&quot; data-start=&quot;1153&quot; data-section-id=&quot;1h3na8d&quot;&gt;작업 속도가 빨라지기도 하고&lt;/li&gt;
&lt;li data-end=&quot;1192&quot; data-start=&quot;1173&quot; data-section-id=&quot;qyuglx&quot;&gt;예상보다 오래 걸리기도 하고&lt;/li&gt;
&lt;li data-end=&quot;1214&quot; data-start=&quot;1193&quot; data-section-id=&quot;1jsijqi&quot;&gt;새로운 아이디어가 생기기도 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1226&quot; data-start=&quot;1216&quot; data-ke-size=&quot;size16&quot;&gt;그래서 중요한 것은&lt;/p&gt;
&lt;p data-end=&quot;1245&quot; data-start=&quot;1228&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;시간보다 Task입니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;1281&quot; data-start=&quot;1247&quot; data-ke-size=&quot;size16&quot;&gt;✔ 지금 해야 할 일&lt;br /&gt;✔ 중요한 일&lt;br /&gt;✔ 완료해야 할 일&lt;/p&gt;
&lt;p data-end=&quot;1301&quot; data-start=&quot;1283&quot; data-ke-size=&quot;size16&quot;&gt;이것을 중심으로 관리해야 합니다.&lt;/p&gt;
&lt;hr data-end=&quot;1306&quot; data-start=&quot;1303&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;1331&quot; data-start=&quot;1308&quot; data-section-id=&quot;fw9il4&quot;&gt;AI 시대의 생산성은 &quot;속도 + 방향&quot;&lt;/h1&gt;
&lt;p data-end=&quot;1348&quot; data-start=&quot;1333&quot; data-ke-size=&quot;size16&quot;&gt;AI는 속도를 높여 줍니다.&lt;/p&gt;
&lt;p data-end=&quot;1381&quot; data-start=&quot;1350&quot; data-ke-size=&quot;size16&quot;&gt;하지만 방향을 정하지 않으면&lt;br /&gt;속도는 의미가 없습니다.&lt;/p&gt;
&lt;p data-end=&quot;1388&quot; data-start=&quot;1383&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어&lt;/p&gt;
&lt;p data-end=&quot;1458&quot; data-start=&quot;1390&quot; data-ke-size=&quot;size16&quot;&gt;AI를 활용해서 하루에 10개의 일을 처리할 수 있다고 해도&lt;br /&gt;그 일이 &lt;b&gt;정말 중요한 일인지&lt;/b&gt;는 또 다른 문제입니다.&lt;/p&gt;
&lt;p data-end=&quot;1475&quot; data-start=&quot;1460&quot; data-ke-size=&quot;size16&quot;&gt;그래서 AI 시대의 생산성은&lt;/p&gt;
&lt;p data-end=&quot;1498&quot; data-start=&quot;1477&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Speed + Direction&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;1501&quot; data-start=&quot;1500&quot; data-ke-size=&quot;size16&quot;&gt;즉&lt;/p&gt;
&lt;p data-end=&quot;1529&quot; data-start=&quot;1503&quot; data-ke-size=&quot;size16&quot;&gt;✔ 빠르게 실행하고&lt;br /&gt;✔ 올바른 일을 하는 것&lt;/p&gt;
&lt;p data-end=&quot;1535&quot; data-start=&quot;1531&quot; data-ke-size=&quot;size16&quot;&gt;입니다.&lt;/p&gt;
&lt;hr data-end=&quot;1540&quot; data-start=&quot;1537&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;1559&quot; data-start=&quot;1542&quot; data-section-id=&quot;n1f7nh&quot;&gt;결국 중요한 것은 작은 실행&lt;/h1&gt;
&lt;p data-end=&quot;1579&quot; data-start=&quot;1561&quot; data-ke-size=&quot;size16&quot;&gt;많은 생산성 시스템이 복잡합니다.&lt;/p&gt;
&lt;p data-end=&quot;1595&quot; data-start=&quot;1581&quot; data-ke-size=&quot;size16&quot;&gt;하지만 실제로 중요한 것은&lt;/p&gt;
&lt;p data-end=&quot;1639&quot; data-start=&quot;1597&quot; data-ke-size=&quot;size16&quot;&gt;✔ 해야 할 일을 기록하고&lt;br /&gt;✔ 하나씩 실행하고&lt;br /&gt;✔ 완료를 체크하는 것&lt;/p&gt;
&lt;p data-end=&quot;1645&quot; data-start=&quot;1641&quot; data-ke-size=&quot;size16&quot;&gt;입니다.&lt;/p&gt;
&lt;p data-end=&quot;1686&quot; data-start=&quot;1647&quot; data-ke-size=&quot;size16&quot;&gt;이 작은 실행이 쌓이면&lt;br /&gt;하루가 달라지고&lt;br /&gt;삶의 방향이 달라집니다.&lt;/p&gt;
&lt;hr data-end=&quot;1691&quot; data-start=&quot;1688&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;1698&quot; data-start=&quot;1693&quot; data-section-id=&quot;20h5rq&quot;&gt;마무리&lt;/h1&gt;
&lt;p data-end=&quot;1720&quot; data-start=&quot;1700&quot; data-ke-size=&quot;size16&quot;&gt;AI는 우리의 능력을 확장해 줍니다.&lt;/p&gt;
&lt;p data-end=&quot;1725&quot; data-start=&quot;1722&quot; data-ke-size=&quot;size16&quot;&gt;하지만&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1778&quot; data-start=&quot;1727&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1744&quot; data-start=&quot;1727&quot; data-section-id=&quot;1folhzp&quot;&gt;무엇을 할지 결정하는 것&lt;/li&gt;
&lt;li data-end=&quot;1762&quot; data-start=&quot;1745&quot; data-section-id=&quot;nkd88o&quot;&gt;삶의 균형을 유지하는 것&lt;/li&gt;
&lt;li data-end=&quot;1778&quot; data-start=&quot;1763&quot; data-section-id=&quot;ar3d8r&quot;&gt;중요한 일을 실행하는 것&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1795&quot; data-start=&quot;1780&quot; data-ke-size=&quot;size16&quot;&gt;은 여전히 사람의 몫입니다.&lt;/p&gt;
&lt;p data-end=&quot;1826&quot; data-start=&quot;1797&quot; data-ke-size=&quot;size16&quot;&gt;그래서 AI 시대에도&lt;br /&gt;아니 &lt;b&gt;AI 시대일수록&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;1858&quot; data-start=&quot;1828&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;좋은 시간관리와 할일 관리 시스템이 필요합니다.&lt;/b&gt;&lt;/p&gt;
&lt;hr data-end=&quot;1863&quot; data-start=&quot;1860&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-end=&quot;1913&quot; data-start=&quot;1865&quot; data-ke-size=&quot;size16&quot;&gt;  Task 기반 Life Management Tool&lt;br /&gt;&lt;b&gt;Speedetail&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;2023&quot; data-start=&quot;1915&quot; data-ke-size=&quot;size16&quot;&gt;Android&lt;br /&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.speedetail.speedetailapp&amp;amp;pcampaignid=web_share&quot;&gt;https://play.google.com/store/apps/details?id=com.speedetail.speedetailapp&amp;amp;pcampaignid=web_share&lt;/a&gt;&lt;/p&gt;
&lt;p data-end=&quot;2086&quot; data-start=&quot;2025&quot; data-ke-size=&quot;size16&quot;&gt;iOS&lt;br /&gt;&lt;a href=&quot;https://apps.apple.com/kr/app/speedetail/id6502599511&quot;&gt;https://apps.apple.com/kr/app/speedetail/id6502599511&lt;/a&gt;&lt;/p&gt;
&lt;p data-end=&quot;2126&quot; data-start=&quot;2088&quot; data-ke-size=&quot;size16&quot;&gt;  공식 사이트&lt;br /&gt;&lt;a href=&quot;https://www.speedetail.com&quot;&gt;https://www.speedetail.com&lt;/a&gt;&lt;/p&gt;</description>
      <category>시간 관리</category>
      <author>sddev</author>
      <guid isPermaLink="true">https://sddev.tistory.com/458</guid>
      <comments>https://sddev.tistory.com/458#entry458comment</comments>
      <pubDate>Tue, 17 Mar 2026 12:49:36 +0900</pubDate>
    </item>
    <item>
      <title>시간관리 안되는 사람 특징 5가지 - SPEEDETAIL 앱추천</title>
      <link>https://sddev.tistory.com/457</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;(대부분 사람들이 모르는 시간관리 방법)&lt;/p&gt;
&lt;p data-end=&quot;244&quot; data-start=&quot;218&quot; data-ke-size=&quot;size16&quot;&gt;많은 사람들이 &lt;b&gt;시간관리 방법&lt;/b&gt;을 찾습니다.&lt;/p&gt;
&lt;p data-end=&quot;244&quot; data-start=&quot;218&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;301&quot; data-start=&quot;246&quot; data-ke-size=&quot;size16&quot;&gt;하지만 대부분의 사람들은&lt;br /&gt;&lt;b&gt;시간관리 방법을 배우기 전에&lt;/b&gt;&lt;br /&gt;먼저 알아야 할 것이 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;312&quot; data-start=&quot;303&quot; data-ke-size=&quot;size16&quot;&gt;바로 이것입니다.&lt;/p&gt;
&lt;blockquote data-end=&quot;332&quot; data-start=&quot;314&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;332&quot; data-start=&quot;316&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;시간관리가 안되는 이유&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;376&quot; data-start=&quot;334&quot; data-ke-size=&quot;size16&quot;&gt;시간관리가 어려운 사람들에게는&lt;br /&gt;몇 가지 &lt;b&gt;공통적인 특징&lt;/b&gt;이 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;376&quot; data-start=&quot;334&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;417&quot; data-start=&quot;378&quot; data-ke-size=&quot;size16&quot;&gt;혹시 아래 중에&lt;br /&gt;&lt;b&gt;본인에게 해당되는 것이 있는지 확인해보세요.&lt;/b&gt;&lt;/p&gt;
&lt;hr data-end=&quot;422&quot; data-start=&quot;419&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;446&quot; data-start=&quot;424&quot; data-section-id=&quot;p75pc4&quot;&gt;1. 해야 할 일을 기록하지 않는다&lt;/h1&gt;
&lt;p data-end=&quot;483&quot; data-start=&quot;448&quot; data-ke-size=&quot;size16&quot;&gt;시간관리가 잘 되는 사람은&lt;br /&gt;&lt;b&gt;모든 할 일을 기록합니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;502&quot; data-start=&quot;485&quot; data-ke-size=&quot;size16&quot;&gt;반대로 시간관리가 어려운 사람은&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;533&quot; data-start=&quot;504&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;516&quot; data-start=&quot;504&quot; data-section-id=&quot;15s1l5&quot;&gt;기억에 의존하고&lt;/li&gt;
&lt;li data-end=&quot;533&quot; data-start=&quot;517&quot; data-section-id=&quot;3zji07&quot;&gt;생각날 때만 일을 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;545&quot; data-start=&quot;535&quot; data-ke-size=&quot;size16&quot;&gt;문제는 이것입니다.&lt;/p&gt;
&lt;blockquote data-end=&quot;583&quot; data-start=&quot;547&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;583&quot; data-start=&quot;549&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;사람의 기억은 할 일을 관리하기 위한 도구가 아닙니다.&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;591&quot; data-start=&quot;585&quot; data-ke-size=&quot;size16&quot;&gt;그래서 결국&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;642&quot; data-start=&quot;593&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;608&quot; data-start=&quot;593&quot; data-section-id=&quot;9z02ib&quot;&gt;해야 할 일을 놓치고&lt;/li&gt;
&lt;li data-end=&quot;625&quot; data-start=&quot;609&quot; data-section-id=&quot;180t21r&quot;&gt;중요한 일을 잊어버리고&lt;/li&gt;
&lt;li data-end=&quot;642&quot; data-start=&quot;626&quot; data-section-id=&quot;rx54jm&quot;&gt;일이 계속 밀리게 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;682&quot; data-start=&quot;644&quot; data-ke-size=&quot;size16&quot;&gt;그래서 &lt;b&gt;할일 관리 앱이나 ToDo 리스트가 필요한 이유입니다.&lt;/b&gt;&lt;/p&gt;
&lt;hr data-end=&quot;687&quot; data-start=&quot;684&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;712&quot; data-start=&quot;689&quot; data-section-id=&quot;110ne3q&quot;&gt;2. 일정과 할 일을 구분하지 못한다&lt;/h1&gt;
&lt;p data-end=&quot;747&quot; data-start=&quot;714&quot; data-ke-size=&quot;size16&quot;&gt;많은 사람들이&lt;br /&gt;&lt;b&gt;일정과 할 일을 섞어서 관리합니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;772&quot; data-start=&quot;749&quot; data-ke-size=&quot;size16&quot;&gt;하지만 두 가지는 비슷하지만 분명히 다른 개념입니다.&lt;/p&gt;
&lt;p data-end=&quot;808&quot; data-start=&quot;774&quot; data-ke-size=&quot;size16&quot;&gt;✔ &lt;b&gt;일정 &amp;rarr; 캘린더&lt;/b&gt;&lt;br /&gt;✔ &lt;b&gt;할 일 &amp;rarr; 할일 목록&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;808&quot; data-start=&quot;774&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;815&quot; data-start=&quot;810&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어&lt;/p&gt;
&lt;p data-end=&quot;837&quot; data-start=&quot;817&quot; data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;일정 (Calendar)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;867&quot; data-start=&quot;839&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;845&quot; data-start=&quot;839&quot; data-section-id=&quot;arx6gs&quot;&gt;회의&lt;/li&gt;
&lt;li data-end=&quot;852&quot; data-start=&quot;846&quot; data-section-id=&quot;culz3s&quot;&gt;약속&lt;/li&gt;
&lt;li data-end=&quot;859&quot; data-start=&quot;853&quot; data-section-id=&quot;c4egi9&quot;&gt;출장&lt;/li&gt;
&lt;li data-end=&quot;867&quot; data-start=&quot;860&quot; data-section-id=&quot;4v4s1o&quot;&gt;병원 예약&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;885&quot; data-start=&quot;869&quot; data-ke-size=&quot;size16&quot;&gt;✅ &lt;b&gt;할 일 (Task)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;922&quot; data-start=&quot;887&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;897&quot; data-start=&quot;887&quot; data-section-id=&quot;1egac5c&quot;&gt;보고서 작성&lt;/li&gt;
&lt;li data-end=&quot;906&quot; data-start=&quot;898&quot; data-section-id=&quot;1em2z1p&quot;&gt;운동하기&lt;/li&gt;
&lt;li data-end=&quot;915&quot; data-start=&quot;907&quot; data-section-id=&quot;qhmigw&quot;&gt;책 읽기&lt;/li&gt;
&lt;li data-end=&quot;922&quot; data-start=&quot;916&quot; data-section-id=&quot;1wqs3x1&quot;&gt;공부하기&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;935&quot; data-start=&quot;924&quot; data-ke-size=&quot;size16&quot;&gt;문제는 많은 사람들이&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;991&quot; data-start=&quot;937&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;957&quot; data-start=&quot;937&quot; data-section-id=&quot;1ywuj4k&quot;&gt;&lt;b&gt;일정을 할일 목록에 적거나&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;991&quot; data-start=&quot;958&quot; data-section-id=&quot;1w2z8wn&quot;&gt;&lt;b&gt;할 일을 캘린더에 모두 넣으려고 한다는 것&lt;/b&gt;입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1009&quot; data-start=&quot;993&quot; data-ke-size=&quot;size16&quot;&gt;그러면 현실에서 자주 발생하는&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1050&quot; data-start=&quot;1011&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1020&quot; data-start=&quot;1011&quot; data-section-id=&quot;1hjqxlx&quot;&gt;일정 취소&lt;/li&gt;
&lt;li data-end=&quot;1030&quot; data-start=&quot;1021&quot; data-section-id=&quot;15f3vr0&quot;&gt;일정 변경&lt;/li&gt;
&lt;li data-end=&quot;1040&quot; data-start=&quot;1031&quot; data-section-id=&quot;13rt9rx&quot;&gt;일정 밀림&lt;/li&gt;
&lt;li data-end=&quot;1050&quot; data-start=&quot;1041&quot; data-section-id=&quot;ko6vzc&quot;&gt;갑작스러운 일&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1083&quot; data-start=&quot;1052&quot; data-ke-size=&quot;size16&quot;&gt;같은 상황이 생길 때&lt;br /&gt;&lt;b&gt;관리 체계가 무너집니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;1083&quot; data-start=&quot;1052&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1100&quot; data-start=&quot;1085&quot; data-ke-size=&quot;size16&quot;&gt;그래서 좋은 시간관리 도구는&lt;/p&gt;
&lt;p data-end=&quot;1153&quot; data-start=&quot;1102&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;1176&quot; data-start=&quot;1155&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;교통 정리 역할을 해야 합니다.&lt;/b&gt;&lt;/p&gt;
&lt;hr data-end=&quot;1181&quot; data-start=&quot;1178&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;1202&quot; data-start=&quot;1183&quot; data-section-id=&quot;155js1m&quot;&gt;3. 우선순위를 정하지 않는다&lt;/h1&gt;
&lt;p data-end=&quot;1240&quot; data-start=&quot;1204&quot; data-ke-size=&quot;size16&quot;&gt;모든 일을 동일하게 생각하면&lt;br /&gt;정작 중요한 일을 놓치게 됩니다.&lt;/p&gt;
&lt;p data-end=&quot;1285&quot; data-start=&quot;1242&quot; data-ke-size=&quot;size16&quot;&gt;그래서 시간관리를 잘 하는 사람들은&lt;br /&gt;항상 &lt;b&gt;우선순위 기준&lt;/b&gt;이 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;1292&quot; data-start=&quot;1287&quot; data-ke-size=&quot;size16&quot;&gt;대표적으로&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1307&quot; data-start=&quot;1294&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1301&quot; data-start=&quot;1294&quot; data-section-id=&quot;1cc6y09&quot;&gt;중요도&lt;/li&gt;
&lt;li data-end=&quot;1307&quot; data-start=&quot;1302&quot; data-section-id=&quot;23sj1t&quot;&gt;긴급도&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1331&quot; data-start=&quot;1309&quot; data-ke-size=&quot;size16&quot;&gt;이 기준으로 &lt;b&gt;할 일을 정리합니다.&lt;/b&gt;&lt;/p&gt;
&lt;hr data-end=&quot;1336&quot; data-start=&quot;1333&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;1359&quot; data-start=&quot;1338&quot; data-section-id=&quot;iauhqd&quot;&gt;4. 작은 성취를 기록하지 않는다&lt;/h1&gt;
&lt;p data-end=&quot;1392&quot; data-start=&quot;1361&quot; data-ke-size=&quot;size16&quot;&gt;사람은 &lt;b&gt;성취감이 있어야 계속 행동할 수 있습니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;1405&quot; data-start=&quot;1394&quot; data-ke-size=&quot;size16&quot;&gt;그래서 작은 일이라도&lt;/p&gt;
&lt;p data-end=&quot;1447&quot; data-start=&quot;1407&quot; data-ke-size=&quot;size16&quot;&gt;✔ 체크박스를 누르고&lt;br /&gt;✔ 완료 표시를 하고&lt;br /&gt;✔ 성취를 기록하는 것&lt;/p&gt;
&lt;p data-end=&quot;1463&quot; data-start=&quot;1449&quot; data-ke-size=&quot;size16&quot;&gt;이것이 굉장히 중요합니다.&lt;/p&gt;
&lt;p data-end=&quot;1499&quot; data-start=&quot;1465&quot; data-ke-size=&quot;size16&quot;&gt;작은 성공이 쌓이면&lt;br /&gt;자연스럽게 &lt;b&gt;실행력이 올라갑니다.&lt;/b&gt;&lt;/p&gt;
&lt;hr data-end=&quot;1504&quot; data-start=&quot;1501&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;1530&quot; data-start=&quot;1506&quot; data-section-id=&quot;u8k5vp&quot;&gt;5. 일을 미루는 것에 죄책감을 가진다&lt;/h1&gt;
&lt;p data-end=&quot;1550&quot; data-start=&quot;1532&quot; data-ke-size=&quot;size16&quot;&gt;현실에서는 일이 자주 미뤄집니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1610&quot; data-start=&quot;1552&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1570&quot; data-start=&quot;1552&quot; data-section-id=&quot;p8jjsg&quot;&gt;갑자기 일이 생기기도 하고&lt;/li&gt;
&lt;li data-end=&quot;1594&quot; data-start=&quot;1571&quot; data-section-id=&quot;1k5q63d&quot;&gt;예상보다 시간이 오래 걸리기도 하고&lt;/li&gt;
&lt;li data-end=&quot;1610&quot; data-start=&quot;1595&quot; data-section-id=&quot;1lystte&quot;&gt;일정이 바뀌기도 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1629&quot; data-start=&quot;1612&quot; data-ke-size=&quot;size16&quot;&gt;그래서 중요한 사실이 있습니다.&lt;/p&gt;
&lt;blockquote data-end=&quot;1663&quot; data-start=&quot;1631&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1663&quot; data-start=&quot;1633&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;사정이 생겨서 일을 미루는 것은 죄가 아닙니다.&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;1680&quot; data-start=&quot;1665&quot; data-ke-size=&quot;size16&quot;&gt;진짜 문제는 따로 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;1694&quot; data-start=&quot;1682&quot; data-ke-size=&quot;size16&quot;&gt;많은 시간관리 도구들이&lt;/p&gt;
&lt;p data-end=&quot;1758&quot; data-start=&quot;1696&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;일을 미루면서도&lt;br /&gt;그 일을 끝까지 놓치지 않도록 관리해 주는 역할을&lt;br /&gt;제대로 하지 못한다는 점입니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;1775&quot; data-start=&quot;1760&quot; data-ke-size=&quot;size16&quot;&gt;그래서 할 일을 미루는 순간&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1819&quot; data-start=&quot;1777&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1790&quot; data-start=&quot;1777&quot; data-section-id=&quot;f6fv6y&quot;&gt;할 일이 잊혀지고&lt;/li&gt;
&lt;li data-end=&quot;1804&quot; data-start=&quot;1791&quot; data-section-id=&quot;4ncy3c&quot;&gt;관리에서 사라지고&lt;/li&gt;
&lt;li data-end=&quot;1819&quot; data-start=&quot;1805&quot; data-section-id=&quot;kq2gq9&quot;&gt;결국 못 하게 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1832&quot; data-start=&quot;1821&quot; data-ke-size=&quot;size16&quot;&gt;좋은 시간관리 도구는&lt;/p&gt;
&lt;p data-end=&quot;1891&quot; data-start=&quot;1834&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;hr data-end=&quot;1896&quot; data-start=&quot;1893&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;1902&quot; data-start=&quot;1898&quot; data-section-id=&quot;yim43j&quot;&gt;정리&lt;/h1&gt;
&lt;p data-end=&quot;1925&quot; data-start=&quot;1904&quot; data-ke-size=&quot;size16&quot;&gt;시간관리의 핵심은 생각보다 단순합니다.&lt;/p&gt;
&lt;p data-end=&quot;2011&quot; data-start=&quot;1927&quot; data-ke-size=&quot;size16&quot;&gt;✔ 해야 할 일을 기록하고&lt;br /&gt;✔ 일정과 할 일을 구분하고&lt;br /&gt;✔ 우선순위를 정하고&lt;br /&gt;✔ 작은 성취를 기록하고&lt;br /&gt;✔ 미뤄진 일도 끝까지 관리하는 것&lt;/p&gt;
&lt;p data-end=&quot;2044&quot; data-start=&quot;2013&quot; data-ke-size=&quot;size16&quot;&gt;이 다섯 가지만 잘 해도&lt;br /&gt;시간관리는 훨씬 쉬워집니다.&lt;/p&gt;
&lt;hr data-end=&quot;2049&quot; data-start=&quot;2046&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;2056&quot; data-start=&quot;2051&quot; data-section-id=&quot;20h5rq&quot;&gt;마무리&lt;/h1&gt;
&lt;p data-end=&quot;2099&quot; data-start=&quot;2058&quot; data-ke-size=&quot;size16&quot;&gt;필자는 &lt;b&gt;MBTI에서 70% 이상의 P 성향&lt;/b&gt;이라&lt;br /&gt;시간관리가 항상 어려웠습니다.&lt;/p&gt;
&lt;p data-end=&quot;2148&quot; data-start=&quot;2101&quot; data-ke-size=&quot;size16&quot;&gt;하지만 지난 &lt;b&gt;7년 동안 개발해 온 SPEEDETAIL 시간관리 앱을 사용하면서&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2168&quot; data-start=&quot;2150&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2156&quot; data-start=&quot;2150&quot; data-section-id=&quot;cp604s&quot;&gt;직장&lt;/li&gt;
&lt;li data-end=&quot;2163&quot; data-start=&quot;2157&quot; data-section-id=&quot;1x6botw&quot;&gt;교회&lt;/li&gt;
&lt;li data-end=&quot;2168&quot; data-start=&quot;2164&quot; data-section-id=&quot;yi31kt&quot;&gt;가정&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;2204&quot; data-start=&quot;2170&quot; data-ke-size=&quot;size16&quot;&gt;여러 역할을 &lt;b&gt;시간관리 스트레스 없이 살아가고 있습니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;2258&quot; data-start=&quot;2206&quot; data-ke-size=&quot;size16&quot;&gt;SPEEDETAIL은&lt;br /&gt;단순히 할 일 관리의 필요성을 강조하며&lt;br /&gt;위기감만 주는 앱이 아니라&lt;/p&gt;
&lt;p data-end=&quot;2308&quot; data-start=&quot;2260&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;ldquo;어떻게 할 것인가(How To)&amp;rdquo;를 실제로 실행할 수 있도록 돕는 도구입니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;2344&quot; data-start=&quot;2310&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;2344&quot; data-start=&quot;2310&quot; data-ke-size=&quot;size16&quot;&gt;시간관리에 성공한 경험이 없으셨다면&lt;br /&gt;한 번 사용해 보세요.&lt;/p&gt;
&lt;p data-end=&quot;2385&quot; data-start=&quot;2346&quot; data-ke-size=&quot;size16&quot;&gt;정말 단순한 원리이지만&lt;br /&gt;&lt;b&gt;강력한 변화를 경험하실 수 있습니다.&lt;/b&gt;&lt;/p&gt;
&lt;hr data-end=&quot;2390&quot; data-start=&quot;2387&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-end=&quot;2428&quot; data-start=&quot;2392&quot; data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;할일 기반 인생관리 앱&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Speedetail&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;2538&quot; data-start=&quot;2430&quot; data-ke-size=&quot;size16&quot;&gt;Android&lt;br /&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.speedetail.speedetailapp&amp;amp;pcampaignid=web_share&quot;&gt;https://play.google.com/store/apps/details?id=com.speedetail.speedetailapp&amp;amp;pcampaignid=web_share&lt;/a&gt;&lt;/p&gt;
&lt;p data-end=&quot;2601&quot; data-start=&quot;2540&quot; data-ke-size=&quot;size16&quot;&gt;iOS&lt;br /&gt;&lt;a href=&quot;https://apps.apple.com/kr/app/speedetail/id6502599511&quot;&gt;https://apps.apple.com/kr/app/speedetail/id6502599511&lt;/a&gt;&lt;/p&gt;
&lt;p data-end=&quot;2638&quot; data-start=&quot;2603&quot; data-ke-size=&quot;size16&quot;&gt;공식 사이트&lt;br /&gt;&lt;a href=&quot;https://www.speedetail.com&quot;&gt;https://www.speedetail.com&lt;/a&gt;&lt;/p&gt;</description>
      <category>시간 관리</category>
      <author>sddev</author>
      <guid isPermaLink="true">https://sddev.tistory.com/457</guid>
      <comments>https://sddev.tistory.com/457#entry457comment</comments>
      <pubDate>Tue, 17 Mar 2026 12:45:01 +0900</pubDate>
    </item>
    <item>
      <title>[Toeic] LC 원칙 &amp;amp; RC 원칙 &amp;amp; 문제 풀이 원칙</title>
      <link>https://sddev.tistory.com/456</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;LC&amp;nbsp; 원칙&lt;/h3&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: justify;&quot;&gt;0. LC에서 사용하는 &lt;b&gt;&lt;u&gt;용어는 대부분의 단어는 80% 정도 이미 알고 있고&lt;/u&gt;&lt;/b&gt;, 간혹 모르는 단어가 있더라도 &lt;b&gt;&lt;u&gt;모든 단어를 모르지 않는다는 사실&lt;/u&gt;&lt;/b&gt;을 명심한다.&lt;br&gt;&amp;nbsp;&lt;br&gt;0. 언어는 결국 &lt;b&gt;&lt;u&gt;의사소통이기 때문에, 말하는 사람도&amp;nbsp;&amp;nbsp;전달하고자 하는 핵심 내용에 강세를 줘서 말한다는 사실을 기억&lt;/u&gt;&lt;/b&gt;해야 한다.&lt;br&gt;&lt;br&gt;// 모든 단어를 들어야 이해할 수 있는게 아니라, 핵심 전달 단어만 전달되면 의사소통이 되는 것이다.&lt;br&gt;1. 모든 단어에 가중치를 두지 말고, 뭐라 장황하게 얘기해도 &lt;b&gt;&lt;u&gt;&lt;span style=&quot;color: #EE2323;&quot;&gt;핵심 의도를 담은 단어(주로 명사와 동사)만 추출하는 훈련&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;해라.&lt;br&gt;(&lt;b&gt;&lt;u&gt;&lt;span style=&quot;color: #EE2323;&quot;&gt;쓸데 없는 단어를 버리는데 있다. 영어권 사람들은 핵심 단어만 듣도록 이미 튜닝&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;이 되어 있다.)&lt;br&gt;(듣고 말하는데 완벽한 문법이 뭐가 필요한가? 의사 전달만 되면 되지)&lt;br&gt;&amp;nbsp;&lt;br&gt;2. &lt;b&gt;&lt;u&gt;&lt;span style=&quot;color: #EE2323;&quot;&gt;상황, 장소을 상상하고 예상&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;하라. (듣기 문제의 경우 &lt;u&gt;선택지를 먼저 읽으며, 상상&lt;/u&gt;해 봐라)&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1018&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/crKkQP/dJMcabcl8GP/RdRb0nmNCshzq1eqdXkv2K/tfile.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/crKkQP/dJMcabcl8GP/RdRb0nmNCshzq1eqdXkv2K/tfile.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/crKkQP/dJMcabcl8GP/RdRb0nmNCshzq1eqdXkv2K/tfile.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcrKkQP%2FdJMcabcl8GP%2FRdRb0nmNCshzq1eqdXkv2K%2Ftfile.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;1440&quot; height=&quot;1018&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1018&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;RC&amp;nbsp; 원칙&lt;/h3&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: justify;&quot;&gt;기본 문법만 외우고, 기출문제 푼다.&lt;br&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=_tXHTsqyNp8&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;https://www.youtube.com/watch?v=_tXHTsqyNp8&lt;/span&gt;&lt;/a&gt;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/bXmG9m/dJMcaibqJdF/gMuOBfT1wAcFKKKkdBiH5k/%ED%86%A0%EC%9D%B52%EC%8B%9C%EA%B0%84%20%EB%AC%B8%EB%B2%95%28%ED%8C%A8%EB%93%9C%EC%9A%A9%29.pdf?attach=1&amp;amp;knm=tfile.pdf&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;토익2시간 문법(패드용).pdf&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;2.18MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/zpCaw/dJMcahp2ROm/dit5DRkykSN5ngki5rKpQK/%ED%86%A0%EC%9D%B52%EC%8B%9C%EA%B0%84%20%EB%AC%B8%EB%B2%95%28%EC%B6%9C%EB%A0%A5%EC%9A%A9%29.pdf?attach=1&amp;amp;knm=tfile.pdf&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;토익2시간 문법(출력용).pdf&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;1.99MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&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;0. 파본 검사 (1분 30초)&lt;br&gt;1. 듣기 영역 (LC, 45분, 100문항)&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;Part 0 안내 방송 (1분 30초) // Now let us begin&lt;/li&gt;&lt;li&gt;Part 1 (사진 묘사): 6문항&lt;/li&gt;&lt;li&gt;Part 2 (질의응답): 25문항&lt;/li&gt;&lt;li&gt;Part 3 (짧은 대화): 39문항&lt;/li&gt;&lt;li&gt;Part 4 (짧은 담화): 30문항&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;2. 독해 영역 (RC, 75분, 100문항)&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;Part 5 (단문 빈칸 채우기): 30문항 // 문제당 20초, 10분 내외&lt;/li&gt;&lt;li&gt;Part 6 (장문 빈칸 채우기): 16문항 // 문제당 50초, 13분 내외&lt;/li&gt;&lt;li&gt;Part 7 (독해): 54문항 (단일 / 복수 지문) //&amp;nbsp; 문제당 50초, 45분 내외&lt;/li&gt;&lt;/ul&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;&lt;b&gt;Part 5 (단문 공란 메우기, 30문항):&lt;/b&gt;&amp;nbsp;품사, 동사 형태, 접속사/전치사, 대명사 등 문법 위주. 문장을 구조적으로 분석하여 10분 내에 풀어야 함.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Part 6 (장문 공란 메우기, 16문항):&lt;/b&gt;&amp;nbsp;문맥을 파악해 문장 채우기 및 어휘 문제. 문맥 흐름이 중요하며 10분 내 해결 권장.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Part 7 (독해, 54문항):&lt;/b&gt;&amp;nbsp;이메일, 기사, 공지 등 다양한 지문. 주제, 세부 내용, 추론 문제를 빠르게 찾아내야 하며, 가장 많은 시간(45분 이상) 투자 필요.&lt;/li&gt;&lt;/ul&gt;</description>
      <category>학습 &amp;amp; 경력준비/자격증 &amp;amp; 시험준비</category>
      <author>sddev</author>
      <guid isPermaLink="true">https://sddev.tistory.com/456</guid>
      <comments>https://sddev.tistory.com/456#entry456comment</comments>
      <pubDate>Fri, 6 Mar 2026 10:04:26 +0900</pubDate>
    </item>
    <item>
      <title>[AI] Claude Cowork &amp;amp; Plugins란?</title>
      <link>https://sddev.tistory.com/455</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;Desktop Application의 형태로 &lt;span style=&quot;color: #EE2323;&quot;&gt;설치형 프로그램&lt;/span&gt;&lt;br&gt;&lt;span style=&quot;color: #EE2323;&quot;&gt;Claude Code 를 사용&lt;/span&gt;하면서 &lt;span style=&quot;color: #EE2323;&quot;&gt;Cowork 탭도 제공하여, &lt;b&gt;일반 지식 업무 전반을 Ai 기반으로 동작할 수 있도록&lt;/b&gt; &lt;/span&gt;함&lt;br&gt;&lt;br&gt;기존 &lt;span style=&quot;color: #EE2323;&quot;&gt;Code처럼 &lt;b&gt;로컬 파일에 접근&lt;/b&gt;할 수 있고&lt;/span&gt;, &lt;span style=&quot;color: #EE2323;&quot;&gt;&lt;b&gt;브라우저 작업&lt;/b&gt;도 가능&lt;/span&gt;하며, 주로 &lt;span style=&quot;color: #EE2323;&quot;&gt;산출물은 코드가 아닌 문서&lt;/span&gt;(html, ppt, docx), 단 내부적으로 파이썬 코드를 만들어 수행하여 원하는 작업을 수행함&lt;br&gt;&lt;br&gt;&lt;span style=&quot;color: #EE2323;&quot;&gt;대규모 배치 작업, 분석 작업 등을 수행 가능&lt;/span&gt;하다.&lt;br&gt;&lt;br&gt;&lt;span style=&quot;color: #EE2323;&quot;&gt;진행과정 (스크립트 실행, 파일 생성 등)을 자세하게 설명&lt;/span&gt;해주는 장점이 있다. &lt;span style=&quot;color: #EE2323;&quot;&gt;문서를 만들어서 요약을 확인&lt;/span&gt;할 수 있다.&lt;br&gt;&lt;br&gt;Plug-ins 기능을 제공하는데, 각 &lt;span style=&quot;color: #EE2323;&quot;&gt;도메인별 명령, 스킬 목록들을 import 해올 수 있다&lt;/span&gt;.&lt;br&gt;- 명령 : 도메인 업무에 대한 전반적인 &lt;span style=&quot;color: #EE2323;&quot;&gt;&lt;b&gt;workflow(시나리오)를 자연어로 설명&lt;/b&gt;해두는 MD 파일로 관리&lt;/span&gt;한다.&lt;br&gt;- 스킬 : &lt;span style=&quot;color: #EE2323;&quot;&gt;단위 기능을 설명한 MD 파일&lt;/span&gt;. 명령에서 가져다 쓸 수 있는 도구에 가깝다.&lt;br&gt;&lt;br&gt;&lt;span style=&quot;color: #EE2323;&quot;&gt;skills MD 파일(시스템 프롬프트)&lt;/span&gt;을 가지고, &lt;b&gt;&lt;u&gt;&lt;span style=&quot;color: #EE2323;&quot;&gt;파이썬 코드를 자체로 생성해서 실행하여 문제를 해결&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;한다. 생성한 코드들도 산출물로써 모두 확인 가능 및 재활용 가능하다. dynamic tool generation 시스템&lt;br&gt;&lt;br&gt;&lt;span style=&quot;color: #EE2323;&quot;&gt;권한을 어떻게 통제할 것인가에 대한 챌린지가 아직 존재&lt;/span&gt;한다.&lt;br&gt;&lt;br&gt;[Insight]&lt;br&gt;1. Pre-built Agent(Component)로서의 Skill&lt;br&gt;2. Human in the loop, Multi turn&lt;br&gt;3. 방향성&lt;br&gt;- 복잡한 정책과 권한 체계, 레거시 시스템 연계가 핵심&lt;/p&gt;</description>
      <author>sddev</author>
      <guid isPermaLink="true">https://sddev.tistory.com/455</guid>
      <comments>https://sddev.tistory.com/455#entry455comment</comments>
      <pubDate>Thu, 26 Feb 2026 13:35:55 +0900</pubDate>
    </item>
    <item>
      <title>[LGD] On-premise 환경 Lessons &amp;amp; Learned 정리</title>
      <link>https://sddev.tistory.com/454</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;로컬 환경에서 원활하게, 사내 API를 호출하기 위해 API mocking 방안 고려 필요&lt;br /&gt;(FastAPI의 경우 비동기 HTTP 통신을 가로채는 Respx 추천, FastAPI(httpx) 환경에서 가장 표준적임.)&lt;/p&gt;</description>
      <category>개발 일반/프로젝트</category>
      <author>sddev</author>
      <guid isPermaLink="true">https://sddev.tistory.com/454</guid>
      <comments>https://sddev.tistory.com/454#entry454comment</comments>
      <pubDate>Wed, 11 Feb 2026 11:11:25 +0900</pubDate>
    </item>
    <item>
      <title>AI-DLC 개요</title>
      <link>https://sddev.tistory.com/453</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;AI-DLC란?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;프로젝트의 라이프 사이클(분석설계 -&amp;gt; 구현 -&amp;gt; 운영)의 각 단계를 AI를 통해, 단계적으로 AI를 통해 구현해 나가는 방법론&lt;/span&gt;을 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 먼저 &lt;span style=&quot;color: #ee2323;&quot;&gt;프로젝트 개요, 요구사항, 컨텍스트를 기반&lt;/span&gt;으로,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;Reverse Engineering&lt;/span&gt;이란? 기존 &lt;span style=&quot;color: #ee2323;&quot;&gt;project가 존재하는 경우 LLM에게 분석시켜서, md 파일을 만들어 이해하게 하는 것&lt;/span&gt;이다.&lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;Plan.md, Requirements.md, Workflow.md&lt;/span&gt;, UserStory.md(Given When Then, AC 등 정의)를 만들고, &lt;br /&gt;해당 &lt;span style=&quot;color: #ee2323;&quot;&gt;markdown을 기반으로 후속 절차들을 계속 수행해나가는 방식으로 진행&lt;/span&gt;시켜 나간다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2046&quot; data-origin-height=&quot;1482&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bahdQ8/dJMcadgAizg/71K7u3jJvijWBaUKVVKOV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bahdQ8/dJMcadgAizg/71K7u3jJvijWBaUKVVKOV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bahdQ8/dJMcadgAizg/71K7u3jJvijWBaUKVVKOV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbahdQ8%2FdJMcadgAizg%2F71K7u3jJvijWBaUKVVKOV0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2046&quot; height=&quot;1482&quot; data-origin-width=&quot;2046&quot; data-origin-height=&quot;1482&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대체제로는 Spec-Kit/BMAD 등이 있다.&lt;/p&gt;</description>
      <category>프로젝트 관리/AI 기반 개발 방법론</category>
      <author>sddev</author>
      <guid isPermaLink="true">https://sddev.tistory.com/453</guid>
      <comments>https://sddev.tistory.com/453#entry453comment</comments>
      <pubDate>Thu, 5 Feb 2026 13:37:26 +0900</pubDate>
    </item>
    <item>
      <title>[AWS] 클라우드 인프라 구축 기본 - 리소스 사용관리(CloudWatch), 가용성(LoadBalancer), 글로벌 부하분산(Route53,CloudFront), 권한 관리(IAM)</title>
      <link>https://sddev.tistory.com/452</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;Chapter 6. 클라우드 리소스 사용 관리&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Section 1. Cloud Watch/Cloud Trail&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1.1 CloudWatch&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- AWS &lt;span style=&quot;color: #ee2323;&quot;&gt;CloudWatch는 준실시간 로그, 지표 및 이벤트 데이터를 자동화된 대시보드에 수집&lt;/span&gt;하고 이를 &lt;span style=&quot;color: #ee2323;&quot;&gt;시각화하여 인프라 및 애플리케이션 유지 관리를 간소화&lt;/span&gt;합니다. &lt;u&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;모니터링&lt;/span&gt;&lt;/u&gt;을 해야 Scale In/Out을 할지 결정할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- On-Prem도 붙일 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 알림도 붙일 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Auto Scaling도 자동으로 진행되도록 할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;네임스페이스&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 서비스에서 발생한 지표인지 알아야 하므로, Cloud Watch에서는 서비스 네임스페이스를 보고 어떤 서비스에서 발생한 지표인지 알 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Cloud Watch 지표(metrics)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서비스별로 정의된 지표들이 있고, 해당 지표들을 그래프 형태로 볼 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1304&quot; data-origin-height=&quot;580&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wsMS4/dJMcagK79Hq/9ugKKJHYARMdDC06f6kQfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wsMS4/dJMcagK79Hq/9ugKKJHYARMdDC06f6kQfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wsMS4/dJMcagK79Hq/9ugKKJHYARMdDC06f6kQfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwsMS4%2FdJMcagK79Hq%2F9ugKKJHYARMdDC06f6kQfK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1304&quot; height=&quot;580&quot; data-origin-width=&quot;1304&quot; data-origin-height=&quot;580&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CloudWatch 알람&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 특정 &lt;span style=&quot;color: #ee2323;&quot;&gt;Metrics의 조건&lt;/span&gt;을 통해, &lt;span style=&quot;color: #ee2323;&quot;&gt;EC2 Action, AutoScaling, Notification(SNS) 서비스를 Trigger&lt;/span&gt; 할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CloudWatch Logs&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;Logs &amp;gt; Metrics &amp;gt; alerts &amp;gt; actions&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1.2 CloudTrail&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CloudWatch는 그냥 Monitoring이지만, &lt;span style=&quot;color: #ee2323;&quot;&gt;AWS의 모든 서비스의 모든 사용 이력을 API를 통해 저장&lt;/span&gt;해둠&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;AWS의 보안 및 감사&lt;/span&gt;를 위한 서비스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;AWS의 모든 서비스가 사용될 때마다 언제 어디서 누구에 의해 사용되었는지 로그&lt;/span&gt; 저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AWS 리소스의 변경 사항을 모두 추적할 수 있음&lt;span style=&quot;color: #ee2323;&quot;&gt;(ex. CCTV&lt;/span&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 서비스에 대해 API 이용 로그 등을 제공&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 모든 서비스는 아래와 같이 REST API Endpoint를 가지고 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;a href=&quot;https://서비스코드.리전코드.amazonanows.com/...&quot;&gt;https://서비스코드.리전코드.amazonanows.com/...&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;Logs를 모아서 S3 Bucket에 적재&lt;/span&gt;해둔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Cloud Trail 이벤트&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;CloudTrail vs CloudWatch&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- CloudTrail : AWS 환경에서 수행된 &lt;span style=&quot;color: #ee2323;&quot;&gt;모든 작업 로그&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- CloudWatch : AWS를 &lt;span style=&quot;color: #ee2323;&quot;&gt;모니터링&lt;/span&gt;하기 위한 서비스, &lt;span style=&quot;color: #ee2323;&quot;&gt;대시보드, 상태와 성능, 상황에 따른 Noti, Action&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;CloudTrail이 로그를 모으고, CloudWatch는 로그를 통해 대시보드와 알림 등을 제공&lt;/span&gt;해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;VPC Flow Log&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Agentless 기반 방화벽 로그&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Netflow와 유사&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;Elastic Network Interface, Subnet, VPC당 활성화(어떤 사용자가 어떤 네트워크에 접속 시도하고 Deny 되었는지)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- CloudWatch Logs에 로깅&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- CloudWatch 메트릭 생성하고 Alarm 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보통은 Prometheus &amp;amp; Grafana 오픈 소스를 통해, 모니터링 &amp;amp; 대시보드를 수행함&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;Section 2. AWS Budget / Cost Explorer&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AWS Budgets&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;사용자 지정 예산을 설정하여 비용 &amp;amp; 사용량을 추적&lt;/span&gt;하고, 임계값 초과 시 이메일 또는 SNS 알림에서 수신된 알림에 빠르게 대응 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예산 유형을 지정할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 요구에 맞는 사용자 지정 &lt;span style=&quot;color: #ee2323;&quot;&gt;예산 책정 가능, 알림 보고서를 통해 지속적으로 정보 파악, 예산 기간 세부 지정&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Cost Explorer&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 계정에 연결된 &lt;span style=&quot;color: #ee2323;&quot;&gt;요금과 사용량을 검토&lt;/span&gt;&lt;br /&gt;- 비용 및 사용량 데이터 보고서를 조회하고 작성&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;- &lt;span style=&quot;color: #ee2323;&quot;&gt;예약형 인스턴스(RI)의 사용률 적용 범위에 대한 권장 사항&lt;/span&gt;을 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;절감형 플랜의 사용률과 적용 범위에 대한 권장 사항&lt;/span&gt;을 확인&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1208&quot; data-origin-height=&quot;428&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qefue/dJMcacPu57n/QtRlELXAWHHA6qxqEOBEdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qefue/dJMcacPu57n/QtRlELXAWHHA6qxqEOBEdk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qefue/dJMcacPu57n/QtRlELXAWHHA6qxqEOBEdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fqefue%2FdJMcacPu57n%2FQtRlELXAWHHA6qxqEOBEdk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1208&quot; height=&quot;428&quot; data-origin-width=&quot;1208&quot; data-origin-height=&quot;428&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Section 3. CloudFormation&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;IaC[Infra As Code]&lt;/span&gt;란?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;Terraform과 같이 코드를 이용해서 infra 리소스를 생성할 수 있도록&lt;/span&gt; 한다.&lt;br /&gt;&amp;nbsp; &amp;lt;주로 Terraform 문법을 자주 사용한다.&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 정말 잘 만들어 놓은 Infra를 다른 Region에 동일하게 구성할 때 훨씬 더 효율적이다.&lt;/p&gt;
&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;CloudFormation&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;템플릿 기반 인프라 프로비저닝&lt;/span&gt;을 위한 &lt;span style=&quot;color: #ee2323;&quot;&gt;관리형&lt;/span&gt; 서비스 &lt;br /&gt;(어찌되었건 코드를 실행하려면 서버가 필요한데, 실행할 서버 자체는 관리형으로 제공해주고 코드만 작성하면 됨)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 인프라 환경을 코드(Yaml 또는 Json 형태 템플릿파일)로 작성&lt;/p&gt;
&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;CloudFormation 템플릿&lt;/b&gt;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CloudFormation Designer&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- UI Builder에서 만들고 코드로 변환해주는 기능&lt;/p&gt;
&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;CloudFormation 스택&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- IaC라고 하더라도 한번에 구성하는 것보다, 벽돌처럼 단위 단위별로 구분 지어 놓아서 구현해 놓고, 추후에 특정 서비스만 변경될 경우에 그부분만 수정 반영하도록 하기 위해서 스택 형식을 채용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 템플릿을 구분해서 만들면 하나의 템플릿이 하나의 Stack이 되고, 여러개의 Stack이 쌓여 전체 Infra가 구성된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- VPC, EC2 Instance 생성 등등 여러가지 리소스를 생성하는 템플릿을 모두 하나에 모아서 관리해도 되겠지만, 그렇게 되면 VPC 하나만 바꾸고 싶어도 수정하기가 부담스러워진다.&lt;/p&gt;
&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;스택생성 Workflow&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;1546&quot; data-origin-height=&quot;454&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Z14Br/dJMcafZJlYX/Xnwjin4rbFb5t89BdRr6i0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Z14Br/dJMcafZJlYX/Xnwjin4rbFb5t89BdRr6i0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Z14Br/dJMcafZJlYX/Xnwjin4rbFb5t89BdRr6i0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZ14Br%2FdJMcafZJlYX%2FXnwjin4rbFb5t89BdRr6i0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;454&quot; data-origin-width=&quot;1546&quot; data-origin-height=&quot;454&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;Chapter 7. 클라우드 인프라에 대한 가용성 처리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Section 1. ELB(Elastic Load Balancer) / ASG(Auto Scaling Group)&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;&lt;b&gt;AWS Availability&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동일 역할을 수행하는 Instance를 각 가용 영역에 분산 배치하면 서비스 가용성을 높일 수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;분산 배치 및 이중화 된 인스턴스로 어떻게 트래픽을 분배할 것인가?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;Load Balancer(단일 진입접, 로드 분산)&lt;/span&gt;가 해당 역할을 해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Load Balancer는 &lt;span style=&quot;color: #ee2323;&quot;&gt;Health Check를 통해 인스턴스의 상태를 주기적으로 확인&lt;/span&gt;한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AWS Networking - ELB(Elastic Load Balancer)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Region 내 Load Balancing 서비스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 다수의 가용영역으로 Traffic 분배&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;HTTP/S, TCP/S 프로토콜&lt;/span&gt; 지원&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Backend Instance에 대한 &lt;span style=&quot;color: #ee2323;&quot;&gt;Health Check&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 고가용성 기반의 L4(Transport, TCP 기반 Port 기반 로드 벨런싱), L7(Application, Http 기반 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;b&gt;ELB 유형&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;ALB&lt;/span&gt; -&amp;gt;&amp;nbsp; &lt;span style=&quot;color: #ee2323;&quot;&gt;Application Load Balancer&lt;/span&gt;(&lt;span style=&quot;color: #ee2323;&quot;&gt;L7, 분배 대상이 Application, Http 통신 기반 로드 밸런싱&lt;/span&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;NLB&lt;/span&gt; -&amp;gt; &lt;span style=&quot;color: #ee2323;&quot;&gt;Network Load Balancer&lt;/span&gt;(&lt;span style=&quot;color: #ee2323;&quot;&gt;L4, 분배 대상이 Network, Tcp 통신 기반 로드 벨런싱&lt;/span&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- GLB -&amp;gt; Gateway Load Balancer(분배 대상이 네트워크 장비 단위)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 기존 Classic Load Balancer : 위처럼 유형 구분 없이, 분배&lt;/p&gt;
&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;ALB 구조&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;트래픽을 수신하게 되면 &lt;span style=&quot;color: #ee2323;&quot;&gt;Listener의 Rule&lt;/span&gt;에 따라 &lt;span style=&quot;color: #ee2323;&quot;&gt;Target Group에 분배&lt;/span&gt; 후, &lt;span style=&quot;color: #ee2323;&quot;&gt;Balancing Algorithm&lt;/span&gt;에 따라 각 서버에 분산&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;Target Group은 Instance 그룹 또는 Lambda&lt;/span&gt;라고 할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;724&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvYOLA/dJMcaiPEbUC/BEutJvZlUhUKnGaMguP5Tk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvYOLA/dJMcaiPEbUC/BEutJvZlUhUKnGaMguP5Tk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvYOLA/dJMcaiPEbUC/BEutJvZlUhUKnGaMguP5Tk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvYOLA%2FdJMcaiPEbUC%2FBEutJvZlUhUKnGaMguP5Tk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;724&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;724&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;Balancing Algorithm&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;Round Robin : 공평하게 돌아가면서 한번 씩&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;Hashing : 헤시 알고리즘&lt;/span&gt;에 따라 요청 분기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;Weighted Round Robin&lt;/span&gt; : 가중치를 둔 Round Robin&lt;/p&gt;
&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;NLB Balancing Algorithm&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Flowing &lt;span style=&quot;color: #ee2323;&quot;&gt;Hash 알고리즘(ip, port)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AWS Networking Protocol&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- L4 : TCP / UDP&lt;/p&gt;
&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;ELB 주의 사항&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;ELB를 생성할 때 반드시 AZ별 활성화가 필요&lt;/span&gt;하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- LB 등록 시, 활성화 되지 않은 AZ에 배치된 타겟(인스턴스)에는 트래픽이 수신되지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;ALB의 IP Address는 지속적으로 변경될 수 있으므로, DNS를 사용해야&lt;/span&gt;함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;NLB는 고정 IP 부여 가능&lt;/span&gt;하다. ALB는 불가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;SSL(Secure Socket Layer) 지원&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Client의 SLL을 ELB에서 처리(BE 부하 감소 효과)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;CrossZone Load Balancing&lt;/span&gt;(단, AZ별로 LB를 만들어야 하나봄)&lt;br /&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;Sticky Sessions&lt;/span&gt; : &lt;span style=&quot;color: #ee2323;&quot;&gt;특정 경우에 A라는 Target Group으로 요청을 보내야한다는 기능을 적용&lt;/span&gt; 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ELB 라우팅 요청 구조&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;ELB는 기본적으로 DNS 주소&lt;/span&gt;를 통해 접속 (&lt;span style=&quot;color: #ee2323;&quot;&gt;DNS 주소 관리는 Route53 서비스&lt;/span&gt;가 담당)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Client가 ELB DNS 주소로 접근 요청시 (Route53은 Client에게 1개 이상의 LB 노드 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;b&gt;Scale out &amp;amp; Scale in&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Scale out : 서비스 &lt;span style=&quot;color: #ee2323;&quot;&gt;부하가 증가되어 인스턴스 증설&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(&lt;span style=&quot;color: #ee2323;&quot;&gt;주로 WAS 서버&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Scale in : 서비스 &lt;span style=&quot;color: #ee2323;&quot;&gt;부하 감소시 인스턴스 제거&lt;/span&gt; (주로 WAS 서버)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Scale up : 인스턴스 &lt;span style=&quot;color: #ee2323;&quot;&gt;하나의 사양을 더 높임&lt;/span&gt; (재기동 필요해서 약간의 다운 타임 존재, &lt;span style=&quot;color: #ee2323;&quot;&gt;주로 DB&lt;/span&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Scale down : 인스턴스 &lt;span style=&quot;color: #ee2323;&quot;&gt;하나의 사양을 더 낮춤&lt;/span&gt; (재기동 필요해서 약간의 다운 타임 존재, 주로 DB)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Auto Scaling Group&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;자동 Scaling&lt;/span&gt; 기능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- ELB &amp;amp; Auto Scaling Group 조합으로 자동으로&lt;span style=&quot;color: #ee2323;&quot;&gt; Scale-in &amp;amp; out 되도록 운영&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;ELB와 Auto Scaling Group은 조합으로 같이 사용&lt;/span&gt;된다. ELB 입장에서는 Auto Scale된 Instance 정보들을 다 파악해야되기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AWS Auth Scaling 구성 요소&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 무엇을 Scale-in &amp;amp; Scale-out 할 것인가? &lt;span style=&quot;color: #ee2323;&quot;&gt;Launch Template&lt;/span&gt;(&lt;span style=&quot;color: #ee2323;&quot;&gt;AMI, Instance Type, 자동으로 생성 or 삭제되는 Instance 정의&lt;/span&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 자동화 동작은 어떤 방식으로 할 것인가?&lt;span style=&quot;color: #ee2323;&quot;&gt; Auto Scaling Group&lt;/span&gt;(&lt;span style=&quot;color: #ee2323;&quot;&gt;원하는 Capacity, Min/Max instance 개수, Target Group 등 자동 변경과 관련&lt;/span&gt;한 정의)&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;아래는 Autoscale 실습 중, 특정 Instance에 접속하여 CPU 이용률를 100% 찍도록 하는 방법이다.&lt;/div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1769754462189&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo yum install -y stress
stress --cpu &amp;lt;vm cpu 갯수&amp;gt; --timeout &amp;lt;지속할 시간&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Chapter 8. 글로벌 서비스를 위한 부하 분산&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Section 1. Route 53 / Transit GW&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Route53&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;AWS가 제공하는 Domain Name System 서비스&lt;/span&gt; 입니다.&lt;br /&gt;(&lt;span style=&quot;color: #ee2323;&quot;&gt;도메인 텍스트 기반 주소로 접근해도 자동으로 IP주소를 변환하여 접근할 수 있도록 해주는 서버&lt;/span&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;도메인 등록, 도메인 이전, DNS 라우팅, 상태 확인&lt;/span&gt;&amp;nbsp;등 기능을 제공함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;가용성과 확장성&lt;/span&gt;이 뛰어난 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;&lt;b&gt;DNS란?&lt;/b&gt;&lt;br /&gt;Domain Name System (&lt;span style=&quot;color: #ee2323;&quot;&gt;Nomain Name을 네트워크 주소로 변환해주는 시스템&lt;/span&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;아주 예전에는 OS의 hosts 파일에, 아래 같이 domin과 ip를 매핑해서 쓰기도 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;```&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;google.com 216.58.220.142&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가 바뀌는 경우도 있고 해서, Domain 매핑해서 원하는 IP로 연결시켜주는 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;&lt;b&gt;DNS의 동작순서&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 가장 먼저 Local DNS를 보고 일치하는 domain이 있으면 해당 IP를 캐싱한 상태로 사용해서, Browser에 보낸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. root dns -&amp;gt; com dns -&amp;gt; domain.com dns 순으로 찾아서 온다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1286&quot; data-origin-height=&quot;538&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJJJLd/dJMcagK8g1E/etZxBwq8y1keWMNDxOvkN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJJJLd/dJMcagK8g1E/etZxBwq8y1keWMNDxOvkN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJJJLd/dJMcagK8g1E/etZxBwq8y1keWMNDxOvkN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJJJLd%2FdJMcagK8g1E%2FetZxBwq8y1keWMNDxOvkN1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1286&quot; height=&quot;538&quot; data-origin-width=&quot;1286&quot; data-origin-height=&quot;538&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Route53의 특징 - Weight Round Robin&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 서버의&lt;span style=&quot;color: #ee2323;&quot;&gt; IP 주소나 도메인마다 가중치를 설정하여 트래픽을 조절&lt;/span&gt;하여, &lt;u&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;Region 레벨 LoadBalancer 역할&lt;/span&gt;&lt;/u&gt;을 해줄 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Failover 기능을 제공하여, 장애가 있는 Region에는 요청을 보내지 않는 기능이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 지연이 제일 낮은 Region IP를 반환해줄 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- ALB와 차이가 뭘까?&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Route53은 Region 별 Load Balancing 하는 것이고, ELB는 Region 내에서 Load Balancing 해준다.&lt;/p&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;가상 사설 클라우드(VPC)와 온프레미스 네트워크를 상호 연결하는 데 사용할 수 있는 네트워크 전송 허브&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- VPC를 만들었는데, 다른 VPC와 연결하고 싶을 때 보통 VPC Peering을 사용해야 하는데, 문제점이 있어서 이를 해결하기 위해 사용해야 하는 서비스이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;- &lt;u&gt;VPC는 보통 팀별/프로젝트별/회사별&lt;/u&gt;로 만들어 지는데&lt;/span&gt;, 상황에 따라 가상 사설망끼리 연결해주고 싶은 요건이 생긴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- VPC는 가상 사설망이기 때문에, A VPC도 네트워크 대역을 10.0.xx.xx/16로 했을 경우도 있고, B VPC도 네트워크 대역을 10.0.xx.xx/16로 했을 경우도 있다. 즉 중복될 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- VPC Peering의 단점은 연결해야할 VPC가 2개를 넘어서 3개 이상이 될 때, VPC간 연결을 위해 VPC간 모두 선을 연결해줘야 한다는 단점이 존재한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Transit Gateway는 중앙에 Gateway 형태의 TG가 있고 VPC들은 Transit Gateway에 연결해두면 별도로 VPC간 연결을 하지 않아도 VPC 간 연결이 가능하도록 해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- On-prem 과도 연결이 가능하다는 단점이 있다.&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;Section 2. Cloud Front / Global Accelator&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Cloud Front&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AWS가 제공하는 Cloud native한 Content Delivery Network(CDN) 서비스입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- AWS는 이미 전 세계 각지에 &lt;span style=&quot;color: #ee2323;&quot;&gt;사용자에게 최적의 Edge Server(Edge Loacation)을 찾아 캐시 및 AWS 글로벌 네트워크를 통해 빠르게 전송&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;사용자 기준 최적의 Edge Server를 통해 컨텐츠를 캐시해두고 전송&lt;/span&gt;해줌&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 다른 AWS 서비스와 쉽게 연동(AWS WAF, S3, Media, ACM...)&lt;/p&gt;
&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;CloudFront 용어&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;Origin Server : 기존 컨텐츠가 저장&lt;/span&gt;되어 있는 서버&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;Cache Server : 빠른 콘텐츠 전달을 위해 지리적으로 사용자와 가깝게 위치한 서버&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;원래는 Origin Server에 요청해야 하나, 먼저 Edge Server에 있는 Cache Server에 요청한다.&lt;/p&gt;
&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;CloudFront 구성&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Origin Server 정보와 도메인 할당이 필수적이고, 글로벌에 배포하는 방식이다.&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;608&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wmk0J/dJMcahpJs9v/pDfKrSYoDuCP0bxm3NS6Lk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wmk0J/dJMcahpJs9v/pDfKrSYoDuCP0bxm3NS6Lk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wmk0J/dJMcahpJs9v/pDfKrSYoDuCP0bxm3NS6Lk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwmk0J%2FdJMcahpJs9v%2FpDfKrSYoDuCP0bxm3NS6Lk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;608&quot; data-origin-width=&quot;1546&quot; data-origin-height=&quot;608&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CND이란?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;컨텐츠를 전송하기 위한 네트워크&lt;/span&gt;이다. &lt;span style=&quot;color: #ee2323;&quot;&gt;짧은 지연시간, 사용자 경험(UX) 향상, 빠른 전송 속도 지원을 위한 Network&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자에게 최대한 가까운 위치에서 컨텐츠를 빠르게 받아볼 수 있도록 해주는 서비스&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1182&quot; data-origin-height=&quot;528&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d1EtSI/dJMcajntY4J/FyiwrvKmZCXsnNmanKQv50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d1EtSI/dJMcajntY4J/FyiwrvKmZCXsnNmanKQv50/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d1EtSI/dJMcajntY4J/FyiwrvKmZCXsnNmanKQv50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd1EtSI%2FdJMcajntY4J%2FFyiwrvKmZCXsnNmanKQv50%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1182&quot; height=&quot;528&quot; data-origin-width=&quot;1182&quot; data-origin-height=&quot;528&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;Global Accelarator&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;엣지 로케이션을 사용하여 사용자에게서 애플리케이션까지 최적의 경로&lt;/span&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;- 다중 리전 구성에서 최적의 리전으로 연결&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 글로벌 네트워크를 통해 빠른 전송&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;글로벌 인터넷망은 속도를 보장할 수 없지만, 인터넷망에서 &lt;span style=&quot;color: #ee2323;&quot;&gt;AWS망으로 요청만 주면 그 내부 AZ간의 통신 측면에서는 초고속 속도를 보장해 주겠다&lt;/span&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;Chapter 9. 클라우드 신원 및 접근 관리 - 인증과 권한&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Section 1. AWS IAM 자격 증명&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;IAM(Identity and Access Management)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 인증(Authentication), 권한(Authorization)&lt;/p&gt;
&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;span style=&quot;color: #ee2323;&quot;&gt;인증(Auth)&lt;/span&gt; : 내가 어느 시스템, 서비스에 &lt;span style=&quot;color: #ee2323;&quot;&gt;접근&lt;/span&gt;하고 싶어. &lt;u&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;내가 그 서비스를 사용할 수 있는지 자격을 증명&lt;/span&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;권한(AuthR)&lt;/span&gt; : 이미 서비스에는 들어갈 수 있으나,&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;u&gt; 어느 행위까지 할 수 있는 레벨&lt;/u&gt;을 결정&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;자격 증명 (사용자 / 역할)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;초기에 AWS에 가입하면 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;u&gt;email + pw + MFA 인증으로 로그인하게 되는데 이를 Root 계정&lt;/u&gt;&lt;/span&gt;이라고 하고, &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;u&gt;관리자 계정이고 모든 것을 할 수 있는 계정이라 해킹당하면 매우 위험&lt;/u&gt;&lt;/span&gt;하기 때문에, &lt;span style=&quot;color: #ee2323;&quot;&gt;일상 Task 용도에는&amp;nbsp;사용하지 않는다. 그래서 무조건 MFA 인증을 해야&lt;/span&gt;한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Root 계정을 가지고, IAM 계정(사용자, Admin 권한 부여)을 만들고 해당 계정으로 로그인한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Admin IAM User가 Role(Dev, Test, Analyze...) 을 만들고 여러 IAM User 들에게 Role을 할당한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최소 권한의 원칙이 맞지만, 너무 번거롭기 때문에 MFA 인증을 강제하는 방향으로 하는 경우가 많다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;u&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;장기 자격 증명 = 사용자(user) // IAM 사용자 자체에 할당된 권한 (보통 Policy(정책)을 통해 매핑한다)&lt;/span&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; -&amp;gt; 적절한 정보를 통해 특정 유저임을 확인 하는 자격 증명 방식&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; -&amp;gt; AWS가 미리 제공하는 권한을 정의해놓은 Policy들이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; -&amp;gt; &lt;span style=&quot;color: #ee2323;&quot;&gt;직접 Policy들을 IAM User에 할당&lt;/span&gt;하거나, &lt;span style=&quot;color: #ee2323;&quot;&gt;여러 Policy를 가진 IAM Group에 해당 IAM User를 포함&lt;/span&gt;시킨다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; -&amp;gt; &lt;span style=&quot;color: #ee2323;&quot;&gt;주로 IAM Group으로 그룹화하여 관리&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;u&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;임시 자격 증명 = 역할&lt;/span&gt;&lt;/u&gt;(Role) // 모자라고 생각하면 좋다. 평소에는 개발자였다가 특정 Role 모자를 씌워주면 임시적으로 해당 Role도 할&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당된 권한도 사용할 수 있게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; -&amp;gt; 적절한 정보를 통해 특정 역할을 수행할 수 있는 권한을 일정기간 취득하여 사용하는 방식&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; -&amp;gt; 주의할 점은 &lt;span style=&quot;color: #ee2323;&quot;&gt;Role을 사용하게 되면, Role을 할당하기 직전의 권한은 사용할 수 없다&lt;/span&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Root User / IAM User&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;Root&lt;/span&gt; User : &lt;span style=&quot;color: #ee2323;&quot;&gt;모든 권한, 계정 생성 후 직접 사용하지 않을 것을 권장&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;IAM&lt;/span&gt; User :&lt;span style=&quot;color: #ee2323;&quot;&gt; 장기자격증명&lt;/span&gt;(Access Key, Secret Key 또는 ID/PW) // SDK,CLI 형태로 사용할 것이면 KEY 발급 필요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(번외) &lt;span style=&quot;color: #ee2323;&quot;&gt;SSO 계정이란?&lt;/span&gt; 현재는 하나의 AWS 계정 내에서의 권한들을 이야기 하고 있지만, 회사 규모가 크면 &lt;span style=&quot;color: #ee2323;&quot;&gt;여러개의 팀별로 AWS 계정을 두고 사용&lt;/span&gt;한다. &lt;span style=&quot;color: #ee2323;&quot;&gt;여러개의 계정을 통합하여 관리하고 싶을 때, SSO 계정의 필요성이 등장&lt;/span&gt;된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;IAM 그룹&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- IAM 사용자의 집합&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;그룹을 사용 안해도 되지만&lt;/span&gt;, 권한을 지정 시, &lt;span style=&quot;color: #ee2323;&quot;&gt;다수의 사용자에게 일괄 권한 할당이 가능&lt;/span&gt;하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;A그룹 안에 B그룹을 넣을 수는 없다. 즉 중첩 구조는 불가능&lt;/span&gt;하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;한명의 사용자가 여러명의 그룹에 속하는 것인 가능&lt;/span&gt;하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보안자격증명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- AWS &lt;span style=&quot;color: #ee2323;&quot;&gt;관리 콘솔의 경우 ID + Password로 보안 자격 증명을 진행&lt;/span&gt;함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;API / CLI / SDK&lt;/span&gt; 의 경우 &lt;span style=&quot;color: #ee2323;&quot;&gt;Access Key, Secret Key로 보안 자격 증명을 진행&lt;/span&gt;함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;임시 자격증명 연동&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;임시 자격증명 할당을 통한 권한 연동&lt;/span&gt;은 &lt;span style=&quot;color: #ee2323;&quot;&gt;리소스에게도 가능&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 외부 사람이지만 임시로 권한을 주고 싶을 때 Role을 사용한다. 그런 사용자를 Federation 사용자라고 한다.&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;Section 2. IAM 권한 / 정책&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;IAM 정책(Policy)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 사용자(User)와 그룹(Group), 역할(Role)이 무엇을 할 수 있는지에 대한 권한(permission) 설정 데이터 문서&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;AWS가 만들어 높은 관리형 정책들을 미리 제공&lt;/span&gt;한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;가장 높은 정책은 &quot;AdministatorAccess&quot; 권한&lt;/span&gt;이다. &lt;span style=&quot;color: #ee2323;&quot;&gt;모든 AWS 서비스와 리소스에 대해서 접근 권한&lt;/span&gt;을 가짐&lt;/p&gt;
&lt;pre id=&quot;code_1769761059254&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
 &quot;Effect&quot;: &quot;Allow&quot;,
 &quot;Action&quot;: &quot;*&quot;,
 &quot;Resource&quot;: &quot;*&quot;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;IAM 정책(Policy) 구조&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;Resource : &lt;span style=&quot;color: #ee2323;&quot;&gt;어떤 서비스&lt;/span&gt;에 대해서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Action : 그 &lt;span style=&quot;color: #ee2323;&quot;&gt;서비스에 대한 어떤 액션&lt;/span&gt;을&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Principal : 접근을 허용하고자 또는 차단하고자 하는 &lt;span style=&quot;color: #ee2323;&quot;&gt;대상&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Effect : &lt;span style=&quot;color: #ee2323;&quot;&gt;허용&lt;/span&gt; 또는 &lt;span style=&quot;color: #ee2323;&quot;&gt;차단&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1578&quot; data-origin-height=&quot;618&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdmVSd/dJMcagqOcvl/lk5mvkW0zMnxlYcrDDNRO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdmVSd/dJMcagqOcvl/lk5mvkW0zMnxlYcrDDNRO0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdmVSd/dJMcagqOcvl/lk5mvkW0zMnxlYcrDDNRO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdmVSd%2FdJMcagqOcvl%2Flk5mvkW0zMnxlYcrDDNRO0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1578&quot; height=&quot;618&quot; data-origin-width=&quot;1578&quot; data-origin-height=&quot;618&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;IAM 정책(Policy) 종류(Type)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IAM 정책도 여러 유형이 많다. 총 6종류&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; 1. &lt;span style=&quot;color: #ee2323;&quot;&gt;자격증명 기반 정책 &lt;/span&gt;(User, Group, Role에 부여하는 정책 - &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;u&gt;사용자 관점이다! 사용자에게 부여하는 정책&lt;/u&gt;이다.&lt;/span&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; -&amp;gt; &lt;span style=&quot;color: #ee2323;&quot;&gt;사용자가&lt;/span&gt; 어떤 리소스에 접근할 수 있는지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 2. &lt;span style=&quot;color: #ee2323;&quot;&gt;리소스 기반 정책&lt;/span&gt; (S3 버킷과 같은 리소스에 연결하는 JSON 정책 문서, 지정된 보안 주체에 해당 리소스에 대한 특정 작업을 수행할 수 있는 조건 정의 및 권한 부여, 리소스 기반 정책은 인라인 정책 - &lt;u&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;리소스 관점&lt;/span&gt;이다! &lt;span style=&quot;color: #ee2323;&quot;&gt;리소스에 부여하는 정책&lt;/span&gt;&lt;/u&gt;이다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; -&amp;gt; &lt;span style=&quot;color: #ee2323;&quot;&gt;리소스에&lt;/span&gt; 어떤 사용자가 접근할 수 있는지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; -&amp;gt; &lt;span style=&quot;color: #ee2323;&quot;&gt;자격증명 기반 정책만 있으면 동일한 계정에 있는 리소스에 대해서면 접근을 제어&lt;/span&gt;할 수 있지만, &lt;span style=&quot;color: #ee2323;&quot;&gt;리소스 정책을 사용하면 다른 계정에 있는 사용자가 현 계정에 있는 리소스에 접근 가능하도록 허용해줄 수 있다&lt;/span&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 3. &lt;span style=&quot;color: #ee2323;&quot;&gt;Access Control Lists&lt;/span&gt;(ACLs)&lt;/p&gt;
&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;자유 이용권이 있더라도 어리면 놀이기구를 못타는 제한이 있듯이, 권한이 부여되어 있더라도 &lt;span style=&quot;color: #ee2323;&quot;&gt;조직 차원의 안전장치 가드레일&lt;/span&gt;로 인해 동작하지 못하도록 할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 1. &lt;span style=&quot;color: #ee2323;&quot;&gt;권한 경계&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 2. Organication SPCs&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 3. 세션 정책&lt;/p&gt;</description>
      <category>클라우드 &amp;amp; DevOps/클라우드 서비스 ∕ AWS</category>
      <author>sddev</author>
      <guid isPermaLink="true">https://sddev.tistory.com/452</guid>
      <comments>https://sddev.tistory.com/452#entry452comment</comments>
      <pubDate>Fri, 30 Jan 2026 11:44:50 +0900</pubDate>
    </item>
    <item>
      <title>[docker] Docker 로그로 가득 찬 디스크 정리 기록</title>
      <link>https://sddev.tistory.com/450</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;현상&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;docker 사용 시, 어느 시점에 /var/lib/docker 용량이 90GB를 넘으면서, 전체 서버 용량을 차지하는 현상 발생&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;1.-디스크-용량-확인&quot; style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;1. 디스크 용량 확인&lt;/h3&gt;
&lt;pre class=&quot;ebnf&quot; style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;code&gt;df -h
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; /dev/vda1 사용률이 100%로 확인됨. 주로 /var 아래가 문제인 경우가 많음.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 id=&quot;2.-/var-디렉토리-용량-분석&quot; style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;2. /var 디렉토리 용량 분석&lt;/h3&gt;
&lt;pre class=&quot;coq&quot; style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;code&gt;sudo du -sh /* 2&amp;gt;/dev/null | sort -hr | head -n 10
sudo du -sh /var/* | sort -hr | head -n 10
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; /var/lib가 대부분을 차지하고 있었음 (91GB)&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 id=&quot;3.-/var/lib/docker-세부-분석&quot; style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;3. /var/lib/docker 세부 분석&lt;/h3&gt;
&lt;pre class=&quot;crystal&quot; style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;code&gt;sudo du -sh /var/lib/docker/*
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;초기에 Permission denied 에러 발생했으므로 다음과 같이 실행:&lt;/p&gt;
&lt;pre class=&quot;coq&quot; style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;code&gt;sudo bash -c 'du -sh /var/lib/docker/* | sort -hr | head -n 20'
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; /var/lib/docker/containers 가&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;85GB&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;로 압도적&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 id=&quot;4.-docker-로그-파일만-삭제&quot; style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;4. Docker 로그 파일만 삭제 &lt;span style=&quot;color: #ee2323;&quot;&gt;(핵심)&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Docker 컨테이너 로그는 기본적으로 json-file 형식으로 저장됨:&lt;/p&gt;
&lt;pre class=&quot;crystal&quot; style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;code&gt;/var/lib/docker/containers/&amp;lt;container-id&amp;gt;/&amp;lt;container-id&amp;gt;-json.log
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;모든 컨테이너 로그 파일 일괄 삭제:&lt;/p&gt;
&lt;pre class=&quot;crystal&quot; style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;code&gt;sudo find /var/lib/docker/containers/ -name '*-json.log' -type f -delete

&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 id=&quot;5.-용량-재확인&quot; style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;5. 용량 재확인&lt;/h3&gt;
&lt;pre class=&quot;coq&quot; style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;code&gt;sudo bash -c 'du -sh /var/lib/docker/* | sort -hr | head -n 20'
df -h
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; /var/lib/docker/containers 가 436KB로 줄어들고, 전체 디스크 용량도 회복됨&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 id=&quot;6.-docker-로그-재발-방지-설정&quot; style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;6. Docker 로그 재발 방지 설정 &lt;span style=&quot;color: #ee2323;&quot;&gt;(예방법)&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;로그 파일 크기 제한 및 순환 설정:&lt;/p&gt;
&lt;pre class=&quot;dts&quot; style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;code&gt;sudo vi /etc/docker/daemon.json
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;json&quot; style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;code&gt;{
  &quot;log-driver&quot;: &quot;json-file&quot;,
  &quot;log-opts&quot;: {
    &quot;max-size&quot;: &quot;10m&quot;,
    &quot;max-file&quot;: &quot;3&quot;
  }
}

&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;설정 반영:&lt;/p&gt;
&lt;pre class=&quot;ebnf&quot; style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;code&gt;sudo systemctl restart docker
&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 id=&quot;결론&quot; style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;결론&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;docker system prune -a --volumes 로 전체 정리도 가능(신중)&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;단순 로그 정리만으로도 수십 GB의 디스크 공간을 확보 가능&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;a href=&quot;https://noli.tistory.com/105&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://noli.tistory.com/105&lt;/a&gt;&lt;/p&gt;</description>
      <author>sddev</author>
      <guid isPermaLink="true">https://sddev.tistory.com/450</guid>
      <comments>https://sddev.tistory.com/450#entry450comment</comments>
      <pubDate>Mon, 26 Jan 2026 14:48:56 +0900</pubDate>
    </item>
    <item>
      <title>[AWS] Agentic AI Factory</title>
      <link>https://sddev.tistory.com/449</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;AWS 환경 기반의 멀티에이전트 시스템을 쉽게 구축/운영할 수 있도록 하는 개발 프레임워크&lt;br&gt;&lt;br&gt;1. Intake request (요구사항 수집 - Vibe coding)&lt;br&gt;Technical Business Commercial Governance&lt;br&gt;&lt;br&gt;아래 4가지 개별 Agent를 통해 Agent를 자동으로 생성한다.&lt;br&gt;- Assessment &lt;br&gt;- Design(설계)&lt;br&gt;- Planning &lt;br&gt;- Implementation(구현)&lt;br&gt;&lt;br&gt;2. Agentcore Obserbility &lt;br&gt;- 자동으로 생성된 Agent를 평가하고 보완 수정한다.&lt;br&gt;&lt;br&gt;3. Supervisor Function&lt;br&gt;- Agent catalog를 보고 Worker를 실행&lt;/p&gt;</description>
      <author>sddev</author>
      <guid isPermaLink="true">https://sddev.tistory.com/449</guid>
      <comments>https://sddev.tistory.com/449#entry449comment</comments>
      <pubDate>Thu, 22 Jan 2026 13:54:44 +0900</pubDate>
    </item>
    <item>
      <title>[Chapter1 - 1] 디자인 패턴과 프로그래밍 패러다임 - 디자인 패턴</title>
      <link>https://sddev.tistory.com/448</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;React.js, Spring 등 라이브러리나 프레임워크의 기본이 되는 &lt;b&gt;디자인 패턴&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떠한 방식으로 로직을 구성해야 하는지에 대한 시각이 담겨 있는 &lt;b&gt;프로그래밍 패러다임&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;용어 정리 - 라이브러리와 프레임워크&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;용어 : &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;라이브러리&lt;/b&gt;&lt;/span&gt;란? - &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;미리 만들어진 함수나 코드 모음&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;공통으로 사용될 수 있는 특정한 기능들을 모듈화한 것&lt;/b&gt;을 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;폴더명, 파일명 등에 대한 규칙이 없고&lt;/b&gt;, 프레임워크에 비해 &lt;b&gt;자유롭다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;'내가' 직접 컨트롤하여 사용하는 도구 '가위'&lt;/b&gt;와 비슷하다. &lt;b&gt;도구는 각각의 용도&lt;/b&gt;가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;용어 : &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;프레임워크&lt;/b&gt;&lt;/span&gt;란? - &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;소프트웨어 개발 등 특정 목적을 달성하기 위해&lt;/b&gt;&lt;/span&gt; &lt;b&gt;재사용&amp;nbsp;가능한&amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;기본&amp;nbsp;구조나&amp;nbsp;설계,&amp;nbsp;규칙&amp;nbsp;등을&amp;nbsp;미리&amp;nbsp;제공&lt;/span&gt;&lt;/b&gt;하여&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt; 개발을 더 쉽고 빠르게 할 수 있도록 돕는 도구 or 체계&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;공통으로 사용될 수 있는 특정한 기능들을 모듈화한 것&lt;/b&gt;을 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;폴더명, 파일명 들에 대한 규칙이 있고&lt;/b&gt;, 라이브러리에 비해 좀 더 &lt;b&gt;엄격하다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;'내가' 의존해서 사용하는 도구 '비행기'&lt;/b&gt;와 비슷하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 &lt;b&gt;'비행기'가 정해놓은 규칙&lt;/b&gt;을 따르고, '비행기'가 복잡한 작업들을 내부적으로 컨트롤한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;주요&amp;nbsp;의미&lt;br /&gt;- 뼈대/골조: 건물을 지을 때의 뼈대처럼, 앱이나 &lt;b&gt;웹사이트의 기본 구조&lt;/b&gt;를 잡아주는 역할.&amp;nbsp;&lt;br /&gt;- 틀/체계/구조: &lt;b&gt;정해진 규칙과 도구를 제공&lt;/b&gt;하여 &lt;b&gt;개발자가 일정한 방식(틀)으로 작업&lt;/b&gt;하게 함.&amp;nbsp;&lt;br /&gt;- 공통 기능 제공: 데이터베이스 연결, 화면 구현 등 반복되는 &lt;b&gt;공통 기능을 미리 만들어 제공해 개발 시간과 비용 절감&lt;/b&gt;.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단한&amp;nbsp;비유&lt;br /&gt;- 프레임워크: &lt;b&gt;틀이 짜여진 집, 사용자는 가구(코드)만 채우면&lt;/b&gt; 됨.&amp;nbsp;&lt;br /&gt;- 라이브러리(비교): &lt;b&gt;틀을 직접 짜고&lt;/b&gt; &lt;b&gt;필요한 부품(라이브러리)만 가져다 쓰는&lt;/b&gt; 것.&amp;nbsp;&lt;br /&gt;예시:&amp;nbsp;웹&amp;nbsp;프레임워크(Django,&amp;nbsp;Spring)는&amp;nbsp;&lt;b&gt;웹사이트&amp;nbsp;개발의&amp;nbsp;기본&amp;nbsp;구조를&amp;nbsp;제공&lt;/b&gt;하고,&amp;nbsp;게임&amp;nbsp;프레임워크는&amp;nbsp;렌더링이나&amp;nbsp;파일&amp;nbsp;입출력&amp;nbsp;&lt;b&gt;모듈을&amp;nbsp;제공하는&amp;nbsp;식&lt;/b&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;Section 1.1 디자인 패턴&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;용어 : &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;디자인 패턴&lt;/b&gt;&lt;/span&gt;이란? - &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;소프트웨어 개발 시 자주 발생하는 문제에 대한 검증된 해결책&lt;/b&gt;&lt;/span&gt;으로, &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;코드의 재사용성과 유연성을 높여주는 '설계 방식의 표준화된 틀'&lt;/b&gt;&lt;/span&gt;, '설계&amp;nbsp;기법',&amp;nbsp;'설계&amp;nbsp;모범&amp;nbsp;사례'&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로그램을 설계할 때 발생했던 &lt;b&gt;문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록&lt;/b&gt; 하나의 &lt;b&gt;'규약' 형태로 만들어 놓은 것&lt;/b&gt;을 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주요&amp;nbsp;개념&lt;br /&gt;- 정의: 반복되는 &lt;b&gt;디자인 문제에 대한 검증된 해결책&lt;/b&gt;을 모아놓은 청사진 (Blueprint).&lt;br /&gt;- 목표: 유연하고 &lt;b&gt;효율적으로 객체와 클래스를 조립하는 방법&lt;/b&gt; 제시, 코드 품질 향상.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;주요&amp;nbsp;분류&amp;nbsp;(GoF&amp;nbsp;기준)&lt;br /&gt;- &lt;b&gt;생성 패턴&lt;/b&gt; (Creational Patterns): &lt;b&gt;객체 생성 과정을 캡슐화하여 유연&lt;/b&gt;하게 만듦 (예: &lt;b&gt;싱글턴&lt;/b&gt;, 팩토리 메서드, 빌더).&lt;br /&gt;- &lt;b&gt;구조 패턴&lt;/b&gt; (Structural Patterns): &lt;b&gt;클래스와 객체를 조합하여 더 큰 구조&lt;/b&gt;를 만듦 (예: &lt;b&gt;어댑터&lt;/b&gt;, 데코레이터, 프록시).&lt;br /&gt;- &lt;b&gt;행동 패턴&lt;/b&gt; (Behavioral Patterns): &lt;b&gt;객체 간의 상호작용과 책임 분담&lt;/b&gt;에 초점 (예: &lt;b&gt;옵서버&lt;/b&gt;, 전략, 커맨드).&amp;nbsp;&lt;br /&gt;&lt;br /&gt;왜&amp;nbsp;사용하는가?&lt;br /&gt;- 코드 가독성 및 유지보수성 향상: &lt;b&gt;검증된 구조로 인해 코드 이해가 쉬워짐&lt;/b&gt;.&lt;br /&gt;- 생산성 증대: &lt;b&gt;문제 해결을 위한 고민 시간을 줄이고, 재사용 가능한 솔루션&lt;/b&gt; 적용.&lt;br /&gt;- 객체지향 설계 능력 향상: 클래스와 객체에 대한 시야를 넓혀줌.&amp;nbsp;&lt;br /&gt;&lt;br /&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;1.1.1 싱글톤 패턴&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;용어 : &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;싱글톤 패턴&lt;/b&gt;&lt;/span&gt;이란? - &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;특정&amp;nbsp;클래스의&amp;nbsp;인스턴스가&amp;nbsp;애플리케이션&amp;nbsp;전체에서&amp;nbsp;오직&amp;nbsp;하나만&amp;nbsp;생성되도록&amp;nbsp;보장하는&amp;nbsp;생성&lt;/b&gt;&lt;/span&gt;&amp;nbsp;디자인&amp;nbsp;패턴으로,&amp;nbsp;단&amp;nbsp;하나의&amp;nbsp;객체를&amp;nbsp;공유하며&amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;전역&amp;nbsp;접근을&amp;nbsp;가능하게&amp;nbsp;하여&amp;nbsp;리소스&amp;nbsp;관리나&amp;nbsp;데이터&amp;nbsp;공유에&amp;nbsp;유용&lt;/b&gt;&lt;/span&gt;하지만,&amp;nbsp;&lt;b&gt;테스트&amp;nbsp;어려움,&amp;nbsp;결합도&amp;nbsp;증가&amp;nbsp;등의&amp;nbsp;단점&lt;/b&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;br /&gt;- &lt;b&gt;메모리 절약&lt;/b&gt;: &lt;b&gt;객체를 여러 번 생성하지 않아 메모리 사용을 줄입니다&lt;/b&gt;.&lt;br /&gt;- &lt;b&gt;데이터 공유&lt;/b&gt;: &lt;b&gt;모든 곳에서 동일한 객체를 통해 데이터를 공유하고 관리&lt;/b&gt;하기 쉽습니다 (예: 데이터베이스 연결 풀, 설정 관리).&lt;br /&gt;- 엄격한 제어: &lt;b&gt;전역 변수 사용을 통제&lt;/b&gt;하고 &lt;b&gt;하나의 인스턴스만 사용하도록 보장&lt;/b&gt;합니다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;단점&lt;br /&gt;- 테스트 어려움: &lt;b&gt;전역 상태를 공유&lt;/b&gt;하므로 &lt;b&gt;단위 테스트(Unit Test)가 어렵고 Mock 객체로 대체하기 힘듭니다&lt;/b&gt;.&lt;br /&gt;- &lt;b&gt;높은 결합도&lt;/b&gt;: &lt;b&gt;여러 클래스가 싱글톤 객체에 의존하게 되어 코드 간의 결합도(Coupling)가 높아질&lt;/b&gt; 수 있습니다.&lt;br /&gt;- 책임 과중: &lt;b&gt;단일 책임 원칙(SRP)을 위반&lt;/b&gt;하고, 싱글톤 인스턴스 자체의 관리 책임이 발생합니다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;사용&amp;nbsp;예시&lt;br /&gt;- &lt;b&gt;로그 기록&lt;/b&gt;(Logger): &lt;b&gt;시스템 전체에서 하나의 로그 기록 객체를 공유&lt;/b&gt;.&lt;br /&gt;- &lt;b&gt;데이터베이스 연결 풀&lt;/b&gt;(DBCP): 여러 곳에서 데이터베이스 연결을 효율적으로 공유.&lt;br /&gt;- &lt;b&gt;설정 관리&lt;/b&gt;(Configuration Manager): &lt;b&gt;애플리케이션 설정을 한 곳에서 관리&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;자바스크립트의 싱글톤 패턴&lt;/h4&gt;
&lt;pre id=&quot;code_1769003817254&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// javascript에서 const 변수 = {}는 Object라는 내부 클래스로 인스턴스를 만드는 것과 동일하다.
const obj1 = { a: 27 } // 또는 new Object({a: 27})
const obj2 = { b: 27 }
console.log(obj1 === obj2) // false

// 일반적인 Singleton 패턴

class Singleton {
  constructor() {
    if (!Singleton.instance) {
    	Singleton.instance = this
    }
    return Singleton.instance
  }
  
  // 보통 아래와 같은 함수를 정의
  getInstance() {
  	return this
  }
}

const a = new Singleton()
const b = new Singleton()
console.log(a === b) // true

// DB 연결 Singleton 패턴

class DB {
  constructor(url) {
    if (!DB.instance) {
      DB.instance = createConnection(url)
    }
  }
  
  getInstance() {
  	return this.instance
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Java에서의 싱글톤 패턴&lt;/h4&gt;
&lt;pre id=&quot;code_1769004885084&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Singleton {
  // private로 생성자를 감춤
  private static class singleInstanceHolder {
    private static final Singleton INSTANCE = new Singleton();
  }
  
  public static Singleton getInstance() {
    return singleInstanceHolder.INSTANCE;
  }
}

public class HelloWorld {
  public static void main(String[] args) {
    Singleton a = Singleton.getInstance();
    Singleton b = Singleton.getInstance();
    System.out.println(a.hashCode() == b.hashCode()); // true
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Mongoose의 싱글톤 패턴&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;싱글톤 패턴은 Node.js에서 MongoDB 데이터베이스를 연결할 때 쓰는 mongoose 모듈에서 볼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;mongoose의 데이터베이스를 연결할 때 쓰는 connect()라는 함수는 싱글톤 인스턴스를 반환한다.&lt;/p&gt;
&lt;pre id=&quot;code_1769005144101&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Mongoose.prototype.connect = function(uri, options, callback) {
  const _mongoose = this instanceof Mongoose ? this : mongoose;
  const conn = _mongoose.connection;
  return _mongoose._promiseOrCallback(callback, cb =&amp;gt; {
  	conn.openUri(uri, options, err =&amp;gt; {
    	if (err != null) {
        	return cb(err);
        }
        return cb(null, _mongoose);
    }
  });
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;MySQL의 싱글톤 패턴&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Node.js에서 MySQL 데이터베이스를 연결할 때도 싱글톤 패턴이 쓰입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1769005536201&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// Main Module
const mysql = require('mysql');
const pool = mysql.createPool({
	connectionLimit: 10,
    host: 'example.org',
    user: 'user',
    password: 'password',
    database: 'db'
});
pool.connect();

// A Module
pool.query(query, ...);

// B Module
pool.query(query, ...);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;싱글톤 패턴의 단점&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;TDD(Test Driven Development)를 할 때 걸림돌&lt;/b&gt;이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TDD를 할 때 단위 테스트를 주로 하는데, &lt;b&gt;단위 테스트는 테스트가 서로 독립적이어야 하며, 테스트를 &lt;u&gt;어떤 순서로든 실행할 수 있어야&lt;/u&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;h4 data-ke-size=&quot;size20&quot;&gt;의존성 주입&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;용어: &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;의존성&lt;/b&gt;&lt;/span&gt;이란? - 종속성이라고도 하며&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt; A가 B에 의존성 있다는 것은 B의 변경 사항에 대해 A 또한 변경해야 된다는 것을 의미&lt;/b&gt;&lt;/span&gt;합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;용어 : &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;의존성 주입(Dependency Injection)&lt;/b&gt;&lt;/span&gt;이란? - &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;객체가&amp;nbsp;필요로&amp;nbsp;하는&amp;nbsp;다른&amp;nbsp;객체를&amp;nbsp;직접&amp;nbsp;생성하는&amp;nbsp;대신&lt;/b&gt;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;외부에서&amp;nbsp;생성하여&amp;nbsp;주입해주는&amp;nbsp;디자인&amp;nbsp;패턴&lt;/b&gt;&lt;/span&gt;으로,&amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;코드의&amp;nbsp;결합도를&amp;nbsp;낮춰&amp;nbsp;유연성과&amp;nbsp;유지보수성을&amp;nbsp;높이며&amp;nbsp;&lt;/b&gt;&lt;/span&gt;테스트하기 쉽게 만드는 핵심 기술, &lt;b&gt;이는&amp;nbsp;객체&amp;nbsp;간의&amp;nbsp;의존&amp;nbsp;관계를&amp;nbsp;외부에서&amp;nbsp;설정&lt;/b&gt;하거나&amp;nbsp;&lt;b&gt;프레임워크(스프링&amp;nbsp;등)가&amp;nbsp;대신&amp;nbsp;관리&lt;/b&gt;해주어,&amp;nbsp;&lt;b&gt;특정&amp;nbsp;객체의&amp;nbsp;변경이&amp;nbsp;다른&amp;nbsp;객체에&amp;nbsp;미치는&amp;nbsp;영향을&amp;nbsp;최소화&lt;/b&gt;합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;싱글톤 패턴은 사용하기가 쉽고, 굉장히 실용적이지만 모듈 간의 결합을 강하게 만들 수 있다는 단점이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 의존성 주입을 통해 모듈 간의 결합을 조금 더 느슨하게 만들어 해결할 수 있습니다.&lt;br /&gt;&lt;br /&gt;주요&amp;nbsp;개념&lt;br /&gt;- &lt;b&gt;의존성&lt;/b&gt;(Dependency): &lt;b&gt;A 객체가 B 객체를 사용할 때, A는 B에 의존한다고 하며 서로 영향을 주는 관계를 의미&lt;/b&gt;합니다.&lt;br /&gt;- &lt;b&gt;주입&lt;/b&gt;(Injection): &lt;b&gt;의존하는 객체(의존성)를 외부에서 생성하여 주입해주는 행위&lt;/b&gt;입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;장점&lt;br /&gt;- 결합도 낮춤: &lt;b&gt;객체 간의 결합도를 낮춰 유연성을 확보&lt;/b&gt;합니다.&lt;br /&gt;- 유지보수성 향상: &lt;b&gt;변경에 대한 영향을 줄여 유지보수가 용이&lt;/b&gt;해집니다.&lt;br /&gt;- 테스트 용이: 외부에서 의존성을 주입하므로, &lt;b&gt;테스트 시 가짜 객체(Mock)를 쉽게 주입하여 테스트할 수&lt;/b&gt; 있습니다.&lt;br /&gt;- 재사용성 증가: &lt;b&gt;코드의 종속성이 줄어 재사용성이 높아집니다&lt;/b&gt;.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주입&amp;nbsp;방식&amp;nbsp;(스프링&amp;nbsp;기준)&lt;br /&gt;- &lt;b&gt;생성자 주입&lt;/b&gt; (Constructor Injection): &lt;b&gt;생성자를 통해 의존성을 주입하며 불변성이 보장되어 가장 권장&lt;/b&gt;됩니다.&lt;br /&gt;- &lt;b&gt;메서드 주입&lt;/b&gt; (Method Injection): setter와 같은 메서드를 통해 주입합니다.&lt;br /&gt;- &lt;b&gt;필드 주입&lt;/b&gt; (Field Injection): 필드에 직접 주입하며 코드가 간결하지만 테스트가 어렵고 프레임워크에 종속적이라 비추천됩니다.&amp;nbsp;&lt;/p&gt;
&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;- Store 클래스가 Pencil 객체를 사용한다고 할 때, &lt;b&gt;Store 내부에서 Pencil을 직접 생성하는 대신, 외부에서 Pencil 인스턴스를 만들어 Store에 넣어주는 방식이 의존성 주입&lt;/b&gt;입니다.&lt;b&gt; 스프링에서는 이러한 과정을 컨테이너가 자동으로 처리&lt;/b&gt;해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>컴퓨터 과학/면접을 위한 CS 지식 노트</category>
      <author>sddev</author>
      <guid isPermaLink="true">https://sddev.tistory.com/448</guid>
      <comments>https://sddev.tistory.com/448#entry448comment</comments>
      <pubDate>Wed, 21 Jan 2026 23:36:46 +0900</pubDate>
    </item>
  </channel>
</rss>