<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>LTS (Logical Thinking Space)</title>
    <link>https://solt.tistory.com/</link>
    <description>GitHub link : https://github.com/kwangho-park 
</description>
    <language>ko</language>
    <pubDate>Sun, 2 Aug 2026 17:58:58 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>짠백이</managingEditor>
    <image>
      <title>LTS (Logical Thinking Space)</title>
      <url>https://tistory1.daumcdn.net/tistory/2935726/attach/7fdcc45629fb4df38ab3526095a27955</url>
      <link>https://solt.tistory.com</link>
    </image>
    <item>
      <title>내부 DDOS 공격에 대한 기록  (JVM OOM)</title>
      <link>https://solt.tistory.com/84</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. 개요&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;사내&lt;/span&gt;&lt;span&gt; 200&lt;/span&gt;&lt;span&gt;명을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;대상으로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;운영중인&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;서버에서&lt;/span&gt;&lt;span&gt; 2&lt;/span&gt;&lt;span&gt;개월&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;간격으로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;서버의&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;오동작을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;유발하였던&lt;/span&gt;&lt;span&gt; OOM&lt;/span&gt;&lt;span&gt;이슈를&lt;/span&gt;&lt;span&gt; Agent (Client) &lt;/span&gt;&lt;span&gt;의&lt;/span&gt;&lt;span&gt; cURI session &lt;/span&gt;&lt;span&gt;관련기능을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;수정하여&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;해결하였습니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;간단하였으나&lt;/span&gt;&lt;span&gt;, JVM OOM &lt;/span&gt;&lt;span&gt;이슈를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;분석하고&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;처리하는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;과정에서의&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;배운점을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;기록으로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;남김으로써&lt;/span&gt;&lt;u&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; &lt;/span&gt;&lt;span&gt;할&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;수&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;있는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;이슈에&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;원활하게&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;대응하는데&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;도움이&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;될&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;것이라고&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;생각되어&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;포스팅을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;작성하였습니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. 본론&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;운영중인&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;서버는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;네트워크&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;접근관리&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;서버로써&lt;/span&gt;&lt;span&gt; client-side&lt;/span&gt;&lt;span&gt;에&lt;/span&gt;&lt;span&gt; Agent &lt;/span&gt;&lt;span&gt;라는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;소프트웨어를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;설치하여&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;서버에&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;주기적으로&lt;/span&gt;&lt;span&gt; Agent &lt;/span&gt;&lt;span&gt;활성상태와&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;보안&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;터널을&lt;/span&gt;&lt;span&gt; Health check &lt;/span&gt;&lt;span&gt;를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;하는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;방식으로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;동작하고&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;있습니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;운영을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;시작한지&lt;/span&gt;&lt;span&gt; 6&lt;/span&gt;&lt;span&gt;개월이&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;넘어가던&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;시점에&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;서버에서&lt;/span&gt;&lt;span&gt; JVM OOM &lt;/span&gt;&lt;span&gt;이&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;최초&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;발생하였으며&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;b&gt;&lt;span&gt;서버에&lt;/span&gt;&lt;span&gt; heap dump &lt;/span&gt;&lt;span&gt;가&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;남겨져&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;있었기에&lt;/span&gt;&lt;span&gt; MAT &lt;/span&gt;&lt;span&gt;로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;분석을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;하였습니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;[Server OOM &lt;/span&gt;&lt;span&gt;로그&lt;/span&gt;&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-filename=&quot;Server OOM로그.png&quot; data-origin-width=&quot;1864&quot; data-origin-height=&quot;315&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3FWun/btssVLVNw41/QSA16OO3xc1K80lTjB57h1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3FWun/btssVLVNw41/QSA16OO3xc1K80lTjB57h1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3FWun/btssVLVNw41/QSA16OO3xc1K80lTjB57h1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3FWun%2FbtssVLVNw41%2FQSA16OO3xc1K80lTjB57h1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;919&quot; height=&quot;155&quot; data-filename=&quot;Server OOM로그.png&quot; data-origin-width=&quot;1864&quot; data-origin-height=&quot;315&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;캡쳐를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;보면&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt; ConcurrentHashMap 을 요소로 갖는 list 가 heap memory의 96%를 사용하여 heap OOM 이 &lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;발생&lt;/span&gt;한것을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;확인하였으며&lt;/span&gt;&lt;span&gt;, ConcurrentHashMap &lt;/span&gt;&lt;span&gt;의&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;용도를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;찾아보니&lt;/span&gt;&lt;span&gt; WAS &lt;/span&gt;&lt;span&gt;의&lt;/span&gt;&lt;span&gt; session &lt;/span&gt;&lt;span&gt;정보가&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;저장되는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;메모리로&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;[memory report]&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;memory report.png&quot; data-origin-width=&quot;864&quot; data-origin-height=&quot;715&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfiClf/btss92olhwu/n7JkMmE3vautv0Pjc3fAo1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfiClf/btss92olhwu/n7JkMmE3vautv0Pjc3fAo1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfiClf/btss92olhwu/n7JkMmE3vautv0Pjc3fAo1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfiClf%2Fbtss92olhwu%2Fn7JkMmE3vautv0Pjc3fAo1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;864&quot; height=&quot;715&quot; data-filename=&quot;memory report.png&quot; data-origin-width=&quot;864&quot; data-origin-height=&quot;715&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;[List &lt;/span&gt;&lt;span&gt;객체&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;상세분석&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;list객체 상세분석.png&quot; data-origin-width=&quot;1616&quot; data-origin-height=&quot;780&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c7bEQZ/btssVJjrCfr/yJZhInaiN1eIiupEjvIClK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c7bEQZ/btssVJjrCfr/yJZhInaiN1eIiupEjvIClK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c7bEQZ/btssVJjrCfr/yJZhInaiN1eIiupEjvIClK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc7bEQZ%2FbtssVJjrCfr%2FyJZhInaiN1eIiupEjvIClK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1616&quot; height=&quot;780&quot; data-filename=&quot;list객체 상세분석.png&quot; data-origin-width=&quot;1616&quot; data-origin-height=&quot;780&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;또한&lt;/span&gt;&lt;span&gt; Thread stack &lt;/span&gt;&lt;span&gt;로그를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;분석한&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;결과&lt;/span&gt;&lt;span&gt; agent request &lt;/span&gt;&lt;span&gt;를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;받아&lt;/span&gt;&lt;span&gt; session &lt;/span&gt;&lt;span&gt;을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;생성하기위해&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;배열을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;복사하는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;과정에서&lt;/span&gt;&lt;span&gt; OOM &lt;/span&gt;&lt;span&gt;에러가&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;발생한것을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;확인&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;할&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;수&lt;/span&gt;&lt;span&gt; &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;[Tread Stack &lt;/span&gt;&lt;span&gt;로그&lt;/span&gt;&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-filename=&quot;tread stack.png&quot; data-origin-width=&quot;1344&quot; data-origin-height=&quot;381&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/prAoT/btss856OMf3/xnIU34mDQABNHvZO1NqhRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/prAoT/btss856OMf3/xnIU34mDQABNHvZO1NqhRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/prAoT/btss856OMf3/xnIU34mDQABNHvZO1NqhRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FprAoT%2Fbtss856OMf3%2FxnIU34mDQABNHvZO1NqhRK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1344&quot; height=&quot;381&quot; data-filename=&quot;tread stack.png&quot; data-origin-width=&quot;1344&quot; data-origin-height=&quot;381&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&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;&lt;span&gt; &lt;/span&gt;&lt;span&gt;얻어&lt;/span&gt;&lt;span&gt; Agent &lt;/span&gt;&lt;span&gt;에서&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;전송하는&lt;/span&gt;&lt;span&gt; HTTP request &lt;/span&gt;&lt;span&gt;를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;검증하고자&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;서버에서&lt;/span&gt;&lt;span&gt; Agent &lt;/span&gt;&lt;span&gt;가&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;전송한&lt;/span&gt;&lt;span&gt; Session ID &lt;/span&gt;&lt;span&gt;모두&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;출력하여&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;비교를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;해본결과&lt;/span&gt;&lt;span&gt;, Heath check &lt;/span&gt;&lt;span&gt;시&lt;/span&gt;&lt;span&gt; request &lt;/span&gt;&lt;span&gt;마다&lt;/span&gt;&lt;span&gt; cookie&lt;/span&gt;&lt;span&gt;에&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;서버에서&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;발급한&lt;/span&gt;&lt;span&gt; Session ID &lt;/span&gt;&lt;span&gt;를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;전송하지&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;않는것을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;확인하였고&lt;/span&gt;&lt;span&gt;, Agent (C++) &lt;/span&gt;&lt;span&gt;의&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;소스를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;확인해보니&lt;/span&gt;&lt;span&gt; cURI &lt;/span&gt;&lt;span&gt;모듈에서&lt;/span&gt;&lt;span&gt; session &lt;/span&gt;&lt;span&gt;유지처리를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;하지않는것이&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;확인&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;/p&gt;
&lt;p style=&quot;color: #00b050;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;정확한&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;검증을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;위해&lt;/span&gt;&lt;b&gt;&lt;span&gt; jmeter script (100&lt;/span&gt;&lt;span&gt;개&lt;/span&gt;&lt;span&gt; thread, 1s &lt;/span&gt;&lt;span&gt;간격&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;로&lt;/span&gt;&lt;span&gt; WAS &lt;/span&gt;&lt;span&gt;서버에&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;부하를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;발생시켜서&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;에러를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/b&gt;&lt;span&gt;&lt;b&gt;재현&lt;/b&gt;하였으며&lt;/span&gt;&lt;span&gt;, HTTP session &lt;/span&gt;&lt;span&gt;을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;유지했을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;때&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;그렇지&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;않은경우보다&lt;/span&gt;&lt;span&gt; heap memory &lt;/span&gt;&lt;span&gt;가&lt;/span&gt;&lt;span&gt; 6&lt;/span&gt;&lt;span&gt;배&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;감소하는것을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;확인&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;할&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;수&lt;/span&gt;&lt;span&gt; &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;수정&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;전&lt;/span&gt;&lt;span&gt; Heap memory &lt;/span&gt;&lt;span&gt;모니터링&lt;/span&gt;&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-filename=&quot;수정전1.png&quot; data-origin-width=&quot;1905&quot; data-origin-height=&quot;966&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/csKGqs/btssUH0ABXi/3ao21u3xbGvjKoGfoRISvk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/csKGqs/btssUH0ABXi/3ao21u3xbGvjKoGfoRISvk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/csKGqs/btssUH0ABXi/3ao21u3xbGvjKoGfoRISvk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcsKGqs%2FbtssUH0ABXi%2F3ao21u3xbGvjKoGfoRISvk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1905&quot; height=&quot;966&quot; data-filename=&quot;수정전1.png&quot; data-origin-width=&quot;1905&quot; data-origin-height=&quot;966&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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; GC &lt;/span&gt;&lt;span&gt;모니터링&lt;/span&gt;&lt;span&gt; : Session &lt;/span&gt;&lt;span&gt;유지&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;설정&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;수정전2.png&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;961&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LXtd4/btss87wOUFW/Cr2zPqSVMirEw8DoHbOO41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LXtd4/btss87wOUFW/Cr2zPqSVMirEw8DoHbOO41/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LXtd4/btss87wOUFW/Cr2zPqSVMirEw8DoHbOO41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLXtd4%2Fbtss87wOUFW%2FCr2zPqSVMirEw8DoHbOO41%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1916&quot; height=&quot;961&quot; data-filename=&quot;수정전2.png&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;961&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&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;Heap memory &lt;/span&gt;&lt;span&gt;모니터링&lt;/span&gt;&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-filename=&quot;수정 후1.png&quot; data-origin-width=&quot;1917&quot; data-origin-height=&quot;962&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uEFhd/btss74mOQsH/dTDPOoHfokTS6pq1xEQRT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uEFhd/btss74mOQsH/dTDPOoHfokTS6pq1xEQRT0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uEFhd/btss74mOQsH/dTDPOoHfokTS6pq1xEQRT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuEFhd%2Fbtss74mOQsH%2FdTDPOoHfokTS6pq1xEQRT0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1917&quot; height=&quot;962&quot; data-filename=&quot;수정 후1.png&quot; data-origin-width=&quot;1917&quot; data-origin-height=&quot;962&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;GC &lt;/span&gt;&lt;span&gt;모니터링&lt;/span&gt;&lt;span&gt; : Session &lt;/span&gt;&lt;span&gt;유지 설정&lt;/span&gt;&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-filename=&quot;수정후2.png&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;969&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dfjW8O/btssVUyAzik/yDbgray8JHE56bKshfvBh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dfjW8O/btssVUyAzik/yDbgray8JHE56bKshfvBh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dfjW8O/btssVUyAzik/yDbgray8JHE56bKshfvBh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdfjW8O%2FbtssVUyAzik%2FyDbgray8JHE56bKshfvBh1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1916&quot; height=&quot;969&quot; data-filename=&quot;수정후2.png&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;969&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이후&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;수정된&lt;/span&gt;&lt;span&gt; Agent &lt;/span&gt;&lt;span&gt;로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;충분한&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;테스트를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;거쳐&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;운영에&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;반영을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;하였으며&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;, &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;이후부터 지금까지 해당&amp;nbsp;heap memory 이슈가 발생하지 않고 있습니다.&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;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. 결론&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;WAS 서버가 &lt;/span&gt;&lt;span&gt;A&lt;/span&gt;&lt;span&gt;gent&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;로부터&lt;/span&gt;&lt;span style=&quot;color: #fa0000;&quot;&gt; 의도하지않은 DDOS 공격&lt;/span&gt;&lt;span&gt;을 받게되어서&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;분석&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;모니터링&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;테스트&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;코딩&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;등으로&lt;/span&gt;&lt;span&gt; 2&lt;/span&gt;&lt;span&gt;개월&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;정도&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;메인&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;업무&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;이외의&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;시간을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;할애하여&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;분석하고&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;&lt;span&gt;그로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;인해&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt; JVM OOM 이 발생하였을때 활용 할 수 있는 방법들 (MAT, Jmeter, Vitual VM 등) 관련한 기본기술을 습득 할 수 있었습니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;또한&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;2&lt;/span&gt;&lt;span&gt;개월&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;간격으로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;발생하는&lt;/span&gt;&lt;span&gt; OOM&lt;/span&gt;&lt;span&gt;으로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;인해&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;서버가&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;다운되어&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;사용자가&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;내부&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;네트워크에&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;접근하지&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;못하고&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;업무에&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;제약을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;받는것을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;보고&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;안정적인 서버운영의 중요성도 깨달을 수 있었습니다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>Computer Science/common</category>
      <author>짠백이</author>
      <guid isPermaLink="true">https://solt.tistory.com/84</guid>
      <comments>https://solt.tistory.com/84#entry84comment</comments>
      <pubDate>Tue, 5 Sep 2023 11:05:57 +0900</pubDate>
    </item>
    <item>
      <title>SSH 개념 및 사용자 인증흐름 - AWS docs 추가</title>
      <link>https://solt.tistory.com/83</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이번 포스팅은 SSH의 개념, 사용자 인증흐름, AWS 사용 예시까지 확인해보려합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고로 해당 포스팅에서 ssh 사용예시로 AWS EC2와 MobaXterm 을 사용하였으며, 해당 서비스와 프로그램에 대한 구체적인 사용방법이 아닌 개념을 이해하기위한 맥락관점에서 설명 할 예정입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* AWS EC2 : 아마존 웹 서비스에서 제공하는 클라우드 서비스 (PaaS)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* MobaXterm : SSH, SFTP 등의 원격 접속을 할 수 있는 프로그램&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 개념&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - &lt;span style=&quot;color: #ee2323;&quot;&gt;SSH&lt;/span&gt;는 &lt;span style=&quot;color: #ee2323;&quot;&gt;s&lt;/span&gt;ecure &lt;span style=&quot;color: #ee2323;&quot;&gt;sh&lt;/span&gt;ell 의 약자로써 원격지 PC에 보안접속을 할 수 있는 CLI 기반 프로그램 또는 암호화 프로토콜을 의미합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* CLI (&lt;span style=&quot;color: #000000;&quot;&gt;Command Line Interface) : 명령줄 인터페이스 (&amp;lt;=&amp;gt; GUI )&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 특징&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 2.1 원격접속 프로그램 telnet 이 평문으로 전송하기 때문에 발생하는 보안 이슈를 해결하기 위해서 등장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 2.2 보안 통신을 위해 공개키 (=비대칭키) 암호화 방식으로 사용자를 인증&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; (* 중요 : &lt;span style=&quot;background-color: #f3c000;&quot;&gt;전자서명&lt;/span&gt;과 동일한 방식의 인증)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 사용자 인증 흐름&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 3.1 client 가 server 에 ssh 연결 요청&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 3.2 server 는 data(hash value) 를 클라이언트에게 전송&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 3.3 client 는 server 로 부터 받은 data를 private key 로 암호화해서 server 에게 전송&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 3.4 server 는 암호화된 data를 public key 로 복호화하여 자신이 보낸 hash value 인지 비교하고 일치할 경우 사용자 (client)를 인증함 &amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;* 이유 : server 가 가지고있는 public key로 복호화 된 것은 해당 data를 보낸 client 가 private key를 가지고 있다는 의미이기 때문임&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;widthContent&quot; data-filename=&quot;비대칭키 암호화 사용자 인증방식 (SSH).png&quot; data-origin-width=&quot;716&quot; data-origin-height=&quot;759&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eqAwB0/btqSLGOMPsq/0GY0U2uJvQJkKzOfmUN2qK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eqAwB0/btqSLGOMPsq/0GY0U2uJvQJkKzOfmUN2qK/img.png&quot; data-alt=&quot;SSH 인증 흐름&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eqAwB0/btqSLGOMPsq/0GY0U2uJvQJkKzOfmUN2qK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeqAwB0%2FbtqSLGOMPsq%2F0GY0U2uJvQJkKzOfmUN2qK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;716&quot; height=&quot;759&quot; data-filename=&quot;비대칭키 암호화 사용자 인증방식 (SSH).png&quot; data-origin-width=&quot;716&quot; data-origin-height=&quot;759&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;SSH 인증 흐름&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. AWS 사용 예시&amp;nbsp;&lt;/p&gt;
&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;- client = ssh 접속을 시도하는 주체 (local PC)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- server = AWS EC2 (원격지 PC)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 4.1 [server] AWS EC2 인스턴스 정보&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - &lt;span style=&quot;color: #333333;&quot;&gt;IP는 임의의 고정 IP 인 123.456.789.11 설정하였다고 가정하였습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; - AWS EC2 생성 시 발급되는 private key 를 local PC에 저장합니다. (아래 캡처에는 해당 내용은 생략됨)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthContent&quot; data-filename=&quot;1_EC2 인스턴스.png&quot; data-origin-width=&quot;1563&quot; data-origin-height=&quot;651&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/q4JTu/btqSELwRnlA/ElcXjd5su9zChECrm8JvS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/q4JTu/btqSELwRnlA/ElcXjd5su9zChECrm8JvS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/q4JTu/btqSELwRnlA/ElcXjd5su9zChECrm8JvS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq4JTu%2FbtqSELwRnlA%2FElcXjd5su9zChECrm8JvS1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1563&quot; height=&quot;651&quot; data-filename=&quot;1_EC2 인스턴스.png&quot; data-origin-width=&quot;1563&quot; data-origin-height=&quot;651&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; 4.2 [client] SSH 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- SSH 접속을 위해 원격지 PC (AWS EC2)의 IP 123.456.789.11 을 입력하고 port는 22를 입력합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- AWS EC2 생성 시 발급받은 private key의 경로를 등록합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(* port number 는 다른 번호도 사용 할 수 있으나 일반적으로는 22를 사용합니다.)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthContent&quot; data-filename=&quot;2_ssh 설정.png&quot; data-origin-width=&quot;1593&quot; data-origin-height=&quot;820&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/A62jH/btqSLHz9oFV/bIaLZ7Zh8GfykCh5YG6kGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/A62jH/btqSLHz9oFV/bIaLZ7Zh8GfykCh5YG6kGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/A62jH/btqSLHz9oFV/bIaLZ7Zh8GfykCh5YG6kGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FA62jH%2FbtqSLHz9oFV%2FbIaLZ7Zh8GfykCh5YG6kGK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1593&quot; height=&quot;820&quot; data-filename=&quot;2_ssh 설정.png&quot; data-origin-width=&quot;1593&quot; data-origin-height=&quot;820&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; 4.3 [client] SSH 접속 완료&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 위의 설정으로 원격지에 접속을 시도하면 원격지 PC(AWS EC2)는 local PC에서 priavte key 로 암호화한 패킷을 public key로 복호하하여 데이터를 비교함으로써 local PC (사용자)를 인증합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 사용자 인증이 완료되면 정상적으로 AWS EC2에 접속 할 수 있습니다.&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;widthContent&quot; data-filename=&quot;3_ssh 접속완료.png&quot; data-origin-width=&quot;1482&quot; data-origin-height=&quot;808&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5W7vn/btqSGiA6uUZ/l9xVymQ4EOKUJGpXXwFxG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5W7vn/btqSGiA6uUZ/l9xVymQ4EOKUJGpXXwFxG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5W7vn/btqSGiA6uUZ/l9xVymQ4EOKUJGpXXwFxG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5W7vn%2FbtqSGiA6uUZ%2Fl9xVymQ4EOKUJGpXXwFxG0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1482&quot; height=&quot;808&quot; data-filename=&quot;3_ssh 접속완료.png&quot; data-origin-width=&quot;1482&quot; data-origin-height=&quot;808&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. key pair 참고&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 생활코딩 SSH key : &lt;a href=&quot;https://opentutorials.org/module/432/3742&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://opentutorials.org/module/432/3742&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* AWS EC2 key pair : &lt;a href=&quot;https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/create-key-pairs.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/create-key-pairs.html&lt;/a&gt; &amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;ssh.PNG&quot; data-origin-width=&quot;1506&quot; data-origin-height=&quot;1132&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pnLZ8/btsFbWkd9Ka/aDm9p0H7EaxNUZcXImebZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pnLZ8/btsFbWkd9Ka/aDm9p0H7EaxNUZcXImebZK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pnLZ8/btsFbWkd9Ka/aDm9p0H7EaxNUZcXImebZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpnLZ8%2FbtsFbWkd9Ka%2FaDm9p0H7EaxNUZcXImebZK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;738&quot; height=&quot;555&quot; data-filename=&quot;ssh.PNG&quot; data-origin-width=&quot;1506&quot; data-origin-height=&quot;1132&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Computer Science/security</category>
      <author>짠백이</author>
      <guid isPermaLink="true">https://solt.tistory.com/83</guid>
      <comments>https://solt.tistory.com/83#entry83comment</comments>
      <pubDate>Wed, 6 Jan 2021 00:18:45 +0900</pubDate>
    </item>
    <item>
      <title>[보안] PKI 개념과 구조</title>
      <link>https://solt.tistory.com/82</link>
      <description>&lt;p&gt;&lt;br /&gt;1.&amp;nbsp;개념&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- PKI (public key infrastructure) 는 공인인증서 발급/사용을 위한 인프라&amp;nbsp;&lt;br /&gt;&lt;br /&gt;2. PKI 구성요소별 설명&amp;nbsp; &lt;br /&gt;&amp;nbsp;2.1 USER (사용자)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;- 인증서 발급을 요청하는 사용자&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;2.2 RA (Registration Authority : 등록 권한)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;- 인증서를 신청하는 사용자의 신원을 확인하고 사용자정보를 CA로 전송&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;- CA발급한 인증서를 사용자에게 발행&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;- ex) 은행, 증권사&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;2.3 CA (Certificate Authority : 인증 권한)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;- 인증서를 발급하는 솔루션 또는 기관&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;- 인증서를 이용한 전자서명을 통해 데이터 무결성, 기밀성 등 제공&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;- ex) 한국정보인증(KICA), 금융결제원 등&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;2.4 VA (Validation Authority : 검증 권한)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;- 인증서의 유효성을 검증&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3.&amp;nbsp;PKI&amp;nbsp;구조와&amp;nbsp;인증&amp;nbsp;프로세스 &lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;1.png&quot; data-origin-width=&quot;795&quot; data-origin-height=&quot;508&quot; width=&quot;595&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wejwH/btqJSbQD1mX/o6J2olKRVTll2VCWkJAyrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wejwH/btqJSbQD1mX/o6J2olKRVTll2VCWkJAyrK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wejwH/btqJSbQD1mX/o6J2olKRVTll2VCWkJAyrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwejwH%2FbtqJSbQD1mX%2Fo6J2olKRVTll2VCWkJAyrK%2Fimg.png&quot; data-filename=&quot;1.png&quot; data-origin-width=&quot;795&quot; data-origin-height=&quot;508&quot; width=&quot;595&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;3.1 사용자가 RA(등록대행기관)에 인증서 발급요청&lt;/p&gt;
&lt;p&gt;3.2 RA는 사용자 신원확인 후 CA(인증기관)에 인증서 발행 요청&lt;/p&gt;
&lt;p&gt;3.3 CA는 VA(검증기관) 에 유효성확인하여 인증서 발행하고&amp;nbsp;&lt;/p&gt;
&lt;p&gt;3.4 사용자에게 인증서 발급&lt;/p&gt;
&lt;p&gt;3.5 사용자는 인증서와 전자서명으로 서비스 서버 접속요청&lt;/p&gt;
&lt;p&gt;3.6 서비스 서버는 검증기관에 인증서의 유효성검사 요청 후 서비스 제공&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;4.&amp;nbsp;key&amp;nbsp;사용방식&amp;nbsp;&lt;/p&gt;</description>
      <category>Computer Science/WEB</category>
      <author>짠백이</author>
      <guid isPermaLink="true">https://solt.tistory.com/82</guid>
      <comments>https://solt.tistory.com/82#entry82comment</comments>
      <pubDate>Tue, 29 Sep 2020 00:29:35 +0900</pubDate>
    </item>
    <item>
      <title>Cloud Service 개념 및 모델</title>
      <link>https://solt.tistory.com/80</link>
      <description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;br /&gt;1. 클라우드 개념&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;&amp;nbsp;1.1 정의 : cloud 는 사전적인 정의로 구름이라는 의미이며, 구름에 싸여 보이지않는 컴퓨팅 자원을 원하는대로 활용 할 수 있다는 의미입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;-&amp;nbsp;예시&amp;nbsp;:&amp;nbsp;구글&amp;nbsp;드라이브(SaaS)&amp;nbsp;,&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;1.2 장점&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- 높은 확장성&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- 하드웨어 관리로부터의 자유로움&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- 다양한 편의 기능 (자동백업, 로드밸런싱 등)&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;1.3 단점&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- 민감한 데이터&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- 클라우드 종속성&lt;br /&gt;&lt;br /&gt;&amp;nbsp;1.4 &lt;span style=&quot;color: #333333;&quot;&gt;On-premise VS Cloud &lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;* &lt;span style=&quot;color: #333333;&quot;&gt;On-premise : 자체적으로 보유한 서버로 서비스를 운영하는 환경&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 127px;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;On-premise&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;Cloud&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;span&gt;초기도입비용&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;span&gt;일회성 비용으로 구매시 많은 비용예산이 소요됨&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;span&gt;월정액기반으로 사용한만큼 요금을 지불&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;span&gt;인력운영비&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;span&gt;시스템 엔지니어의 업무 증대&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;( 서버 운영 및 관리/ 전산실 유지관리 등)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;span&gt;시스템 엔지니어의 업무 감소&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;span&gt;활용성/ 효율성&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;span&gt;최대용량을 산정하여 시스템설계가 이루어져 자원낭비요소가 있음&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;span&gt;시스템 설계시 서버사양이 과도하게 설정할 필요없이&lt;/span&gt;&lt;br /&gt;&lt;span&gt;운영상에 맞게 시스템 증설이 가능함&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;&lt;span&gt;구축&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;&lt;span&gt;장비의 수급과 기타 인프라조건에 의해 구축기간이&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;최소 2주이상 소요&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;&lt;span&gt;늦어&lt;/span&gt;&lt;span&gt;도 1일 만에 시스템 변경 및 구축이 가능&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;span&gt;확장성 / 민첩성&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;span&gt;클라우드에 비해 많이 느림&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;span&gt;원하는 만큼 예산상황에 맞게 쉽게 시스템 증설이 가능&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;span&gt;트래픽 비용&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&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: 18px;&quot;&gt;&lt;span&gt;기본적으로 클라우드기준으로 outbound 트래픽에 기준이상 초과시 트래픽 요금 부과&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;2. 클라우드 서비스 모델&amp;nbsp; &lt;br /&gt;&lt;br /&gt;2.1 IaaS (Infrastructure as a Service : 아이아스)&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- 시스템 자원(&lt;span style=&quot;color: #333333;&quot;&gt;Infrastructure&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;)을 클라우드로 제공하는 서비스&lt;br /&gt;&lt;br /&gt;2.2 PaaS (Platform as a Service : 파스)&amp;nbsp;&lt;br /&gt;&amp;nbsp;- Application 을 개발하기위한 기반 (platform) 을 제공하는 서비스&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- 예 ) MS Azure, Google App Engine&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;2.3 SaaS (Software as a Service : 사스)&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;- Software application 을 배포하기 위한 서비스&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- 예) 네이버 클라우드, 구글 드라이브 등&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;* model : java에서 특정한 목적을 가진 class를 정의하고 필요에 따라 instance 를 생성하는것 처럼 특정 목적을 위해 정의된 개념&amp;nbsp; (&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;class&amp;nbsp; = 서비스 = instance )&lt;/span&gt;&lt;/p&gt;</description>
      <category>Computer Science/Network</category>
      <category>cloud</category>
      <author>짠백이</author>
      <guid isPermaLink="true">https://solt.tistory.com/80</guid>
      <comments>https://solt.tistory.com/80#entry80comment</comments>
      <pubDate>Sun, 26 Jul 2020 23:01:57 +0900</pubDate>
    </item>
    <item>
      <title>VPN과 SDP의 이해</title>
      <link>https://solt.tistory.com/79</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;1 VPN&lt;/h2&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1.1 VPN 개념&lt;/h4&gt;
&lt;p&gt;- 정의 : Virtual Private Network 의 약자로 직역하면 가상의 사설 네트워크입니다.&amp;nbsp; public network (=internet) 에서 사설네트워크를 사용하는것처럼 구현하는 기술 또는 장비를 말합니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;- 장점 : network 관리 및 운영비용 절감, 기업 network 의 유동성확보&amp;nbsp;&lt;br /&gt;- 단점 : 서비스를 제공하는 web server 에서 사용자를 인증하기 때문에 보안이 취약함, 표준화가 되어있지않음, QoS (Quality of Service)가 보장되지않음 등&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;- 사용예시 : 본사와 지사간의 네트워크 연결, 재택근무자가 회사의 네트워크에 접속 등&amp;nbsp;&lt;br /&gt;&lt;br /&gt;1.2&amp;nbsp;VPN&amp;nbsp;프로토콜&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1.2.1 PPTP&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- 장점 : 속도가 빠름, 거의 모든 플랫폼에 클라이언트가 내장됨 (window 등), 설치가 간편&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- 단점 : 보안위협이 존재함, 128비트의 암호화로 제한된 프로토콜&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;1.2.2 L2PT 및 IPSec&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;- 장점 : 모든 현대 운영체제에서 사용이 가능함&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;- 단점 : 속도가 느리며 NSA위협이 존재함&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;1.2.3 OpenVPN&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;- 장점 : 대부분의 방화벽을 우회 할 수 있음, 현재까지 가장 안전한 프로토콜,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;- 단점 : 설정이 까다로움, 클라이언트 프로그램 필수&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;1.2.4 SSTP&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;- 장점 : 대부분의 방화벽을 우회 할 수 있음&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;- 단점 : MS 독점소유로 백도어 검사 불가능&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;br /&gt;1.3 VPN 구성도&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;&amp;nbsp; -&amp;nbsp;일반적인&amp;nbsp;public&amp;nbsp;network&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;public network.png&quot; data-origin-width=&quot;549&quot; data-origin-height=&quot;176&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DDMzJ/btqEFCtO5UX/pIc1w8QON2m09pI1D2YIQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DDMzJ/btqEFCtO5UX/pIc1w8QON2m09pI1D2YIQ0/img.png&quot; data-alt=&quot;public network&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DDMzJ/btqEFCtO5UX/pIc1w8QON2m09pI1D2YIQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDDMzJ%2FbtqEFCtO5UX%2FpIc1w8QON2m09pI1D2YIQ0%2Fimg.png&quot; data-filename=&quot;public network.png&quot; data-origin-width=&quot;549&quot; data-origin-height=&quot;176&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;public network&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&amp;nbsp; -&amp;nbsp;VPN으로&amp;nbsp;구성한&amp;nbsp;private&amp;nbsp;network&amp;nbsp;(1)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;pravite network 1.png&quot; data-origin-width=&quot;554&quot; data-origin-height=&quot;327&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eh8NvB/btqEF527rTp/chbnePLjjK3K3wfc3v7gu0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eh8NvB/btqEF527rTp/chbnePLjjK3K3wfc3v7gu0/img.png&quot; data-alt=&quot;private network 1&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eh8NvB/btqEF527rTp/chbnePLjjK3K3wfc3v7gu0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Feh8NvB%2FbtqEF527rTp%2FchbnePLjjK3K3wfc3v7gu0%2Fimg.png&quot; data-filename=&quot;pravite network 1.png&quot; data-origin-width=&quot;554&quot; data-origin-height=&quot;327&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;private network 1&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&amp;nbsp; -&amp;nbsp;VPN으로&amp;nbsp;구성한&amp;nbsp;private&amp;nbsp;network&amp;nbsp;(2)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;pravite network 2.png&quot; data-origin-width=&quot;570&quot; data-origin-height=&quot;290&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nD7rK/btqEFJzuWfY/Mg1V9ifWmF9Ff7qSierVj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nD7rK/btqEFJzuWfY/Mg1V9ifWmF9Ff7qSierVj1/img.png&quot; data-alt=&quot;private network 2&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nD7rK/btqEFJzuWfY/Mg1V9ifWmF9Ff7qSierVj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnD7rK%2FbtqEFJzuWfY%2FMg1V9ifWmF9Ff7qSierVj1%2Fimg.png&quot; data-filename=&quot;pravite network 2.png&quot; data-origin-width=&quot;570&quot; data-origin-height=&quot;290&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;private network 2&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;&amp;nbsp; * 참고 : VPN server의 위치는 client 가 접속 할 수 있는 환경이라면 제약이 없습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&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;br /&gt;2. SDP&lt;/h2&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2.1 SDP 개념&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;2.1.1 정의 : Sotfware Defined Perimeter 의 약자로 직역하면 소프트웨어 정의 경계입니다. 이를 조금 말랑하게 이해를 해보면 &lt;span style=&quot;color: #ee2323;&quot;&gt;SDP의 설정에 따라서 사용자가 사용 할 수 있는 소프트웨어의 경계가 정해진다는 느낌입니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;2.1.2 특징&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1) Zero-Trust 보안 : 신원을 기반으로 화이트리스트에 따라 인증 (사람,장비)&lt;/p&gt;
&lt;p&gt;2) data chanel 필요 : SDP는 client (사용자)를 인증해주는 역활을 담당하기 때문에 client 와 web server 간에 data를&lt;/p&gt;
&lt;p&gt;전송하는 역활을 하는 server와 연동하여 사용해야 합니다. (VPN server , web proxy server 등)&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;br /&gt;2.2&amp;nbsp; SDP 구성도&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;sdp 구성.png&quot; data-origin-width=&quot;565&quot; data-origin-height=&quot;384&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BHju8/btqEF59TeU2/0BzilpRkkksz0gIPgtIZD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BHju8/btqEF59TeU2/0BzilpRkkksz0gIPgtIZD1/img.png&quot; data-alt=&quot;SDP 구성도 (with VPN)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BHju8/btqEF59TeU2/0BzilpRkkksz0gIPgtIZD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBHju8%2FbtqEF59TeU2%2F0BzilpRkkksz0gIPgtIZD1%2Fimg.png&quot; data-filename=&quot;sdp 구성.png&quot; data-origin-width=&quot;565&quot; data-origin-height=&quot;384&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;SDP 구성도 (with VPN)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;br /&gt;2.3&amp;nbsp;VPN과&amp;nbsp;SDP&amp;nbsp;의&amp;nbsp;차이점&amp;nbsp;&lt;/h4&gt;
&lt;p&gt;&amp;nbsp;- VPN은&amp;nbsp; 실제 서비스를 운영하는 web server 에서 사용자를 인증을 하기 때문에 보안에 취약하고, SDP는 인증서버(=SDP contoller) 에서 사용자를 인증 하기 때문에 web server 가 block 상태가 되어 보안에 강합니다.&lt;/p&gt;
&lt;table style=&quot;letter-spacing: 0px; border-collapse: collapse; width: 100%; height: 72px;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;VPN&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;SDP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;신뢰&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;누구나 다 믿는다&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;아무도 믿지 않는다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;관리&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;black list 관리&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;white list 관리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;사용 대상&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;일반인 대상&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;특정 사용자 (군관계자, 회사직원 등)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Computer Science/WEB</category>
      <category>black network</category>
      <category>Network</category>
      <category>SDP</category>
      <category>VPN</category>
      <category>web proxy</category>
      <category>zero trust</category>
      <author>짠백이</author>
      <guid isPermaLink="true">https://solt.tistory.com/79</guid>
      <comments>https://solt.tistory.com/79#entry79comment</comments>
      <pubDate>Sat, 6 Jun 2020 23:10:05 +0900</pubDate>
    </item>
    <item>
      <title>Computer Network 구성 (with VM)</title>
      <link>https://solt.tistory.com/74</link>
      <description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이번 포스팅은 VM (Vitual Machine : 가상머신) 를 통해서 computer network의 구성을 파악하는것에 목적이있습니다. 그렇기 때문에 구체적인 VM의 설정방법에 대해서는 설명하지 않습니다.&lt;/p&gt;
&lt;p&gt;다만 용어와 네트워크 구성에 대해서는 초심자도 이해 할 수 있도록 서술하려고 노력하였으니 도움이 되길 바라겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;host PC 는 window7 이며 guest PC는 linux (centOS) 로 2개의 가상머신이 VM ware 에 설치되어있다는 전재하에 진행 할 것이며, 2개의 가상머신을 각각 guest A/B 로 칭하겠습니다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[환경]&lt;/p&gt;
&lt;p&gt;VM ware : VM ware workstation 16 pro 15.0.2&amp;nbsp;build-10952284&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;host PC : window 7&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;guest PC : linux (centOS 6.6)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[참고]&lt;/p&gt;
&lt;p&gt;해당 포스팅에 명시된 ip 또는 ip 대역은 고정된 값이아니기 때문에 편의에 따라 설정하시면 됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. 기초 용어&lt;/h2&gt;
&lt;p&gt;- computer : '계산을 하는 사람' 에서 유래되었으며 &lt;span style=&quot;color: #ee2323;&quot;&gt;'0과 1을 사용해서 계산을 하는 장비'&lt;/span&gt; 을 지칭하게 되었습니다. 특정 입력이 주어지면 프로그램에 의해 정해진 출력이 발생하는 특징이 있습니다.&lt;/p&gt;
&lt;p&gt;(ex) desktop PC , tablet PC, &lt;span style=&quot;color: #333333;&quot;&gt;smart phone, smart watch, AI speaker ...)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;- PC : Personal Computer 의 약자로 &lt;span style=&quot;color: #ee2323;&quot;&gt;개인용 컴퓨터&lt;/span&gt;를 의미합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;- computer network : computer간에 데이터를 송/수신하기 위해 사용하는 통신망 (network)입니다.&lt;/p&gt;
&lt;p&gt;(ex) internet, intranet )&lt;/p&gt;
&lt;p&gt;* 참고 : computer 라는 단어는 생략하는 경우가 많으나 정확한 명칭은 computer network입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;- VM : Virsual Masine 의 약자로써 직역하면 &lt;span style=&quot;color: #ee2323;&quot;&gt;가상 머신&lt;/span&gt;이라는 의미이며, host PC에 가상으로 머신 (=PC) 를 구축하여 사용 할 수 있는 software tool 입니다. (ex) VM ware , visual box 등)&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;- host PC : VM이 동작하기 위한 환경을 제공하는 &lt;span style=&quot;color: #ee2323;&quot;&gt;주체자 입장의 PC&lt;/span&gt; (= local PC) 입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;- guest PC : VM에서 host PC의 자원을 할당받아 사용하는 &lt;span style=&quot;color: #ee2323;&quot;&gt;손님 입장의 PC &lt;span style=&quot;color: #333333;&quot;&gt;입니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;- DHCP : Dynamic Host Configuration Protocol 의 약자로써 직역하면 동적 호스트 설정 통신 규약입니다.&amp;nbsp; 이는 DHCP server에서 보유하고있는 IP를 client에 유동적으로 할당하고 분배 할 수 있습니다.&lt;/p&gt;
&lt;p&gt;* VM ware에서는 DHCP server를 자체적으로 운용하면서 VM (=client) 에 IP를 할당해줄 수 있습니다.)&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;- NAT : network Address Translation 의 약자로써&amp;nbsp;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;사설 IP주소를 공인 IP주소로 바&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;꿔주는데 사용하는 통신망의 주소 변환기 또는 기술입니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;[사전적 정의 : 네트워크의 접근을 변환함]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;* 네트워크 기본 참고용 링크 : &lt;a href=&quot;https://solt.tistory.com/69&quot;&gt;https://solt.tistory.com/69&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. VM Network 종류&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;2.1 Bridged Network : host&lt;span style=&quot;color: #666666;&quot;&gt;와 guest를 연결하여 guest PC가 네트워킹하는 방식입니다. &lt;span style=&quot;color: #ee2323;&quot;&gt;host PC와 guest PC 사이에 다리(bridge)를 놓은것처럼 하나로 연결&lt;/span&gt;하여 두 개의 네트워크를 마치 하나의 네트워크처럼 사용합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;2.2 NAT Network : host network&lt;span style=&quot;color: #666666;&quot;&gt; 아래에 가상의 사설망을 구축하고 해당 망에 가상 머신들을 두는 구조를 가지고 있습니다. NAT 가 연결되어 있기 때문에 사설망 내부의 guest PC가 인터넷에 연결 할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;2.3 Host-only Network : host network &lt;span style=&quot;color: #666666;&quot;&gt;아래에 사설망을 구축하고 해당망에 가상 머신들을 두는 구조를 가지고 있는 방식입니다. &lt;span style=&quot;color: #666666;&quot;&gt;NAT networking과는 달리 NAT 가 연결되어 있지 않기 때문에 &lt;span style=&quot;color: #ee2323;&quot;&gt;guest PC에서는 host PC를 제외한 외부로의 연결은 불가능(=host-only)&lt;/span&gt;합니다.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;2.4 Custom Network : &lt;span style=&quot;color: #666666;&quot;&gt;NAT 나 Bridged 를 구성하기 위해서가 아닌 Host-only networking을 추가로 구성하고자 할 때 주로 사용됩니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;*초록 : host only&lt;/p&gt;
&lt;p&gt;*파랑 : NAT&lt;/p&gt;
&lt;p&gt;*주황 : &lt;span style=&quot;color: #333333;&quot;&gt;Bridged&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;network 구성도.png&quot; data-origin-width=&quot;665&quot; data-origin-height=&quot;417&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/txnqo/btqFAqyTg4b/8SLqbfaJT1pF3KKLa8mm4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/txnqo/btqFAqyTg4b/8SLqbfaJT1pF3KKLa8mm4K/img.png&quot; data-alt=&quot;VM network&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/txnqo/btqFAqyTg4b/8SLqbfaJT1pF3KKLa8mm4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ftxnqo%2FbtqFAqyTg4b%2F8SLqbfaJT1pF3KKLa8mm4K%2Fimg.png&quot; data-filename=&quot;network 구성도.png&quot; data-origin-width=&quot;665&quot; data-origin-height=&quot;417&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;VM network&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. VM ware 이용한 네트워크 구성&lt;/h2&gt;
&lt;p&gt;(&lt;span style=&quot;background-color: #99cefa;&quot;&gt;NAT networking&lt;/span&gt;과 &lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;background-color: #a6bc00;&quot;&gt;Host-only networking&lt;/span&gt;)&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;3.1 Virtual Network Editor 설정&lt;/p&gt;
&lt;p&gt;[VM ware : Edit tab -&amp;gt; virtual network editor]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- VMnet2 SW에 &lt;span style=&quot;color: #333333;&quot;&gt;Host-only networking&lt;/span&gt; 대역을 192.168.192.0 으로 설정하였으며,&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;VMnet8 SW에 &lt;span style=&quot;color: #333333;&quot;&gt;NAT networking&lt;/span&gt; 대역을 192.168.64.0이며 gateway는192.168.64.2로 설정하였습니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;VM ware network 설정.png&quot; data-origin-width=&quot;623&quot; data-origin-height=&quot;535&quot; width=&quot;439&quot; height=&quot;376&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xGiOB/btqDH1gFYvr/DFySJG9T8bnDKdzE6XWph0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xGiOB/btqDH1gFYvr/DFySJG9T8bnDKdzE6XWph0/img.png&quot; data-alt=&quot;Network switch&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xGiOB/btqDH1gFYvr/DFySJG9T8bnDKdzE6XWph0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxGiOB%2FbtqDH1gFYvr%2FDFySJG9T8bnDKdzE6XWph0%2Fimg.png&quot; data-filename=&quot;VM ware network 설정.png&quot; data-origin-width=&quot;623&quot; data-origin-height=&quot;535&quot; width=&quot;439&quot; height=&quot;376&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Network switch&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;gateway 설정.png&quot; data-origin-width=&quot;622&quot; data-origin-height=&quot;581&quot; width=&quot;440&quot; height=&quot;411&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVnKFk/btqDJgRG0EZ/wBdXmRKOrwwmqj5ujSekw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVnKFk/btqDJgRG0EZ/wBdXmRKOrwwmqj5ujSekw1/img.png&quot; data-alt=&quot;Gateway&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVnKFk/btqDJgRG0EZ/wBdXmRKOrwwmqj5ujSekw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVnKFk%2FbtqDJgRG0EZ%2FwBdXmRKOrwwmqj5ujSekw1%2Fimg.png&quot; data-filename=&quot;gateway 설정.png&quot; data-origin-width=&quot;622&quot; data-origin-height=&quot;581&quot; width=&quot;440&quot; height=&quot;411&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Gateway&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;3.2 guest 하드웨어 설정 (in VM ware)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;guest A 하드웨어 설정상태(pas).png&quot; data-origin-width=&quot;563&quot; data-origin-height=&quot;409&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbeJPl/btqFAeSZIY6/vsMv60gKnMZjcUSW9Zgxd1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbeJPl/btqFAeSZIY6/vsMv60gKnMZjcUSW9Zgxd1/img.png&quot; data-alt=&quot;guest A&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbeJPl/btqFAeSZIY6/vsMv60gKnMZjcUSW9Zgxd1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbeJPl%2FbtqFAeSZIY6%2FvsMv60gKnMZjcUSW9Zgxd1%2Fimg.png&quot; data-filename=&quot;guest A 하드웨어 설정상태(pas).png&quot; data-origin-width=&quot;563&quot; data-origin-height=&quot;409&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;guest A&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;guest B 하드웨어 설정상태(gate) .png&quot; data-origin-width=&quot;578&quot; data-origin-height=&quot;407&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pcmVV/btqFz3RGMDz/VEbmuR0AZrdZby7TI38Jsk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pcmVV/btqFz3RGMDz/VEbmuR0AZrdZby7TI38Jsk/img.png&quot; data-alt=&quot;guest B&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pcmVV/btqFz3RGMDz/VEbmuR0AZrdZby7TI38Jsk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpcmVV%2FbtqFz3RGMDz%2FVEbmuR0AZrdZby7TI38Jsk%2Fimg.png&quot; data-filename=&quot;guest B 하드웨어 설정상태(gate) .png&quot; data-origin-width=&quot;578&quot; data-origin-height=&quot;407&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;guest B&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;3.3 guest network 설정 (in linux)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- 설정 : guest 별로 linux의 network adapter 설정&amp;nbsp; ( &lt;span style=&quot;color: #333333;&quot;&gt;ifcfg-eth0,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;ifcfg-eth1 ) 을 하고 네트워크 서비스를 재시작하면 route table에 적용된것을 확인 할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;[shell script 명령어]&lt;/p&gt;
&lt;p&gt;/etc/sysconfig/network-script/ifcfg-eth1&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;/etc/sysconfig/network-script/ifcfg-eth2&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;/etc/udev/rules.d/70-persistent-net.rules&lt;/p&gt;
&lt;p&gt;service network restart&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- route table 확인&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;pas route table.png&quot; data-origin-width=&quot;676&quot; data-origin-height=&quot;177&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPjOQu/btqDH1ufIzg/NYv7EeMx87iLioypmpCWL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPjOQu/btqDH1ufIzg/NYv7EeMx87iLioypmpCWL0/img.png&quot; data-alt=&quot;A device&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPjOQu/btqDH1ufIzg/NYv7EeMx87iLioypmpCWL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPjOQu%2FbtqDH1ufIzg%2FNYv7EeMx87iLioypmpCWL0%2Fimg.png&quot; data-filename=&quot;pas route table.png&quot; data-origin-width=&quot;676&quot; data-origin-height=&quot;177&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;A device&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;gate route table.png&quot; data-origin-width=&quot;661&quot; data-origin-height=&quot;169&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bD71J5/btqDGHXgkUt/QdCUF8WL6Jr1kTn1zsFae1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bD71J5/btqDGHXgkUt/QdCUF8WL6Jr1kTn1zsFae1/img.png&quot; data-alt=&quot;B device&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bD71J5/btqDGHXgkUt/QdCUF8WL6Jr1kTn1zsFae1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbD71J5%2FbtqDGHXgkUt%2FQdCUF8WL6Jr1kTn1zsFae1%2Fimg.png&quot; data-filename=&quot;gate route table.png&quot; data-origin-width=&quot;661&quot; data-origin-height=&quot;169&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;B device&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;3.4 network 구성도&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- VM ware 관점의 구성&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;VM network.png&quot; data-origin-width=&quot;667&quot; data-origin-height=&quot;536&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbotF9/btqFAp02VXy/F0NrHLeawtrekahX1ZpCM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbotF9/btqFAp02VXy/F0NrHLeawtrekahX1ZpCM1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbotF9/btqFAp02VXy/F0NrHLeawtrekahX1ZpCM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbotF9%2FbtqFAp02VXy%2FF0NrHLeawtrekahX1ZpCM1%2Fimg.png&quot; data-filename=&quot;VM network.png&quot; data-origin-width=&quot;667&quot; data-origin-height=&quot;536&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. network 구성예시 (망연계 솔루션)&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;- 2개의 window 가상머신을 만들고 각각 &lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;VM3와 VM4 네트워크&lt;/span&gt;에 연결했을 때의 네트워크 관점의 구성도입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;- VM3 와 VM4에 연결된 각각의 네트워크는 논리적으로 분리되어 있으며 A,B device 가 VM2 네트워크를 사용하여 중계 할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;- VM8 네트워크로 A, B device 를 관리 할 수 있고 host 장비를 통해서 internet 으로도 통신이 가능합니다&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;망연계 솔루션.png&quot; data-origin-width=&quot;750&quot; data-origin-height=&quot;493&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/X1qKY/btqFArxLLFa/IlFt39Vw0KTxvKuAtUPdKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/X1qKY/btqFArxLLFa/IlFt39Vw0KTxvKuAtUPdKK/img.png&quot; data-alt=&quot;망연계 솔루션 구성&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/X1qKY/btqFArxLLFa/IlFt39Vw0KTxvKuAtUPdKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FX1qKY%2FbtqFArxLLFa%2FIlFt39Vw0KTxvKuAtUPdKK%2Fimg.png&quot; data-filename=&quot;망연계 솔루션.png&quot; data-origin-width=&quot;750&quot; data-origin-height=&quot;493&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;망연계 솔루션 구성&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5. reference link&lt;/h2&gt;
&lt;p&gt;5.1 VMware의 네트워크 구성과 연결의 이해 : &lt;a href=&quot;https://unabated.tistory.com/entry/VMware-%EC%9D%98-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EA%B5%AC%EC%84%B1%EA%B3%BC-%EC%97%B0%EA%B2%B0%EC%9D%98-%EC%9D%B4%ED%95%B4&quot;&gt;https://unabated.tistory.com/entry/VMware-%EC%9D%98-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EA%B5%AC%EC%84%B1%EA%B3%BC-%EC%97%B0%EA%B2%B0%EC%9D%98-%EC%9D%B4%ED%95%B4&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;5.2 VM ware 네트워스 설정 방법 : &lt;a href=&quot;http://blog.daum.net/_blog/BlogTypeView.do?blogid=0gub1&amp;amp;articleno=14&amp;amp;_bloghome_menu=recenttext&quot;&gt;http://blog.daum.net/_blog/BlogTypeView.do?blogid=0gub1&amp;amp;articleno=14&amp;amp;_bloghome_menu=recenttext&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;-------------------------------------------------------------------------------------------------------------&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;항상 정확한 정보를 공유하고자 노력하고있지만 내용에 개선이 필요한 부분이 있을 수 도 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;u&gt;개선이 필요하다고 판단되는 부분이 있을 경우 댓글로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/u&gt;&lt;u&gt;조언해주시면 감사하겠습니다.&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;u&gt;&lt;span&gt;* 해당 포스팅이 도움이되셨다면 공감과 댓글 부탁드릴께요 ㅎㅎ&lt;/span&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;------------------------------------------------------------------------------------------------------------&lt;/p&gt;</description>
      <category>Computer Science/Network</category>
      <category>DHCP</category>
      <category>NAT</category>
      <category>Network</category>
      <category>Virsual Network</category>
      <category>VMware</category>
      <category>망연계</category>
      <author>짠백이</author>
      <guid isPermaLink="true">https://solt.tistory.com/74</guid>
      <comments>https://solt.tistory.com/74#entry74comment</comments>
      <pubDate>Sun, 26 Apr 2020 14:54:34 +0900</pubDate>
    </item>
    <item>
      <title>[Thread] 동기화 이슈 처리방법 (java)</title>
      <link>https://solt.tistory.com/78</link>
      <description>&lt;p&gt;다수의 thread가 동작하는 muti thread는 자원의 충돌을 방지하기위해 '동기화' 에 대응해줘야하는 숙명을 갖고있습니다. 이번 포스팅에서는 java의 synchronized keyword 로 동기화한 소스코드에 대해 살펴보고 메모리 구조 (stack, heap) 까지 확인해보겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. 동기화&amp;nbsp;&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;1.1 동기화 정의&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- 동기화의 사전적 정의는 작업들(task)사이에 수행시기를 맞추는것이며, thread는 데이터의 충돌이 발생하지 않도록 하기 위해 하나의 thread가 자원을 사용하고 있을 경우 해당 자원을 lock 하여 다른 thread의 접근을 막는것을 의미합니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;1.2 &lt;span style=&quot;color: #333333;&quot;&gt;muti thread 자원의 충돌 원인&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; - 하나의 자원 (=instance)를 다수의 thread가 사용하는 동작 환경으로 인해 발생&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;thread 충돌.png&quot; data-origin-width=&quot;685&quot; data-origin-height=&quot;492&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baEVGT/btqDDZcimU9/zsHOMCkg4yMWc9nHFYIyrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baEVGT/btqDDZcimU9/zsHOMCkg4yMWc9nHFYIyrK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baEVGT/btqDDZcimU9/zsHOMCkg4yMWc9nHFYIyrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaEVGT%2FbtqDDZcimU9%2FzsHOMCkg4yMWc9nHFYIyrK%2Fimg.png&quot; data-filename=&quot;thread 충돌.png&quot; data-origin-width=&quot;685&quot; data-origin-height=&quot;492&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;1.3 동기화 종류&lt;/p&gt;
&lt;p&gt;&amp;nbsp; - function 동기화 (함수)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; - variable 동기화 (변수)&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. function 동기화&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;2.1 소스코드&lt;/p&gt;
&lt;pre id=&quot;code_1587639211213&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 계좌관리 클래스
class Account{
	int balance = 1000;		// 계좌 잔액 (DB 역활)
	
	// 잔액을 차감하는 함수 [lock 대상]
	 public synchronized void withdraw(int money) {		
		 
		 if(balance &amp;gt;= money) {
			balance -= money;	// 누적 차감 
			 try {
				 Thread.sleep(1000);	// 1000ms=1s		
			 }catch(Exception e) {
				e.printStackTrace(); 
			 }
		 }
	 }
}


// thread 구현체
class RealAccount implements Runnable{
	
	Account acc = new Account();			// 계좌관리 객체 생성 [공통 자원]
	
    // Thread의 멤버 함수 start() 호출 시 해당 함수가 호출됨
	@Override
	public void run() {
		
		while(acc.balance &amp;gt; 0) {
			int money = (int)(Math.random()*3+1)  * 100;	// 100,200,300  중 렌덤
			acc.withdraw(money);
			
			System.out.println(&quot;-------------------------------&quot;);
			System.out.println(&quot;[&quot;+Thread.currentThread().getName() + &quot;] 잔액 : &quot;+acc.balance);		

		}
	}
}


class ThreadTest {
	public static void main(String arg[]) {
		Runnable run = new RealAccount();
		
		Thread t1 = new Thread(run, &quot;thread 1&quot;);	// RealAccount 구현체 사용
		Thread t2 = new Thread(run, &quot;thread 2&quot;);	// RealAccount 구현체 사용
		
		t1.start();
		t2.start();

	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;위의 소스는 2개의 thread 가 하나의 자원 (=Account 객체)을 동시에 사용하는 경우입니다. thread 1가 Account 객체의 멤버 함수 (=withdraw함수)를 사용 중 일 때 thread 2가 해당 멤버 함수에 접근하지 못하도록 막아줍니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;thread 2 는 실행 대기중으로 전환되고 thread 1의 실행이 종료되면 이후 해당 멤버 함수 (=withdraw함수) 를 사용 할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;* &lt;span style=&quot;background-color: #f89009; color: #000000;&quot;&gt;참고&lt;/span&gt; : 해당 소스에서는 사용한 두개의 thread는 같은 기능을 하는 목적이 있기 때문에, 동일한 구현체 (RealAccount 객체) 를 사용하였으나 별도의 구현체를 정의하여 사용 할 수 도 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;2.2 실행결과&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;thread 실행결과.png&quot; data-origin-width=&quot;397&quot; data-origin-height=&quot;379&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baMJgo/btqDGHH3wTu/ly6i35VVgRnUxkLBwnMAbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baMJgo/btqDGHH3wTu/ly6i35VVgRnUxkLBwnMAbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baMJgo/btqDGHH3wTu/ly6i35VVgRnUxkLBwnMAbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaMJgo%2FbtqDGHH3wTu%2Fly6i35VVgRnUxkLBwnMAbK%2Fimg.png&quot; data-filename=&quot;thread 실행결과.png&quot; data-origin-width=&quot;397&quot; data-origin-height=&quot;379&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;2.3 논리적 구조&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;111.png&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;408&quot; width=&quot;436&quot; height=&quot;295&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kVy68/btqDJfrlsjY/eKTKCQh9pIRvd5UQ0ETqq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kVy68/btqDJfrlsjY/eKTKCQh9pIRvd5UQ0ETqq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kVy68/btqDJfrlsjY/eKTKCQh9pIRvd5UQ0ETqq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkVy68%2FbtqDJfrlsjY%2FeKTKCQh9pIRvd5UQ0ETqq0%2Fimg.png&quot; data-filename=&quot;111.png&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;408&quot; width=&quot;436&quot; height=&quot;295&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;2.4 메모리 구조 (stack, heap)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;thread 구조.png&quot; data-origin-width=&quot;705&quot; data-origin-height=&quot;339&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uRcdv/btqDImEuJwv/cMd6oBWMCrDUUkkz9yPkPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uRcdv/btqDImEuJwv/cMd6oBWMCrDUUkkz9yPkPk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uRcdv/btqDImEuJwv/cMd6oBWMCrDUUkkz9yPkPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuRcdv%2FbtqDImEuJwv%2FcMd6oBWMCrDUUkkz9yPkPk%2Fimg.png&quot; data-filename=&quot;thread 구조.png&quot; data-origin-width=&quot;705&quot; data-origin-height=&quot;339&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. variable 동기화&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;3.1 소스코드&lt;/p&gt;
&lt;pre id=&quot;code_1587642205695&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// thread 구현체 
public class RealAccount implements Runnable {
	// 다른 위치에서 현재 thread의 상태를 확인하기위한  flag (false : 종료상태, true : 실행상태 )
	private static Boolean isExecuting = false;
    
    Account acc = new Account();	// 계좌관리 객체 생성  [공통자원]
    
    @Override
    public void run() {
    	while(true){
        	int curTime = 0; 
            Calendar m_Calendar = Calendar.getInstance(); 
            if(!jobCheckin()) return;
            
            curTime = m_Calendar.get(Calendar.HOUR_OF_DAY);		//현재 시간 (1, 2, ... )
            
            if( ( curTime == configTime) ){ 	// 현재시간 == 설정된 시간
            try{
            	int money = (int)(Math.random()*3+1)  * 100;	// 100,200,300  중 랜덤
                acc.withdraw(money);
                System.out.println(&quot;-------------------------------&quot;);
                System.out.println(&quot;[&quot;+Thread.currentThread().getName() + &quot;] 잔액 : &quot;+acc.balance);		
                }catch(Exception e){
                e.printStackTrace();
                }
            } // if() END
            try {
            jobCheckout();					// thread 종료상태 전환
            Thread.sleep(60 * 60 * 1000 );	// thread state : 1Hour 일시정지
            } catch (Exception e) {}
        } // while(true) END
    } // run() END 
    
    private static boolean jobCheckin() {
    	synchronized (isExecuting) {
    	if (!isExecuting) {
        	isExecuting = true;
        	return true;
        } else {
        	return false;
        }
        }
    }
    private static void jobCheckout() {
    	synchronized (isExecuting) {
        	isExecuting = false;
        }
    }
} &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;위의 소스코드는 thread 구현체 부분이며 해당 구현체를 호출하여 사용하기전에 jobCheckin() 함수로 flag 변수 (=isExecuting)를 확인 후 사용하는 소스코드입니다.&lt;/p&gt;
&lt;p&gt;flag 변수를 업데이트 (ture or false) 시 synchronized 키워드로 변수를 lock하여 동기화처리를 해주었습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;-------------------------------------------------------------------------------------------------------------&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;항상 정확한 정보를 공유하고자 노력하고있지만 내용에 개선이 필요한 부분이 있을 수 도 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;u&gt;개선이 필요하다고 판단되는 부분이 있을 경우 댓글로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/u&gt;&lt;u&gt;조언해주시면 감사하겠습니다.&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;u&gt;&lt;span&gt;* 해당 포스팅이 도움이되셨다면 공감과 댓글 부탁드릴께요 ㅎㅎ&lt;/span&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;------------------------------------------------------------------------------------------------------------&lt;/p&gt;</description>
      <category>Computer Science/common</category>
      <author>짠백이</author>
      <guid isPermaLink="true">https://solt.tistory.com/78</guid>
      <comments>https://solt.tistory.com/78#entry78comment</comments>
      <pubDate>Thu, 23 Apr 2020 19:34:14 +0900</pubDate>
    </item>
    <item>
      <title>ElasticSearch 개념 및 구조</title>
      <link>https://solt.tistory.com/77</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. elasticsearch 개념&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;1.1 정의&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- 대용량 데이터를 '실시간에 가깝게' 처리하는 java 기반의 검색 엔진&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- 예를들면 하루에 300만 row의 트래픽 데이터가 수집되는 솔루션이라면 RDB가 감당하지 못하기 때문에 elasticsearch을 사용합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&amp;nbsp;1.2 ELK 구성&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- ELK : &lt;span&gt;Elastic사 에서 제공하는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Elasticsearch&lt;span&gt;, Logstash, Kibana의 세 가지 오픈 소스 프로젝트&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- Logstash : 실시간 로그를 수집/집계/파싱하여 elasticSearch로 전달&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- ElasticSearch : db역활&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- Kibana : ElasticSearch를 제어하고 데이터를 시작화하는 node.js 기반의 웹 브라우징 프로그램&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;1.3 elasticSearch 구성&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;elasticsearch 구성.PNG&quot; data-origin-width=&quot;986&quot; data-origin-height=&quot;410&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/caMZzJ/btqDyMLsNnF/9zFtuXEpAZmMM7Ji00ixpK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/caMZzJ/btqDyMLsNnF/9zFtuXEpAZmMM7Ji00ixpK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/caMZzJ/btqDyMLsNnF/9zFtuXEpAZmMM7Ji00ixpK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcaMZzJ%2FbtqDyMLsNnF%2F9zFtuXEpAZmMM7Ji00ixpK%2Fimg.png&quot; data-filename=&quot;elasticsearch 구성.PNG&quot; data-origin-width=&quot;986&quot; data-origin-height=&quot;410&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. 기본용어&amp;nbsp; (RDB와 비교)&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;용어비교.PNG&quot; data-origin-width=&quot;405&quot; data-origin-height=&quot;166&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lVmVf/btqDB96grFr/YTWM3MeFKtjnYZdmLZQ3F0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lVmVf/btqDB96grFr/YTWM3MeFKtjnYZdmLZQ3F0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lVmVf/btqDB96grFr/YTWM3MeFKtjnYZdmLZQ3F0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlVmVf%2FbtqDB96grFr%2FYTWM3MeFKtjnYZdmLZQ3F0%2Fimg.png&quot; data-filename=&quot;용어비교.PNG&quot; data-origin-width=&quot;405&quot; data-origin-height=&quot;166&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;br /&gt;3. 대용량 데이터 처리&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;3.1 색인 (index) : 하나의 키워드가 하나의 id 를 갖는것&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; - keyword : id = 1 : 1&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; - ex) 요리도서 예시&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;= 가지튀김 : 24 page&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;= 냉채족발 : 51 page&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;= 도토리묵 : 78 page&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;3.2 역색인 (inverted index) : 하나의 키워드가 여러개의 id를 갖는것&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; - keyword : id = 1 : N&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; - ex) 요리도서 예시&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;= 가지튀김 : 24 , 28 , 31 page&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;= 냉채족발 : 51 , 62 page&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;= 도토리묵 : 78 , 80 , 93 page&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;3.3 RDB 보다 검색속도가 빠른이유 : 역색인&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. reference link&lt;/h2&gt;
&lt;p&gt;-&lt;span style=&quot;color: #333333;&quot;&gt;엘라스틱 서치 개념 :&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://12bme.tistory.com/171&quot;&gt;https://12bme.tistory.com/171&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;-역색인 : &lt;a href=&quot;https://esbook.kimjmin.net/06-text-analysis/6.1-indexing-data&quot;&gt;https://esbook.kimjmin.net/06-text-analysis/6.1-indexing-data&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;-------------------------------------------------------------------------------------------------------------&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;항상 정확한 정보를 공유하고자 노력하고있지만&lt;span&gt;&amp;nbsp;&lt;/span&gt;내용에 개선이 필요한 부분이 있을 수 도 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;u&gt;개선이 필요하다고 판단되는 부분이 있을 경우 댓글로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/u&gt;&lt;u&gt;조언해주시면 감사하겠습니다.&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;* 해당 포스팅이 도움이되셨다면 공감과 댓글 부탁드릴께요 ㅎㅎ&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;------------------------------------------------------------------------------------------------------------&lt;/p&gt;</description>
      <category>Computer Science/common</category>
      <category>elasticsearch</category>
      <category>elk</category>
      <category>역색인</category>
      <author>짠백이</author>
      <guid isPermaLink="true">https://solt.tistory.com/77</guid>
      <comments>https://solt.tistory.com/77#entry77comment</comments>
      <pubDate>Tue, 21 Apr 2020 21:08:55 +0900</pubDate>
    </item>
    <item>
      <title>[Thread] muti Process  VS muti Thread</title>
      <link>https://solt.tistory.com/76</link>
      <description>&lt;p&gt;지난 포스팅에서 thread에 대해 간단하게 확인해보았으며, 이번 포스팅에서는 muti process, muti thread 의 장단점에대해 확인해보겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. 공통점&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;- 동시에 두 가지 이상의 루틴을 실행 할 수 있는 역활&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. muti process (멀티 프로세스)&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;2.1 장점&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- 여러 process 중 하나가 죽어도 다른 process에 전이되지 않음&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- 현재 수행되고 있는 프로세스를 확인 할 수 있다 (linux 일 경우 ps명령어)&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;2.2 단점&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- &lt;span style=&quot;color: #333333;&quot;&gt;프로세스간에 메모리 공유가 비효율적&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- 프로세스간 통신을 위해 IPC를 사용해야함&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;process.PNG&quot; data-origin-width=&quot;682&quot; data-origin-height=&quot;488&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ctG6JB/btqDxKyI7ob/jLtf9KR38PTanOmzwm6sd1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ctG6JB/btqDxKyI7ob/jLtf9KR38PTanOmzwm6sd1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ctG6JB/btqDxKyI7ob/jLtf9KR38PTanOmzwm6sd1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FctG6JB%2FbtqDxKyI7ob%2FjLtf9KR38PTanOmzwm6sd1%2Fimg.png&quot; data-filename=&quot;process.PNG&quot; data-origin-width=&quot;682&quot; data-origin-height=&quot;488&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. muti thread (멀티 쓰레드)&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;3.1 장점&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- 하나의 프로세스가 다수 개의 작업을 쓰레드로 동시에 동작 할 수 있음&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- 스레드간에 메모리 공유가 효율적 (heap영역 공유)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;3.2 단점&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp;- 하나의 thread가 죽을 경우 다른 thread에 전이되어 같이 죽음&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;3.3 실사용 예시&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- 게임 프로그램상에서 동작하는 캐릭터들은 thread 단위로 동작함&lt;/p&gt;
&lt;p&gt;&amp;nbsp;(process : 메이플 스토리 , thread 1 : 아델, thread 2 : 패스파인더 )&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;thread.PNG&quot; data-origin-width=&quot;688&quot; data-origin-height=&quot;485&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rb7rk/btqDvY5Y1y0/lPfKwo7o3glqcn7WGOS1CK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rb7rk/btqDvY5Y1y0/lPfKwo7o3glqcn7WGOS1CK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rb7rk/btqDvY5Y1y0/lPfKwo7o3glqcn7WGOS1CK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Frb7rk%2FbtqDvY5Y1y0%2FlPfKwo7o3glqcn7WGOS1CK%2Fimg.png&quot; data-filename=&quot;thread.PNG&quot; data-origin-width=&quot;688&quot; data-origin-height=&quot;485&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. muti thread가 효율적인 이유&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;4.1 centext Switching 시 공유 메모리만큼 자원(시간) 손실이 적기 때문에 부하관리에 효율적&lt;/p&gt;
&lt;p&gt;&amp;nbsp;4.2 stack을 제외한 모든 메모리를 공유 할 수 있어서 효율적임&lt;/p&gt;
&lt;p&gt;&amp;nbsp;4.3 실사용 예시 (메이플 스토리 process)&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- 개별 영역&lt;/p&gt;
&lt;p&gt;&amp;nbsp; = [thread 1] stack 영역 : 아델 아이템 리스트&lt;/p&gt;
&lt;p&gt;&amp;nbsp; = [thread 2] stack 영역 : 패스파인더 아이템 리스트&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- 공유 영역&lt;/p&gt;
&lt;p&gt;&amp;nbsp; = [process] heap 영역 : 길드/친구 리스트&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;-------------------------------------------------------------------------------------------------------------&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;항상 정확한 정보를 공유하고자 노력하고있지만 내용에 개선이 필요한 부분이 있을 수 도 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;u&gt;개선이 필요하다고 판단되는 부분이 있을 경우 댓글로 &lt;/u&gt;&lt;u&gt;조언해주시면 감사하겠습니다.&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;u&gt;&lt;span&gt;* 해당 포스팅이 도움이되셨다면 공감과 댓글 부탁드릴께요 ㅎㅎ&lt;/span&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;------------------------------------------------------------------------------------------------------------&lt;/p&gt;</description>
      <category>Computer Science/common</category>
      <author>짠백이</author>
      <guid isPermaLink="true">https://solt.tistory.com/76</guid>
      <comments>https://solt.tistory.com/76#entry76comment</comments>
      <pubDate>Sat, 18 Apr 2020 18:22:42 +0900</pubDate>
    </item>
    <item>
      <title>[Thread] 기초</title>
      <link>https://solt.tistory.com/75</link>
      <description>&lt;p&gt;이번 포스팅은 OS관련 기초개념부터 thread 개념까지 확인해보겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. OS&amp;nbsp; (&lt;span style=&quot;color: #333333;&quot;&gt;Operating System)&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1.1 정의 :&amp;nbsp; &lt;span&gt;Operating은 '운영/가동' 의 의미를 가지고 있으며 IT적으로 해석하면 자원과 프로세스를 운영하는 시스템(=운영체제)을 말합니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;/span&gt;&amp;nbsp;1.2 용도에 따른 분류&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 개인용 : window&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 서버용 : linux (centOS, ubuntu ...)&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;* 참고 : 일반적으로 사용하는 용도에 따른 분류로 절대적이지는 않습니다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;* 자원 : data와 유사한 의미&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;br /&gt;2. program (프로그램)&lt;/h2&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2.1 정의 : 사전적 정의로는 진행계획이나 순서를 의미하며, IT관점에서의 computer program 은 특정 작업 (task)의 처리 방법과 순서를 기술한 명령어의 집합입니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;팀뷰어.PNG&quot; data-origin-width=&quot;117&quot; data-origin-height=&quot;120&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FsIWj/btqDx5JGO9X/AF0kZ2SGSAmBv57W9v8KTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FsIWj/btqDx5JGO9X/AF0kZ2SGSAmBv57W9v8KTK/img.png&quot; data-alt=&quot;프로그램 예시 (teamViewer 실행 전)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FsIWj/btqDx5JGO9X/AF0kZ2SGSAmBv57W9v8KTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFsIWj%2FbtqDx5JGO9X%2FAF0kZ2SGSAmBv57W9v8KTK%2Fimg.png&quot; data-filename=&quot;팀뷰어.PNG&quot; data-origin-width=&quot;117&quot; data-origin-height=&quot;120&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;프로그램 예시 (teamViewer 실행 전)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. deamon (데몬)&lt;/h3&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3.1 정의 : 백그라운드에서 process 단위로 실행되는 프로그램&amp;nbsp;&lt;br /&gt;&amp;nbsp;3.2&amp;nbsp;실행모드&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- standalone : 독립적으로 실행하며 OS 메모리에 상주하기 때문에 응답속도가 빠름&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- xineted : 슈퍼데몬이 다른 데몬을 관리하기 때문에 응답속도가 느림&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3.3 예시 (standalone)&amp;nbsp;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;- batch program&amp;nbsp; : 업무의 효율성과 시스템의 부하를 줄이기위해 특정시간에 일괄적으로 대량의 데이터를 처리하는 프로그램 (batch : 일괄)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- Cron : linux 스케줄러&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 메일서버 데몬 : 메일 서버에서 메일의 송/수신 체크하는 데몬&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 부팅 데몬 : linux 부팅 시 네트워크/하드웨어 설정을 위한 autobot&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. process (프로세스)&lt;/h2&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;4.1 정의 : 사전적인 정의로는 '진행/과정'의 의미가 있으며, IT적인 관점에서는 OS가 특정 작업(task)를 수행하기 위해 자원(memory)를 부여하고 관리하는 프로그램&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;( 즉, 실행 중인 프로그램)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;작업관리자.PNG&quot; data-origin-width=&quot;793&quot; data-origin-height=&quot;547&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bk7bXV/btqDxub47D5/LaeH9GkiUO6AWlevNVTsB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bk7bXV/btqDxub47D5/LaeH9GkiUO6AWlevNVTsB1/img.png&quot; data-alt=&quot;프로세스 예시 (팀뷰어 실행 후)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bk7bXV/btqDxub47D5/LaeH9GkiUO6AWlevNVTsB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbk7bXV%2FbtqDxub47D5%2FLaeH9GkiUO6AWlevNVTsB1%2Fimg.png&quot; data-filename=&quot;작업관리자.PNG&quot; data-origin-width=&quot;793&quot; data-origin-height=&quot;547&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;프로세스 예시 (팀뷰어 실행 후)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&amp;nbsp;4.2 OS 구조 (메모리관점)&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;process.PNG&quot; data-origin-width=&quot;699&quot; data-origin-height=&quot;484&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEIr8c/btqDx6uMAp5/KMwjXzrT5EnlbXPhsBDHb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEIr8c/btqDx6uMAp5/KMwjXzrT5EnlbXPhsBDHb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEIr8c/btqDx6uMAp5/KMwjXzrT5EnlbXPhsBDHb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEIr8c%2FbtqDx6uMAp5%2FKMwjXzrT5EnlbXPhsBDHb1%2Fimg.png&quot; data-filename=&quot;process.PNG&quot; data-origin-width=&quot;699&quot; data-origin-height=&quot;484&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;br /&gt;5. thread (쓰레드)&lt;/h2&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;5.1 정의 : 사전적인 정의로는 '가닥/줄기'의 의미가 있으며, IT적인 관점에서는 process의 가닥(=작업=task)을 의미합니다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&amp;nbsp;5.2 OS 구조 (메모리관점)&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;thread.PNG&quot; data-origin-width=&quot;668&quot; data-origin-height=&quot;492&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dhSbNJ/btqDxJmg8tt/jHzjqYHkR8FUHK1PRo10sK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dhSbNJ/btqDxJmg8tt/jHzjqYHkR8FUHK1PRo10sK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dhSbNJ/btqDxJmg8tt/jHzjqYHkR8FUHK1PRo10sK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdhSbNJ%2FbtqDxJmg8tt%2FjHzjqYHkR8FUHK1PRo10sK%2Fimg.png&quot; data-filename=&quot;thread.PNG&quot; data-origin-width=&quot;668&quot; data-origin-height=&quot;492&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;6. thread 동기화 이슈&lt;/h2&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;6.1 원인 &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;- 하나의 자원에 다수의 thread가 접근 할 수 있는 환경으로 인해 데이터 처리의 충돌이 발생&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;- data 안전성과 신뢰성 보장을위해 반드시 필요함&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;1.png&quot; data-origin-width=&quot;693&quot; data-origin-height=&quot;483&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjRVbX/btqDxtLrJn9/okQITLXxeGgjKVlzbfUWe0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjRVbX/btqDxtLrJn9/okQITLXxeGgjKVlzbfUWe0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjRVbX/btqDxtLrJn9/okQITLXxeGgjKVlzbfUWe0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjRVbX%2FbtqDxtLrJn9%2FokQITLXxeGgjKVlzbfUWe0%2Fimg.png&quot; data-filename=&quot;1.png&quot; data-origin-width=&quot;693&quot; data-origin-height=&quot;483&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;6.2 해결방법 (java)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;- synchronized 키워드&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;= 동작방식 : 현재 데이터를 사용하고있는 thread를 제외한 나머지 thread는 데이터에 접근 할 수 없도록 block&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;* 참고 : 동기화 이외에도 교착상태, 기아상태 이슈가 있음&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;7. refenrence&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;프로세스와 스레드의 차이 : &lt;a href=&quot;https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html&quot;&gt;https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;-------------------------------------------------------------------------------------------------------------&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;정확한 정보를 공유하고자 항상 신중하게 포스팅을 하고 있지만,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;내용에 개선이 필요한 부분이 있을 수 도 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;u&gt;추가적인&amp;nbsp;보완이&amp;nbsp;필요하다고 판단되는 부분이 있을 경우&amp;nbsp;댓글로&amp;nbsp;&lt;/u&gt;&lt;u&gt;조언해주시면 감사하겠습니다.&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;u&gt;&lt;span&gt;* 해당 포스팅이 도움이되셨다면 공감과 댓글 부탁드릴께요 ㅎㅎ&lt;/span&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;------------------------------------------------------------------------------------------------------------&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Computer Science/common</category>
      <category>daemon</category>
      <category>OS</category>
      <category>Process</category>
      <category>program</category>
      <category>thread</category>
      <author>짠백이</author>
      <guid isPermaLink="true">https://solt.tistory.com/75</guid>
      <comments>https://solt.tistory.com/75#entry75comment</comments>
      <pubDate>Sat, 18 Apr 2020 17:43:53 +0900</pubDate>
    </item>
  </channel>
</rss>