<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>하루하루 성장하는 개발자가 되자</title>
    <link>https://giggs.tistory.com/</link>
    <description>공부한 것을 기록하는 장소 입니다. 

공부하면서 정리하였기 때문에 
틀린 내용이 있을 수 있습니다.

이야기 해주시면 수정하겠습니다.</description>
    <language>ko</language>
    <pubDate>Fri, 10 Apr 2026 04:18:25 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>giggs</managingEditor>
    <image>
      <title>하루하루 성장하는 개발자가 되자</title>
      <url>https://tistory1.daumcdn.net/tistory/5097925/attach/8f35fe149ab24e81b05e2d9f3b960f0b</url>
      <link>https://giggs.tistory.com</link>
    </image>
    <item>
      <title>[ 클라우드 솔루션 ] 클라우드 서비스</title>
      <link>https://giggs.tistory.com/342</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;-- INDEX --&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 40px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;1. 클라우드&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;2. 클라우드 컴퓨팅&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;3. 클라우드 컴퓨팅 유형&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;인터넷, 중앙 컴퓨터, 디바이스&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;IT기술, 솔루션 서비스 형태로 제공&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;Public, Private, Hybrid&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;4. 클라우드 솔루션&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;5. 클라우드 서비스 유형&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;다운로드 하지 않고, 인터넷, 엑세스&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;IaaS, PaaS, SaaS&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;1. 클라우드&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;인터넷을 통하여 외부의 중앙 컴퓨터에 저장할 수 있는 공간&lt;/li&gt;
&lt;li&gt;다양한 디바이스에서 언제 어디서나 필요한 데이터를 이용할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;2. 클라우드 컴퓨팅&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;언제, 어디서나 인터넷을 통해 필요한 만큼 사용하는 서비스 형태&lt;/li&gt;
&lt;li&gt;IT 기술을 종합적인&lt;span&gt;&amp;nbsp;&lt;/span&gt;솔루션의&lt;span&gt;&amp;nbsp;&lt;/span&gt;서비스 형태로 웹이나 네트워크를 통해 제공하는 것&lt;/li&gt;
&lt;li&gt;가상화된 컴퓨터 시스템 자원을 소유가 아닌 '공유'하자는 유틸리티화를 통해 서비스를 편리하게 바로 사용할 수 있다.&lt;/li&gt;
&lt;li&gt;인프라 투자 시간 및 비용 절약 / 핵심 사업 집중 / 실행 속도 향상 / 유연한 리소스 제공 / 사용한 클라우드 서비스만큼 요금 지불&lt;/li&gt;
&lt;li&gt;자원을 빠르게 조절하면서 인프라를 효율적으로 운영할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;717&quot; data-origin-height=&quot;387&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPuiwO/btrX6oI2nRU/jd85eoevbkNBs1Xc0tmKY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPuiwO/btrX6oI2nRU/jd85eoevbkNBs1Xc0tmKY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPuiwO/btrX6oI2nRU/jd85eoevbkNBs1Xc0tmKY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPuiwO%2FbtrX6oI2nRU%2Fjd85eoevbkNBs1Xc0tmKY0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;717&quot; height=&quot;387&quot; data-origin-width=&quot;717&quot; data-origin-height=&quot;387&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;3. 클라우드 컴퓨팅 유형 혹은 배치모델 ( Deployment Model )&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;퍼블릭 클라우드 - &quot;유연성&quot;, &quot;탄력성&quot;, &quot;비용절감&quot;&lt;/li&gt;
&lt;li&gt;프라이빗 클라우드 - &quot;보안성&quot;, &quot;독립성&quot;, &quot;높은 비용&quot;&lt;/li&gt;
&lt;li&gt;하이브리드 클라우드 - 높은 확장성, 무제한 저장공간, 경제적 비용, 강력한 보안 및 통제&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;923&quot; data-origin-height=&quot;424&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Q8dYb/btrX9FRaF26/QEwmjq8gOceyJFMkjRK0q0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Q8dYb/btrX9FRaF26/QEwmjq8gOceyJFMkjRK0q0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Q8dYb/btrX9FRaF26/QEwmjq8gOceyJFMkjRK0q0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQ8dYb%2FbtrX9FRaF26%2FQEwmjq8gOceyJFMkjRK0q0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;367&quot; data-origin-width=&quot;923&quot; data-origin-height=&quot;424&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;4. 클라우드 솔루션&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;706&quot; data-origin-height=&quot;351&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cLHzaG/btrX30PH6U6/Qyvm7XuG5o0gXQsTwUtR5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cLHzaG/btrX30PH6U6/Qyvm7XuG5o0gXQsTwUtR5K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cLHzaG/btrX30PH6U6/Qyvm7XuG5o0gXQsTwUtR5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcLHzaG%2FbtrX30PH6U6%2FQyvm7XuG5o0gXQsTwUtR5K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;706&quot; height=&quot;351&quot; data-origin-width=&quot;706&quot; data-origin-height=&quot;351&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;5. 클라우드 서비스 유형&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;IaaS&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;인프라 형태로 서비스 제공&lt;/li&gt;
&lt;li&gt;데이터 저장공간과 서버만 제공하고 문제는 고객이 알아서 해결&lt;/li&gt;
&lt;li&gt;클라우드 기반 서비스 및 기술을 생성하기 위한 인프라&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;PaaS&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;플랫폼 형태로 서비스 제공&lt;/li&gt;
&lt;li&gt;SW를 개발할 수 있는 플랫폼을 묶음으로 제공&lt;/li&gt;
&lt;li&gt;개발자가 앱을 구축하는 데 사용하는 클라우드 플랫폼&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;SaaS&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서비스 형태로&amp;nbsp;서비스 제공&lt;/li&gt;
&lt;li&gt;소프트웨어까지 함께 주는 SW 서비스&lt;/li&gt;
&lt;li&gt;최종 사용자를 대상으로 한느 클라우드 소프트웨어&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;760&quot; data-origin-height=&quot;328&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/q1pz9/btrYcgKkUVy/WxrsjtjCT9Vyc4xSFGVtQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/q1pz9/btrYcgKkUVy/WxrsjtjCT9Vyc4xSFGVtQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/q1pz9/btrYcgKkUVy/WxrsjtjCT9Vyc4xSFGVtQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq1pz9%2FbtrYcgKkUVy%2FWxrsjtjCT9Vyc4xSFGVtQ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;760&quot; height=&quot;328&quot; data-origin-width=&quot;760&quot; data-origin-height=&quot;328&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;754&quot; data-origin-height=&quot;416&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oANZY/btrX9ELvYP6/XQkugBakc1k1F1IEwMrsb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oANZY/btrX9ELvYP6/XQkugBakc1k1F1IEwMrsb0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oANZY/btrX9ELvYP6/XQkugBakc1k1F1IEwMrsb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoANZY%2FbtrX9ELvYP6%2FXQkugBakc1k1F1IEwMrsb0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;754&quot; height=&quot;416&quot; data-origin-width=&quot;754&quot; data-origin-height=&quot;416&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;750&quot; data-origin-height=&quot;408&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c9ngwd/btrX4mrv6Hd/ht2Zekj5lldXW2Z8l4kI8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c9ngwd/btrX4mrv6Hd/ht2Zekj5lldXW2Z8l4kI8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c9ngwd/btrX4mrv6Hd/ht2Zekj5lldXW2Z8l4kI8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc9ngwd%2FbtrX4mrv6Hd%2Fht2Zekj5lldXW2Z8l4kI8K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;750&quot; height=&quot;408&quot; data-origin-width=&quot;750&quot; data-origin-height=&quot;408&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;※ 참조&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.clvs.co.kr/post/cloudsolution-cloudcomputing&quot;&gt;https://www.clvs.co.kr/post/cloudsolution-cloudcomputing&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1675599406540&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[클라우드 솔루션] 클라우드 컴퓨팅 (1)&quot; data-og-description=&quot;세일즈포스는 고객 관계 관리(CRM) 솔루션을 중심으로 한 클라우드 컴퓨팅 서비스를 제공합니다. 그렇다면 클라우드 컴퓨팅 서비스와 클라우드 솔루션을 제공한다는 건 어떤 의미일까요? 클라우&quot; data-og-host=&quot;www.clvs.co.kr&quot; data-og-source-url=&quot;https://www.clvs.co.kr/post/cloudsolution-cloudcomputing&quot; data-og-url=&quot;https://www.clvs.co.kr/post/cloudsolution-cloudcomputing&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/i9ajo/hyRwBGCe0e/JOxAYnngzFMYx9kUF2GoJK/img.png?width=1000&amp;amp;height=369&amp;amp;face=0_0_1000_369,https://scrap.kakaocdn.net/dn/bPlRWO/hyRwuAIrqY/dEs5riPgPASyldgMm9YZak/img.png?width=1000&amp;amp;height=369&amp;amp;face=0_0_1000_369&quot;&gt;&lt;a href=&quot;https://www.clvs.co.kr/post/cloudsolution-cloudcomputing&quot; data-source-url=&quot;https://www.clvs.co.kr/post/cloudsolution-cloudcomputing&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/i9ajo/hyRwBGCe0e/JOxAYnngzFMYx9kUF2GoJK/img.png?width=1000&amp;amp;height=369&amp;amp;face=0_0_1000_369,https://scrap.kakaocdn.net/dn/bPlRWO/hyRwuAIrqY/dEs5riPgPASyldgMm9YZak/img.png?width=1000&amp;amp;height=369&amp;amp;face=0_0_1000_369');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[클라우드 솔루션] 클라우드 컴퓨팅 (1)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;세일즈포스는 고객 관계 관리(CRM) 솔루션을 중심으로 한 클라우드 컴퓨팅 서비스를 제공합니다. 그렇다면 클라우드 컴퓨팅 서비스와 클라우드 솔루션을 제공한다는 건 어떤 의미일까요? 클라우&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.clvs.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.clvs.co.kr/post/cloudsolution-cloudservice&quot;&gt;https://www.clvs.co.kr/post/cloudsolution-cloudservice&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1675599406540&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[클라우드 솔루션] 클라우드 서비스 (2)&quot; data-og-description=&quot;이번 포스팅에서는 지난번 클라우드 컴퓨팅 소개( [클라우드 솔루션] 클라우드 컴퓨팅 (1) )에 이어서 클라우드 서비스의 종류와 특징에 대해서 자세히 알아보도록 하겠습니다. 클라우드 컴퓨팅&quot; data-og-host=&quot;www.clvs.co.kr&quot; data-og-source-url=&quot;https://www.clvs.co.kr/post/cloudsolution-cloudservice&quot; data-og-url=&quot;https://www.clvs.co.kr/post/cloudsolution-cloudservice&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/onT4A/hyRwyJSJDs/kkI2nxOTU515RegjGjFuhk/img.png?width=1000&amp;amp;height=409&amp;amp;face=0_0_1000_409,https://scrap.kakaocdn.net/dn/bbDHPM/hyRvoPEb1e/NltkFOVZhEOvpEE46rkE91/img.png?width=1000&amp;amp;height=409&amp;amp;face=0_0_1000_409&quot;&gt;&lt;a href=&quot;https://www.clvs.co.kr/post/cloudsolution-cloudservice&quot; data-source-url=&quot;https://www.clvs.co.kr/post/cloudsolution-cloudservice&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/onT4A/hyRwyJSJDs/kkI2nxOTU515RegjGjFuhk/img.png?width=1000&amp;amp;height=409&amp;amp;face=0_0_1000_409,https://scrap.kakaocdn.net/dn/bbDHPM/hyRvoPEb1e/NltkFOVZhEOvpEE46rkE91/img.png?width=1000&amp;amp;height=409&amp;amp;face=0_0_1000_409');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[클라우드 솔루션] 클라우드 서비스 (2)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 포스팅에서는 지난번 클라우드 컴퓨팅 소개( [클라우드 솔루션] 클라우드 컴퓨팅 (1) )에 이어서 클라우드 서비스의 종류와 특징에 대해서 자세히 알아보도록 하겠습니다. 클라우드 컴퓨팅&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.clvs.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>다짐하자/출근 준비</category>
      <category>클라우드</category>
      <category>클라우드 서비스 유형</category>
      <category>클라우드 솔루션</category>
      <category>클라우드 컴퓨팅</category>
      <category>클라우드 컴퓨팅 유형</category>
      <author>giggs</author>
      <guid isPermaLink="true">https://giggs.tistory.com/342</guid>
      <comments>https://giggs.tistory.com/342#entry342comment</comments>
      <pubDate>Sun, 5 Feb 2023 21:17:29 +0900</pubDate>
    </item>
    <item>
      <title>발표 준비 - CRM과 ERP 정의와 사용 목적 / 차이점</title>
      <link>https://giggs.tistory.com/341</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;CRM이란?&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Customer Relationship Management, 고객 관계 관리&lt;/li&gt;
&lt;li&gt;고객 관계를 관리하기 위한 방법론 또는 전략이다.&lt;/li&gt;
&lt;li&gt;CRM의 개념을 차용해 기업의 영업/마케팅과 관련된 프로세스와 고객 DB를 체계화하여 시스템화한 것&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;CRM의 목적&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 고객 정보를 바탕으로 새로운 매출을 이끌어낸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 고객의 신뢰&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;( 언제 / 누가 / 무엇을 / 얼마나 / 구입했다 라는 고객 정보와 이전 문의사항, 클레임 이력 등을 한 곳에 모아 이를 바탕으로 빠르고 정확하게 응대 )&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. Cross-Sell - / Up-Sell&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기존 보유상품과 관련된 상품을 구매하도록 함&lt;/li&gt;
&lt;li&gt;고객에게 좀 더 업그레이드된 상품을 구매하도록 함&lt;/li&gt;
&lt;li&gt;과거 요구사항이나 커뮤니케이션 이력 등을 분석하여 구매 확률 높이기 위해 어떤 방식으로 제시해야 할지 결정&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;4. 신규 시장 또는 고객 발굴&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기존 고객의 정보를 바탕으로 새로운 잠재고객군을 유추, 그들의 잠재적인 니즈를 예측하고 대응&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;ERP란?&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;'전사적&amp;nbsp;자원&amp;nbsp;관리(Enterprise&amp;nbsp;Resource&amp;nbsp;Planning)'&lt;/li&gt;
&lt;li&gt;조직의 기록 시스템 ( 재무, 인사, 제조, 공급망, 서비스, 구매조달 등 효율적인 관리 )&lt;/li&gt;
&lt;li&gt;클라우드 ERP 소프트웨어는 기업의 내부 운영을 전 세계 비즈니스 파트너 및 네트워크와 연결해 경쟁력 확보에 필요한 협업 역량과 민첩성, 속도를 제공합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;ERP 사용목적&lt;/span&gt;&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;생산성 제고 ( 핵심 비즈니스 프로세스를 합리화, 자동화 )&lt;/li&gt;
&lt;li&gt;심층적인 인사이트 ( 정보 사일로를 없애고 단일 데이터 소스를 구축 )&lt;/li&gt;
&lt;li&gt;보고 속도 향상 ( 비즈니스와 재무 보고 속도를 높이고 결과를 손쉽게 공유 )&lt;/li&gt;
&lt;li&gt;리스크 완화 ( 비즈니스 가시성과 관리 역량을 극대화 )&lt;/li&gt;
&lt;li&gt;IT 간소화 ( 데이터베이스를 공유하는 통합 ERP 애플리케이션을 사용해 IT를 간소화 )&lt;/li&gt;
&lt;li&gt;민첩성 향상 ( 효율적인 운영과 즉시 액세스 가능한 실시간 데이터 )&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;ERP와 CRM의 차이점&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;공통점 : 비즈니스를 관리하기 위한 시스템&lt;/li&gt;
&lt;li&gt;차이점 : 사용하는 목적이 다르다.&lt;/li&gt;
&lt;li&gt;CRM은 고객과 관련된 정보, 영업 활동을 관리하여 새로운 매출을 창출, 이를 마케팅 또는 CS 업무에 활용하는데 집중&lt;/li&gt;
&lt;li&gt;ERP는 인사, 재무, 회계, 재고, 영업 등 각 부서에 필요한 관리 기능들을 망라하여 하나의 시스템에 모아 전사적인 차원에서 관리하는데 집중&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>다짐하자/출근 준비</category>
      <author>giggs</author>
      <guid isPermaLink="true">https://giggs.tistory.com/341</guid>
      <comments>https://giggs.tistory.com/341#entry341comment</comments>
      <pubDate>Wed, 1 Feb 2023 18:02:44 +0900</pubDate>
    </item>
    <item>
      <title>22.01.26 - [ 네트워크 ] Network</title>
      <link>https://giggs.tistory.com/340</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;-- INDEX --&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 117px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 37px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 37px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;1. HTTP의 GET과 POST&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 37px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;2. 3 way handshake&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 37px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;3. TCP와 UDP의 비교&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 80px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 80px; text-align: center;&quot;&gt;&lt;span&gt;&lt;span&gt;서버에 무엇인가를 &lt;br /&gt;요청할 때 사용하는 방식&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 80px; text-align: center;&quot;&gt;&lt;span&gt;&lt;span&gt;SYN&lt;/span&gt;&lt;span&gt;패킷과&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;ACK&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 80px; text-align: center;&quot;&gt;&lt;span&gt;&lt;span&gt;비연결형 프로토콜&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;?&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;뒤에 데이터가 붙음&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;request Body&lt;/span&gt;&lt;span&gt;에 데이터 담음&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;FIN&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;플래그와&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;ACK&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;&lt;span&gt;&lt;span&gt;종단간에 신뢰성 있는&lt;br /&gt;바이트 스트림 전송&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 117px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 37px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 37px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;4. TCP 흐름제어 / 혼잡제어&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 37px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;5. HTTP 와 HTTPS&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 37px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;6. 웹 통신의 큰 흐름&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 80px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 80px; text-align: center;&quot;&gt;&lt;span&gt;&lt;span&gt;송신측&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;수신측 &lt;br /&gt;데이터 처리 속도 차이를 해결&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 80px; text-align: center;&quot;&gt;&lt;span&gt;평문&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 80px; text-align: center;&quot; rowspan=&quot;2&quot;&gt;&lt;span&gt;브라우저&lt;span&gt; ~~~&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;~ &lt;span&gt;LAN&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;어댑터 ~&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;~ 허브&lt;span&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;스위치&lt;span&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;라우터 ~&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;~~~ &lt;/span&gt;&lt;/span&gt;웹 서버&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;&lt;span&gt;&lt;span&gt;송신측의 &lt;br /&gt;데이터 전달과 &lt;br /&gt;데이터 처리 속도 차이 해결&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;&lt;span&gt;SSL암호화&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;1. HTTP의 GET과 POST&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;둘 다 HTTP 프로토콜을 이용해서 &lt;span style=&quot;color: #ee2323;&quot;&gt;서버에 무엇인가를 요청&lt;/span&gt;할 때 사용하는 방식이다.&lt;/li&gt;
&lt;li&gt;하지만 둘의 특징을 제대로 이해하여 기술의 목적에 맞게 알맞은 용도에 사용해야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;a id=&quot;user-content-get&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Network#get&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;1-1 : GET&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;우선 GET 방식은 요청하는 데이터가&amp;nbsp;HTTP Request Message의 Header 부분에 url 이 담겨서 전송된다.&lt;/li&gt;
&lt;li&gt;때문에 url 상에&amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;?&amp;nbsp;뒤에 데이터가 붙어&lt;/span&gt; request 를 보내게 되는 것이다.&lt;/li&gt;
&lt;li&gt;이러한 방식은 url 이라는 공간에 담겨가기 때문에 전송할 수 있는 데이터의 크기가 제한적이다.&lt;/li&gt;
&lt;li&gt;또 보안이 필요한 데이터에 대해서는 데이터가 그대로 url 에 노출되므로&amp;nbsp;GET방식은 적절하지 않다. (ex. password)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;a id=&quot;user-content-post&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Network#post&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;1-2 : POST&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;POST 방식의 request 는&amp;nbsp;HTTP Request Message의 &lt;span style=&quot;color: #ee2323;&quot;&gt;Body 부분에 데이터가 담겨&lt;/span&gt;서 전송된다.&lt;/li&gt;
&lt;li&gt;때문에 바이너리 데이터를 요청하는 경우 POST 방식으로 보내야 하는 것처럼 데이터 크기가 GET 방식보다 크고 보안면에서 낫다.(하지만 보안적인 측면에서는 암호화를 하지 않는 이상 고만고만하다.)&lt;/li&gt;
&lt;li&gt;그렇다면 이러한 특성을 이해한 뒤에는 어디에 적용되는지를 알아봐야 그 차이를 극명하게 이해할 수 있다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;우선 &lt;span style=&quot;color: #ee2323;&quot;&gt;GET 은 가져오는 것&lt;/span&gt;이다. 서버에서 어떤 데이터를 가져와서 보여준다거나 하는 용도이지 서버의 값이나 상태 등을 변경하지 않는다. SELECT 적인 성향을 갖고 있다고 볼 수 있는 것이다.&lt;/li&gt;
&lt;li&gt;반면에 &lt;span style=&quot;color: #ee2323;&quot;&gt;POST 는 서버의 값이나 상태를&lt;/span&gt; 변경하기 위해서 또는 추가하기 위해서 사용된다.&lt;/li&gt;
&lt;li&gt;부수적인 차이점을 좀 더 살펴보자면 GET 방식의 요청은 브라우저에서 Caching 할 수 있다.&lt;/li&gt;
&lt;li&gt;때문에 POST 방식으로 요청해야 할 것을 보내는 데이터의 크기가 작고 보안적인 문제가 없다는 이유로 GET 방식으로 요청한다면 기존에 caching 되었던 데이터가 응답될 가능성이 존재한다. 때문에 목적에 맞는 기술을 사용해야 하는 것이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;2. [ TCP ] 3 way handshake &amp;amp; 4 way handshake&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;2-1 : 3 way handshake - 연결 성립&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;TCP는 &lt;span style=&quot;color: #ee2323;&quot;&gt;정확한 전송을 보장&lt;/span&gt;해야 한다.&lt;/li&gt;
&lt;li&gt;따라서 통신하기에 앞서, 논리적인 접속을 성립하기 위해 3 way handshake 과정을 진행한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;428&quot; data-origin-height=&quot;367&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Z8CJC/btrXe9f9Be6/e4tYkAoNyEilwIFf7MZvFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Z8CJC/btrXe9f9Be6/e4tYkAoNyEilwIFf7MZvFK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Z8CJC/btrXe9f9Be6/e4tYkAoNyEilwIFf7MZvFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZ8CJC%2FbtrXe9f9Be6%2Fe4tYkAoNyEilwIFf7MZvFK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;550&quot; height=&quot;472&quot; data-origin-width=&quot;428&quot; data-origin-height=&quot;367&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;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트가 서버에게 SYN 패킷을 보냄 (sequence : x)&lt;/li&gt;
&lt;li&gt;서버가 SYN(x)을 받고, 클라이언트로 받았다는 신호인 ACK와 SYN 패킷을 보냄 (sequence : y, ACK : x + 1)&lt;/li&gt;
&lt;li&gt;클라이언트는 서버의 응답은 ACK(x+1)와 SYN(y) 패킷을 받고, ACK(y+1)를 서버로 보냄&lt;/li&gt;
&lt;/ol&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이렇게 3번의 통신이 완료되면 연결이 성립된다. (3번이라 3 way handshake인 것)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;2-2 : 4 way handshake - 연결 해제&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;연결 성립 후, &lt;span style=&quot;color: #ee2323;&quot;&gt;모든 통신이 끝났다면 해제&lt;/span&gt;해야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;433&quot; data-origin-height=&quot;361&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d4s09H/btrXg4E0nnR/f3OxXRDkJTTdpnsqHXCtEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d4s09H/btrXg4E0nnR/f3OxXRDkJTTdpnsqHXCtEk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d4s09H/btrXg4E0nnR/f3OxXRDkJTTdpnsqHXCtEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd4s09H%2FbtrXg4E0nnR%2Ff3OxXRDkJTTdpnsqHXCtEk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;550&quot; height=&quot;459&quot; data-origin-width=&quot;433&quot; data-origin-height=&quot;361&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;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트는 서버에게 연결을 종료한다는 FIN 플래그를 보낸다.&lt;/li&gt;
&lt;li&gt;서버는 FIN을 받고, 확인했다는 ACK를 클라이언트에게 보낸다. (이때 모든 데이터를 보내기 위해 CLOSE_WAIT 상태가 된다)&lt;/li&gt;
&lt;li&gt;데이터를 모두 보냈다면, 연결이 종료되었다는 FIN 플래그를 클라이언트에게 보낸다.&lt;/li&gt;
&lt;li&gt;클라이언트는 FIN을 받고, 확인했다는 ACK를 서버에게 보낸다. (아직 서버로부터 받지 못한 데이터가 있을 수 있으므로 TIME_WAIT을 통해 기다린다.)&lt;/li&gt;
&lt;/ol&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버는 ACK를 받은 이후 소켓을 닫는다 (Closed)&lt;/li&gt;
&lt;li&gt;TIME_WAIT 시간이 끝나면 클라이언트도 닫는다 (Closed)&lt;/li&gt;
&lt;li&gt;이렇게 4번의 통신이 완료되면 연결이 해제된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;3. TCP와 UDP의 비교&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;3-1 : UDP&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;UDP(User Datagram Protocol, 사용자 데이터그램 프로토콜)는&amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;비연결형 프로토콜&lt;/span&gt;&amp;nbsp;이다.&lt;/li&gt;
&lt;li&gt;IP 데이터그램을 캡슐화하여 보내는 방법과 연결 설정을 하지 않고 보내는 방법을 제공한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;UDP는 흐름제어, 오류제어 또는 손상된 세그먼트의 수신에 대한 재전송을&amp;nbsp;하지 않는다.&amp;nbsp;이 모두가 사용자 프로세스의 몫이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;UDP가 행하는 것은 포트들을 사용하여 IP 프로토콜에 인터페이스를 제공하는 것이다.&lt;/li&gt;
&lt;li&gt;종종 클라이언트는 서버로 짧은 요청을 보내고, 짧은 응답을 기대한다.&lt;/li&gt;
&lt;li&gt;만약 요청 또는 응답이 손실된다면, 클라이언트는 time out 되고 다시 시도할 수 있으면 된다.&lt;/li&gt;
&lt;li&gt;코드가 간단할 뿐만 아니라 TCP 처럼 초기설정(initial setup)에서 요구되는 프로토콜보다 적은 메시지가 요구된다.&lt;/li&gt;
&lt;li&gt;UDP를 사용한 것들에는&amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;DNS가 있다&lt;/span&gt;. 어떤 호스트 네임의 IP 주소를 찾을 필요가 있는 프로그램은, DNS 서버로 호스트 네임을 포함한 UDP 패킷을 보낸다. 이 서버는 호스트의 IP 주소를 포함한 UDP 패킷으로 응답한다.&lt;/li&gt;
&lt;li&gt;사전에 설정이 필요하지 않으며 그 후에 해제가 필요하지 않다.&lt;/li&gt;
&lt;li&gt;UDP는 왜 사용할까?&lt;/li&gt;
&lt;li&gt;UDP의 결정적인 장점은 데이터의 신속성이다. 데이터의 처리가 TCP보다 빠르다.&lt;/li&gt;
&lt;li&gt;주로 실시간 방송과 온라인 게임에서 사용된다. 네트워크 환경이 안 좋을때, 끊기는 현상을 생각하면 된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;a id=&quot;user-content-tcp&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Network#tcp&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;3-2 : TCP&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;대부분의 인터넷 응용 분야들은&amp;nbsp;신뢰성과&amp;nbsp;순차적인 전달을 필요로 한다.&lt;/li&gt;
&lt;li&gt;UDP 로는 이를 만족시킬 수 없으므로 다른 프로토콜이 필요하여 탄생한 것이&amp;nbsp;TCP이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;TCP(Transmission Control Protocol, 전송제어 프로토콜)는 신뢰성이 없는 인터넷을 통해 &lt;span style=&quot;color: #ee2323;&quot;&gt;종단간에 신뢰성 있는&lt;/span&gt;&amp;nbsp;바이트 스트림을 전송하도록 특별히 설계되었다.&lt;/li&gt;
&lt;li&gt;TCP 서비스는 송신자와 수신자 모두가 &lt;span style=&quot;color: #ee2323;&quot;&gt;소켓&lt;/span&gt;이라고 부르는 종단점을 생성함으로써 이루어진다.&lt;/li&gt;
&lt;li&gt;TCP 에서 연결 설정(connection establishment)는&amp;nbsp;3-way handshake를 통해 행해진다.&lt;/li&gt;
&lt;li&gt;모든 TCP 연결은 전이중(full-duplex), 점대점(point to point)방식이다.&lt;/li&gt;
&lt;li&gt;전이중이란 전송이 양방향으로 동시에 일어날 수 있음을 의미하며 점대점이란 각 연결이 정확히 2 개의 종단점을 가지고 있음을 의미한다.&lt;/li&gt;
&lt;li&gt;TCP 는 멀티캐스팅이나 브로드캐스팅을 지원하지 않는다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;4. TCP 흐름제어 / 혼잡제어&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;4-1 : TCP 통신이란?&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;네트워크 통신에서 신뢰적인 연결방식&lt;/li&gt;
&lt;li&gt;TCP는 기본적으로 unreliable network에서, reliable network를 보장할 수 있도록 하는 프로토콜&lt;/li&gt;
&lt;li&gt;TCP는 network congestion avoidance algorithm을 사용&lt;/li&gt;
&lt;li&gt;reliable network를 보장한다는 것은 4가지 문제점 존재&lt;/li&gt;
&lt;li&gt;손실 : packet이 손실될 수 있는 문제&lt;/li&gt;
&lt;li&gt;순서 바뀜 : packet의 순서가 바뀌는 문제&lt;/li&gt;
&lt;li&gt;Congestion : 네트워크가 혼잡한 문제&lt;/li&gt;
&lt;li&gt;Overload : receiver가 overload 되는 문제&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;4-2 : 흐름제어/혼잡제어란?&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;4-2-1 : 흐름제어 (endsystem 대 endsystem)&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;송신측과 수신측의 데이터 처리 속도 차이를 해결&lt;/span&gt;하기 위한 기법&lt;/li&gt;
&lt;li&gt;Flow Control은 receiver가 packet을 지나치게 많이 받지 않도록 조절하는 것&lt;/li&gt;
&lt;li&gt;기본 개념은 receiver가 sender에게 현재 자신의 상태를 feedback 한다는 점&lt;/li&gt;
&lt;li&gt;Stop and Wait : 매번 전송한 패킷에 대해 확인 응답을 받아야만 그 다음 패킷을 전송하는 방법&lt;/li&gt;
&lt;li&gt;Sliding Window (Go Back N ARQ) : 수신측에서 설정한 윈도우 크기만큼 송신측에서 확인응답 없이 세그먼트를 전송할 수 있게 하여 데이터 흐름을 동적으로 조절하는 제어기법으로 &lt;span style=&quot;background-color: #ffffff; color: #24292f;&quot;&gt;전송은 되었지만, acked를 받지 못한 byte의 숫자를 파악하기 위해 사용하는 protocol&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;4-2-2 : 혼잡제어&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;송신측의 데이터 전달과 네트워크의 데이터 처리 속도 차이를 해결하기 위한 기법&lt;/li&gt;
&lt;li&gt;네트워크 내에 패킷의 수가 과도하게 증가하는 현상을 혼잡이라 하며, 혼잡 현상을 방지하거나 제거하는 기능을 혼잡제어라고 한다.&lt;/li&gt;
&lt;li&gt;흐름제어가 송신측과 수신측 사이의 전송속도를 다루는데 반해, 혼잡제어는 호스트와 라우터를 포함한 보다 넓은 관점에서 전송 문제를 다루게 된다.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #24292f;&quot;&gt;AIMD(Additive Increase / Multiplicative Decrease) : &lt;/span&gt;처음에 패킷을 하나씩 보내고 이것이 문제없이 도착하면 window 크기(단위 시간 내에 보내는 패킷의 수)를 1씩 증가시켜 가며 전송하는 방법&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #24292f;&quot;&gt;Slow Start (느린 시작) : &lt;span style=&quot;background-color: #ffffff; color: #24292f;&quot;&gt;AIMD와 마찬가지로 패킷을 하나씩 보내면서 시작하고, 패킷이 문제없이 도착하면 각각의 ACK 패킷마다 window size를 1씩 늘려준다. 즉, 한 주기가 지나면 window size가 2배로 된다.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #24292f;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #24292f;&quot;&gt;Fast Retransmit (빠른 재전송) : &lt;/span&gt;&lt;/span&gt;패킷을 받는 쪽에서 먼저 도착해야 할 패킷이 도착하지 않고 다음 패킷이 도착한 경우에도 ACK 패킷을 보내게 된다.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #24292f;&quot;&gt;Fast Recovery (빠른 회복) : &lt;span style=&quot;background-color: #ffffff; color: #24292f;&quot;&gt;혼잡한 상태가 되면 window size를 1로 줄이지 않고 반으로 줄이고 선형증가시키는 방법이다. &lt;span style=&quot;background-color: #ffffff; color: #24292f;&quot;&gt;혼잡 상황을 한번 겪고 나서부터는 순수한 AIMD 방식으로 동작하게 된다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;4-3 : 전송의 전체 과정&lt;/span&gt;&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Application layer : sender application layer가 socket에 data를 씀.&lt;/li&gt;
&lt;li&gt;Transport layer : data를 segment에 감싼다. 그리고 network layer에 넘겨줌.&lt;/li&gt;
&lt;li&gt;그러면 아랫단에서 어쨌든 receiving node로 전송이 됨. 이때, sender의 send buffer에 data를 저장하고, receiver는 receive buffer에 data를 저장함.&lt;/li&gt;
&lt;li&gt;application에서 준비가 되면 이 buffer에 있는 것을 읽기 시작함.&lt;/li&gt;
&lt;li&gt;따라서 flow control의 핵심은 이 receiver buffer가 넘치지 않게 하는 것임.&lt;/li&gt;
&lt;li&gt;따라서 receiver는 RWND(Receive WiNDow) : receive buffer의 남은 공간을 확보함&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;5. HTTP와 HTTPS&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;5-1 : HTTP(HyperText Transfer Protocol)&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;인터넷상에서 &lt;span style=&quot;color: #ee2323;&quot;&gt;클라이언트와 서버가 자원을 주고받을 때 쓰는 통신 규약&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;HTTP는 &lt;span style=&quot;color: #ee2323;&quot;&gt;텍스트 교환&lt;/span&gt;이므로, 누군가 네트워크에서 신호를 가로채면 내용이 노출되는 보안 이슈가 존재한다.&lt;b&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;▣ &lt;span style=&quot;color: #f89009;&quot;&gt;HTTP 는 평문 통신이기 때문에 도청이 가능하다. &lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #24292f;&quot;&gt;TCP/IP 구조의 통신은 전부 통신 경로 상에서 엿볼 수 있다. &lt;/span&gt;패킷을 수집하는 것만으로 도청할 수 있다.&lt;/li&gt;
&lt;li&gt;평문으로 통신을 할 경우 메시지의 의미를 파악할 수 있기 때문에 암호화하여 통신해야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;▣ &lt;/b&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;통신 상대를 확인하지 않기 때문에 위장이 가능하다. &lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리퀘스트가 오면 상대가 누구든지 무언가의 리스폰스를 반환한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;▣ &lt;/b&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;완전성을 증명할 수 없기 때문에 변조가 가능하다. &lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;여기서 완전성이란&amp;nbsp;정보의 정확성을 의미한다.&lt;/li&gt;
&lt;li&gt;서버 또는 클라이언트에서 수신한 내용이 송신측에서 보낸 내용과 일치한다라는 것을 보장할 수 없는 것이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;--- 이런 보안 문제를 해결해 주는 프로토콜이&lt;span&gt;&amp;nbsp;&lt;/span&gt;'&lt;b&gt;HTTPS&lt;/b&gt;' ---&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;a id=&quot;user-content-httpshypertext-transfer-protocol-secure&quot; href=&quot;https://github.com/gyoogle/tech-interview-for-developer/blob/master/Computer%20Science/Network/HTTP%20%26%20HTTPS.md#httpshypertext-transfer-protocol-secure&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;5-2 : HTTPS(HyperText Transfer Protocol Secure)&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;인터넷상에서 정보를 암호화하는 &lt;span style=&quot;color: #ee2323;&quot;&gt;SSL 프로토콜을 사용해 클라이언트와 서버가 자원을 주고받을 때 쓰는 통신 규약&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;HTTP 에 암호화와 인증, 그리고 완전성 보호를 더한 HTTPS&lt;/li&gt;
&lt;li&gt;HTTPS는 텍스트를 암호화한다. (공개키 암호화 방식으로!)&amp;nbsp;&lt;/li&gt;
&lt;li&gt;HTTPS 의 SSL 에서는 공통키 암호화 방식과 공개키 암호화 방식을 혼합한 하이브리드 암호 시스템을 사용한다.&lt;/li&gt;
&lt;li&gt;공통키를 공개키 암호화 방식으로 교환한 다음에 다음부터의 통신은 공통키 암호를 사용하는 방식이다.&lt;/li&gt;
&lt;li&gt;HTTP 는 원래 TCP 와 직접 통신했지만, HTTPS 에서 HTTP 는 SSL 과 통신하고&amp;nbsp;SSL 이 TCP 와 통신하게 된다. SSL 을 사용한 HTTPS 는 암호화와 증명서, 안전성 보호를 이용할 수 있게 된다.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #24292f;&quot;&gt;평문 통신에 비해서 암호화 통신은 CPU나 메모리 등 리소스를 더 많이 요구한다. 통신할 때마다 암호화를 하면 추가적인 리소스를 소비하기 때문에 서버 한 대당 처리할 수 있는 리퀘스트의 수가 상대적으로 줄어들게 된다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #24292f;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #24292f;&quot;&gt;하지만 최근에는 하드웨어의 발달로 인해 HTTPS를 사용하더라도 속도 저하가 거의 일어나지 않으며, 새로운 표준인 HTTP 2.0을 함께 이용한다면 오히려 HTTPS가 HTTP보다 더 빠르게 동작한다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #24292f;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #24292f;&quot;&gt;&lt;span&gt;따라서 &lt;span style=&quot;background-color: #ffffff; color: #24292f;&quot;&gt;현재 모든 웹 페이지에서 HTTPS를 적용하는 방향으로 바뀌어가고 있다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;6. 웹 통신의 큰 흐름&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;우리가 Chrome 을 실행시켜 주소창에 특정 URL 값을 입력시키면 어떤 일이 일어나는가?&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;a id=&quot;user-content-in-브라우저&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Network#in-%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;in 브라우저&lt;/span&gt;&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;url 에 입력된 값을 브라우저 내부에서 결정된 규칙에 따라 그 의미를 조사한다.&lt;/li&gt;
&lt;li&gt;조사된 의미에 따라 HTTP Request 메시지를 만든다.&lt;/li&gt;
&lt;li&gt;만들어진 메시지를 웹 서버로 전송한다.&lt;/li&gt;
&lt;/ol&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;OS에 의뢰하여 메시지를 전달&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;단, OS에 송신을 의뢰할 때는 도메인명이 아니라 ip주소로 메시지를 받을 상대를 지정해야 하는데, 이 과정에서 DNS서버를 조회해야 한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;a id=&quot;user-content-in-프로토콜-스택-lan-어댑터&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Network#in-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C-%EC%8A%A4%ED%83%9D-lan-%EC%96%B4%EB%8C%91%ED%84%B0&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;in 프로토콜 스택, LAN 어댑터&lt;/span&gt;&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;프로토콜 스택&lt;/span&gt;(운영체제에 내장된 네트워크 제어용 소프트웨어)이 브라우저로부터 메시지를 받는다.&lt;/li&gt;
&lt;li&gt;브라우저로부터 받은 메시지를 패킷 속에 저장한다.&lt;/li&gt;
&lt;li&gt;그리고 수신처 주소 등의 제어정보를 덧붙인다.&lt;/li&gt;
&lt;li&gt;그런 다음, 패킷을 &lt;span style=&quot;color: #ee2323;&quot;&gt;LAN 어댑터&lt;/span&gt;에 넘긴다.&lt;/li&gt;
&lt;li&gt;LAN 어댑터는 다음 Hop의 MAC주소를 붙인 프레임을 전기신호로 변환시킨다.&lt;/li&gt;
&lt;li&gt;신호를 LAN 케이블에 송출시킨다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로토콜 스택은 통신 중 오류가 발생했을 때, 이 제어 정보를 사용하여 고쳐 보내거나, 각종 상황을 조절하는 등 다양한 역할을 하게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네트워크 세계에서는 비서가 있어서 우리가 비서에게 물건만 건네주면, 받는 사람의 주소와 각종 유의사항을 써준다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서는 프로토콜 스택이 비서의 역할을 한다고 볼 수 있다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;a id=&quot;user-content-in-허브-스위치-라우터&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Network#in-%ED%97%88%EB%B8%8C-%EC%8A%A4%EC%9C%84%EC%B9%98-%EB%9D%BC%EC%9A%B0%ED%84%B0&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;in 허브, 스위치, 라우터&lt;/span&gt;&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;LAN 어댑터가 송신한 프레임은 &lt;span style=&quot;color: #ee2323;&quot;&gt;스위칭 허브&lt;/span&gt;를 경유하여 &lt;span style=&quot;color: #ee2323;&quot;&gt;인터넷 접속용 라우터&lt;/span&gt;에 도착한다.&lt;/li&gt;
&lt;li&gt;라우터는 패킷을 프로바이더(통신사)에게 전달한다.&lt;/li&gt;
&lt;li&gt;인터넷으로 들어가게 된다.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;a id=&quot;user-content-in-액세스-회선-프로바이더&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Network#in-%EC%95%A1%EC%84%B8%EC%8A%A4-%ED%9A%8C%EC%84%A0-%ED%94%84%EB%A1%9C%EB%B0%94%EC%9D%B4%EB%8D%94&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;in 액세스 회선, 프로바이더&lt;/span&gt;&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;패킷은 인터넷의 입구에 있는 &lt;span style=&quot;color: #ee2323;&quot;&gt;액세스 회선(통신 회선)&lt;/span&gt;에 의해 &lt;span style=&quot;color: #ee2323;&quot;&gt;POP(Point Of Presence, 통신사용 라우터)&lt;/span&gt;까지 운반된다.&lt;/li&gt;
&lt;li&gt;POP 를 거쳐 인터넷의 핵심부로 들어가게 된다.&lt;/li&gt;
&lt;li&gt;수 많은 고속 라우터들 사이로 패킷이 목적지를 향해 흘러가게 된다.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;a id=&quot;user-content-in-방화벽-캐시서버&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Network#in-%EB%B0%A9%ED%99%94%EB%B2%BD-%EC%BA%90%EC%8B%9C%EC%84%9C%EB%B2%84&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;in 방화벽, 캐시서버&lt;/span&gt;&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;패킷은 인터넷 핵심부를 통과하여 &lt;span style=&quot;color: #ee2323;&quot;&gt;웹 서버 측의 LAN에&lt;/span&gt; 도착한다.&lt;/li&gt;
&lt;li&gt;기다리고 있던 &lt;span style=&quot;color: #ee2323;&quot;&gt;방화벽&lt;/span&gt;이 도착한 패킷을 검사한다.&lt;/li&gt;
&lt;li&gt;패킷이 웹 서버까지 가야 하는지 가지 않아도 되는지를 판단하는 &lt;span style=&quot;color: #ee2323;&quot;&gt;캐시서버&lt;/span&gt;가 존재한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;굳이 서버까지 가지 않아도 되는 경우를 골라낸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;액세스 한 페이지의 데이터가 캐시서버에 있으면 웹 서버에 의뢰하지 않고 바로 그 값을 읽을 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;페이지의 데이터 중에 다시 이용할 수 있는 것이 있으면 캐시 서버에 저장된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;a id=&quot;user-content-in-웹-서버&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Network#in-%EC%9B%B9-%EC%84%9C%EB%B2%84&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;in 웹 서버&lt;/span&gt;&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;패킷이 물리적인 웹 서버에 도착하면 &lt;span style=&quot;color: #ee2323;&quot;&gt;웹 서버의 프로토콜 스택은 패킷을 추출&lt;/span&gt;하여 메시지를 복원하고 웹 서버 애플리케이션에 넘긴다.&lt;/li&gt;
&lt;li&gt;메시지를 받은 웹 서버 애플리케이션은 요청 메시지에 따른 데이터를 &lt;span style=&quot;color: #ee2323;&quot;&gt;응답 메시지에 넣어 클라이언트로 회송&lt;/span&gt;한다.&lt;/li&gt;
&lt;li&gt;왔던 방식대로 응답 메시지가 클라이언트에게 전달된다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>다짐하자/출근 준비</category>
      <author>giggs</author>
      <guid isPermaLink="true">https://giggs.tistory.com/340</guid>
      <comments>https://giggs.tistory.com/340#entry340comment</comments>
      <pubDate>Fri, 27 Jan 2023 08:41:53 +0900</pubDate>
    </item>
    <item>
      <title>22.01.25 - [ 자료구조 ] DataStructure</title>
      <link>https://giggs.tistory.com/339</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;-- INDEX --&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style2&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;1. Array&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;2. Linked List&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;3. Stack&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;4. Queue&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;인덱스로 &lt;br /&gt;해당 원소 접근 가능&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;자기 자신 다음만을 기억&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;LIFO&lt;br /&gt;FILO&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;FIFO&lt;br /&gt;interface Queue&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 34px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style2&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;5. Tree&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;6. Binary Heap&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;7. Red Black Tree&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;8. Graph&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;비선형 자료구조&lt;br /&gt;표현에 집중&lt;br /&gt;BinaryTree&lt;br /&gt;BST&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;배열에 기반한&lt;br /&gt;Complete Binary Tree&lt;br /&gt;MaxHip / MinHip&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;BST를 기반한&lt;br /&gt;트리 형식의 자료구조&lt;br /&gt;depth 최소화하여&lt;br /&gt;시간복잡도 줄이는 것&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;정점과 간선의 집합&lt;br /&gt;DFS 와 BFS&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;1. Array&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;가장 기본적인 자료구조인&amp;nbsp;Array&amp;nbsp;자료구조는, 논리적 저장 순서와 물리적 저장 순서가 일치한다.&lt;/li&gt;
&lt;li&gt;따라서&amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;인덱스(index)로 해당 원소(element)에 접근&lt;/span&gt;할 수 있다.&lt;/li&gt;
&lt;li&gt;그렇기 때문에 찾고자 하는 원소의 인덱스 값을 알고 있으면&amp;nbsp;Big-O(1)에 해당 원소로 접근할 수 있다.&lt;/li&gt;
&lt;li&gt;즉&amp;nbsp;random access&amp;nbsp;가 가능하다는 장점이 있는 것이다.&lt;/li&gt;
&lt;li&gt;하지만 &lt;span style=&quot;color: #ee2323;&quot;&gt;삭제 또는 삽입의 과정&lt;/span&gt;에서는 해당 원소에 접근하여 작업을 완료한 뒤(O(1)), 또 한 가지의 &lt;span style=&quot;color: #ee2323;&quot;&gt;작업을 추가적&lt;/span&gt;으로 해줘야 하기 때문에, 시간이 더 걸린다.&lt;/li&gt;
&lt;li&gt;만약 배열의 원소 중 어느 원소를 삭제했다고 했을 때, 배열의 연속적인 특징이 깨지게 된다. 즉 빈 공간이 생기는 것이다.&lt;/li&gt;
&lt;li&gt;따라서 삭제한 원소보다 큰 인덱스를 갖는 원소들을&amp;nbsp;shift 해줘야 하는 비용(cost)이 발생하고 이 경우의 시간 복잡도는 O(n)가 된다.&lt;/li&gt;
&lt;li&gt;그렇기 때문에 Array 자료구조에서 삭제 기능에 대한 time complexity 의 worst case 는 O(n)이 된다.&lt;/li&gt;
&lt;li&gt;삽입의 경우도 마찬가지이다. 만약 첫번째 자리에 새로운 원소를 추가하고자 한다면 모든 원소들의 인덱스를 1 씩 shift 해줘야 하므로 이 경우도 O(n)의 시간을 요구하게 된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;a id=&quot;user-content-linked-list&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/DataStructure#linked-list&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;2. Linked List&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이 부분(삭제 또는 삽입 과정에서의 추가 작업)에 대한 문제점을 해결하기 위한 자료구조가 linked list 이다.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;각각의 원소들은 자기 자신 다음에 어떤 원소인지만을 기억&lt;/span&gt;하고 있다.&lt;/li&gt;
&lt;li&gt;따라서 이 부분만 다른 값으로 바꿔주면 삭제와 삽입을 O(1) 만에 해결할 수 있는 것이다.&lt;/li&gt;
&lt;li&gt;하지만 Linked List 역시 한 가지 문제가 있다.&lt;/li&gt;
&lt;li&gt;원하는 위치에 &lt;span style=&quot;color: #ee2323;&quot;&gt;삽입&lt;/span&gt;을 하고자 하면 원하는 위치를 Search 과정에 있어서 &lt;span style=&quot;color: #ee2323;&quot;&gt;첫 번째 원소부터 다 확인&lt;/span&gt;해봐야 한다는 것이다.&lt;/li&gt;
&lt;li&gt;Array 와는 달리 논리적 저장 순서와 물리적 저장 순서가 일치하지 않기 때문이다.&lt;/li&gt;
&lt;li&gt;이것은 일단 삽입하고 정렬하는 것과 마찬가지이다.&lt;/li&gt;
&lt;li&gt;이 과정 때문에, 어떠한 원소를 &lt;span style=&quot;color: #ee2323;&quot;&gt;삭제 또는 추가&lt;/span&gt;하고자 했을 때, &lt;span style=&quot;color: #ee2323;&quot;&gt;그 원소를 찾기 위해&lt;/span&gt;서 &lt;span style=&quot;color: #ee2323;&quot;&gt;O(n)의 시간이 추가적으로 발생&lt;/span&gt;하게 된다.&lt;/li&gt;
&lt;li&gt;결국 linked list 자료구조는 search 에도 O(n)의 time complexity 를 갖고, 삽입, 삭제에 대해서도 O(n)의 time complexity 를 갖는다.&lt;/li&gt;
&lt;li&gt;그렇다고 해서 아주 쓸모없는 자료구조는 아니기에, 우리가 학습하는 것이다.&lt;/li&gt;
&lt;li&gt;이 Linked List 는 Tree 구조의 근간이 되는 자료구조이며, Tree 에서 사용되었을 때 그 유용성이 드러난다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;3. Stack&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;선형 자료구조의 일종으로&amp;nbsp;Last In First Out (&lt;span style=&quot;color: #ee2323;&quot;&gt;LIFO&lt;/span&gt;)&amp;nbsp;- 나중에 들어간 원소가 먼저 나온다.&lt;/li&gt;
&lt;li&gt;또는&amp;nbsp;First In Last Out (&lt;span style=&quot;color: #ee2323;&quot;&gt;FILO&lt;/span&gt;)&amp;nbsp;- 먼저 들어간 원소가 나중에 나온다. 이것은 Stack 의 가장 큰 특징이다.&lt;/li&gt;
&lt;li&gt;차곡차곡 쌓이는 구조로 먼저 Stack 에 들어가게 된 원소는 맨바닥에 깔리게 된다.&lt;/li&gt;
&lt;li&gt;그렇기 때문에 늦게 들어간 녀석들은 그 위에 쌓이게 되고 호출 시 가장 위에 있는 녀석이 호출되는 구조이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;a id=&quot;user-content-queue&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/DataStructure#queue&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;4. Queue&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;선형 자료구조의 일종으로&amp;nbsp;First In First Out (&lt;span style=&quot;color: #ee2323;&quot;&gt;FIFO&lt;/span&gt;). 즉, 먼저 들어간 놈이 먼저 나온다.&lt;/li&gt;
&lt;li&gt;Stack 과는 반대로 먼저 들어간 놈이 맨 앞에서 대기하고 있다가 먼저 나오게 되는 구조이다.&lt;/li&gt;
&lt;li&gt;참고로 Java Collection 에서 &lt;span style=&quot;color: #ee2323;&quot;&gt;Queue 는 인터페이스&lt;/span&gt;이다. 이를 구현하고 있는&amp;nbsp;Priority queue등을 사용할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;5. Tree&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;트리는 스택이나 큐와 같은 선형 구조가 아닌 &lt;span style=&quot;color: #ee2323;&quot;&gt;비선형 자료구조&lt;/span&gt;이다.&lt;/li&gt;
&lt;li&gt;트리는 계층적 관계(Hierarchical Relationship)을 표현하는 자료구조이다.&lt;/li&gt;
&lt;li&gt;이&amp;nbsp;트리라는 자료구조는 &lt;span style=&quot;color: #ee2323;&quot;&gt;표현에 집중&lt;/span&gt;한다.&lt;/li&gt;
&lt;li&gt;무엇인가를 저장하고 꺼내야 한다는 사고에서 벗어나 트리라는 자료구조를 바라보자.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;a id=&quot;user-content-트리를-구성하고-있는-구성요소들용어&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/DataStructure#%ED%8A%B8%EB%A6%AC%EB%A5%BC-%EA%B5%AC%EC%84%B1%ED%95%98%EA%B3%A0-%EC%9E%88%EB%8A%94-%EA%B5%AC%EC%84%B1%EC%9A%94%EC%86%8C%EB%93%A4%EC%9A%A9%EC%96%B4&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;5-1 : 트리를 구성하고 있는 구성요소들(용어)&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Node (노드) : 트리를 구성하고 있는 각각의 요소를 의미한다.&lt;/li&gt;
&lt;li&gt;Edge (간선) : 트리를 구성하기 위해 노드와 노드를 연결하는 선을 의미한다.&lt;/li&gt;
&lt;li&gt;Root Node (루트 노드) : 트리 구조에서 최상위에 있는 노드를 의미한다.&lt;/li&gt;
&lt;li&gt;Terminal Node ( = leaf Node, 단말 노드) : 하위에 다른 노드가 연결되어 있지 않은 노드를 의미한다.&lt;/li&gt;
&lt;li&gt;Internal Node (내부노드, 비단말 노드) : 단말 노드를 제외한 모든 노드로 루트 노드를 포함한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;a id=&quot;user-content-binary-tree-이진-트리&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/DataStructure#binary-tree-%EC%9D%B4%EC%A7%84-%ED%8A%B8%EB%A6%AC&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;5-2 : Binary Tree ( 이진 트리 )&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;루트 노드를 중심으로 두 개의 서브 트리(큰 트리에 속하는 작은 트리)로 나누어진다.&lt;/li&gt;
&lt;li&gt;또한 나뉘어진 &lt;span style=&quot;color: #ee2323;&quot;&gt;두 서브 트리도 모두 이진 트리어야 한다.&lt;/span&gt; 재귀적인 정의라 맞는듯 하면서도 이해가 쉽지 않을 듯하다.&lt;/li&gt;
&lt;li&gt;한 가지 덧붙이자면 공집합도 이진 트리로 포함시켜야 한다.&lt;/li&gt;
&lt;li&gt;그래야 재귀적으로 조건을 확인해 갔을 때, leaf node 에 다다랐을 때, 정의가 만족되기 때문이다.&lt;/li&gt;
&lt;li&gt;자연스럽게 노드가 하나뿐인 것도 이진 트리 정의에 만족하게 된다.&lt;/li&gt;
&lt;li&gt;트리에서는 각&amp;nbsp;층별로&amp;nbsp;숫자를 매겨서 이를 &lt;span style=&quot;color: #ee2323;&quot;&gt;트리의&amp;nbsp;Level(레벨)&lt;/span&gt;이라고 한다.&lt;/li&gt;
&lt;li&gt;레벨의 값은 0 부터 시작하고 따라서 루트 노드의 레벨은 0 이다.&lt;/li&gt;
&lt;li&gt;그리고 트리의 최고 레벨을 가리켜 해당 &lt;span style=&quot;color: #ee2323;&quot;&gt;트리의&amp;nbsp;height(높이)&lt;/span&gt;라고 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;a id=&quot;user-content-perfect-binary-tree-포화-이진-트리-complete-binary-tree-완전-이진-트리-full-binary-tree-정-이진-트리&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/DataStructure#perfect-binary-tree-%ED%8F%AC%ED%99%94-%EC%9D%B4%EC%A7%84-%ED%8A%B8%EB%A6%AC-complete-binary-tree-%EC%99%84%EC%A0%84-%EC%9D%B4%EC%A7%84-%ED%8A%B8%EB%A6%AC-full-binary-tree-%EC%A0%95-%EC%9D%B4%EC%A7%84-%ED%8A%B8%EB%A6%AC&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;5-3 : Perfect Binary Tree (포화 이진 트리), Complete Binary Tree (완전 이진 트리), Full Binary Tree (정 이진 트리)&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;모든 레벨이 꽉 찬 이진 트리&lt;/span&gt;를 가리켜 포화 이진 트리라고 한다.&lt;/li&gt;
&lt;li&gt;위에서 아래로, 왼쪽에서 오른쪽으로 &lt;span style=&quot;color: #ee2323;&quot;&gt;순서대로 차곡차곡 채워진 이진 트리&lt;/span&gt;를 가리켜 완전 이진 트리라고 한다.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;모든 노드가 0개 혹은 2개의 자식 노드만을 갖는 이진 트리&lt;/span&gt;를 가리켜 정 이진 트리라고 한다.&lt;/li&gt;
&lt;li&gt;배열로 구성된&amp;nbsp;Binary Tree는 노드의 개수가 n 개이고 root가 0이 아닌 1에서 시작할 때,&lt;/li&gt;
&lt;li&gt;i 번째 노드에 대해서 parent(i) = i/2 , left_child(i) = 2i , right_child(i) = 2i + 1 의 index 값을 갖는다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;a id=&quot;user-content-bst-binary-search-tree&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/DataStructure#bst-binary-search-tree&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;5-4 : BST (Binary Search Tree)&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;효율적인 탐색을 위해서는 어떻게 찾을까만 고민해서는 안된다.&lt;/li&gt;
&lt;li&gt;그보다는 효율적인 탐색을 위한 &lt;span style=&quot;color: #ee2323;&quot;&gt;저장방법이 무엇일까&lt;/span&gt;를 고민해야 한다.&lt;/li&gt;
&lt;li&gt;이진 탐색 트리는 이진 트리의 일종이다.&lt;/li&gt;
&lt;li&gt;단 이진 탐색 트리에는 &lt;span style=&quot;color: #ee2323;&quot;&gt;데이터를 저장하는 규칙&lt;/span&gt;이 있다.&lt;/li&gt;
&lt;li&gt;그리고 그 규칙은 특정 데이터의 위치를 찾는 데 사용할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;규칙 1. 이진 탐색 트리의 노드에 저장된 키는 유일하다.&lt;/li&gt;
&lt;li&gt;규칙 2. 부모의 키가 왼쪽 자식 노드의 키보다 크다.&lt;/li&gt;
&lt;li&gt;규칙 3. 부모의 키가 오른쪽 자식 노드의 키보다 작다.&lt;/li&gt;
&lt;li&gt;규칙 4. 왼쪽과 오른쪽 서브트리도 이진 탐색 트리이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이진 탐색 트리의 탐색 연산은 O(log n)의 시간 복잡도를 갖는다. 사실 정확히 말하면 O(h)라고 표현하는 것이 맞다.&lt;/li&gt;
&lt;li&gt;트리의 높이를 하나씩 더해갈수록 추가할 수 있는 노드의 수가 두 배씩 증가하기 때문이다.&lt;/li&gt;
&lt;li&gt;하지만 이러한 이진 탐색 트리는 Skewed Tree(편향 트리)가 될 수 있다.&lt;/li&gt;
&lt;li&gt;저장 순서에 따라 계속 한쪽으로만 노드가 추가되는 경우가 발생하기 때문이다.&lt;/li&gt;
&lt;li&gt;이럴 경우 성능에 영향을 미치게 되며, 탐색의 Worst Case 가 되고 시간 복잡도는 O(n)이 된다.&lt;/li&gt;
&lt;li&gt;배열보다 많은 메모리를 사용하며 데이터를 저장했지만 탐색에 필요한 시간 복잡도가 같게 되는 비효율적인 상황이 발생한다.&lt;/li&gt;
&lt;li&gt;이를 해결하기 위해&amp;nbsp;Rebalancing&amp;nbsp;기법이 등장하였다. 균형을 잡기 위한 트리 구조의 재조정을&amp;nbsp;Rebalancing이라 한다.&lt;/li&gt;
&lt;li&gt;이 기법을 구현한 트리에는 여러 종류가 존재하는데 그중에서 하나가 뒤에서 살펴볼&amp;nbsp;Red-Black Tree이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;6. Binary Heap&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;자료구조의 일종으로 Tree 의 형식을 하고 있으며, &lt;span style=&quot;color: #ee2323;&quot;&gt;Tree 중에서도 배열에 기반한&amp;nbsp;Complete Binary Tree&lt;/span&gt;이다.&lt;/li&gt;
&lt;li&gt;배열에 트리의 &lt;span style=&quot;color: #ee2323;&quot;&gt;값들을 넣어줄 때, 0 번째는 건너뛰고 1 번 index 부터 루트노드가 시작&lt;/span&gt;된다.&lt;/li&gt;
&lt;li&gt;이는 노드의 고유번호 값과 배열의 index 를 일치시켜 혼동을 줄이기 위함이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;힙(Heap)에는&amp;nbsp;최대힙(max heap),&amp;nbsp;최소힙(min heap)&amp;nbsp;두 종류가 있다.&lt;/li&gt;
&lt;li&gt;Max Heap이란, 각 노드의 값이 해당 children 의 값보다&amp;nbsp;크거나 같은&amp;nbsp;complete binary tree를 말한다. ( Min Heap 은 그 반대이다.)&lt;/li&gt;
&lt;li&gt;Max Heap에서는 Root node 에 있는 값이 제일 크므로, 최대값을 찾는데 소요되는 연산의 time complexity 이 O(1)이다. 그리고&amp;nbsp;complete binary tree이기 때문에 배열을 사용하여 효율적으로 관리할 수 있다. (즉, random access 가 가능하다.&lt;/li&gt;
&lt;li&gt;Min heap 에서는 최소값을 찾는데 소요되는 연산의 time complexity 가 O(1)이다.) 하지만 heap 의 구조를 계속 유지하기 위해서는 제거된 루트 노드를 대체할 다른 노드가 필요하다. 여기서 heap 은 맨 마지막 노드를 루트 노드로 대체시킨 후, 다시 heapify 과정을 거쳐 heap 구조를 유지한다. 이런 경우에는 결국 O(log n)의 시간복잡도로 최대값 또는 최소값에 접근할 수 있게 된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;7. Red Black Tree&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;RBT(Red-Black Tree)는 BST 를 기반으로 하는 트리 형식의 자료구조이다.&lt;/li&gt;
&lt;li&gt;결론부터 말하자면 Red-Black Tree 에 데이터를 저장하게 되면 Search, Insert, Delete 에 O(log n)의 시간 복잡도가 소요된다.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;동일한 노드의 개수일 때, depth 를 최소화하여 시간 복잡도를 줄이는 것이 핵심 아이디어&lt;/span&gt;이다.&lt;/li&gt;
&lt;li&gt;동일한 노드의 개수일 때, depth 가 최소가 되는 경우는 tree 가 complete binary tree 인 경우이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;a id=&quot;user-content-red-black-tree-의-정의&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/DataStructure#red-black-tree-%EC%9D%98-%EC%A0%95%EC%9D%98&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;7-1 : Red-Black Tree 의 정의&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Red-Black Tree 는 다음의 성질들을 만족하는 BST 이다.&lt;/li&gt;
&lt;li&gt;각 노드는&amp;nbsp;Red&amp;nbsp;or&amp;nbsp;Black이라는 색깔을 갖는다.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;Root node 의 색깔은&amp;nbsp;Black이다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;각 leaf node 는&amp;nbsp;black이다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;어떤 노드의 색깔이&amp;nbsp;red라면 두 개의 children 의 색깔은 모두 black 이다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;각 노드에 대해서 노드로부터 descendant leaves 까지의 단순 경로는 모두 같은 수의 black nodes 들을 포함하고 있다. 이를 해당 노드의 Black-Height라고 한다.&lt;/li&gt;
&lt;li&gt;cf) Black-Height: 노드 x 로부터 노드 x 를 포함하지 않은 leaf node 까지의 simple path 상에 있는 black nodes 들의 개수&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;a id=&quot;user-content-red-black-tree-의-특징&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/DataStructure#red-black-tree-%EC%9D%98-%ED%8A%B9%EC%A7%95&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;7-2 : Red-Black Tree 의 특징&lt;/span&gt;&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Binary Search Tree 이므로 BST 의 특징을 모두 갖는다.&lt;/li&gt;
&lt;li&gt;Root node 부터 leaf node 까지의 모든 경로 중 최소 경로와 최대 경로의 크기 비율은 2 보다 크지 않다. 이러한 상태를&lt;span&gt;&amp;nbsp;&lt;/span&gt;balanced&lt;span&gt;&amp;nbsp;&lt;/span&gt;상태라고 한다.&lt;/li&gt;
&lt;li&gt;노드의 child 가 없을 경우 child 를 가리키는 포인터는 NIL 값을 저장한다. 이러한 NIL 들을 leaf node 로 간주한다.&lt;/li&gt;
&lt;li&gt;RBT 는 BST 의 삽입, 삭제 연산 과정에서 발생할 수 있는 문제점을 해결하기 위해 만들어진 자료구조이다. 이를 어떻게 해결한 것인가?&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;a id=&quot;user-content-삽입&quot; style=&quot;color: #006dd7;&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/DataStructure#%EC%82%BD%EC%9E%85&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;7-3 : 삽입&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;우선 BST 의 특성을 유지하면서 노드를 삽입을 한다.&lt;/li&gt;
&lt;li&gt;그리고 삽입된 노드의 색깔을&amp;nbsp;RED 로&amp;nbsp;지정한다.&lt;/li&gt;
&lt;li&gt;Red 로 지정하는 이유는 Black-Height 변경을 최소화하기 위함이다.&lt;/li&gt;
&lt;li&gt;삽입 결과 RBT 의 특성 위배(violation)시 노드의 색깔을 조정하고, Black-Height 가 위배되었다면 rotation 을 통해 height 를 조정한다.&lt;/li&gt;
&lt;li&gt;이러한 과정을 통해 RBT 의 동일한 height 에 존재하는 internal node 들의 Black-height 가 같아지게 되고 최소 경로와 최대 경로의 크기 비율이 2 미만으로 유지된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;a id=&quot;user-content-삭제&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/DataStructure#%EC%82%AD%EC%A0%9C&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;7-4 : 삭제&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;삭제도 삽입과 마찬가지로 BST 의 특성을 유지하면서 해당 노드를 삭제한다.&lt;/li&gt;
&lt;li&gt;삭제될 노드의 child 의 개수에 따라 rotation 방법이 달라지게 된다.&lt;/li&gt;
&lt;li&gt;그리고 만약 지워진 노드의 색깔이 Black 이라면 Black-Height 가 1 감소한 경로에 black node 가 1 개 추가되도록 rotation 하고 노드의 색깔을 조정한다.&lt;/li&gt;
&lt;li&gt;지워진 노드의 색깔이 red 라면 Violation 이 발생하지 않으므로 RBT 가 그대로 유지된다.&lt;/li&gt;
&lt;li&gt;Java Collection 에서 TreeMap 도 내부적으로 RBT 로 이루어져 있고, HashMap 에서의&amp;nbsp;Separate Chaining에서도 사용된다. 그만큼 효율이 좋고 중요한 자료구조이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;8. Graph&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a id=&quot;user-content-정점과-간선의-집합-graph&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/DataStructure#%EC%A0%95%EC%A0%90%EA%B3%BC-%EA%B0%84%EC%84%A0%EC%9D%98-%EC%A7%91%ED%95%A9-graph&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;정점과 간선의 집합&lt;/span&gt;, Graph&lt;/li&gt;
&lt;li&gt;cf) 트리 또한 그래프이며, 그 중 사이클이 허용되지 않는 그래프를 말한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;a id=&quot;user-content-그래프-관련-용어-정리&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/DataStructure#%EA%B7%B8%EB%9E%98%ED%94%84-%EA%B4%80%EB%A0%A8-%EC%9A%A9%EC%96%B4-%EC%A0%95%EB%A6%AC&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;8-1 : 그래프 관련 용어 정리&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;a id=&quot;user-content-undirected-graph-와-directed-graph-digraph&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/DataStructure#undirected-graph-%EC%99%80-directed-graph-digraph&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;8-1-1 : Undirected Graph 와 Directed Graph (Digraph)&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;말 그대로 &lt;span style=&quot;color: #ee2323;&quot;&gt;정점과 간선의 연결관계&lt;/span&gt;에 있어서 &lt;span style=&quot;color: #ee2323;&quot;&gt;방향성이 없는&lt;/span&gt; 그래프를 Undirected Graph 라 하고,&lt;/li&gt;
&lt;li&gt;간선에 &lt;span style=&quot;color: #ee2323;&quot;&gt;방향성이 포함&lt;/span&gt;되어 있는 그래프를 Directed Graph 라고 한다.&lt;/li&gt;
&lt;li&gt;Directed Graph (Digraph)&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;V = {1, 2, 3, 4, 5, 6}
E = {(1, 4), (2,1), (3, 4), (3, 4), (5, 6)}
(u, v) = vertex u에서 vertex v로 가는 edge
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Undirected Graph&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;V = {1, 2, 3, 4, 5, 6}
E = {(1, 4), (2,1), (3, 4), (3, 4), (5, 6)}
(u, v) = vertex u와 vertex v를 연결하는 edge
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;a id=&quot;user-content-degree&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/DataStructure#degree&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;8-1-2 : Degree&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Undirected Graph 에서 각 정점(Vertex)에 연결된 Edge 의 개수를 Degree 라 한다.&lt;/li&gt;
&lt;li&gt;Directed Graph 에서는 간선에 방향성이 존재하기 때문에 Degree 가 두 개로 나뉘게 된다.&lt;/li&gt;
&lt;li&gt;각 정점으로부터 나가는 간선의 개수를 Outdegree 라 하고, 들어오는 간선의 개수를 Indegree 라 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;a id=&quot;user-content-가중치-그래프weight-graph와-부분-그래프sub-graph&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/DataStructure#%EA%B0%80%EC%A4%91%EC%B9%98-%EA%B7%B8%EB%9E%98%ED%94%84weight-graph%EC%99%80-%EB%B6%80%EB%B6%84-%EA%B7%B8%EB%9E%98%ED%94%84sub-graph&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;8-1-3 : 가중치 그래프(Weight Graph)와 부분 그래프(Sub Graph)&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;가중치 그래프란 간선에 &lt;span style=&quot;color: #ee2323;&quot;&gt;가중치 정보를 두어서 구성한 그래프&lt;/span&gt;를 말한다.&lt;/li&gt;
&lt;li&gt;반대의 개념인 비가중치 그래프 즉, 모든 간선의 가중치가 동일한 그래프도 물론 존재한다.&lt;/li&gt;
&lt;li&gt;부분 집합과 유사한 개념으로 부분 그래프라는 것이 있다.&lt;/li&gt;
&lt;li&gt;부분 그래프는 본래의 그래프의 일부 정점 및 간선으로 이루어진 그래프를 말한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;8-2 : 그래프를 구현하는 두 방법&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;a id=&quot;user-content-인접-행렬-adjacent-matrix--정방-행렬을-사용하는-방법&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/DataStructure#%EC%9D%B8%EC%A0%91-%ED%96%89%EB%A0%AC-adjacent-matrix--%EC%A0%95%EB%B0%A9-%ED%96%89%EB%A0%AC%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;8-2-1 : 인접 행렬 (adjacent matrix) : 정방 행렬을 사용하는 방법&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;해당하는 위치의 value 값을 통해서 vertex 간의 연결 관계를 O(1) 으로 파악할 수 있다.&lt;/li&gt;
&lt;li&gt;Edge 개수와는 무관하게 V^2 의 Space Complexity 를 갖는다.&lt;/li&gt;
&lt;li&gt;Dense graph 를 표현할 때 적절할 방법이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;a id=&quot;user-content-인접-리스트-adjacent-list--연결-리스트를-사용하는-방법&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/DataStructure#%EC%9D%B8%EC%A0%91-%EB%A6%AC%EC%8A%A4%ED%8A%B8-adjacent-list--%EC%97%B0%EA%B2%B0-%EB%A6%AC%EC%8A%A4%ED%8A%B8%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;8-2-2 : 인접 리스트 (adjacent list) : 연결 리스트를 사용하는 방법&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;vertex 의 adjacent list 를 확인해봐야 하므로 vertex 간 연결되어 있는지 확인하는데 오래 걸린다.&lt;/li&gt;
&lt;li&gt;Space Complexity 는 O(E + V)이다. Sparse graph 를 표현하는데 적당한 방법이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&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;a id=&quot;user-content-그래프-탐색&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/DataStructure#%EA%B7%B8%EB%9E%98%ED%94%84-%ED%83%90%EC%83%89&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;8-3 : 그래프 탐색&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;그래프는 정점의 구성뿐만 아니라 간선의 연결에도 규칙이 존재하지 않기 때문에 탐색이 복잡하다.&lt;/li&gt;
&lt;li&gt;따라서 그래프의 모든 정점을 탐색하기 위한 방법은 다음의 두 가지 알고리즘을 기반으로 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;a id=&quot;user-content-깊이-우선-탐색-depth-first-search-dfs&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/DataStructure#%EA%B9%8A%EC%9D%B4-%EC%9A%B0%EC%84%A0-%ED%83%90%EC%83%89-depth-first-search-dfs&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;8-3-1 : 깊이 우선 탐색 (Depth First Search: DFS)&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;그래프 상에 존재하는 임의의 한 정점으로부터 연결되어 있는 한 정점으로만 나아간다라는 방법을 우선으로 탐색한다.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;일단 연결된 정점으로 탐색&lt;/span&gt;하는 것이다. 연결할 수 있는 정점이 있을 때까지 &lt;span style=&quot;color: #ee2323;&quot;&gt;계속 연결하다가&lt;/span&gt; 더 이상 연결될 수 있는 정점이 없으면 바로 그 전 단계의 정점으로 &lt;span style=&quot;color: #ee2323;&quot;&gt;돌아가서&lt;/span&gt; 연결할 수 있는 정점이 있는지 &lt;span style=&quot;color: #ee2323;&quot;&gt;살펴봐야 할 것&lt;/span&gt;이다.&lt;/li&gt;
&lt;li&gt;갔던 길을 되돌아오는 상황이 존재하는 미로 찾기처럼 구성하면 되는 것이다.&lt;/li&gt;
&lt;li&gt;어떤 자료구조를 사용해야 할까? 바로 &lt;span style=&quot;color: #ee2323;&quot;&gt;Stack&lt;/span&gt; 이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Time Complexity : O(V+E) &amp;hellip; vertex 개수 + edge 개수&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;a id=&quot;user-content-너비-우선-탐색-breadth-first-search-bfs&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/DataStructure#%EB%84%88%EB%B9%84-%EC%9A%B0%EC%84%A0-%ED%83%90%EC%83%89-breadth-first-search-bfs&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;8-3-2 : 너비 우선 탐색 (Breadth First Search: BFS)&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;그래프 상에 존재하는 임의의 한 정점으로부터 &lt;span style=&quot;color: #ee2323;&quot;&gt;연결되어 있는 모든 정점으로 나아간다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Tree 에서의 Level Order Traversal 형식으로 진행되는 것이다.&lt;/li&gt;
&lt;li&gt;BFS 에서는 자료구조로 &lt;span style=&quot;color: #ee2323;&quot;&gt;Queue&lt;/span&gt; 를 사용한다. 연락을 취할 정점의 순서를 기록하기 위한 것이다.&lt;/li&gt;
&lt;li&gt;우선, 탐색을 시작하는 정점을 Queue 에 넣는다.(enqueue) 그리고 dequeue 를 하면서 dequeue 하는 정점과 간선으로 연결되어 있는 정점들을 enqueue 한다.&lt;/li&gt;
&lt;li&gt;즉 vertex 들을 &lt;span style=&quot;color: #ee2323;&quot;&gt;방문한 순서대로 queue 에 저장하는 방법을 사용&lt;/span&gt;하는 것이다.&lt;/li&gt;
&lt;li&gt;Time Complexity : O(V+E) &amp;hellip; vertex 개수 + edge 개수&lt;/li&gt;
&lt;li&gt;! 모든 간선에 가중치가 존재하지 않거나 모든 간선의 가중치가 같은 경우, BFS 로 구한 경로는 최단 경로이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;# 참고자료&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/DataStructure&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/DataStructure&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1674644670716&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - JaeYeopHan/Interview_Question_for_Beginner: Technical-Interview guidelines written for those who started studying progr&quot; data-og-description=&quot;:boy: :girl: Technical-Interview guidelines written for those who started studying programming. I wish you all the best. :space_invader: - GitHub - JaeYeopHan/Interview_Question_for_Beginner: Techn...&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/DataStructure&quot; data-og-url=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/RruU9/hyRoAu8QZn/pmO5ad67PkZl0J0Ylz4Zr0/img.png?width=721&amp;amp;height=458&amp;amp;face=0_0_721_458&quot;&gt;&lt;a href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/DataStructure&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/DataStructure&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/RruU9/hyRoAu8QZn/pmO5ad67PkZl0J0Ylz4Zr0/img.png?width=721&amp;amp;height=458&amp;amp;face=0_0_721_458');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - JaeYeopHan/Interview_Question_for_Beginner: Technical-Interview guidelines written for those who started studying progr&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;:boy: :girl: Technical-Interview guidelines written for those who started studying programming. I wish you all the best. :space_invader: - GitHub - JaeYeopHan/Interview_Question_for_Beginner: Techn...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>다짐하자/출근 준비</category>
      <category>array</category>
      <category>binary heap</category>
      <category>datastructure</category>
      <category>graph</category>
      <category>Linked List</category>
      <category>Queue</category>
      <category>Red Black Tree</category>
      <category>Stack</category>
      <category>tree</category>
      <author>giggs</author>
      <guid isPermaLink="true">https://giggs.tistory.com/339</guid>
      <comments>https://giggs.tistory.com/339#entry339comment</comments>
      <pubDate>Wed, 25 Jan 2023 20:12:35 +0900</pubDate>
    </item>
    <item>
      <title>[ Chapter1 ] CRM 개념과 범위</title>
      <link>https://giggs.tistory.com/338</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;1. 단어&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 319px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;mass marketing&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;매스마케팅&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;Mass Cutomization&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;대량맞춤&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;heterogeneous&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;이질화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;demanding&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;요구적&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;tolerance&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;포용력&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;Data mining&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;데이터마이닝&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;Economy of Scale&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;규모의 경제&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;Economy of Scope&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;범위의 경제&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;Customer&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;고객&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;Custom&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;capability&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;역량&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;personalization&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;개인화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;customization&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;맞춤화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;words of mouth&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;입소문&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;referral&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;추천&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;Value Proposition&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;가치 제안서&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;longitudinal&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;시기적인&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;2. CRM 등장배경&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;middot;&amp;middot;&amp;middot; 전략적으로 신규고객을 획득하고, 기존고객을 잘 관리하여 기업의 수익성을 증진하고자 &amp;middot;&amp;middot;&amp;middot;&lt;/li&gt;
&lt;li&gt;&amp;middot;&amp;middot;&amp;middot; 공급이 수요를 초과하는 시장에서의 고객은 차별화된 니즈를 갖게 되는데 &amp;middot;&amp;middot;&amp;middot;&lt;/li&gt;
&lt;li&gt;&amp;middot;&amp;middot;&amp;middot; 전환비용이 낮아지는 소비자의 시대가 열리게 되었다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;대량맞춤 생산과 기존고객의 유지를 통한 효율성과 수익성 중심의 경영전략으로의 전환 필요&lt;/li&gt;
&lt;li&gt;엄청난 양의 거래 데이터를 수집, 분석하는 것이 가능해짐으로써 &amp;middot;&amp;middot;&amp;middot;&lt;/li&gt;
&lt;li&gt;시장점유율뿐만 아니라 개별 고객에 대한 점유율 확보에 주의를 &amp;middot;&amp;middot;&amp;middot;&lt;/li&gt;
&lt;li&gt;마케팅의 목표가 더 이상 제품 판매가 아니라 고객과의 관계 형성과 유지라는 점을 강조&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;3. CRM 정의&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기업의 다양한 자원과 역량을 활용하여&amp;nbsp;&lt;/li&gt;
&lt;li&gt;고객과의 관계 획득, 유지, 강화 등&amp;nbsp;&lt;/li&gt;
&lt;li&gt;전체 고객생애주기에 걸쳐 고객과 기업 상호 간의 이익극대화를 추구하기 위한&lt;/li&gt;
&lt;li&gt;기업의 모든 경영활동의 기반이 되는 경영전략 또는 패러다임&lt;/li&gt;
&lt;li&gt;고객과의 관계 진화단계( 획득, 유지, 강화 )&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;4. CRM 유사개념&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;관계마케팅 ( Relationship Marketing )&lt;/li&gt;
&lt;li&gt;데이터베이스마케팅 ( Database Marketing )&lt;/li&gt;
&lt;li&gt;통합 마케팅 커뮤니케이션 ( IMC, Integrated Marketing Communication )&lt;/li&gt;
&lt;li&gt;eCRM ( electronic CRM )&lt;/li&gt;
&lt;li&gt;전사적 CRM ( ECRM, Enterprise CRM )&lt;/li&gt;
&lt;li&gt;비즈니스 인텔리전스 ( BI, Business Intelligence )&lt;/li&gt;
&lt;li&gt;전사적 품질관리 ( TQM, Total Quality Management )&lt;/li&gt;
&lt;li&gt;고객지식경영( CKM, Customer Knowledge Management )&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;5. CRM 구성요소&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모든 경영활동을 수행함에 있어서 고객지식에 기반&lt;/li&gt;
&lt;li&gt;인바운드 고객분석, 프로파일 분석 잠재고객층 얻고, 전략적 제휴 통해 특정 고객층 추출&lt;/li&gt;
&lt;li&gt;세분화 작업을 통해 각 고객 군에 대한 차별화된 대응 전략 수립&lt;/li&gt;
&lt;li&gt;고객 통찰력 제공으로 신제품 개발이나 사후 서비스의 개선에도 활용&lt;/li&gt;
&lt;li&gt;개인화 또는 맞춤화를 제공&lt;/li&gt;
&lt;li&gt;로열티 프로그램과 이벤트 기반 마케팅 통해 고객 관계 지속적으로 유지되도록&amp;nbsp;&lt;/li&gt;
&lt;li&gt;평생 고객으로 발전시켜나가야 할 핵심고객 추출&lt;/li&gt;
&lt;li&gt;교차판매와 상승판매 방법론&lt;/li&gt;
&lt;li&gt;긍정적인 입소문&lt;/li&gt;
&lt;li&gt;4R 전략 ( Right Customer, Right Product, Right Channel, Right Time )&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;6. CRM 발전단계&lt;/span&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기능적 CRM의 단께&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CRM이 일차적으로 적용되지 용이한 하위 기능을 지원하는 수준의 CRM&lt;/li&gt;
&lt;li&gt;개별 운영 업무의 효율성을 증대하는 것이 주된 목적&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;고객접점 통합 CRM의 단계&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CRM의 목적은 고객 상호작용 비용을 절감하고,&lt;/li&gt;
&lt;li&gt;고객의 경험을 개선시킴으로써, 고객 유지율을 증대시키는 것이라고 할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전략적 CRML의 단계&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모든 전략적 체제를 고객지향적으로 전환함으로써 기업의 생존력과 경쟁력을 확보&lt;/li&gt;
&lt;li&gt;고객 당 수익을 증대시킴과 조직의 신규 비즈니스 기회를 발견하는 것도 포함&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;7. CRM 범위&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;주로 적용되는 3대 영역(마케팅, 영업, 고객서비스) + 기타 영역&lt;/li&gt;
&lt;li&gt;CRM이 적용되는 산업유형&lt;/li&gt;
&lt;li&gt;금융산업 ( 연쇄 이탈현상을 방지하기 위한 목적이 크다. 고객의 가치를 정확하게 평가하여... )&lt;/li&gt;
&lt;li&gt;통신산업 ( 통신 서비스의 이용과 로열티 프로그램의 운용, 이탈방지 프로모션 수행, 상품개발 초점 )&lt;/li&gt;
&lt;li&gt;유통산업 ( 재구매를 유도, 고객 로열티를 강화하고자, 제조업과 고객 사이에서 풍부한 고객의 정보 획득 가능 )&lt;/li&gt;
&lt;li&gt;기타 서비스 산업 ( 포인트 카드, 고객과의 우호적인 관계유지가 중요한 경쟁요소로 부각되면서... )&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Education/[ BOOK ] CRM 전문가</category>
      <category>CRM 구성요소</category>
      <category>CRM 등장배경</category>
      <category>CRM 발전단계</category>
      <category>CRM 범위</category>
      <category>CRM 유사개념</category>
      <category>CRM 정의</category>
      <author>giggs</author>
      <guid isPermaLink="true">https://giggs.tistory.com/338</guid>
      <comments>https://giggs.tistory.com/338#entry338comment</comments>
      <pubDate>Tue, 24 Jan 2023 22:21:39 +0900</pubDate>
    </item>
    <item>
      <title>22.01.24 - [ 개발상식 ] Development common sense</title>
      <link>https://giggs.tistory.com/337</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-- INDEX --&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 323px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style2&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 72px;&quot;&gt;
&lt;td style=&quot;width: 20%; height: 72px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;1. 좋은 코드란 &lt;br /&gt;무엇인가&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20%; height: 72px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;2. Object Oriented &lt;br /&gt;Programming&lt;br /&gt;(객체 지향 &lt;br /&gt;프로그래밍)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 21.3953%; height: 72px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;3. RESTful API&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 18.6047%; height: 72px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;4. TDD&lt;br /&gt;(Test-Driven &lt;br /&gt;Development)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20%; height: 72px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;5. 함수형 &lt;br /&gt;프로그래밍&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 74px;&quot;&gt;
&lt;td style=&quot;width: 20%; height: 74px; text-align: center;&quot;&gt;&lt;span&gt;&lt;span&gt;읽기 쉬운 코드&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20%; height: 74px; text-align: center;&quot;&gt;&lt;span&gt;&lt;span&gt;인간 중심적 &lt;br /&gt;프로그래밍 &lt;br /&gt;패러다임&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 21.3953%; height: 74px; text-align: center;&quot;&gt;&lt;span&gt;&lt;span&gt;설계 중심에 자원&lt;/span&gt;&lt;span&gt;, &lt;br /&gt;HTTP Method&lt;/span&gt;&lt;span&gt;를 통해 처리&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 18.6047%; height: 74px; text-align: center;&quot;&gt;&lt;span&gt;&lt;span&gt;Add a test&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20%; height: 74px; text-align: center;&quot;&gt;&lt;span&gt;&lt;span&gt;immutable vs mutable&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 60px;&quot;&gt;
&lt;td style=&quot;width: 20%; height: 60px; text-align: center;&quot;&gt;&lt;span&gt;&lt;span&gt;중복이 없는 &lt;br /&gt;코드&lt;br /&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;추출&lt;/span&gt;&lt;span&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;추상화&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20%; height: 60px; text-align: center;&quot;&gt;&lt;span&gt;&lt;span&gt;코드의 &lt;br /&gt;재사용성에 &lt;br /&gt;따른 &lt;br /&gt;생산성&lt;/span&gt;&lt;span&gt;,&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;디버깅&lt;/span&gt;&lt;span&gt;,&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;유지보수의 이점&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 21.3953%; height: 60px; text-align: center;&quot;&gt;&lt;span&gt;&lt;span&gt;REST &lt;br /&gt;6&lt;/span&gt;&lt;span&gt;가지 특징&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 18.6047%; height: 60px; text-align: center;&quot;&gt;Run all tests and see&lt;br /&gt;if new one fails&lt;/td&gt;
&lt;td style=&quot;width: 20%; height: 60px; text-align: center;&quot;&gt;&lt;span&gt;&lt;span&gt;first-class citizen&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 77px;&quot;&gt;
&lt;td style=&quot;width: 20%; height: 77px; text-align: center;&quot;&gt;일관성 있는 &lt;br /&gt;코드&lt;/td&gt;
&lt;td style=&quot;width: 20%; height: 77px; text-align: center;&quot;&gt;&lt;span&gt;&lt;span&gt;예측 불가 &lt;br /&gt;상태에 대한 &lt;br /&gt;버그&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 21.3953%; height: 77px; text-align: center;&quot;&gt;&lt;span&gt;&lt;span&gt;RESTful&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;하게&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;API&lt;/span&gt;&lt;span&gt;를 &lt;br /&gt;디자인한다?&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 18.6047%; height: 77px; text-align: center;&quot;&gt;&lt;span&gt;&lt;span&gt;Refactor code&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20%; height: 77px; text-align: center;&quot;&gt;Reactive Programming&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 40px;&quot;&gt;
&lt;td style=&quot;width: 20%; height: 40px; text-align: center;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 20%; height: 40px; text-align: center;&quot;&gt;&lt;span&gt;객체 지향적 &lt;br /&gt;설계 원칙&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;( SOLID )&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 21.3953%; height: 40px; text-align: center;&quot;&gt;&lt;span&gt;어떠한 장점&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;/&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;단점이 있는가&lt;/td&gt;
&lt;td style=&quot;width: 18.6047%; height: 40px; text-align: center;&quot;&gt;의문점들&lt;/td&gt;
&lt;td style=&quot;width: 20%; height: 40px; text-align: center;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;1. 좋은 코드란 무엇인가&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모두가 &amp;lsquo;좋은 코드&amp;rsquo;의 기준이 조금씩 다르고 각각의 경험을 기반으로 좋은 코드를 정의하고 있다.&lt;/li&gt;
&lt;li&gt;세간에 좋은 코드의 정의는 정말 많다.&lt;/li&gt;
&lt;li&gt;읽기 쉬운 코드&lt;/li&gt;
&lt;li&gt;중복이 없는 코드&lt;/li&gt;
&lt;li&gt;일관성 있는 코드 등등&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;1-1 : 읽기 쉬운 코드&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;주석을 달아서 코드를 이해시키고 읽기 좋게 해 주기? 주석은 관리하기 어렵다.&lt;/li&gt;
&lt;li&gt;주석은 기본적으로&amp;nbsp;메타데이터이기 때문에 주석의 내용과 함수의 실제 동작이 일치한다고&amp;nbsp;보장할 수 없다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;수시로 변하는 요구사항을 반영하느라 함수가 수정될 때 주석이 함께 수정되지 않을 수도 있다.&lt;/li&gt;
&lt;li&gt;모든 개발자가 동일한 배경지식을 가진 것은 아니다.&lt;/li&gt;
&lt;li&gt;읽기 쉽다는 것은 단순히 &lt;span style=&quot;color: #f89009;&quot;&gt;코드를 읽는 것만 의미하는 것이 아니라&amp;nbsp;이해하는 것까지 포함&lt;/span&gt;하기 때문에 나무뿐만 아니라 숲을 볼 때도 쉬워야 한다.&lt;/li&gt;
&lt;li&gt;읽기 쉬운 코드는 테스트 코드 작성을 용이하게 할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;2-2 : 중복이 없는 코드&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;개발자라면 누구나 A와 B에서 동일한 로직을 수행하는 코드를 보는 순간, 추출(extraction)하고 싶어 한다.&lt;/li&gt;
&lt;li&gt;동일한 로직을 수행하는 코드가 여기에도 저기에도 있는 것은 굉장히 불편하기 때문이다.&lt;/li&gt;
&lt;li&gt;오래전에 작성해 둔 코드에서 A라는 코드 조각이 두 군데에 퍼져있다는 것을 기억하기 쉽지 않다. 때문에 한 곳의 A만 수정되었을 때 다른 한 곳에서 버그가 발생한다. 이러한 경험에 기반하여 동일한 로직을 수행하는 코드는 별도의 함수로 빼두고 재사용하려고 한다.&lt;/li&gt;
&lt;li id=&quot;그-땐-같았지만-지금은-같지-않은&quot;&gt;그땐 같았지만 지금은 같지 않은 그때는 중복이었던 코드 조각을 필요에 의해 추출했지만, 지금은 아니라서 다시 합치거나 수정하고 있다. 보통 하는 일은 동일하지만, 그&amp;nbsp;목적이 다른 코드를 추출했을 때, 많이 발생하는데 이것은 변경 사항을 반영하는 데 비용이 들어가게 한다.&lt;/li&gt;
&lt;li id=&quot;쓰이지-않는-코드&quot;&gt;쓰이지 않는 코드&lt;/li&gt;
&lt;li&gt;쓰지 않게 된 코드(Dead code)가 있는데, 이 코드가 어디에서 쓰일지도 모른다는 불안감이 있다면 감히 삭제하지 못할 것이고 이 코드는&amp;nbsp;깨진 유리창&amp;nbsp;중 하나가 된다.&lt;/li&gt;
&lt;li&gt;한 파일에 여러 로직이 얽혀있을 때 각 코드 조각 중 &lt;span style=&quot;color: #f89009;&quot;&gt;서로 의존 관계에 있는 것들을 추출&lt;/span&gt;해야 한다.&lt;/li&gt;
&lt;li&gt;이렇게 추상화가 된 함수는&amp;nbsp;&lt;span style=&quot;color: #f89009;&quot;&gt;하나의 목적(역할)&lt;/span&gt;을 갖게 되고&amp;nbsp;의미 있는 추출(추상화)이 이루어진다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;추출extraction&quot; data-ke-size=&quot;size20&quot;&gt;추출(extraction)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lsquo;추출하다(extract)&amp;lsquo;의 어원을 살펴보면 ex(밖으로)와 tract(끌어내기)의 합성어이다. 특별한 기준 없이 단순히 밖으로 끌어내는 것을 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h4 id=&quot;추상화abstraction&quot; data-ke-size=&quot;size20&quot;&gt;추상화(abstraction)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lsquo;추상화하다(abstract)&amp;lsquo;의 어원은 조금 다르다. ab(먼 개념)와 tract(이끌어내기)의 합성어로, 어떤 대상의 중요한 요점들을 재해석하여 정리한 것이라고 해석할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;1-3 : 일관성 있는 코드&amp;nbsp;&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;최소한의 가독성을 보장하는 방법은 일관성 있는 코드를 작성하는 것이다. 일관성은&amp;nbsp;합의된 규칙을 기반으로 만들어지며 이 합의된 규칙은 개개인에게 동일하게 다가간다.&lt;/li&gt;
&lt;li&gt;코드에 일관성이 지켜진다면 예측이 가능하다. 예측이 가능하다는 것은 어느 곳에 어떤 코드가 위치하는지 예상할 수 있다는 것이다. 프로젝트 팀원 간의&amp;nbsp;그라운드 룰(Ground Rule)이 필요한 이유이다.&lt;/li&gt;
&lt;li id=&quot;1-naming&quot;&gt;Naming 규칙 - &lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;변수명 네이밍도 중요하지만 작성되는 수많은 함수의 네이밍에도 규칙이 있으면 일관성을 지킬 수 있다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Directory 규칙 - &lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&amp;lsquo;어디에 분리할지&amp;rsquo; - &lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;일관된 디렉터리 구조는 전체적인 구조를 파악하는 데 큰 도움이 되고 컴포넌트 간의 관계를 파악하는 데에도 도움을 준다.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;2. Object Oriented Programming ( 객체 지향 프로그래밍 )&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;2-1 : 인간 중심적 프로그래밍 패러다임&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;객체 지향 프로그래밍 이전의 프로그래밍 패러다임을 살펴보면, 중심이 컴퓨터에 있었다.&lt;/li&gt;
&lt;li&gt;컴퓨터가 사고하는대로 프로그래밍을 하는 것이다.&lt;/li&gt;
&lt;li&gt;하지만 객체지향 프로그래밍이란 인간 중심적 프로그래밍 패러다임이라고 할 수 있다.&lt;/li&gt;
&lt;li&gt;즉, 현실 세계를 프로그래밍으로 옮겨와 프로그래밍하는 것을 말한다.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;현실 세계의 사물들을 객체라고 보고&lt;/span&gt; 그 객체로부터 개발하고자 하는 애플리케이션에 필요한 특징들을 뽑아와 프로그래밍하는 것이다. 이것을 추상화라 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;2-2 : 코드의 재사용성에 따른 생산성, 디버깅, 유지보수의 이점&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;OOP 로 코드를 작성하면 이미 작성한 코드에 대한 재사용성이 높다.&lt;/li&gt;
&lt;li&gt;자주 사용되는 로직을 라이브러리로 만들어두면 계속해서 사용할 수 있으며 그 신뢰성을 확보할 수 있다.&lt;/li&gt;
&lt;li&gt;또한 라이브러리를 각종 예외상황에 맞게 잘 만들어두면 개발자가 사소한 실수를 하더라도 그 에러를 컴파일 단계에서 잡아낼 수 있으므로 버그 발생이 줄어든다.&lt;/li&gt;
&lt;li&gt;또한 내부적으로 어떻게 동작하는지 몰라도 개발자는 라이브러리가 제공하는 기능들을 사용할 수 있기 때문에 생산성이 높아지게 된다.&lt;/li&gt;
&lt;li&gt;객체 단위로 코드가 나눠져 작성되기 때문에 디버깅이 쉽고 유지보수에 용이하다.&lt;/li&gt;
&lt;li&gt;또한 데이터 모델링을 할 때 객체와 매핑하는 것이 수월하기 때문에 요구사항을 보다 명확하게 파악하여 프로그래밍할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;2-3 : 예측 불가 상태에 대한 버그&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;객체 간의 정보 교환이 모두 메시지 교환을 통해 일어나므로 실행 시스템에 많은 overhead 가 발생하게 된다.&lt;/li&gt;
&lt;li&gt;하지만 이것은 하드웨어의 발전으로 많은 부분 보완되었다.&lt;/li&gt;
&lt;li&gt;객체 지향 프로그래밍의 치명적인 단점은 함수형 프로그래밍 패러다임의 등장 배경을 통해서 알 수 있다.&lt;/li&gt;
&lt;li&gt;바로 &lt;span style=&quot;color: #f89009;&quot;&gt;객체가 상태를 갖는다는 것&lt;/span&gt;이다.&lt;/li&gt;
&lt;li&gt;변수가 존재하고 이 변수를 통해 객체가 예측할 수 없는 상태를 갖게 되어 애플리케이션 내부에서 버그를 발생시킨다는 것이다.&lt;/li&gt;
&lt;li&gt;이러한 이유로 함수형 패러다임이 주목받고 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;2-4 : 객체 지향적 설계 원칙 ( SOLID )&lt;/span&gt;&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SRP(Single Responsibility Principle) : 단일 책임 원칙&lt;br /&gt;클래스는 단 하나의 책임을 가져야 하며 클래스를 변경하는 이유는 단 하나의 이유이어야 한다.&lt;/li&gt;
&lt;li&gt;OCP(Open-Closed Principle) : 개방-폐쇄 원칙&lt;br /&gt;확장에는 열려 있어야 하고 변경에는 닫혀 있어야 한다.&lt;/li&gt;
&lt;li&gt;LSP(Liskov Substitution Principle) : 리스코프 치환 원칙&lt;br /&gt;상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 한다.&lt;/li&gt;
&lt;li&gt;ISP(Interface Segregation Principle) : 인터페이스 분리 원칙&lt;br /&gt;인터페이스는 그 인터페이스를 사용하는 클라이언트를 기준으로 분리해야 한다.&lt;/li&gt;
&lt;li&gt;DIP(Dependency Inversion Principle) : 의존 역전 원칙&lt;br /&gt;고수준 모듈은 저수준 모듈의 구현에 의존해서는 안된다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;3. RESTful API&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;3-1 : API 설계 중심에 자원이 있고, &lt;span style=&quot;background-color: #ffffff;&quot;&gt;HTTP Method 를 통해 &lt;/span&gt;이 자원을 처리하도록 설계하는 것&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위키백과의 정의 요약 : 월드 와이드 웹(World Wide Web a.k.a WWW)과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식으로 자원을 정의하고 자원에 대한 주소를 지정하는 방법 전반에 대한 패턴&lt;/li&gt;
&lt;li&gt;REST란, REpresentational State Transfer의 약자이다.&lt;/li&gt;
&lt;li&gt;여기에 ~ful 이라는 형용사형 어미를 붙여 ~한 API 라는 표현으로 사용된다.&lt;/li&gt;
&lt;li&gt;즉, REST 의 기본 원칙을 성실히 지킨 서비스 디자인은 'RESTful'하다라고 표현할 수 있다.&lt;/li&gt;
&lt;li&gt;REST가 디자인 패턴이다, 아키텍처다 많은 이야기가 존재하는데, 하나의 아키텍처로 볼 수 있다. 좀 더 정확한 표현으로 말하자면, REST 는&amp;nbsp;&lt;span style=&quot;color: #f89009;&quot;&gt;Resource Oriented Architecture&lt;/span&gt;&amp;nbsp;이다.&lt;/li&gt;
&lt;li&gt;API 설계의 중심에 자원(Resource)이 있고 HTTP Method 를 통해 자원을 처리하도록 설계하는 것이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;3-2 : REST 6가지 특징&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;uniform Interface&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;- URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처 스타일&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;전체적인 시스템 아키텍처를 간단하고 잘 파악할 수 있도록 하기 위한 약속된 Interface&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Stateless - 무상태성&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;- &lt;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;상태정보(세션, 쿠키)를 따로 저장하고 관리하지 않는다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;클라이언트에서 서버로의 각 요청에는 그 요청을 이해하는 데 필요한 모든 정보가 포함&lt;span style=&quot;color: #666666;&quot;&gt;되어야 합니다.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;서버에 저장된 환경 정보를 이용해서 이득[서버에서의 클라이언트 정보 유지 등]을 취하면 안 됩니다. 따라서 세션의 정보는 전적으로 클라이언트가 가지고 있어야 합니다.&lt;/li&gt;
&lt;li&gt;로그인했다는 세션 유지가 필요하다면 그 정보 또한 Client가 해당 정보를 가지고 서버에 전달해야 한다&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Cacheable&lt;span&gt;&amp;nbsp;&lt;/span&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;캐시 가능&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;-&lt;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;HTTP라는 기존 웹표준을 그대로 사용하기 때문에, 웹에서 사용하는 기존 인프라를 그대로 활용이 가능합니다. 따라서 HTTP가 가진 캐싱 기능이 적용 가능합니다. HTTP 프로토콜 표준에서 사용하는 Last-Modified태그나 E-Tag를 이용하면 캐싱 구현이 가능합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;요청에 대한 응답 내의 데이터에 해당 요청은 캐시가 가능한지 불가능 한지 명시해야 합니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;응답을 캐시 할 수 있다면 클라이언트에서 동일한 요청이 왔을 때 응답 데이터를 재사용할 수 있어야 합니다.&lt;/li&gt;
&lt;li&gt;cache-control 헤더를 통하여 캐시 여부 명시&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Client-Server 구조&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;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;REST 서버는 API 제공, 클라이언트는 사용자 인증이나 컨텍스트(세션, 로그인 정보)등을 직접 관리하는 구조로 각각의 역할이 확실히 구분되기 때문에 클라이언트와 서버에서 개발해야 할 내용이 명확해지고 서로 간 의존성이 줄어들게 됩니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;클라이언트와 서버가 서로 의존하지 않고 별도로 진화할 수 있습니다. 클라이언트는 서버의 리소스 URI만 알고 있으면 되기 때문입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Hierarchical system - 계층형 구조&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;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;REST 서버는 다중 계층으로 구성될 수 있으며 보안, 로드 밸런싱, 암호화 계층을 추가해 구조상의 유연성을 둘 수 있고 PROXY, 게이트웨이 같은 네트워크 기반의 중간매체를 사용할 수 있게 합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;계층화된 시스템 아키텍처를 사용하여&lt;span&gt;&amp;nbsp;&lt;/span&gt;각 구성들 간의 계층을 마음대로 상호작용 할 수 없도록 제한&lt;span&gt;&amp;nbsp;&lt;/span&gt;함으로 써 Interface를 일원화할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Code on demand -&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버가 네트워크를 통해 클라이언트에 전달한 javascript 등과 같은 프로그램들은 그 자체로 실행이 될 수 있어야 한다. 이것은 사전 구현에 필요한 기능의 수를 줄임으로써 클라이언트를 단순화합니다.&lt;/li&gt;
&lt;li&gt;이 말은 우리가 평소에는 정적인 데이터를 xml 또는 json에 담아서 client로 보내고 client가 이것을 가공합니다. 하지만&lt;span&gt;&amp;nbsp;&lt;/span&gt;code on demand라는 것은 client에 보내는 데이터를 바로 실행 가능한 코드를 보내서 이것을 Client에서 실행하는 것을 말합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;3-3 : RESTful 하게 API 를 디자인한다는 것은 무엇을 의미하는가.(요약)&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;리소스와&amp;nbsp;행위를 명시적이고 직관적으로 분리&lt;/span&gt;한다.&lt;/li&gt;
&lt;li&gt;리소스는&amp;nbsp;URI로 표현되는데 리소스가 가리키는 것은&amp;nbsp;명사로 표현되어야 한다.&lt;/li&gt;
&lt;li&gt;행위는&amp;nbsp;HTTP Method로 표현하고,&amp;nbsp;GET(조회),&amp;nbsp;POST(생성),&amp;nbsp;PUT(기존 entity 전체 수정),&amp;nbsp;PATCH(기존 entity 일부 수정),&amp;nbsp;DELETE(삭제)을 분명한 목적으로 사용한다.&lt;/li&gt;
&lt;li&gt;Message 는 Header 와 Body 를 명확하게 분리해서 사용한다.&lt;/li&gt;
&lt;li&gt;Entity 에 대한 내용은 body 에 담는다.&lt;/li&gt;
&lt;li&gt;애플리케이션 서버가 행동할 판단의 근거가 되는 컨트롤 정보인 API 버전 정보, 응답받고자 하는 MIME 타입 등은 header 에 담는다.&lt;/li&gt;
&lt;li&gt;header 와 body 는 http header 와 http body 로 나눌 수도 있고, http body 에 들어가는 json 구조로 분리할 수도 있다.&lt;/li&gt;
&lt;li&gt;API 버전을 관리한다.&lt;/li&gt;
&lt;li&gt;환경은 항상 변하기 때문에 API 의 signature 가 변경될 수도 있음에 유의하자.&lt;/li&gt;
&lt;li&gt;특정 API 를 변경할 때는 반드시 하위호환성을 보장해야 한다.&lt;/li&gt;
&lt;li&gt;서버와 클라이언트가 같은 방식을 사용해서 요청하도록 한다.&lt;/li&gt;
&lt;li&gt;브라우저는 form-data 형식의 submit 으로 보내고 서버에서는 json 형태로 보내는 식의 분리보다는 json 으로 보내든, 둘 다 form-data 형식으로 보내든 하나로 통일한다.&lt;/li&gt;
&lt;li&gt;다른 말로 표현하자면 URI 가 플랫폼 중립적이어야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;3-4 : 어떠한 장점이 존재하는가?&lt;/span&gt;&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Open API 를 제공하기 쉽다&lt;/li&gt;
&lt;li&gt;멀티플랫폼 지원 및 연동이 용이하다.&lt;/li&gt;
&lt;li&gt;원하는 타입으로 데이터를 주고받을 수 있다.&lt;/li&gt;
&lt;li&gt;기존 웹 인프라(HTTP)를 그대로 사용할 수 있다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;a id=&quot;user-content-단점은-뭐가-있을까&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Development_common_sense#%EB%8B%A8%EC%A0%90%EC%9D%80-%EB%AD%90%EA%B0%80-%EC%9E%88%EC%9D%84%EA%B9%8C&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;3-5 : 단점은 뭐가 있을까?&lt;/span&gt;&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용할 수 있는 메소드가 한정적이다.&lt;/li&gt;
&lt;li&gt;분산환경에는 부적합하다.&lt;/li&gt;
&lt;li&gt;HTTP 통신 모델에 대해서만 지원한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;4. TDD ( &lt;span style=&quot;background-color: #ffffff;&quot;&gt;Test-Driven Development )&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Test-Driven Development(TDD)는 매우 짧은 개발 사이클의 반복에 의존하는 소프트웨어 개발 프로세스이다.&lt;/li&gt;
&lt;li&gt;우선 개발자는 요구되는 새로운 기능에 대한 자동화된 테스트케이스를 작성하고 해당 테스트를 통과하는 가장 간단한 코드를 작성한다.&lt;/li&gt;
&lt;li&gt;일단 테스트 통과하는 코드를 작성하고 상황에 맞게 리팩토링하는 과정을 거치는 것이다.&lt;/li&gt;
&lt;li&gt;말 그대로 &lt;span style=&quot;color: #f89009;&quot;&gt;테스트가 코드 작성을 주도하는 개발방식&lt;/span&gt;인 것이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;4-1 : Add a test&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;테스트 주도형 개발에선, 새로운 기능을 추가하기 전 테스트를 먼저 작성한다.&lt;/li&gt;
&lt;li&gt;테스트를 작성하기 위해서, 개발자는 해당 기능의 요구사항과 명세를 분명히 이해하고 있어야 한다.&lt;/li&gt;
&lt;li&gt;이는 사용자 케이스와 사용자 스토리 등으로 이해할 수 있으며, 이는 개발자가 코드를 작성하기 전에 보다 요구사항에 집중할 수 있도록 도와준다.&lt;/li&gt;
&lt;li&gt;이는 정말 중요한 부분이자 테스트 주도 개발이 주는 이점이라고 볼 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;a id=&quot;user-content-run-all-tests-and-see-if-new-one-fails&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Development_common_sense#run-all-tests-and-see-if-new-one-fails&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;4-2 : Run all tests and see if new one fails&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;어떤 새로운 기능을 추가하면 잘 작동하던 기능이 제대로 작동하지 않는 경우가 발생할 수 있다.&lt;/li&gt;
&lt;li&gt;더 위험한 경우는 개발자가 이를 미처 인지하지 못하는 경우이다.&lt;/li&gt;
&lt;li&gt;이러한 경우를 방지하기 위해 테스트 코드를 작성하는 것이다.&lt;/li&gt;
&lt;li&gt;새로운 기능을 추가할 때 테스트 코드를 작성함으로써, 새로운 기능이 제대로 작동함과 동시에 기존의 기능들이 잘 작동하는지 테스트를 통해 확인할 수 있는 것이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&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;a id=&quot;user-content-refactor-code&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Development_common_sense#refactor-code&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;4-3 : Refactor code&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;'좋은 코드'를 작성하기란 정말 쉽지가 않다. 코드를 작성할 때 고려해야 할 요소가 한두 가지가 아니기 때문이다.&lt;/li&gt;
&lt;li&gt;가독성이 좋게 coding convention 을 맞춰야 하며, 네이밍 규칙을 적용하여 메소드명, 변수명, 클래스명에 일관성을 줘야 하며, 앞으로의 확장성 또한 고려해야 한다.&lt;/li&gt;
&lt;li&gt;이와 동시에 비즈니스 로직에 대한 고려도 반드시 필요하며, 예외처리 부분 역시 빠뜨릴 수 없다. 물론 코드량이 적을 때는 이런저런 것들을 모두 신경 쓰면서 코드를 작성할 수 있지만 끊임없이 발견되는 버그들을 디버깅하는 과정에서 코드가 더럽혀지기 마련이다.&lt;/li&gt;
&lt;li&gt;이러한 이유로 코드량이 방대해지면서 &lt;span style=&quot;color: #f89009;&quot;&gt;리팩토링&lt;/span&gt;을 하게 된다.&lt;/li&gt;
&lt;li&gt;이때 테스트 주도 개발을 통해 개발을 해왔다면, &lt;span style=&quot;color: #f89009;&quot;&gt;테스트 코드가 그 중심을 잡아줄 수 있다&lt;/span&gt;.&lt;/li&gt;
&lt;li&gt;뚱뚱해진 함수를 여러 함수로 나누는 과정에서 해당 기능이 오작동을 일으킬 수 있지만 간단히 테스트를 돌려봄으로써 이에 대한 안심을 하고 계속해서 리팩토링을 진행할 수 있다.&lt;/li&gt;
&lt;li&gt;결과적으로 리팩토링 속도도 빨라지고 코드의 퀄리티도 그만큼 향상하게 되는 것이다.&lt;/li&gt;
&lt;li&gt;코드 퀄리티 부분을 조금 상세히 들어가 보면, 보다 객체지향적이고 확장 가능이 용이한 코드, 재설계의 시간을 단축시킬 수 있는 코드, 디버깅 시간이 단축되는 코드가 TDD 와 함께 탄생하는 것이다.&lt;/li&gt;
&lt;li&gt;어차피 코드를 작성하고 나서 제대로 작동하는지 판단해야 하는 시점이 온다.&lt;/li&gt;
&lt;li&gt;물론 중간중간 수동으로 확인도 할 것이다. 또 테스트에 대한 부분에 대한 문서도 만들어야 한다.&lt;/li&gt;
&lt;li&gt;그 부분을 자동으로 해주면서, 코드 작성에 도움을 주는 것이 TDD 인 것이다. 끊임없이 TDD 찬양에 대한 말만 했다. TDD를 처음 들어보는 사람은 이 좋은 것을 왜 안 하는가에 대한 의문이 들 수도 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&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;a id=&quot;user-content-의문점들&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Development_common_sense#%EC%9D%98%EB%AC%B8%EC%A0%90%EB%93%A4&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;4-4 : 의문점들&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;a id=&quot;user-content-q-코드-생산성에-문제가-있지는-않나&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Development_common_sense#q-%EC%BD%94%EB%93%9C-%EC%83%9D%EC%82%B0%EC%84%B1%EC%97%90-%EB%AC%B8%EC%A0%9C%EA%B0%80-%EC%9E%88%EC%A7%80%EB%8A%94-%EC%95%8A%EB%82%98&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;Q. 코드 생산성에 문제가 있지는 않나?&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;두 배는 아니더라도 분명 코드량이 늘어난다.&lt;/li&gt;
&lt;li&gt;비즈니스 로직, 각종 코드 디자인에도 시간이 많이 소요되는데, 거기에다가 테스트 코드까지 작성하기란 여간 벅찬 일이 아닐 것이다.&lt;/li&gt;
&lt;li&gt;코드 퀄리티보다는 빠른 생산성이 요구되는 시점에서 TDD는 큰 걸림돌이 될 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;a id=&quot;user-content-q-테스트-코드를-작성하기가-쉬운가&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Development_common_sense#q-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%BD%94%EB%93%9C%EB%A5%BC-%EC%9E%91%EC%84%B1%ED%95%98%EA%B8%B0%EA%B0%80-%EC%89%AC%EC%9A%B4%EA%B0%80&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;Q. 테스트 코드를 작성하기가 쉬운가?&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이 또한 TDD라는 개발 방식을 적용하기에 큰 걸림돌이 된다. 진입 장벽이 존재한다는 것이다.&lt;/li&gt;
&lt;li&gt;어떠한 부분을 테스트해야 할지, 어떻게 테스트해야 할지, 여러 테스트 프레임워크 중 어떤 것이 우리의 서비스와 맞는지 등 여러 부분들에 대한 학습이 필요하고 익숙해지는 데에도 시간이 걸린다.&lt;/li&gt;
&lt;li&gt;팀에서 한 명만 익숙해진다고 해결될 일이 아니다.&lt;/li&gt;
&lt;li&gt;개발은 팀 단위로 수행되기 때문에 팀원 전체의 동의가 필요하고 팀원 전체가 익숙해져야 비로소 테스트 코드가 빛을 발하게 되는 것이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;a id=&quot;user-content-q-모든-상황에-대해서-테스트-코드를-작성할-수-있는가-작성해야-하는가&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Development_common_sense#q-%EB%AA%A8%EB%93%A0-%EC%83%81%ED%99%A9%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%BD%94%EB%93%9C%EB%A5%BC-%EC%9E%91%EC%84%B1%ED%95%A0-%EC%88%98-%EC%9E%88%EB%8A%94%EA%B0%80-%EC%9E%91%EC%84%B1%ED%95%B4%EC%95%BC-%ED%95%98%EB%8A%94%EA%B0%80&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;Q. 모든 상황에 대해서 테스트 코드를 작성할 수 있는가? 작성해야 하는가?&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;세상에는 다양한 사용자가 존재하며, 생각지도 못한 예외 케이스가 존재할 수 있다.&lt;/li&gt;
&lt;li&gt;만약 테스트를 반드시 해봐야 하는 부분에 있어서 테스트 코드를 작성하는데 어려움이 발생한다면? 이러한 상황에서 주객이 전도하는 상황이 발생할 수 있다.&lt;/li&gt;
&lt;li&gt;분명 실제 코드가 더 중심이 되어야 하는데 테스트를 위해서 코드의 구조를 바꿔야 하나 하는 고민이 생긴다.&lt;/li&gt;
&lt;li&gt;또한 발생할 수 있는 상황에 대한 테스트 코드를 작성하기 위해 배보다 배꼽이 더 커지는 경우가 허다하다.&lt;/li&gt;
&lt;li&gt;실제 구현 코드보다 방대해진 코드를 관리하는 것도 쉽지만은 않은 일이 된 것이다.&lt;/li&gt;
&lt;li&gt;모든 코드에 대해서 테스트 코드를 작성할 수 없으며 작성할 필요도 없다.&lt;/li&gt;
&lt;li&gt;또한 테스트 코드를 작성한다고 해서 버그가 발생하지 않는 것도 아니다.&lt;/li&gt;
&lt;li&gt;애초에 TDD는 &lt;span style=&quot;color: #f89009;&quot;&gt;100% coverage와 100% 무결성을 주장하지 않았다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;5. 함수형 프로그래밍&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;함수형 프로그래밍의 가장 큰 특징 두 가지는&lt;span style=&quot;color: #f89009;&quot;&gt;&amp;nbsp;immutable data와&amp;nbsp;first class citizen&lt;/span&gt;으로서의 function이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;5-1 : immutable vs mutable&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;우선&amp;nbsp;immutable과&amp;nbsp;mutable의 차이에 대해서 이해를 하고 있어야 한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;immutable이란 말 그대로 변경 불가능함을 의미한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;immutable&amp;nbsp;객체는 객체가 가지고 있는 값을 변경할 수 없는 객체를 의미하여 값이 변경될 경우, 새로운 객체를 생성하고 변경된 값을 주입하여 반환해야 한다.&lt;/li&gt;
&lt;li&gt;이와는 달리,&amp;nbsp;mutable&amp;nbsp;객체는 해당 객체의 값이 변경될 경우 값을 변경한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;a id=&quot;user-content-first-class-citizen&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Development_common_sense#first-class-citizen&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;5-2 : first-class citizen&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;함수형 프로그래밍 패러다임을 따르고 있는 언어에서의&amp;nbsp;&lt;span style=&quot;color: #f89009;&quot;&gt;함수(function)는&amp;nbsp;일급 객체(first class citizen)&lt;/span&gt;로 간주된다.&lt;/li&gt;
&lt;li&gt;일급 객체라 함은 다음과 같다.&lt;/li&gt;
&lt;li&gt;변수나 데이터 구조안에 함수를 담을 수 있어서 함수의 파라미터로 전달할 수 있고, 함수의 반환값으로 사용할 수 있다.&lt;/li&gt;
&lt;li&gt;할당에 사용된 이름과 관계없이 고유한 구별이 가능하다.&lt;/li&gt;
&lt;li&gt;함수를 리터럴로 바로 정의할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&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;a id=&quot;user-content-reactive-programming&quot; href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Development_common_sense#reactive-programming&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;5-3 : Reactive Programming&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;반응형 프로그래밍(Reactive Programming)은 선언형 프로그래밍(declarative programming)이라고도 불리며, 명령형 프로그래밍(imperative programming)의 반대말이다.&lt;/li&gt;
&lt;li&gt;또 함수형 프로그래밍 패러다임을 활용하는 것을 말한다.&lt;/li&gt;
&lt;li&gt;반응형 프로그래밍은 기본적으로 모든 것을 &lt;span style=&quot;color: #f89009;&quot;&gt;스트림(stream)&lt;/span&gt;으로 본다.&lt;/li&gt;
&lt;li&gt;스트림이란 값들의 집합으로 볼 수 있으며 제공되는 함수형 메소드를 통해 데이터를 immutable 하게 관리할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;# 참고자료&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Development_common_sense&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Development_common_sense&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1674563164403&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - JaeYeopHan/Interview_Question_for_Beginner: Technical-Interview guidelines written for those who started studying progr&quot; data-og-description=&quot;:boy: :girl: Technical-Interview guidelines written for those who started studying programming. I wish you all the best. :space_invader: - GitHub - JaeYeopHan/Interview_Question_for_Beginner: Techn...&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Development_common_sense&quot; data-og-url=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/k2iLO/hyRoIMyZYq/zPHRnZX2Rwv3UN3LmESA0k/img.png?width=721&amp;amp;height=458&amp;amp;face=0_0_721_458&quot;&gt;&lt;a href=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Development_common_sense&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Development_common_sense&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/k2iLO/hyRoIMyZYq/zPHRnZX2Rwv3UN3LmESA0k/img.png?width=721&amp;amp;height=458&amp;amp;face=0_0_721_458');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - JaeYeopHan/Interview_Question_for_Beginner: Technical-Interview guidelines written for those who started studying progr&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;:boy: :girl: Technical-Interview guidelines written for those who started studying programming. I wish you all the best. :space_invader: - GitHub - JaeYeopHan/Interview_Question_for_Beginner: Techn...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>다짐하자/출근 준비</category>
      <author>giggs</author>
      <guid isPermaLink="true">https://giggs.tistory.com/337</guid>
      <comments>https://giggs.tistory.com/337#entry337comment</comments>
      <pubDate>Tue, 24 Jan 2023 21:28:29 +0900</pubDate>
    </item>
    <item>
      <title>23.01.20 ~ 01.23 - [ 설과 함께 찾아온 코로나 ]</title>
      <link>https://giggs.tistory.com/336</link>
      <description>&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;지금까지 코로나에 감염되지 않아서&lt;/h4&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;나도 모르는 사이에 왔다 가서&lt;/h4&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;면역력을 가지고있나라는 생각을 했었다.&lt;/h4&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;어리석었다.&lt;/h4&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;아직 걸리지 않았던 것일 뿐...&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;하필 설 연휴에&lt;/h4&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;격리 기간이 잡혀서 가족들도 보지 못하였다.&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;다른 증상은 심하지 않았는데&lt;/h4&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;목 통증이 심해서 하루종일 누워있을 수밖에 없었다.&lt;/h4&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;나흘정도 지나니 점점 완화되어서 다시 공부를 시작할 수 있었다.&lt;/h4&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;후우.&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;그래도 시기가 적절? 하게&lt;/h4&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;최종 면접 본 후 ~ 출근 전&amp;nbsp;&lt;/h4&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;이 기간에 아프고 회복할 수 있어서 다행이다.&lt;/h4&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;출근하자마자 아팠다면.. 생각하기도 싫다 ㅎㅎ&lt;/h4&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;이제 코로나 면역력도 가지게 되었으니&lt;/h4&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;클로비스에 가서 잘 적응할 수 있도록&lt;/h4&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;열심히 준비해서 가보자!&lt;/h4&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>다짐하자/출근 준비</category>
      <author>giggs</author>
      <guid isPermaLink="true">https://giggs.tistory.com/336</guid>
      <comments>https://giggs.tistory.com/336#entry336comment</comments>
      <pubDate>Tue, 24 Jan 2023 09:17:40 +0900</pubDate>
    </item>
    <item>
      <title>23.01.19 - [ 클라우드 ] 단어, 용어, 관련 지식</title>
      <link>https://giggs.tistory.com/335</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;1. 단어&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 1313px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;&lt;span&gt;&lt;span&gt;sales pipeline&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;영업 파이프라인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;&lt;span&gt;&lt;span&gt;contact management&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;연락처 관리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;competition&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;경쟁&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;&lt;span&gt;customizable&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;맞춤형&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;&lt;span&gt;centralize&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;중앙 집중화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;&lt;span&gt;integrating&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;통합&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;&lt;span&gt;interactions&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;상호 작용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;&lt;span&gt;streamline&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;유선&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;&lt;span&gt;allowing&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;허용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;&lt;span&gt;intuitive&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;직관적&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;&lt;span&gt;win back time&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;시간을 되찾다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;&lt;span&gt;reduce&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;줄이다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;&lt;span&gt;funnel&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;깔때기&lt;span&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;굴뚝&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;&lt;span&gt;seamlessly&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;매끄럽게&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;&lt;span&gt;instant&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;즉각적인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;insights&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;통찰력&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;i&lt;span&gt;ntegration&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;완성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;&lt;span&gt;inflexible&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;확고한&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;&lt;span&gt;agility&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;민첩&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;&lt;span&gt;prioritize&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;우선순위를 정하다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;&lt;span&gt;previous&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;이전&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;&lt;span&gt;capabilities&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;능력&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;&lt;span&gt;entire&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;전체&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;&lt;span&gt;monetization&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;수익 창출&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;&lt;span&gt;analytics&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;해석학&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;&lt;span&gt;features&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;특징&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;enable&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;~할 수 있게 하다&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;hwpEditorBoardContent&quot; data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;15108&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;2. 용어&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;2-1 : Iaas ( Infrastructure as a Service, 아이아스, 이에스 )&lt;/span&gt;&lt;/h4&gt;
&lt;div id=&quot;hwpEditorBoardContent&quot; data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;5360&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서비스로 제공되는 인프라스트럭처입니다.&lt;/li&gt;
&lt;li&gt;개발사에 제공되는 물리적 자원을 가상화합니다.&lt;/li&gt;
&lt;li&gt;클라우드 인프라스트럭처 서비스는 확장성이 높고 자동화된 컴퓨팅 리소스를 가상화하여 제공하는 것입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;hwpEditorBoardContent&quot; data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;5834&quot;&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;2-2 : PaaS ( Platform as a Service, 파스 )&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서비스로 제공되는 플랫폼입니다.&lt;/li&gt;
&lt;li&gt;개발사에 제공되는 플랫폼을 가상화합니다.&lt;/li&gt;
&lt;li&gt;클라우드 플랫폼 서비스는 주로 응용 프로그램을 개발할 때 필요한 플랫폼을 제공하는 것입니다&lt;/li&gt;
&lt;/ul&gt;
&lt;div id=&quot;hwpEditorBoardContent&quot; data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;5797&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;5797&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;5797&quot;&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;&lt;/div&gt;
&lt;div id=&quot;hwpEditorBoardContent&quot; data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;5358&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;2-3 : SaaS ( Software as a Service, 사스 )&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서비스로 제공되는 소프트웨어입니다.&lt;/li&gt;
&lt;li&gt;고객에게 제공되는 소프트웨어를 가상화합니다.&lt;/li&gt;
&lt;li&gt;클라우드 애플리케이션(소프트웨어) 서비스는 사용자에게 제공되는 소프트웨어를 가상화하여 제공하는 것입니다.&lt;/li&gt;
&lt;li&gt;SaaS는 타사 공급 업체가 관리하는 사용자에게 응용 프로그램을 제공하기 위해 인터넷을 사용합니다.&lt;/li&gt;
&lt;li&gt;대부분의 SaaS 애플리케이션 웹 브라우저를 통해 직접 실행되므로 클라이언트 측에서 다운로드나 설치가 필요하지 않습니다.&lt;/li&gt;
&lt;li&gt;클라우드 기반의 소프트웨어 제공 모델로, 클라우드 제공업체가 클라우드 애플리케이션 소프트웨어를 개발 및 유지 관리하고, 자동 소프트웨어 업데이트를 제공하고, 인터넷을 통해 Pay-as-you-Go 방식으로 고객에게 소프트웨어를 제공합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;div id=&quot;hwpEditorBoardContent&quot; data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;5649&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div id=&quot;hwpEditorBoardContent&quot; data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;6133&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div id=&quot;hwpEditorBoardContent&quot; data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;5358&quot;&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;2-4 : Pay as you go ( 페이고 )&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용한 만큼만 비용을 지불&lt;/li&gt;
&lt;li&gt;클라우드 컴퓨팅에서 구현되고 조직과 최종 사용자를 대상으로하는 유틸리티 컴퓨팅 청구 방법&lt;/li&gt;
&lt;li&gt;Pay &amp;amp; Go, Pay Per Usage, Pay Per Use 또는 Pay-As-You-Use로도 알려져 있습니다.&lt;/li&gt;
&lt;li&gt;원하는 만큼 먼저 사용하고 비용을 나중에 지불하는 방식이기 때문에 비즈니스에 필요한 리소스를 계획하거나 예측할 필요가 없고, 기술 미비로 인한 비즈니스 중단 리스크 또한 사라진다.&lt;/li&gt;
&lt;li&gt;기업의 IT 인프라 '투자비'를 '운영 비용'으로 전환할 수 있다는 것&lt;/li&gt;
&lt;li&gt;거대 기업이 소유한 대규모 IT 인프라를 이용하여 '규모의 경제'를 바탕으로 저렴한 서비스 제공이 가능하다는 것&lt;/li&gt;
&lt;/ul&gt;
&lt;div id=&quot;hwpEditorBoardContent&quot; data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;5368&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;3. 지식&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;3-1 : 클라우드란?&lt;/span&gt;&lt;/h4&gt;
&lt;div id=&quot;hwpEditorBoardContent&quot; data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;5352&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;인터넷 연결의 다른 끝에 있는 위치로, 앱과 서비스에 액세스 할 수 있고 데이터를 안전하게 저장할 수 있는 위치&lt;/li&gt;
&lt;li&gt;사용자가 관리하거나 유지보수할 필요가 없습니다.&lt;/li&gt;
&lt;li&gt;실질적으로 크기에 제한이 없으므로 용량 부족을 걱정할 필요가 없습니다.&lt;/li&gt;
&lt;li&gt;인터넷에 연결된 기기만 있으면 어디서나 클라우드 기반 응용 프로그램과 서비스에 액세스할 수 있습니다.&lt;/li&gt;
&lt;li&gt;특히 사무실 근무 형태에서 이동 중 업무 형태로 전환이 이루어지고 있다는 점은 중요합니다.&lt;/li&gt;
&lt;li&gt;따라서 클라우드는 사용자가 언제 어디서나 원하는 장치에서 액세스해야 하는 소프트웨어인 CRM(고객 관계 관리) 응용 프로그램과 같은 비즈니스 소프트웨어를 실행하기에 아주 좋은 환경입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;3-2 : 클라우드의 이점&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1517&quot; data-origin-height=&quot;907&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/u3TTE/btrWCRT04Pc/iKxGEFj3sENBBzXa50pVE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/u3TTE/btrWCRT04Pc/iKxGEFj3sENBBzXa50pVE0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/u3TTE/btrWCRT04Pc/iKxGEFj3sENBBzXa50pVE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fu3TTE%2FbtrWCRT04Pc%2FiKxGEFj3sENBBzXa50pVE0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1517&quot; height=&quot;907&quot; data-origin-width=&quot;1517&quot; data-origin-height=&quot;907&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1513&quot; data-origin-height=&quot;625&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Y8FCu/btrWGeG7ozQ/yNJFrjtYkKMdGJGyUGm3Ak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Y8FCu/btrWGeG7ozQ/yNJFrjtYkKMdGJGyUGm3Ak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Y8FCu/btrWGeG7ozQ/yNJFrjtYkKMdGJGyUGm3Ak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FY8FCu%2FbtrWGeG7ozQ%2FyNJFrjtYkKMdGJGyUGm3Ak%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1513&quot; height=&quot;625&quot; data-origin-width=&quot;1513&quot; data-origin-height=&quot;625&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;3-3 : 클라우드 컴퓨팅이란?&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;div id=&quot;hwpEditorBoardContent&quot; data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;5361&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;컴퓨팅 리소스를 인터넷을 통해 서비스로 사용할 수 있는 주문형 서비스입니다.&lt;/li&gt;
&lt;li&gt;기업에서 직접 리소스를 조달하거나 구성, 관리할 필요가 없으며 사용한 만큼만 비용을 지불하면 됩니다.&lt;/li&gt;
&lt;li&gt;인터넷을 통해 주문형 컴퓨팅 리소스, 소프트웨어, 정보를 공유한다는 개념을 기반으로 합니다.&lt;/li&gt;
&lt;li&gt;회사 또는 개인은 서비스 제공업체에서 소유 및 관리하는 원격 서버에 위치한 컴퓨팅, 스토리지, 네트워킹 서비스를 비롯한 공유 리소스의 가상 풀에 액세스하기 위해 비용을 지불합니다.&lt;/li&gt;
&lt;li&gt;클라우드 컴퓨팅의 많은 장점 중 하나는 사용한 만큼만 비용을 지불하는 점입니다.&lt;/li&gt;
&lt;li&gt;덕분에 조직은 자체 물리적 데이터 센터와 서버를 구매하고 유지보수할 필요 없이 더 빠르고 효율적으로 확장할 수 있습니다.&lt;/li&gt;
&lt;li&gt;클라우드 컴퓨팅은 네트워크(대부분 인터넷)를 사용하여 사용자가 대여 컴퓨팅 서비스를 요청하고 액세스하는 클라우드 플랫폼에 연결합니다.&lt;/li&gt;
&lt;li&gt;중앙 서버는 클라이언트 기기와 서버 간의 모든 통신을 처리하여 데이터 교환을 가능하게 합니다.&lt;/li&gt;
&lt;li&gt;보안 및 개인 정보 보호 기능은 이 정보를 안전하게 보호하는 일반적인 구성요소입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;div id=&quot;hwpEditorBoardContent&quot; data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;7842&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;7842&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;3-4 : &amp;nbsp;클라우드 컴퓨팅 배포 모델&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;퍼블릭 클라우드, 프라이빗 클라우드, 하이브리드 클라우드로 3가지가 있습니다.&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;타사 클라우드 서비스 제공업체에서 실행합니다.&lt;/li&gt;
&lt;li&gt;인터넷을 통해 컴퓨팅, 스토리지, 네트워크 리소스가 제공되므로 기업에서 고유한 요구사항과 비즈니스 목표에 따라 주문형 공유 리소스에 액세스할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프라이빗 클라우드&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;단일 조직에서 빌드, 관리, 소유하고 일반적으로 '온프레미스' 또는 '온프렘'으로 알려진 자체 데이터 센터에서 비공개로 호스팅 됩니다.&lt;/li&gt;
&lt;li&gt;데이터를 보다 효과적으로 제어, 보안, 관리하는 동시에 내부 사용자가 컴퓨팅, 스토리지, 네트워크 리소스의 공유 풀을 통해 이점을 누릴 수 있도록 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하이브리드 클라우드&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;퍼블릭 클라우드와 프라이빗 클라우드 모델을 결합해 기업이 퍼블릭 클라우드 서비스를 활용하면서 일반적으로 프라이빗 클라우드 아키텍처에서 찾아볼 수 있는 보안 및 규정 준수 기능을 유지할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;hwpEditorBoardContent&quot; data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;9434&quot;&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;3-5 : 클라우드 컴퓨팅의 유형&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;[ 제어, 유연성, 비즈니스 요구사항 관리 수준 ]을 기준으로&amp;nbsp; 3가지 주요 클라우드 컴퓨팅 서비스 모델 유형이 있다.&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;span&gt;Infrastructure as a Service(IaaS)&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;컴퓨팅, 스토리지, 네트워킹, 가상화 등 IT 인프라 서비스에 대한 주문형 액세스를 제공합니다.&lt;/li&gt;
&lt;li&gt;IT 리소스를 가장 높은 수준으로 제어하며 기존 온프레미스 IT 리소스와 가장 유사합니다.&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;span&gt;Platform as a Service(PaaS)&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라우드 애플리케이션 개발에 필요한 모든 하드웨어 및 소프트웨어 리소스를 제공합니다.&lt;/li&gt;
&lt;li&gt;PaaS를 사용하면 기업은 기본 인프라의 관리 및 유지보수에 대한 부담 없이 애플리케이션 개발에 집중할 수 있습니다.&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;span&gt;Software as a service(SaaS)&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;nbsp;기본 인프라에서 유지보수 및 앱 소프트웨어 자체 업데이트에 이르기까지 전체 애플리케이션 스택을 서비스로 제공합니다.&lt;/li&gt;
&lt;li&gt;SaaS 솔루션은 클라우드 인프라 제공업체에서 서비스와 인프라를 모두 관리하고 유지보수하는 최종 사용자 애플리케이션인 경우가 많습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;div id=&quot;hwpEditorBoardContent&quot; data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;7676&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;3-6 : 클라우드 컴퓨팅의 용도&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1495&quot; data-origin-height=&quot;856&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vPFhZ/btrWDcxCQHJ/KRxDERpKH1Zi1HuTBqplo0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vPFhZ/btrWDcxCQHJ/KRxDERpKH1Zi1HuTBqplo0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vPFhZ/btrWDcxCQHJ/KRxDERpKH1Zi1HuTBqplo0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvPFhZ%2FbtrWDcxCQHJ%2FKRxDERpKH1Zi1HuTBqplo0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1495&quot; height=&quot;856&quot; data-origin-width=&quot;1495&quot; data-origin-height=&quot;856&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>다짐하자/출근 준비</category>
      <category>Cloud</category>
      <category>iaas</category>
      <category>PaaS</category>
      <category>Pay as you go</category>
      <category>SaaS</category>
      <category>클라우드</category>
      <category>클라우드 컴퓨팅</category>
      <author>giggs</author>
      <guid isPermaLink="true">https://giggs.tistory.com/335</guid>
      <comments>https://giggs.tistory.com/335#entry335comment</comments>
      <pubDate>Thu, 19 Jan 2023 17:36:36 +0900</pubDate>
    </item>
    <item>
      <title>[ 프로그래머스 ] 올바른 괄호 - Java</title>
      <link>https://giggs.tistory.com/334</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;1. 문제 설명&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1075&quot; data-origin-height=&quot;1261&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0u9hT/btrWGeah01n/ZynGLk6tzIvAkmvcfXPRE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0u9hT/btrWGeah01n/ZynGLk6tzIvAkmvcfXPRE0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0u9hT/btrWGeah01n/ZynGLk6tzIvAkmvcfXPRE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0u9hT%2FbtrWGeah01n%2FZynGLk6tzIvAkmvcfXPRE0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;821&quot; data-origin-width=&quot;1075&quot; data-origin-height=&quot;1261&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;2. 문제 풀이 핵심이라 생각하는 점&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;stack의 개념 :&lt;span style=&quot;background-color: #ffffff; color: #353535;&quot;&gt;가장 최근에 들어간 데이터가 가장 먼저 나오는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;후입선출(Last In First Out)의 구조&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #353535;&quot;&gt;stack 함수 : push(), pop(), imEmpty()&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;닫는 괄호로 시작하는 경우 처리 필요 ( 비정상적으로 시작하는 경우 처리 )&lt;/li&gt;
&lt;li&gt;stack을 사용 안 하고 풀이하는 방법도 체크해 보기&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;3. 정답 코드 확인 및 활용 메소드 체크&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;3-1 : 정답 코드 확인&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1674105088807&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;
class Solution {
    boolean solution(String s) {
    
        boolean answer = true;
        Stack&amp;lt;Character&amp;gt; bracket = new Stack&amp;lt;&amp;gt;();
	    
	    
	    for (int i = 0; i &amp;lt; s.length(); i++) {
			
	    	if(s.charAt(i) == '(') { //여는 괄호면 stack에 넣어주기
	    		bracket.push(s.charAt(i));
	    	}else if(s.charAt(i)==')' &amp;amp;&amp;amp; bracket.isEmpty()) { //닫는 괄호면 여는 괄호가 있는지 체크 없다면 비정상적 시작이므로 break;
	    		bracket.push(s.charAt(i));
	    		break;
	    	}else {
	    		bracket.pop(); //여는 괄호가 있는 상태에서 닫는 괄호를 만났으니 여는 괄호 stack에서 빼주기
	    	}
	    	
		}
	    
        //삼항식을 사용하기 위해 위의 if문에서 스택에 닫느 괄호를 넣어주었다.
	    answer = bracket.isEmpty() ? true : false;

        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;3-2 : 활용 메소드 체크 ( stack method check )&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;peek() : 스택의 가장 위에 있는 데이터 반환&lt;/li&gt;
&lt;li&gt;push() : 스택의 가장 위에 있는 데이터(peek()) 위에 메모리 생성 및 데이터 추가&lt;/li&gt;
&lt;li&gt;pop() : 스택의 가장 위에 있는 데이터 삭제 및 반환&lt;/li&gt;
&lt;li&gt;isEmpty() : 스택이 비어있으면 true, 비어있지 않으면 false 반환&lt;/li&gt;
&lt;li&gt;clear() : 모든 데이터를 삭제하고 스택 초기화&lt;/li&gt;
&lt;li&gt;toString() : 모든 데이터를 출력&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;4. 공부하고 싶은 다른 분의 풀이&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;처음에 괄호 수를 카운트로 체크해서 해결해 볼까 했었는데 그렇게 푸신 분이 계셨다.&lt;/li&gt;
&lt;li&gt;그냥 if문을 따로따로 해서 조건 체크 해주면 되는 것을 if else if else를 고집했다니... 이렇게 또 깨달아 간다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1674105266536&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    boolean solution(String s) {
        boolean answer = false;
        int count = 0;
        for(int i = 0; i&amp;lt;s.length();i++){
            if(s.charAt(i) == '('){
                count++;
            }
            if(s.charAt(i) == ')'){
                count--;
            }
            if(count &amp;lt; 0){
                break;
            }
        }
        if(count == 0){
            answer = true;
        }

        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Programmers</category>
      <category>Java</category>
      <category>올바른 괄호</category>
      <category>프로그래머스</category>
      <author>giggs</author>
      <guid isPermaLink="true">https://giggs.tistory.com/334</guid>
      <comments>https://giggs.tistory.com/334#entry334comment</comments>
      <pubDate>Thu, 19 Jan 2023 14:25:33 +0900</pubDate>
    </item>
    <item>
      <title>23.01.18 - [ CRM ] 단어, 용어, 관련 지식</title>
      <link>https://giggs.tistory.com/333</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;1. 단어&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;▣ CRM&amp;nbsp; :&amp;nbsp;Customer Relationship Management, 고객 관계 관리&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;▣ MA : Marketing Automation, 마케팅 자동화&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;▣ SFA : &lt;span&gt;Sales Force Automation, &lt;/span&gt;영업 지원 시스템&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;▣ OA : Office Automation, 사무 자동화&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;▣&lt;span&gt; &lt;/span&gt;&lt;/span&gt;RPA : Robotic Process Automation, 로보틱 프로세스 자동화&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;▣ 유입 루트 : inflow route&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;▣ 행동 이력 : behavioral history&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;▣ 영업 방법 : sales method&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;▣ 일원적인 관리 : unified management&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;▣ 업무 관행 : business practice&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;▣ 실시간 데이터 활용 : real time data utilization&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;▣ 총체적 경험 overall(=total) experience&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;▣ 고객 충성도 : customer loyalty&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;▣ 집계 : total&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;▣ 정리 : organize, theorem&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;▣ 추출 : extraction&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;▣ 분석 : analyze&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;▣양성(육성) : positivity, cultivation&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;▣ 일원화 : unification&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;▣ 촉매제 : catalyst&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;▣ 가속화 : accelerate&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;▣ 의존도 : dependence&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;▣ 기대치 : expertations&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;▣ 연관성 : correlation&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;▣ 생산성 : productivity&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;▣ 가시성 : visibility&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;▣ 상시 : always-on&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;▣ 수익 : revenue&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;▣&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;소득 : income&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;▣ 결론 : conclusion&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;2. 용어&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;2-1 : &lt;span style=&quot;color: #006dd7;&quot;&gt;bottleneck &lt;/span&gt;( 보틀넥, &lt;span style=&quot;color: #006dd7;&quot;&gt;병목현상 &lt;/span&gt;)&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;어떤&amp;nbsp;상품의&amp;nbsp;수요가&amp;nbsp;급증해도&amp;nbsp;원료&amp;middot;설비&amp;middot;노동력&amp;nbsp;등이&amp;nbsp;부족하여&amp;nbsp;생산이&amp;nbsp;따라가지&amp;nbsp;못하는&amp;nbsp;일.&lt;/li&gt;
&lt;li&gt;공학&amp;nbsp;분야에서의&amp;nbsp;병목&amp;nbsp;현상은&amp;nbsp;전체&amp;nbsp;시스템의&amp;nbsp;성능이나&amp;nbsp;용량이&amp;nbsp;하나의&amp;nbsp;구성&amp;nbsp;요소에&amp;nbsp;심각하게&amp;nbsp;제한&amp;nbsp;받는&amp;nbsp;현상을&amp;nbsp;말한다&lt;/li&gt;
&lt;li&gt;생산 확대의 과정에서 장애가 되는 요소. 컴퓨터 성능 저하 현상은 엄청난 양의 데이터를 순식간에 내보내더라도 메모리가 이를 제대로 소화하지 못해 성능이 떨어지는 현상을 예로 들 수 있습니다.&lt;/li&gt;
&lt;li&gt;주로 용량이 적은 주변기기를 사용할 때 많이 발생한다.&lt;/li&gt;
&lt;li&gt;즉, 담을 수 있는 데이터의 양은 적으나 한꺼번에 많은 양의 데이터가 유입 됨으로써 컴퓨터가 느려지는 현상을 말합니다.&lt;/li&gt;
&lt;li&gt;게임의 경우 CPU는 실시간 게임 액션, UI, audio 그리고 다른 복잡한 CPU-bound 프로세스들을 처리합니다.&lt;/li&gt;
&lt;li&gt;이때 데이터 전송속도가 제한되면 병목현상이 발생하게 됩니다.&lt;/li&gt;
&lt;li&gt;다시 말해 데이터의 전송속도를 CPU의 처리속도가 따라가지 못할 경우 병목현상이 발생하는 것입니다.&lt;/li&gt;
&lt;li&gt;이 경우 해결책으로 해상도를 조절하는 방법이 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;7624&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;2-2 : &lt;span style=&quot;color: #006dd7;&quot;&gt;Next Normal (&lt;/span&gt;넥스트 노멀 )&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;경제, 사회 등이 위기 이후 정착한 상태&lt;/li&gt;
&lt;li&gt;COVID-19 대유행 기간 동안 '뉴 노멀'이라는 용어는&lt;/li&gt;
&lt;li&gt;대유행 중 또는 대유행 후 인간 행동 의 변화를 가리키는데 많이 사용되었다.&lt;/li&gt;
&lt;li&gt;University of Kansas Health System의 의사들은 전염병이 대부분의 사람들의 일상 생활을 바꿀 것으로 예상한다.&lt;/li&gt;
&lt;li&gt;여기에는 악수 및 포옹과 같은 사람 간 접촉 제한이 포함된다.&lt;/li&gt;
&lt;li&gt;또한 다른 사람과의 거리를 유지하거나 사회적 거리를 유지하는 것도 될 수 있다&lt;/li&gt;
&lt;li&gt;포스트 코로나 시대에는 궁극적으로 현재의 사회〮경제적 패러다임이 근본적으로&lt;/li&gt;
&lt;li&gt;변화함으로써 새로운 사회〮경제 질서가 중심이 된 '넥스트 노멀'이 도래할 것으로 보인다.&lt;/li&gt;
&lt;li&gt;대중매체 속 광고나 캠페인을 통해 전달되는 &amp;lsquo;뉴 노멀&amp;rsquo;과 관련한 메시지는 대개 &amp;lsquo;세상은 어쩔 수 없이 바뀌고 있고 그 변화는 되돌릴 수 없으므로 일단은 여기에 적응하는 방법부터 찾아야 한다&amp;rsquo;는 전제에서 출발한다.&lt;/li&gt;
&lt;li&gt;자연히 대중은 이러한 메시지를 접하면서 과거와는 달라진 우리 일상과 사회 생활 방식이 &amp;lsquo;정상&amp;rsquo;(normal)인 것이 되어 가고 있다는 느낌을 받는다.&lt;/li&gt;
&lt;li&gt;하지만 우리 주변, 특히 미디어에 주로 노출되는 &amp;lsquo;선진국 중산층 이상 일반인들의 삶&amp;rsquo;이 그렇게 바뀌어 가고 있다는 사실이 인류 전체가 같은 방식에 적응해야 한다는 주장의 전제로 충분한 것일까?&lt;/li&gt;
&lt;li&gt;제3세계를 중심으로 이와 같은 의문이 제기되면서 최근 점점 많은 사람들은 &amp;lsquo;괜찮지 않을 권리&amp;rsquo;에 대한 목소리를 높이고 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;div id=&quot;hwpEditorBoardContent&quot; data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;9723&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;9723&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;2-3 : &lt;span style=&quot;color: #006dd7;&quot;&gt;Cloud&lt;span&gt; ( &lt;/span&gt;&lt;/span&gt;클라우드 )&lt;/span&gt;&lt;/h4&gt;
&lt;div id=&quot;hwpEditorBoardContent&quot; data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;5973&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;인터넷을 통해 액세스할 수 있는 서버와 이러한 서버에서 작동하는 소프트웨어와 데이터베이스를 의미.&lt;/li&gt;
&lt;li&gt;클라우드 서버는 전 세계 데이터 센터에 위치합니다.&lt;/li&gt;
&lt;li&gt;사용자와 기업은 클라우드 컴퓨팅을 사용하면 직접 물리적 서버를 관리하거나 자체 서버에서 소프트웨어 응용 프로그램을 실행하지 않아도 됩니다.&lt;/li&gt;
&lt;li&gt;클라우드 컴퓨팅이란 인터넷 기반의 컴퓨팅을 말합니다.&lt;/li&gt;
&lt;li&gt;인터넷 상의 가상화된 서버에 프로그램을 두고 필요할때마다 컴퓨터나 스마트폰 등에 불러와 사용하는 서비스입니다.&lt;/li&gt;
&lt;li&gt;클라우드(Cloud)라는 단어가 말해주듯, 인터넷 통신망 어딘가에서 구름에 싸여 보이지 않는 컴퓨팅 자원(CPU, 메모리, 디스크 등)을 원하는 대로 가져다 쓸 수 있습니다.&lt;/li&gt;
&lt;li&gt;구름에 싸여 있다는 것은 그 내부를 보려고 하거나 알지 않아도 얼마든지 내가 원하는 것을 꺼내어 사용할 수 있다는 것이며, 인터넷이 연결된 어느 곳에서든 이것을 보장 받을 수 있다는 뜻입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;div id=&quot;hwpEditorBoardContent&quot; data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;6921&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;2-4 : IoT ( 사물인터넷 )&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;연결된 디바이스의 공통 네트워크를 의미하며, 디바이스와 클라우드 및 디바이스 간 통신을 용이하게 하는 기술을 의미하기도 합니다.&lt;/li&gt;
&lt;li&gt;저렴한 컴퓨터 칩과 고대역폭 통신의 출현 덕분에 이제 수십억 개의 디바이스가 인터넷에 연결되어 있습니다.&lt;/li&gt;
&lt;li&gt;이는 칫솔, 진공 청소기, 자동차 및 기계와 같은 일상적인 디바이스가 센서를 사용하여 데이터를 수집하고 사용자에게 지능적으로 응답할 수 있음을 의미합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;2-5 : AI ( 인공지능 )&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;인간의 지능을 모방하여 작업을 수행하고 수집한 정보를 토대로 자체 성능을 반복적으로 개선할 수 있는 시스템&amp;nbsp;&lt;/li&gt;
&lt;li&gt;AI는 특정 형식이나 기능보다는 초강력 사고 및 데이터 분석을 위한 프로세스와 기능에 훨씬 더 가깝다&lt;/li&gt;
&lt;/ul&gt;
&lt;div id=&quot;hwpEditorBoardContent&quot; data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;6523&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;6523&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;6523&quot;&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;2-6 : ML ( Machine Learning, 머신러닝 )&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;일일히 가르쳐주는것이 아니라 컴퓨터가 스스로 학습하고 유추할 수 있도록 해주는 것&lt;/li&gt;
&lt;li&gt;&quot;Field of study that gives computers the ability to learn without being explicitly programmed&amp;rdquo;&lt;/li&gt;
&lt;li&gt;프로그램을 명시적으로 짜 놓는 것이 아닌, 컴퓨터가 스스로 학습할 수 있는 능력을 부여하는 연구분야&lt;/li&gt;
&lt;/ul&gt;
&lt;div id=&quot;hwpEditorBoardContent&quot; data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;7033&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;7033&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;2-7 : silo ( 사일로 )&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;곡식저장소&lt;/li&gt;
&lt;li&gt;부서 또는 조직단위로 업무 효율화 측면에서 IT 인프라 및 자체 솔루션을 구축해서 사용하다보면 각 부서, 사업단위나, 브랜치별로 데이터가 일치하지 않는 증상이 있는데 이것을 사일로(Silo)현상, 사일로화 된다라고 이야기 합니다.&lt;/li&gt;
&lt;li&gt;이렇게 되면 부서/조직간 표준화가 어렵고 비즈니스 환경변화에 유연한 대처가 어려운 상황에 처해질 우려가 있는데, 이렇게 복잡하게 얽혀있는 문제들을 해결하기 위해 최근 기업들은 다방면으로 노력하고 있다.&lt;/li&gt;
&lt;li&gt;데이터 사일로 : 한 조직 내 정보의 집합이지만, 조직 내 다른 부서는 접근할 수 없는 분리된 정보를 의미한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;hwpEditorBoardContent&quot; data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;7204&quot;&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;2-8 : VOC 프로그램 ( Voice of the Customer, 고객의 소리 )&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;고객이 비즈니스, 제품 또는 서비스에 대해 말하는 것을 포착한 것&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;고객의 소리(VoC)는 제품 또는 서비스에 대한 고객의 경험과 기대치에 대한 고객의 피드백을 설명하는 용어이며, 고객의 요구와 기대, 이해 및 제품 개선에 초점을 맞추는 것이라고 할 수 있습니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;고객의 소리 프로그램은 고객 선호도와 문제 및 불만 사항에 대한 인사이트를 제공합니다. 이러한 VoC 프로그램은 고객의 소리를 파악하고 그에 대응함으로써 고객 만족도와 충성도를 향상시킵니다.&lt;/li&gt;
&lt;li&gt;기업은 고객의 소리를 통해 얻은 데이터를 사용하여 고객이 비즈니스와 상호 작용하는 모든 경험들을 개선합니다. VoC는 텍스트 분석 및&amp;nbsp;s감정 분석을 포함한 기술을 활용했을 때 가장 잘 이해할 수 있습니다. 그래야&amp;nbsp;고객 피드백 데이터에서 의미를 찾을&amp;nbsp;수 있기 때문이죠.&lt;/li&gt;
&lt;li&gt;VoC 프로그램은 수년 동안 주목을 받아 왔으며 조직의 핵심 비즈니스 전략에서 빠르게 성장하고 있는 부분이기도 합니다. 이는 특히 브랜드에게 매우 효과적인데, 고객이 기업의 보다 직접적인 참여를 요구하고 있으며 고객의 피드백을 잘 듣고 이에 따라 행동하는 것이 잠재 고객의 복잡한 의사 결정 프로세스를 이해하는 데 중요하기 때문입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;div id=&quot;hwpEditorBoardContent&quot; data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;6481&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;6481&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;div data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;6481&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;2-9 :&amp;nbsp; SSO ( Single Sign-On, 싱글사인온 )&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;여러 개의 사이트에서 한번의 로그인으로 여러가지 다른 사이트들을 자동적으로 접속하여 이용하는 방법&lt;/li&gt;
&lt;li&gt;하나의 로그인 인증 정보를 사용해 여러 애플리케이션에 접근할 수 있는 중앙화된 세션 및 사용자 인증 서비스다.&lt;/li&gt;
&lt;li&gt;하나의 시스템에서 인증을 할 경우 타 시스템에서는 인증 정보가 있는지 확인하고 있으면, 로그인 처리를 하도록 하고, 없는 경우, 다시 통합 인증을 할 수 있도록 만드는 것을 의미&lt;/li&gt;
&lt;li&gt;즉,&amp;nbsp;하나의 아이디 및 패스워드를 통해 여러 시스템에 접근할 수 있는 통합 로그인(인증) 솔루션&lt;/li&gt;
&lt;li&gt;SSO의 장점은 간편함이다. 지정된 플랫폼 하나에서 인증되면 이후 매번 로그인과 로그아웃을 반복할 필요없이 다양한 서비스를 사용할 수 있다.&lt;/li&gt;
&lt;li&gt;잘 구현된 SSO는 생산성, IT 모니터링 및 관리, 보안 통제 측면에서 매우 유익하다. 관리자는 하나의 보안 토큰(사용자 이름/암호 쌍)으로 여러 시스템과 플랫폼, 앱 및 기타 리소스에 대한 사용자 접근을 활성화하거나 비활성화할 수 있다. SSO는 비밀번호 분실이나 취약한 비밀번호의 위험도 낮춰준다.&lt;/li&gt;
&lt;/ul&gt;
&lt;div id=&quot;hwpEditorBoardContent&quot; data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;7183&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;7183&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;7183&quot;&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;2-10 : workflow ( 워크플로우 )&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;작업을 수행하는 데 필요한 일련의 이벤트를 정리한 것&lt;/li&gt;
&lt;li&gt;특정 결과를 달성하기 위해 완수해야 하는 일련의 서로 연결된 활동 또는 업무를 의미합니다.&lt;/li&gt;
&lt;li&gt;구조화된 워크플로는 구체적인 종속성이나 요구사항을 충족시키기 위해 순차적이거나 병렬적인 특정 경로를 따릅니다. 이러한 경로는 변형이 정의되어 있기도 합니다.&lt;/li&gt;
&lt;li&gt;워크플로는 보다 구체적이고 독립적인 업무인 반면 비즈니스 프로세스는 업무, 워크플로, 활동, 가이드라인의 집합을 가리키는 더 광범위한 용어입니다.&lt;/li&gt;
&lt;li&gt;비즈니스 프로세스의 업무 중 일부는 자동화되고 다른 활동은 자동화되지 않았을 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;2-11 : &lt;span style=&quot;color: #006dd7;&quot;&gt;Hyperautomation ( 하이퍼오토메이션, &lt;/span&gt;초자동화 (= 대규모 자동화) )&amp;nbsp;&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;자동화는 비즈니스 환경을 빠르게 변화시키고 있으며 기업이 이전보다 더 빠르고 민첩하며 효율적인 방식으로 작동하도록 지원하고 있습니다. 한편, 초자동화는 조직 내 자동화할 수 있는 모든 것을 자동화해야 한다는 개념입니다.&lt;/li&gt;
&lt;li&gt;모든 프로세스에서 인간이 배제되는 자동화가 목표, 기술 자체라기 보다는 &amp;lsquo;체계적인 문제 접근 방식&amp;rsquo;이다.&lt;/li&gt;
&lt;li&gt;개별&amp;nbsp;프로세스의&amp;nbsp;한계를&amp;nbsp;넘어&amp;nbsp;기존&amp;nbsp;비즈니스&amp;nbsp;프로세스&amp;nbsp;자동화의&amp;nbsp;확장을&amp;nbsp;의미합니다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;AI 도구와 RPA(로보틱 프로세스 자동화)의 결합을 통해 하이퍼오토메이션은 비즈니스 사용자가 실행하는 거의 모든 반복 작업을 자동화할 수 있게 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;2-12 : engagement ( 인게이지먼트 )&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;컨텐츠와 결합한 총체적인 정서적인 경험&lt;/li&gt;
&lt;li&gt;잠재 소비자를 주변 컨텍스트에 의해 강화된 브랜드 아이디어와 연결시키는 것&lt;/li&gt;
&lt;li&gt;상호 주체간의 관계 형성을 위해 참여하는 것 즉, '관계 참여'라고 축약할 수 있겠다.&lt;/li&gt;
&lt;li&gt;고객 인게이지먼트란?&lt;/li&gt;
&lt;li&gt;기업이 고객과 직접적이고 의미 있는 관계를 구축하고 유지하기 위해 사용하는 일련의 모든 활동을 의미합니다. 고객 인게이지먼트에 탁월한 기업은 더 높은 유저 생애 가치(LTV)와 더 낮은 유저 획득 비용을 가지게 되며, 장기적으로 비용 효율적인 비즈니스 성장을 이룩하게 됩니다. 선두적인 기업들은 개인 정보를 보호하면서도 모든 연관 채널에서 고객에게 가치 있는 메시징 경험을 제공함으로써 효과적인 고객 인게이지먼트를 수행합니다. 이러한 브랜드들은 실시간 고객 데이터를 기반으로 하는 고객 인게이지먼트 기술을 사용하여, 고객의 이야기를 듣고 고객의 행동을 이해 및 해석하며 빠르고 효과적으로 행동합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;2-13 : Zero Trust ( 제로 트러스트 )&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;IT&amp;nbsp;보안&amp;nbsp;접근&amp;nbsp;방식의&amp;nbsp;이름으로,&amp;nbsp;신뢰할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;네트워크&amp;nbsp;경계는&amp;nbsp;존재하지&amp;nbsp;않으며,&amp;nbsp;모든&amp;nbsp;네트워크&amp;nbsp;트랜잭션이&amp;nbsp;이루어지려면&amp;nbsp;먼저&amp;nbsp;인증을&amp;nbsp;받아야&amp;nbsp;한다고&amp;nbsp;가정합니다.&lt;/li&gt;
&lt;li&gt;신뢰하지&amp;nbsp;말고&amp;nbsp;항상&amp;nbsp;검증할&amp;nbsp;것'이라는&amp;nbsp;원칙을&amp;nbsp;바탕으로&amp;nbsp;네트워크&amp;nbsp;세분화&amp;nbsp;및&amp;nbsp;엄격한&amp;nbsp;액세스&amp;nbsp;제어와&amp;nbsp;같은&amp;nbsp;다른&amp;nbsp;네트워크&amp;nbsp;보안&amp;nbsp;방법론을&amp;nbsp;활용합니다.&amp;nbsp;제로&amp;nbsp;트러스트&amp;nbsp;네트워크는&amp;nbsp;중요한&amp;nbsp;데이터,&amp;nbsp;자산,&amp;nbsp;애플리케이션&amp;nbsp;및&amp;nbsp;서비스로&amp;nbsp;구성되는&amp;nbsp;'보호&amp;nbsp;범위'를&amp;nbsp;정의하며,&amp;nbsp;DAAS라고도&amp;nbsp;합니다.&amp;nbsp;중요한&amp;nbsp;자산만&amp;nbsp;포함되므로&amp;nbsp;대개&amp;nbsp;보호&amp;nbsp;범위는&amp;nbsp;전체&amp;nbsp;공격&amp;nbsp;범위보다&amp;nbsp;상당히&amp;nbsp;작습니다.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #151515;&quot;&gt;모든 상호작용이 신뢰할 수 없는 상태에서 시작된다는 전제로 보안 아키텍처를 설계하는 방식&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #151515;&quot;&gt;통신이&amp;nbsp;방화벽&amp;nbsp;내부에서&amp;nbsp;시작되는지&amp;nbsp;여부에&amp;nbsp;따라&amp;nbsp;신뢰성을&amp;nbsp;결정하던&amp;nbsp;전통적인&amp;nbsp;아키텍처와는&amp;nbsp;대조적입니다.&amp;nbsp;구체적으로&amp;nbsp;말하자면,&amp;nbsp;제로&amp;nbsp;트러스트는&amp;nbsp;절대적&amp;nbsp;신뢰&amp;nbsp;모델&amp;nbsp;및&amp;nbsp;일회성&amp;nbsp;인증에&amp;nbsp;의존하는&amp;nbsp;보안&amp;nbsp;아키텍처의&amp;nbsp;빈틈을&amp;nbsp;메우려는&amp;nbsp;시도라고&amp;nbsp;볼&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;전&amp;nbsp;세계적으로&amp;nbsp;위협&amp;nbsp;환경이&amp;nbsp;진화하고&amp;nbsp;네트워크&amp;nbsp;내부의&amp;nbsp;활동은&amp;nbsp;신뢰할&amp;nbsp;수&amp;nbsp;있다는&amp;nbsp;오랜&amp;nbsp;믿음이&amp;nbsp;흔들리면서&amp;nbsp;제로&amp;nbsp;트러스트가&amp;nbsp;인기를&amp;nbsp;얻기&amp;nbsp;시작했습니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;제로 트러스트 사이버보안 및 제로 트러스트 아키텍처 설계, 제로 트러스트 네트워크 엑세스(ZTNA)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;hwpEditorBoardContent&quot; data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;10625&quot;&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;3. 지식&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;▣ CRM Solution을 사용하게 된 이유는? 신규 리드의 획득&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;육성이 필요하다고 판단하였다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;▣&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;구독 경제 - 이제 구독이 표준이되었으며&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;경험이 고객 충성도를 좌우합니다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;▣&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;데이터에 기반한 의사 결정은 운영 효율성에서 향상된 비즈니스 회복탄력성 및&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;점차적으로 디지털화되는 환경 속 기업의 고객 관계 구축 능력에 이르기까지&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;모든 것을 뒷받침합니다&lt;/span&gt;&lt;/p&gt;
&lt;div id=&quot;hwpEditorBoardContent&quot; data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;7994&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;▣&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;569&quot; data-origin-height=&quot;514&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cniOg3/btrWx8WnPpz/82ia9f7UTWhYemBeSkmbH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cniOg3/btrWx8WnPpz/82ia9f7UTWhYemBeSkmbH1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cniOg3/btrWx8WnPpz/82ia9f7UTWhYemBeSkmbH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcniOg3%2FbtrWx8WnPpz%2F82ia9f7UTWhYemBeSkmbH1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;550&quot; height=&quot;497&quot; data-origin-width=&quot;569&quot; data-origin-height=&quot;514&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;div id=&quot;hwpEditorBoardContent&quot; data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;591093&quot;&gt;&lt;span&gt;▣&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;569&quot; data-origin-height=&quot;550&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QDCaU/btrWzVWz1M2/DhKuuiAUkm3iyXbQkmglv0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QDCaU/btrWzVWz1M2/DhKuuiAUkm3iyXbQkmglv0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QDCaU/btrWzVWz1M2/DhKuuiAUkm3iyXbQkmglv0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQDCaU%2FbtrWzVWz1M2%2FDhKuuiAUkm3iyXbQkmglv0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;550&quot; height=&quot;532&quot; data-origin-width=&quot;569&quot; data-origin-height=&quot;550&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div id=&quot;hwpEditorBoardContent&quot; data-hjsonver=&quot;1.0&quot; data-jsonlen=&quot;124403&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>다짐하자/출근 준비</category>
      <category>ai</category>
      <category>bottleneck</category>
      <category>Cloud</category>
      <category>IOT</category>
      <category>ML</category>
      <category>next nomal</category>
      <category>silo</category>
      <category>SSO</category>
      <category>VOC</category>
      <category>workflow</category>
      <author>giggs</author>
      <guid isPermaLink="true">https://giggs.tistory.com/333</guid>
      <comments>https://giggs.tistory.com/333#entry333comment</comments>
      <pubDate>Wed, 18 Jan 2023 20:42:50 +0900</pubDate>
    </item>
  </channel>
</rss>