<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>FIX &amp;amp; FEP 그리고 IT 이야기</title>
    <link>https://fixfep.tistory.com/</link>
    <description>IT 현업에서 업무를 하면서 발생한 경험을 공유하기 위한 블로그입니다. 저에게는 그저 일상이 되어 버린 업무이지만 새롭게 이 길을 걷는 누군가에게는 작은 기여라도 할 수 있기를 기대해봅니다.</description>
    <language>ko</language>
    <pubDate>Sun, 17 May 2026 03:15:20 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>FIX &amp;amp; FEP</managingEditor>
    <image>
      <title>FIX &amp;amp; FEP 그리고 IT 이야기</title>
      <url>https://tistory1.daumcdn.net/tistory/3473209/attach/cd23aed3caad4db88fc47d200e151387</url>
      <link>https://fixfep.tistory.com</link>
    </image>
    <item>
      <title>오픈소스 라이선스에 대한 기본 상식</title>
      <link>https://fixfep.tistory.com/14</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;MIT License&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- MIT 허가서는 미국의 매사추세츠 공과대학교에서 자기 학교의 소프트웨어 공학도들을 돕기 위해 개발한 허가서이다.&amp;nbsp; &lt;br /&gt;&amp;nbsp;-&amp;nbsp;MIT&amp;nbsp;허가서를&amp;nbsp;따르는&amp;nbsp;소프트웨어를&amp;nbsp;개조한&amp;nbsp;제품을&amp;nbsp;반드시&amp;nbsp;오픈&amp;nbsp;소스로&amp;nbsp;배포해야&amp;nbsp;한다는&amp;nbsp;규정이&amp;nbsp;없으며,&amp;nbsp;GNU&amp;nbsp;일반&amp;nbsp;공중&amp;nbsp;허가서의&amp;nbsp;엄격함을&amp;nbsp;피하려는&amp;nbsp;사용자들에게&amp;nbsp;인기가&amp;nbsp;있다. &lt;br /&gt;&amp;nbsp;-&amp;nbsp;MIT&amp;nbsp;허가서는&amp;nbsp;GNU&amp;nbsp;일반&amp;nbsp;공중&amp;nbsp;허가서(GPL)등과&amp;nbsp;달리&amp;nbsp;카피&amp;nbsp;레프트는&amp;nbsp;아니며,&amp;nbsp;오픈&amp;nbsp;소스&amp;nbsp;여부에&amp;nbsp;관계없이&amp;nbsp;재사용을&amp;nbsp;인정하고&amp;nbsp;있다.&amp;nbsp; &lt;br /&gt;&amp;nbsp;-&amp;nbsp;BSD&amp;nbsp;라이선스를&amp;nbsp;기초로&amp;nbsp;작성된&amp;nbsp;BSD계열&amp;nbsp;라이선스&amp;nbsp;중의&amp;nbsp;하나이다.&amp;nbsp; &lt;br /&gt;&amp;nbsp;-&amp;nbsp;여러&amp;nbsp;가지&amp;nbsp;라이선스&amp;nbsp;중에서도&amp;nbsp;MIT&amp;nbsp;허가서는&amp;nbsp;매우&amp;nbsp;제한이&amp;nbsp;느슨한&amp;nbsp;라이선스라고&amp;nbsp;할&amp;nbsp;수&amp;nbsp;있다.&amp;nbsp; &lt;br /&gt;&amp;nbsp;-&amp;nbsp;이&amp;nbsp;허가서를&amp;nbsp;따르는&amp;nbsp;대표적&amp;nbsp;소프트웨어로&amp;nbsp;X&amp;nbsp;윈도&amp;nbsp;시스템(X11)이&amp;nbsp;있다. &lt;br /&gt;&amp;nbsp;-&amp;nbsp;MIT&amp;nbsp;라이선스는&amp;nbsp;미국&amp;nbsp;매사추세츠공과대학교(MIT)에서&amp;nbsp;해당&amp;nbsp;대학&amp;nbsp;SW&amp;nbsp;공학도들을&amp;nbsp;돕기&amp;nbsp;위해&amp;nbsp;개발한&amp;nbsp;라이선스다. &lt;br /&gt;&amp;nbsp;-&amp;nbsp;라이선스와&amp;nbsp;저작권&amp;nbsp;관련&amp;nbsp;명시만&amp;nbsp;지켜주면&amp;nbsp;되는&amp;nbsp;라이선스로,&amp;nbsp;가장&amp;nbsp;느슨한&amp;nbsp;조건을&amp;nbsp;가진&amp;nbsp;라이선스&amp;nbsp;중&amp;nbsp;하나이기&amp;nbsp;때문에&amp;nbsp;인기가&amp;nbsp;많다. &lt;br /&gt;&amp;nbsp;-&amp;nbsp;적용&amp;nbsp;사례&amp;nbsp;:&amp;nbsp;부트스트랩&amp;nbsp;,&amp;nbsp;&lt;a href=&quot;Angular.js,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Angular.js,&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;Backbone.js,&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Backbone.js,&lt;/a&gt;&amp;nbsp;jQuery &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Apache License : 아파치 2.0 라이선스 &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;&amp;nbsp;- 아파치 라이선스(Apache License) 아파치 소프트웨어 재단에서 자체적으로 만든 소프트웨어에 대한 라이선스 규정이다. &lt;br /&gt;&amp;nbsp;-&amp;nbsp;아파치&amp;nbsp;2.0&amp;nbsp;라이선스는&amp;nbsp;누구나&amp;nbsp;해당&amp;nbsp;소프트웨어에서&amp;nbsp;파생된&amp;nbsp;프로그램을&amp;nbsp;제작할&amp;nbsp;수&amp;nbsp;있으며&amp;nbsp;저작권을&amp;nbsp;양도,&amp;nbsp;전송할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;라이선스&amp;nbsp;규정을&amp;nbsp;의미한다.&amp;nbsp; &lt;br /&gt;&amp;nbsp;-&amp;nbsp;아파치&amp;nbsp;라이선스에&amp;nbsp;따르면&amp;nbsp;누구든&amp;nbsp;자유롭게&amp;nbsp;아파치&amp;nbsp;소프트웨어를&amp;nbsp;다운&amp;nbsp;받아&amp;nbsp;부분&amp;nbsp;혹은&amp;nbsp;전체를&amp;nbsp;개인적&amp;nbsp;혹은&amp;nbsp;상업적&amp;nbsp;목적으로&amp;nbsp;이용할&amp;nbsp;수&amp;nbsp;있음 &lt;br /&gt;&amp;nbsp;-&amp;nbsp;재배포시에는&amp;nbsp;원본&amp;nbsp;소스&amp;nbsp;코드&amp;nbsp;또는&amp;nbsp;수정한&amp;nbsp;소스&amp;nbsp;코드를&amp;nbsp;반드시&amp;nbsp;포함시켜야&amp;nbsp;하는&amp;nbsp;것은&amp;nbsp;아니고,&amp;nbsp;아파치&amp;nbsp;라이선스,&amp;nbsp;버전&amp;nbsp;2.0을&amp;nbsp;포함시켜야&amp;nbsp;함 &lt;br /&gt;&amp;nbsp;-&amp;nbsp;즉&amp;nbsp;아파치&amp;nbsp;소프트웨어&amp;nbsp;재단에&amp;nbsp;개발된&amp;nbsp;소프트웨어라는&amp;nbsp;것을&amp;nbsp;명확하게&amp;nbsp;밝혀야&amp;nbsp;한다. &lt;br /&gt;&amp;nbsp;-&amp;nbsp;소스코드&amp;nbsp;공개&amp;nbsp;의무도&amp;nbsp;없음 &lt;br /&gt;&amp;nbsp;-&amp;nbsp;적용&amp;nbsp;사례&amp;nbsp;:&amp;nbsp;안드로이드(v2.0),&amp;nbsp;하둡(v2.0) &lt;br /&gt;&lt;br /&gt;&lt;b&gt;GPL&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;-&amp;nbsp;GNU(Gnu&amp;nbsp;is&amp;nbsp;Not&amp;nbsp;Unix,&amp;nbsp;그누)&amp;nbsp;General&amp;nbsp;Public&amp;nbsp;License(GPL) &lt;br /&gt;&amp;nbsp;-&amp;nbsp;자유소프트웨어재단에서&amp;nbsp;만든&amp;nbsp;라이선스다. &lt;br /&gt;&amp;nbsp;-&amp;nbsp;GNU&amp;nbsp;프로젝트로&amp;nbsp;배포하는&amp;nbsp;소프트웨어(Emacs,&amp;nbsp;GNU&amp;nbsp;디버거(GDB),&amp;nbsp;GNU&amp;nbsp;컴파일러&amp;nbsp;모음(GCC)&amp;nbsp;등)에&amp;nbsp;적용하기&amp;nbsp;위해&amp;nbsp;리처드&amp;nbsp;스톨만이&amp;nbsp;만들었다. &lt;br /&gt;&amp;nbsp;-&amp;nbsp;Roughly,&amp;nbsp;these&amp;nbsp;licenses&amp;nbsp;specify&amp;nbsp;that&amp;nbsp;GNU&amp;nbsp;software&amp;nbsp;may&amp;nbsp;be&amp;nbsp;copied,&amp;nbsp;modified,&amp;nbsp;and&amp;nbsp;redistributed&amp;nbsp;in&amp;nbsp;any&amp;nbsp;manner&amp;nbsp;as&amp;nbsp;long&amp;nbsp;as&amp;nbsp;the&amp;nbsp;source&amp;nbsp;code&amp;nbsp;remains&amp;nbsp;freely&amp;nbsp;available. &lt;br /&gt;&amp;nbsp;-&amp;nbsp;가장&amp;nbsp;큰&amp;nbsp;특징은&amp;nbsp;자유소프트웨어재단답게&amp;nbsp;가장&amp;nbsp;강력한&amp;nbsp;제약&amp;nbsp;조건을&amp;nbsp;포함하고&amp;nbsp;있는&amp;nbsp;카피레프트&amp;nbsp;조항이다. &lt;br /&gt;&amp;nbsp;-&amp;nbsp;GPL&amp;nbsp;프로그램은&amp;nbsp;어떤&amp;nbsp;목적으로,&amp;nbsp;어떤&amp;nbsp;형태로든&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있지만&amp;nbsp;사용하거나&amp;nbsp;변경된&amp;nbsp;프로그램을&amp;nbsp;배포하는&amp;nbsp;경우&amp;nbsp;무조건&amp;nbsp;동일한&amp;nbsp;라이선스&amp;nbsp;즉,&amp;nbsp;GPL로&amp;nbsp;공개해야&amp;nbsp;한다. &lt;br /&gt;&amp;nbsp;-&amp;nbsp;적용&amp;nbsp;사례&amp;nbsp;:&amp;nbsp;모질라&amp;nbsp;파이어폭스(v2.0),&amp;nbsp;리눅스&amp;nbsp;커널(v2.0),&amp;nbsp;깃(v2.0),&amp;nbsp;마리아DB(v2.0),&amp;nbsp;워드프레스(v2.0),&amp;nbsp;드루팔(v2.0) &lt;br /&gt;&lt;br /&gt;&lt;b&gt;AGPL&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;-&amp;nbsp;GNU&amp;nbsp;Affero&amp;nbsp;GPL &lt;br /&gt;&amp;nbsp;-&amp;nbsp;GPL을&amp;nbsp;기반으로&amp;nbsp;만든&amp;nbsp;라이선스로&amp;nbsp;버전1,&amp;nbsp;2는&amp;nbsp;아페로,&amp;nbsp;가장&amp;nbsp;최신&amp;nbsp;버전인&amp;nbsp;버전3은&amp;nbsp;자유소프트웨어재단에&amp;nbsp;의해&amp;nbsp;개발됐다. &lt;br /&gt;&amp;nbsp;-&amp;nbsp;수정한&amp;nbsp;소스코드를&amp;nbsp;서버에서만&amp;nbsp;사용하는&amp;nbsp;개발자가&amp;nbsp;그&amp;nbsp;프로그램을&amp;nbsp;배포하지&amp;nbsp;않을&amp;nbsp;경우&amp;nbsp;사용자는&amp;nbsp;소스코드를&amp;nbsp;가질&amp;nbsp;수가&amp;nbsp;없는&amp;nbsp;문제를&amp;nbsp;해결하기&amp;nbsp;위해&amp;nbsp;마련됐다. &lt;br /&gt;&amp;nbsp;-&amp;nbsp;서버에서&amp;nbsp;프로그램을&amp;nbsp;실행해&amp;nbsp;다른&amp;nbsp;사용자들과&amp;nbsp;통신하면,&amp;nbsp;실행되고&amp;nbsp;있는&amp;nbsp;프로그램의&amp;nbsp;소스코드를&amp;nbsp;사용자들이&amp;nbsp;다운로드할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;해야&amp;nbsp;한다는&amp;nbsp;독특한&amp;nbsp;조항을&amp;nbsp;담고&amp;nbsp;있다. &lt;br /&gt;&amp;nbsp;-&amp;nbsp;적용&amp;nbsp;사례&amp;nbsp;:&amp;nbsp;몽고DB(v3.0) &lt;br /&gt;&lt;br /&gt;&lt;b&gt;LGPL&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;-&amp;nbsp;GNU&amp;nbsp;Lesser&amp;nbsp;GPL &lt;br /&gt;&amp;nbsp;-&amp;nbsp;자유소프트웨어재단의&amp;nbsp;강력한&amp;nbsp;철학이&amp;nbsp;담긴&amp;nbsp;GPL의&amp;nbsp;카피레프트&amp;nbsp;조항을&amp;nbsp;보완하기&amp;nbsp;위해&amp;nbsp;만든&amp;nbsp;라이선스다. &lt;br /&gt;&amp;nbsp;-&amp;nbsp;GPL은&amp;nbsp;단순히&amp;nbsp;소프트웨어를&amp;nbsp;사용하기만&amp;nbsp;하더라도&amp;nbsp;해당&amp;nbsp;소스코드를&amp;nbsp;GPL로&amp;nbsp;공개해야&amp;nbsp;하는&amp;nbsp;부담감&amp;nbsp;때문에&amp;nbsp;상용&amp;nbsp;소프트웨어로&amp;nbsp;쓰기&amp;nbsp;부담스럽다는&amp;nbsp;단점이&amp;nbsp;있다. &lt;br /&gt;&amp;nbsp;-&amp;nbsp;그래서&amp;nbsp;좋은&amp;nbsp;자유&amp;nbsp;소프트웨어&amp;nbsp;제품이&amp;nbsp;더&amp;nbsp;많이&amp;nbsp;쓰이고&amp;nbsp;표준이&amp;nbsp;되도록&amp;nbsp;유도하기&amp;nbsp;위해&amp;nbsp;단순한&amp;nbsp;라이브러리&amp;middot;모듈&amp;nbsp;링크를&amp;nbsp;허용한&amp;nbsp;라이선스이다. &lt;br /&gt;&amp;nbsp;-&amp;nbsp;원래는&amp;nbsp;한정된&amp;nbsp;라이브러리에만&amp;nbsp;적용하려는&amp;nbsp;의도로&amp;nbsp;&amp;lsquo;Library&amp;nbsp;GPL&amp;rsquo;이라는&amp;nbsp;이름을&amp;nbsp;붙였으나,&amp;nbsp;모든&amp;nbsp;라이브러리에&amp;nbsp;적용된다는&amp;nbsp;오해를&amp;nbsp;사&amp;nbsp;&amp;lsquo;Lesser&amp;nbsp;GPL&amp;rsquo;로&amp;nbsp;변경됐다. &lt;br /&gt;&amp;nbsp;-&amp;nbsp;적용&amp;nbsp;사례&amp;nbsp;:&amp;nbsp;모질라&amp;nbsp;파이어폭스(v2.1) &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Artistic License&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;-&amp;nbsp;펄&amp;nbsp;프로그래밍&amp;nbsp;언어를&amp;nbsp;사용하던&amp;nbsp;래리&amp;nbsp;월이&amp;nbsp;표준&amp;nbsp;펄&amp;nbsp;기능을&amp;nbsp;위해&amp;nbsp;만든&amp;nbsp;라이선스다. &lt;br /&gt;&amp;nbsp;-&amp;nbsp;이&amp;nbsp;단어의&amp;nbsp;어원은&amp;nbsp;문학에서&amp;nbsp;문법상&amp;nbsp;틀린&amp;nbsp;표현이라도&amp;nbsp;시적인&amp;nbsp;효과를&amp;nbsp;위해&amp;nbsp;허용한다는&amp;nbsp;걸&amp;nbsp;의미하는&amp;nbsp;'Articstic&amp;nbsp;License'(시적&amp;nbsp;허용)를&amp;nbsp;참조해&amp;nbsp;만들어졌다. &lt;br /&gt;&amp;nbsp;-&amp;nbsp;적용&amp;nbsp;사례&amp;nbsp;:&amp;nbsp;NPM(Node&amp;nbsp;Package&amp;nbsp;Manager)(v2.0) &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Eclipse License&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;-&amp;nbsp;이클립스사에서&amp;nbsp;비즈니스&amp;nbsp;환경에&amp;nbsp;적합하도록&amp;nbsp;만든&amp;nbsp;기업&amp;nbsp;친화적인&amp;nbsp;라이선스로,&amp;nbsp;강력한&amp;nbsp;카피레프트&amp;nbsp;조항이&amp;nbsp;담긴&amp;nbsp;GPL보다&amp;nbsp;제약&amp;nbsp;조건이&amp;nbsp;완화된&amp;nbsp;라이선스이다. &lt;br /&gt;&amp;nbsp;-&amp;nbsp;적용&amp;nbsp;사례&amp;nbsp;:&amp;nbsp;이클립스(v1.0) &lt;br /&gt;&lt;br /&gt;&lt;b&gt;BSD License&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;-&amp;nbsp;BSD&amp;nbsp;:&amp;nbsp;Berkeley&amp;nbsp;Software&amp;nbsp;Distribution &lt;br /&gt;&amp;nbsp;-&amp;nbsp;버클리의&amp;nbsp;캘리포니아대학에서&amp;nbsp;배포하는&amp;nbsp;공개&amp;nbsp;SW&amp;nbsp;라이선스다. &lt;br /&gt;&amp;nbsp;-&amp;nbsp;BSD&amp;nbsp;자체가&amp;nbsp;공공기관에서&amp;nbsp;만들어낸&amp;nbsp;것이므로&amp;nbsp;공공의&amp;nbsp;몫으로&amp;nbsp;돌려주자는&amp;nbsp;의미가&amp;nbsp;강하므로,&amp;nbsp;라이선스&amp;nbsp;자체에는&amp;nbsp;아무런&amp;nbsp;제한&amp;nbsp;없이&amp;nbsp;누구나&amp;nbsp;자신의&amp;nbsp;용도로&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있다. &lt;br /&gt;&amp;nbsp;-&amp;nbsp;라이선스&amp;nbsp;및&amp;nbsp;저작권&amp;nbsp;표시&amp;nbsp;조건&amp;nbsp;외엔&amp;nbsp;제약이&amp;nbsp;없는,&amp;nbsp;굉장히&amp;nbsp;자유로운&amp;nbsp;라이선스&amp;nbsp;중&amp;nbsp;하나이다. &lt;br /&gt;&amp;nbsp;-&amp;nbsp;적용&amp;nbsp;사례&amp;nbsp;:&amp;nbsp;Nginx(The&amp;nbsp;BSD&amp;nbsp;2-Clause&amp;nbsp;License) &lt;br /&gt;&lt;br /&gt;&lt;b&gt;MPL&lt;/b&gt; &lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;-&amp;nbsp;Mozilla&amp;nbsp;Public&amp;nbsp;License &lt;br /&gt;&amp;nbsp;-&amp;nbsp;모질라&amp;nbsp;공용&amp;nbsp;허가서는&amp;nbsp;과거&amp;nbsp;넷스케이프&amp;nbsp;웹브라우저의&amp;nbsp;소스코드를&amp;nbsp;공개하기&amp;nbsp;위해&amp;nbsp;개발된&amp;nbsp;라이선스다. &lt;br /&gt;&amp;nbsp;-&amp;nbsp;초기&amp;nbsp;1.0버전은&amp;nbsp;넷스케이프&amp;nbsp;커뮤니케이션의&amp;nbsp;변호사였던&amp;nbsp;밋첼&amp;nbsp;베이커가&amp;nbsp;작성했고,&amp;nbsp;1.1과&amp;nbsp;2.0버전은&amp;nbsp;모질라재단이&amp;nbsp;작성했다. &lt;br /&gt;&amp;nbsp;-&amp;nbsp;MPL의&amp;nbsp;특징은&amp;nbsp;소스코드와&amp;nbsp;실행파일의&amp;nbsp;저작권을&amp;nbsp;분리했다는&amp;nbsp;점이다. &lt;br /&gt;&amp;nbsp;-&amp;nbsp;수정한&amp;nbsp;소스코드는&amp;nbsp;MPL로&amp;nbsp;공개하고&amp;nbsp;원저작자에게&amp;nbsp;수정한&amp;nbsp;부분에&amp;nbsp;대해&amp;nbsp;알려야&amp;nbsp;하지만,&amp;nbsp;실행파일은&amp;nbsp;독점&amp;nbsp;라이선스로&amp;nbsp;배포할&amp;nbsp;수&amp;nbsp;있다. &lt;br /&gt;&amp;nbsp;-&amp;nbsp;즉&amp;nbsp;사용한&amp;nbsp;MPL&amp;nbsp;소프트웨어와&amp;nbsp;수정한&amp;nbsp;MPL&amp;nbsp;소프트웨어에&amp;nbsp;대한&amp;nbsp;공개&amp;nbsp;의무만&amp;nbsp;가지며,&amp;nbsp;별도의&amp;nbsp;소스코드와&amp;nbsp;실행파일은&amp;nbsp;독점&amp;nbsp;라이선스를&amp;nbsp;가질&amp;nbsp;수&amp;nbsp;있다. &lt;br /&gt;&amp;nbsp;-&amp;nbsp;적용&amp;nbsp;사례&amp;nbsp;:&amp;nbsp;모질라&amp;nbsp;파이어폭스(v1.1),&amp;nbsp;모질라&amp;nbsp;썬더버드(v1.1) &lt;br /&gt;&lt;br /&gt;&lt;b&gt;오픈소스 Software&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;-&amp;nbsp;1983년&amp;nbsp;9월&amp;nbsp;27일&amp;nbsp;&amp;nbsp;리처드&amp;nbsp;스톨먼(Richard&amp;nbsp;Stallman)이&amp;nbsp;GNU&amp;nbsp;프로젝트를&amp;nbsp;시작하면서&amp;nbsp;오픈소스&amp;nbsp;SW가&amp;nbsp;본격적으로&amp;nbsp;등장 &lt;br /&gt;&amp;nbsp;-&amp;nbsp;주요&amp;nbsp;오픈소스&amp;nbsp;:&amp;nbsp;클라우드(오픈스택),&amp;nbsp;빅데이터(하둡),&amp;nbsp;모바일(안드로이드) &lt;br /&gt;&amp;nbsp;-&amp;nbsp;SW개발시&amp;nbsp;오픈소스SW를&amp;nbsp;적절하게&amp;nbsp;사용한다면&amp;nbsp;비용절감과&amp;nbsp;개발시간&amp;nbsp;단축&amp;nbsp;등&amp;nbsp;다양한&amp;nbsp;측면에서&amp;nbsp;장점을&amp;nbsp;누릴&amp;nbsp;수&amp;nbsp;있음 &lt;br /&gt;&amp;nbsp;-&amp;nbsp;소스코드가&amp;nbsp;공개되어&amp;nbsp;있고&amp;nbsp;무료로&amp;nbsp;이용,복제,배포,수정할&amp;nbsp;수&amp;nbsp;있지만&amp;nbsp;라이슨스가&amp;nbsp;존재함 &lt;br /&gt;&amp;nbsp;-&amp;nbsp;오픈소스SW&amp;nbsp;라이슨스에서는&amp;nbsp;사용자가&amp;nbsp;오픈소스SW를&amp;nbsp;사용함에&amp;nbsp;있어서&amp;nbsp;누릴&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;권리와&amp;nbsp;지켜야&amp;nbsp;할&amp;nbsp;의무사항들을&amp;nbsp;포함 &lt;br /&gt;&amp;nbsp;-&amp;nbsp;오픈소스SW에&amp;nbsp;적용되는&amp;nbsp;라이슨스의&amp;nbsp;종류는&amp;nbsp;2,000종&amp;nbsp;이상으로&amp;nbsp;알려져&amp;nbsp;있음 &lt;br /&gt;&amp;nbsp;-&amp;nbsp;대부분의&amp;nbsp;오픈소스SW는&amp;nbsp;OSI(Open&amp;nbsp;Source&amp;nbsp;Initiative)에서&amp;nbsp;인증한&amp;nbsp;라이슨스를&amp;nbsp;적용하고&amp;nbsp;있음 &lt;br /&gt;&amp;nbsp;-&amp;nbsp;2012년&amp;nbsp;기준으로&amp;nbsp;OSI에서는&amp;nbsp;총&amp;nbsp;69종의&amp;nbsp;라이슨스를&amp;nbsp;인증함 &lt;br /&gt;&amp;nbsp;-&amp;nbsp;69종의&amp;nbsp;오픈소스SW&amp;nbsp;라이슨스&amp;nbsp;중&amp;nbsp;상위&amp;nbsp;7종의&amp;nbsp;라이슨스가&amp;nbsp;전체의&amp;nbsp;90%&amp;nbsp;정도&amp;nbsp;차지 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;(이중&amp;nbsp;GNU&amp;nbsp;GPL&amp;nbsp;계열의&amp;nbsp;라이슨스가&amp;nbsp;전체의&amp;nbsp;60%&amp;nbsp;이상을&amp;nbsp;차지) &lt;br /&gt;&amp;nbsp;-&amp;nbsp;오픈소스SW&amp;nbsp;라이슨스&amp;nbsp;종합정보제공&amp;nbsp;서비스&amp;nbsp;:&amp;nbsp;&lt;a href=&quot;www.OLIS.or.kr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;www.OLIS.or.kr&lt;/a&gt; &lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;b&gt; &lt;span style=&quot;color: #333333;&quot;&gt;오픈소스SW 라이슨스 사용조건 및 의무사항&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;구분&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;무료이용&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;배포허용&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;소스코드취득&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;소스코드수정&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;소스코드공개의무&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;독점(상용)SW와&amp;nbsp;결합&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;GNU&amp;nbsp;GPL&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;O&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;O&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;O&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;O&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;O&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;X&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;GNU&amp;nbsp;LGPL&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;O&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;O&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;O&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;O&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;O&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;O&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;MPL&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;O&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;O&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;O&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;O&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;O&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;O&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;BSD&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;O&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;O&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;O&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;O&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;X&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;O&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Apache&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;O&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;O&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;O&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;O&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;X&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;O&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&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;Freeware&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;O&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;O&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;X&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;X&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;X&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;X&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;* BSD/Apache license가 가장 자유로운 규정 &lt;br /&gt;&lt;br /&gt;주요용어&lt;br /&gt;&amp;nbsp;-&amp;nbsp;GPL&amp;nbsp;v2&amp;nbsp;(GNU&amp;nbsp;General&amp;nbsp;Public&amp;nbsp;License) &lt;br /&gt;&amp;nbsp;-&amp;nbsp;LGPL&amp;nbsp;v2&amp;nbsp;(GNU&amp;nbsp;Library&amp;nbsp;or&amp;nbsp;Lesser&amp;nbsp;General&amp;nbsp;Public&amp;nbsp;License) &lt;br /&gt;&amp;nbsp;-&amp;nbsp;MPL&amp;nbsp;(Mozilla&amp;nbsp;Public&amp;nbsp;License&amp;nbsp;1.1) &lt;br /&gt;&amp;nbsp;-&amp;nbsp;BSD&amp;nbsp;License &lt;br /&gt;&amp;nbsp;-&amp;nbsp;MIT&amp;nbsp;License &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;라이슨스별&amp;nbsp;주요&amp;nbsp;소프트웨어&amp;nbsp;리스트&amp;gt; &lt;br /&gt;&lt;br /&gt;1.&amp;nbsp;GNU&amp;nbsp;GPL&amp;nbsp;:&amp;nbsp;리눅스&amp;nbsp;커널 &lt;br /&gt;2. GNU LGPL :&amp;nbsp; &lt;br /&gt;3. MPL : 모질라 어플리케이션 스위트, 모질라 파이어폭스, 모질라 선더버드, 미디어코더, 컴포저, 오픈솔라리스 &lt;br /&gt;4. BSD : sendmail &lt;br /&gt;5. Apache 라이슨스 : Android, Hadoop(Apache v2 license), OpenStack &lt;br /&gt;&amp;nbsp;*&amp;nbsp;구글이&amp;nbsp;2007년&amp;nbsp;아파치&amp;nbsp;라이선스&amp;nbsp;기반으로&amp;nbsp;안드로이드를&amp;nbsp;오픈소스화함 &lt;br /&gt;6. MIT License : X-window &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Open source groups&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;1.&amp;nbsp;Apache&amp;nbsp;Software&amp;nbsp;Foundation&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;-&amp;nbsp;Cassandra,&amp;nbsp;Cordova,&amp;nbsp;CloudStack,&amp;nbsp;CouchDB,&amp;nbsp;Geronimo,&amp;nbsp;Hadoop,&amp;nbsp;Hive,&amp;nbsp;HTTP&amp;nbsp;Server,&amp;nbsp;Lucene,&amp;nbsp;OpenOffice,&amp;nbsp;Struts,&amp;nbsp;Subversion&amp;nbsp;and&amp;nbsp;Tomcat&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;2.&amp;nbsp;Linux&amp;nbsp;Foundation&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;3.&amp;nbsp;Free&amp;nbsp;Software&amp;nbsp;Foundation&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;-&amp;nbsp;That&amp;nbsp;is&amp;nbsp;software&amp;nbsp;that&amp;nbsp;you&amp;nbsp;can&amp;nbsp;freely&amp;nbsp;copy,&amp;nbsp;use,&amp;nbsp;modify,&amp;nbsp;and&amp;nbsp;redistribute&amp;nbsp;as&amp;nbsp;you&amp;nbsp;wish.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;-&amp;nbsp;The&amp;nbsp;only&amp;nbsp;condition&amp;nbsp;is&amp;nbsp;that&amp;nbsp;the&amp;nbsp;source&amp;nbsp;code&amp;nbsp;of&amp;nbsp;these&amp;nbsp;programs&amp;nbsp;must&amp;nbsp;be&amp;nbsp;freely&amp;nbsp;available&amp;nbsp;on&amp;nbsp;demand.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;-&amp;nbsp;It&amp;nbsp;is&amp;nbsp;important&amp;nbsp;to&amp;nbsp;understand&amp;nbsp;that&amp;nbsp;the&amp;nbsp;term&amp;nbsp;Free&amp;nbsp;in&amp;nbsp;Free&amp;nbsp;Software&amp;nbsp;Foundation&amp;nbsp;does&amp;nbsp;not&amp;nbsp;refer&amp;nbsp;to&amp;nbsp;price,&amp;nbsp;but&amp;nbsp;to&amp;nbsp;freedom.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;-&amp;nbsp;These&amp;nbsp;programs&amp;nbsp;can&amp;nbsp;be&amp;nbsp;bought&amp;nbsp;and&amp;nbsp;sold,&amp;nbsp;but&amp;nbsp;there&amp;nbsp;is&amp;nbsp;always&amp;nbsp;a&amp;nbsp;legal&amp;nbsp;way&amp;nbsp;to&amp;nbsp;obtain&amp;nbsp;them&amp;nbsp;gratis.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;-&amp;nbsp;Richard&amp;nbsp;M.&amp;nbsp;Stallman&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;-&amp;nbsp;GNU&amp;nbsp;그래픽&amp;nbsp;데스크톱인&amp;nbsp;GNOME&amp;nbsp;1.0&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;-&amp;nbsp;GNU&amp;nbsp;Project&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;cf.&amp;nbsp;W3C(World&amp;nbsp;Wide&amp;nbsp;Web&amp;nbsp;Consortium)&amp;nbsp;groups&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>IT</category>
      <author>FIX &amp;amp; FEP</author>
      <guid isPermaLink="true">https://fixfep.tistory.com/14</guid>
      <comments>https://fixfep.tistory.com/14#entry14comment</comments>
      <pubDate>Wed, 22 Apr 2020 19:44:04 +0900</pubDate>
    </item>
    <item>
      <title>블룸버그(Bloomberg) Fix Hub EMSxNET</title>
      <link>https://fixfep.tistory.com/13</link>
      <description>&lt;p&gt;FIX를 이용해서 해외 기관과 연결하기 위한 방법은 여러가지가 있을 수 있다. BT Radianz나 TNS 처럼 글로벌 네트웍 사업자를 통해서 상대기관(브로커, 거래소 등)에 직접 연결하는 방법이 있다. 이때에는 상대기관과 FIX 연결정보를 확인하고, 네트웍 사업자에서 제공하는 NAT IP를 기반으로 방화벽/라우팅 등을 설정하고 진행하면 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;블룸버그 처럼 중간에 Fix 허브 사업자를 경유해서 상대기관에 연결할 수도 있다. 이러한 허브 사업자들 중 대표적인 곳이 로이터, 블룸버그 등이 있다.&amp;nbsp;Fix 허브에는 Fix 서버가 구성되어 있다고 보면 된다. 상대기관과 직접 FIX 세션을 연결할 필요가 없다. 단지 허브 사업자에게 연결정보를 받아서 FIX로 세션을 구성하면 된다. 상대기관도 동일하게 허브사업자와 FIX로 연결이 될 것이고, 허브사업자인 블룸버그에서 라우팅을 통해 연결을 해 주게 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;블룸버그 Fix Hub 시스템을 EMSxNET이라고도 부른다. 회원사와 상대기관이 모두 중간에 있는 Fix 허브에 FIX로 붙고, 블룸버그에서 라우팅을 해준다. 블룸버그에서는 하나의 FIX 세션으로 여러기관에 라우팅(Tag.128 DeliverToCompID 등으로 구분)을 할 수도 있다. 이렇게 라우팅이 가능한 구조로 설계가 되어서 그런지 블룸버그에서는 주문번호(Tag.11 ClOrdID)를 변환시켜 버린다. 네트웍 또는 기타 장애로 인해 상대기관과 주문/체결 내역을 대사할 경우 주문번호로 맞추기가 쉽지 않다. 이때에는 시간으로 맞추는 방법이 있고, 중간에 Fix 허브 사업자인 블룸버그도 같이 참조로 걸어서 주문번호 매핑 정보를 확인해도 된다. 대사에 따른 번거로운 절차를 회피하기 위해 별도로 상대기관과 추가 태그(예를들면 Tag.58 또는 사용자정의 태그)를 정의해서 해당 태그에 주문번호를 실어서 보내도 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>FIX</category>
      <author>FIX &amp;amp; FEP</author>
      <guid isPermaLink="true">https://fixfep.tistory.com/13</guid>
      <comments>https://fixfep.tistory.com/13#entry13comment</comments>
      <pubDate>Tue, 24 Dec 2019 12:39:49 +0900</pubDate>
    </item>
    <item>
      <title>CME iLink 주문 개발 및 운영</title>
      <link>https://fixfep.tistory.com/12</link>
      <description>&lt;p&gt;CME는 서울에 허브를 두고 있기 때문에 거래소에 매매 라이선스가 있다면 직접 주문이 가능하다. 청산 라이선스는 발급받기가 어렵기 때문에 보통 국내 회원사들은 글로벌 청산회사(Clearing Firm)를 이용하면 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;CME 서울 허브 MDP 시세와 같이 주문 개발환경도 인터넷VPN으로 연결된다. 운영 환경은 목동/상암 데이터센터까지 전용선을 연결하면 된다. 주문과 시세 회선은 동일한 것을 사용하면 된다. 주문환경이 구성이 되면 개발 FIX 연결을 위한 SenderCompID와 TargetCompID 등 접속정보를 받아볼 수 있다. 개발환경은 크게 Cert 세션과 NRCert 세션으로 나눌 수 있다. MDP 시세 수신시에 언급했던 것과 유사하다. 현재 운영중인 시스템과 비슷한 환경으로 구성되어 있는 Cert와 CME에서 현재의 개편사항이 반영된 NRCert 세션이 있다고 보면 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;운영환경에 대한 세션 정보는 회원사가 지정한 청산회사를 통해서 받을 수 있다. 시스템은 직접 CME에 연결이 되지만 관리는 청산회사를 통해서 처리된다고 보면 된다. iLink(CME 직접 주문을 위한 FIX 시스템) FIX 접속을 위해 Access ID와 Secure Key를 필요로 한다. 해당 키 정보는 1년을 주기로 만기가 도래하며, 청산회사를 통해서 갱신할 수 있다. 하지만 대부분의 청산회사는 회원사 자체에서 처리할 수 있도록 권한을 이양하는 경우가 많다. 그러면 매매 회원사는 CME 웹사이트에 로그인 하여 Access ID와 Secure Key를 직접 발급받을 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- 개발 : &lt;a href=&quot;https://loginnr.cmegroup.com&quot;&gt;https://loginnr.cmegroup.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- 운영 : &lt;a href=&quot;https://login.cmegroup.com&quot;&gt;https://login.cmegroup.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;* iLink 세션 정책 가이드 : &lt;a href=&quot;https://www.cmegroup.com/globex/files/iLinkSessionIDPolicy.pdf&quot;&gt;https://www.cmegroup.com/globex/files/iLinkSessionIDPolicy.pdf&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;발급받은 키 정보는 FIX 로그인시(35=A) 함께 보내야 하는 정보로 FIX 엔진 제공업체를 통해서 해당 기능을 제공하는지 확인해보면 된다. 새로운 키를 발급받을 경우 기존키는 4주 후에 만기(Expired) 되므로 그 전에 적용을 끝마쳐야 한다. 키 적용은 주중에 적용해도 무방하다. 만기가 도래하기 전에 갱신될 수 있도록 일자 관리에 신경을 필요가 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;FIX 세션 운영시 주의해야 할 점&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;해외기관의 경우 써머타임(Summer time, DST)의 적용을 받기 때문에 상대 기관이 유럽DST 타임존인지 미국DST 타임존이지 확인해서 그에 맞게 조정을 해줘야 한다. CME FIX는 시퀀스 초기화가 일주일 단위(Weekly) 이므로 월요일 시작시간, 토요일 종료시간만 설정하면 되므로 DST의 영향은 덜 받는 편이다. 하지만 주의할 점이 있다. CME는 로그인 실패시 재로그인 시도를 너무 자주 하는 경우, 세션이 잠길 위험(Port Closure)이 있다. 이를 방지하기 위해서 FIX 엔진 제공업체에서 너무 빈번하게 로그인 시도를 막을 수 있는 옵션을 제공하는 경우도 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;써머타임(Summer Time, DST(Daylight Saving Time))&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- 미국DST : 3월 둘째 일요일 ~ 11월 첫째 일요일&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- 유럽DST : 3월 마지막주 일요일 ~ 10월 마지막주 일요일&lt;/p&gt;</description>
      <category>FIX</category>
      <author>FIX &amp;amp; FEP</author>
      <guid isPermaLink="true">https://fixfep.tistory.com/12</guid>
      <comments>https://fixfep.tistory.com/12#entry12comment</comments>
      <pubDate>Thu, 19 Dec 2019 09:20:31 +0900</pubDate>
    </item>
    <item>
      <title>CME MDP 시세 수신 개발</title>
      <link>https://fixfep.tistory.com/11</link>
      <description>&lt;p&gt;CME는 서울에 목동/상암 IDC 센터를 통해서 iLink FIX를 통해 직접 주문내고, MDP 시세도 수신받을 수 있도록 CME 허브(Hub)를 구축해 놓았다. CME와의 시세수신 계약이 끝나고 시세를 수신할 수 있도록 네트웍 구성이 완료되면 멀티캐스트 형태의 시세를 수신 받아서 개발할 수 있다. 개발환경은 인터넷 VPN으로 되어 있고, 운영은 전용선을 구축하면 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;시세 개발을 위해서는 먼저 환경설정 파일을 다운로드 받아야 한다.&amp;nbsp;&lt;a href=&quot;http://ftp.cmegroup.com&quot;&gt;http://ftp.cmegroup.com&lt;/a&gt; 에서 다운 받아볼 수 있다. anonymous 계정으로 오픈되어 있다. FTP 사이트에서 SBEFix 디렉토리에 들어가 보면 Cert, CertAutoCertPlus, NRAutoCertPlus, NRCert, Production 디렉토리가 있다. Cert(Certificate)는 ASIS 개발 환경을 의미하고, NRCert(New Release Certificate)는 TOBE 개발환경을 의미한다. Production은 운영환경을 의미한다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgbJLq/btqAvjlhgeE/1vzZQZ8kK4RV2F7Wft9sAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgbJLq/btqAvjlhgeE/1vzZQZ8kK4RV2F7Wft9sAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgbJLq/btqAvjlhgeE/1vzZQZ8kK4RV2F7Wft9sAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgbJLq%2FbtqAvjlhgeE%2F1vzZQZ8kK4RV2F7Wft9sAk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.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;NRCert에 있던 것이 운영환경으로 이행이 되면, Cert에도 최신으로 업데이트 되고, Production도 변경되게 된다. 그러므로, Cert와 Production은 Template 입장에서는 비슷하다고 보면 된다. (Template는 동일하지만, config는 다름). AutoCertPlus는 자동으로 구성되는 환경이라고 보면 된다. 주문이던 시세이던 최초 구축 또는 제도변경으로 인한 변경 적용을 위해 CME에서 Certificate를 받도록 요구하는 경우가 있다. 이때 웹화면에서 자유롭게 Certificate를 받을 수 있게 자동화된 형태로 구축된 웹사이트가 있다. (https://autocert.cmegroup.com) 로그인을 위해서는 아이디와 계정이 필요한데 CME의 계좌 관리자(Account Manager)에게 문의하면 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;일반적으로 브로커들과 FIX 세션을 생성할 때에는 해당 브로커의 담당자와 스케줄을 정해서 적합성테스트(Certificate)를 진행하는 경우가 많다. 그런면에서 CME는 시스템을 잘 갖춰 놓았다고 볼 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;제도 개편 등으로 개발환경에 선 적용이 되면, CME에서 NRCert에 환경설정정보 및 Template 파일을 올려놓게 된다. 회원사들은 NRCert에서 필요한 파일들을 다운로드 받아서 개발을 시작하면 된다. 살펴봐야할 파일은 Configuration/config.xml과 Templates/templates_FixBinary.xml이다. config.xml은 아이피, 포트, 채널정보가 들어있는 설정파일이고, templates_FixBinary.xml은 SBE(Simple Binary Encoding) 파싱을 위한 템플릿 파일이다. 새로운 버전이 생기면 templates_FixBinary_v10.xml와 같은 식의 파일이 생성되어 있는 것을 확인해볼 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGN88R/btqAy1JOajj/r2xk1IYkKwnLMRgECr7gV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGN88R/btqAy1JOajj/r2xk1IYkKwnLMRgECr7gV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGN88R/btqAy1JOajj/r2xk1IYkKwnLMRgECr7gV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGN88R%2FbtqAy1JOajj%2Fr2xk1IYkKwnLMRgECr7gV1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.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;템플릿 파일을 다운로드 받으면, 해당 템플릿 기반으로 SBE 파싱을 위한 cpp 클래스 헤더 파일들을 생성할 수 있다. 헤더 파일 생성을 위해서는 오픈소스로 되어 있는 sbe-all-1.4.2-RC4.jar를 사용할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://jar-download.com/artifacts/uk.co.real-logic/sbe-samples/1.4.2-RC4/source-code&quot;&gt;https://jar-download.com/artifacts/uk.co.real-logic/sbe-samples/1.4.2-RC4/source-code&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;헤더파일을 생성할 수 있는 스크립트는 다음과 같이 할 수 있다. (java 1.8 이상 사용)&lt;/p&gt;
&lt;pre id=&quot;code_1576567324110&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;java -Dsbe.target.language=cpp -Dsbe.generate.ir=true -Dsbe.output.dir=$HOME/gensrc -Dsbe.keyword.append.token=_ -jar sbe-all-1.4.2-RC4.jar templates_FixBinary.xml&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;위 프로그램 실행이 되면 템플릿에 기반한 SBE 파싱을 위한 클래스들이 정의된 헤더(*.h) 파일들이 생성되어 있는 것을 확인할 수 있다. 생성된 헤더 파일을 include 하여 시세 수신을 개발하기 시작하면 된다. 수신된 MDP 데이터 전문에는&amp;nbsp; 템플릿 버전이 포함되어 있는데 그 버전을 확인하고, 파싱을 진행하도록 코딩하는 것이 좋다.&lt;/p&gt;</description>
      <category>FEP</category>
      <author>FIX &amp;amp; FEP</author>
      <guid isPermaLink="true">https://fixfep.tistory.com/11</guid>
      <comments>https://fixfep.tistory.com/11#entry11comment</comments>
      <pubDate>Tue, 17 Dec 2019 16:36:25 +0900</pubDate>
    </item>
    <item>
      <title>CME 서울Hub에 대한 기본 지식</title>
      <link>https://fixfep.tistory.com/10</link>
      <description>&lt;p&gt;CME 거래소는 전세계 파생상품시장에서 차지하는 비율이 상당히 높은 거래소이다. 국내에서 해외파생을 거래하는 경우 90% 이상이 CME 거래소를 이용한다고 해도 무방한다. 해외주식의 경우 국가마다 상장된 종목이 틀리기 때문에 다양한 국가의 증권거래소가 나름의 경쟁력을 갖추고 있다고 볼수 있다. 하지만 실물자산이 한정되어 있는 해외파생의 경우 유동성 공급이 원활한 메이저 거래소에서 독식하는 경향이 뚜렷하다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;CME 거래소는 서울에 물리적으로 Hub를 구축하였다. 목동과 상암 데이터 센터에 허브가 구축이 되어 있어서 CME Globex (시카고)로 직접 연결할 수 있는 구조를 만들어 준 것이다. 실제로는 일본(AT도쿄, 일본NTT)을 거쳐서 태평양을 통과하게 되어 있다. 국내 증권/선물사들은 CME Hub에 연결해서 FIX로 직접 주문을 낼 수 있고, CME의 MDP 시세도 직접 받아볼 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;CME 상암데이터 센터는 Verizon 회선을 통해 일본 AT도쿄로 연결되고, 다시 Verizon 회선을 통해 시카고 CME Globex 시카고로 연결된다고 한다. CME 목동데이터 센터를 통하는 경우 NTT회선을 통해 일본NTT로 연결되고 NTT회선을 통해 다시 시카고로 연결되는 구조이다. 일본을 통해 시카고로 가는 회선 장애를 대비해서 영국 등 다른 나라를 경유할 수 있는 백업회선도 구축되어 있다고 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;보통 회원사들은 CME 상암/목동을 각각 연결해 놓는다. 시세의 경우 양쪽에서 동시에 수신하면 되니까 크게 문제가 될 것은 없다. 주문의 경우 문제가 발생할 소지가 조금은 있다. 회원사-CME Hub 구간은 당연히 확인이 가능하다. 확인이 가능하다는 것은 네트웍 장애 발생시 자동 테이크오버를 통해 정상적으로 서비스할 수 있음을 의미한다.&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;서울-일본간 구간에 문제가 발생할 때 감지가 어렵기 때문이다. 해당 구간 문제 발생을 대비하여 BGP 프로토콜을 통해서 회선상태정보를 전송해 주게 되어 있지만, 테스트하기가 어렵고 정상 동작한다고 보장하기도 어렵다. 가장 좋은 방법은 각 회원사에서 FIX 연결 타임아웃 발생시 회선을 다른 CME Hub로 변경시키는 것이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;CME FIX 주문&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;CME 거래소의 경우 일반적인 FIX엔진으로 주문을 내기가 어렵다. 최초 로그인시 Secure Logon 등 CME에서 요청하는 조건을 충족시키기 어렵기 때문이다. 전세계적으로 사용이 많은 거래소라 FIX 엔진 제공업체에서 CME 접속을 위한 환경을 제공해 주는 경우가 많다. 주문의 경우 회선을 크게 할 필요는 없어보인다. 대역폭이 1MB 정도면 충분하다고 판단된다. 시세도 같이 수신하는 경우 시세 회선은 최소 200MB 이상으로 크게 사용하기 때문에 함께 사용해도 무방하다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;FIX Secure Logon을 위해서 CME Customer Center에 로그인해서 Access ID와 Secret Key를 발급해야 한다. 만기는 1년 단위이며 갱신은 만기 몇일 전이든 관계는 없다. 단 새로운 키를 발급받았을 경우 4주 후에는 기존에 키는 자동으로 폐기(Expired) 된다고 한다. 키 발급에 대한 관리는 청산FCM에서 대신해 줄 수 있지만, 현재 대부분 회원사에서 직접 하고 있는 추세이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;CME MDP 시세 수신&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;CME 시세는 멀티캐스트 형태로 제공해준다. 여러개의 다양한 채널을 가지고 있으며, CME 내부에서 채널별로 품목들을 할당해 놓았다. CME에서 제공하는 ftp 사이트에서 환경설정 정보를 내려받아 확인해볼 수 있다. CME 상암/목동 각각에서 변동분 실시간 시세와 스냅샷을 제공해 주고 있다. 스냅샷은 전품목에 대해 현시점에서의 시세를 제공해 주는 것으로 거의 실시간에 가깝게 느껴질 정도로 자주 많은 데이터가 발생한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;UDP 시세의 특성상 유실의 가능성이 존재하기 때문에 넉넉한 회선을 확보할 필요가 있다. 선물/옵션을 다 하는 경우에는 최소 300MB 이상의 회선은 확보되어야 할 것으로 보인다. 회선장애에 대비하고, 패킷누락을 보정하기 위해 시세 수신을 목동/상암에서 동시에 수신하여 상호 보정하는 것을 추천한다. 또한 스냅샷 데이터도 받아서 누락분에 대한 이차 보정도 함께 수행하면 더 좋다. 스냅샷 데이터는 상암/목동 중 한 곳에서만 수신하고, 문제 발생시 다른쪽에서 수신을 시작하는 것이 좋다. 스냅샷 시세의 양도 상당하기 때문이다.&lt;/p&gt;</description>
      <category>FIX</category>
      <author>FIX &amp;amp; FEP</author>
      <guid isPermaLink="true">https://fixfep.tistory.com/10</guid>
      <comments>https://fixfep.tistory.com/10#entry10comment</comments>
      <pubDate>Wed, 11 Dec 2019 08:56:41 +0900</pubDate>
    </item>
    <item>
      <title>FIX 주문 관련 주요 태그</title>
      <link>https://fixfep.tistory.com/9</link>
      <description>&lt;p&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;거래소코드(Exchange)&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;-&amp;nbsp;거래소코드를&amp;nbsp;사용,&amp;nbsp;거래소코드는&amp;nbsp;보통&amp;nbsp;SecurityExchange(207)태그를&amp;nbsp;사용하거나&amp;nbsp;ExDestination(100)태그를&amp;nbsp;사용함 &lt;br /&gt;-&amp;nbsp;CME&amp;nbsp;Hub를&amp;nbsp;통해&amp;nbsp;거래소&amp;nbsp;iLink에&amp;nbsp;직접&amp;nbsp;주문을&amp;nbsp;낼&amp;nbsp;때에는&amp;nbsp;거래소코드&amp;nbsp;사용하지&amp;nbsp;않음 &lt;br /&gt;-&amp;nbsp;Execution&amp;nbsp;destination&amp;nbsp;as&amp;nbsp;defined&amp;nbsp;by&amp;nbsp;institution&amp;nbsp;when&amp;nbsp;order&amp;nbsp;is&amp;nbsp;entered.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;품목코드&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;1.&amp;nbsp;Symbol(55) &lt;br /&gt;-&amp;nbsp;Ticker&amp;nbsp;symbol.&amp;nbsp;Common,&amp;nbsp;&quot;human&amp;nbsp;understood&quot;&amp;nbsp;representation&amp;nbsp;of&amp;nbsp;the&amp;nbsp;security. &lt;br /&gt;-&amp;nbsp;Use&amp;nbsp;&quot;[N/A]&quot;&amp;nbsp;for&amp;nbsp;products&amp;nbsp;which&amp;nbsp;do&amp;nbsp;not&amp;nbsp;have&amp;nbsp;a&amp;nbsp;symbol. &lt;br /&gt;-&amp;nbsp;선물의&amp;nbsp;경우&amp;nbsp;품목&amp;nbsp;결제월을&amp;nbsp;제외한&amp;nbsp;순수&amp;nbsp;품목코드(Contract&amp;nbsp;code) &lt;br /&gt;-&amp;nbsp;선물의&amp;nbsp;경우&amp;nbsp;MaturityMonthYear(200)과&amp;nbsp;함께&amp;nbsp;쓰임&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;2.&amp;nbsp;SecurityID(48)&amp;nbsp;/&amp;nbsp;SecurityIDSource(22) &lt;br /&gt;-&amp;nbsp;SecurityID(48)이&amp;nbsp;설정되어&amp;nbsp;있으면&amp;nbsp;반드시&amp;nbsp;SecurityIDSource(22)&amp;nbsp;태그가&amp;nbsp;필요함 &lt;br /&gt;-&amp;nbsp;SecurityID(48)&amp;nbsp;value&amp;nbsp;can&amp;nbsp;be&amp;nbsp;specified&amp;nbsp;if&amp;nbsp;no&amp;nbsp;symbol(55)&amp;nbsp;exists &lt;br /&gt;(e.g.&amp;nbsp;non-exchange&amp;nbsp;traded&amp;nbsp;Collective&amp;nbsp;Investment&amp;nbsp;Vehicles) &lt;br /&gt;-&amp;nbsp;SecurityIDSource(22)&amp;nbsp;:&amp;nbsp;1(CUSIP),&amp;nbsp;2(SEDOL),&amp;nbsp;3(QUIK),&amp;nbsp;4(ISIN),&amp;nbsp;...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;* ISIN 코드&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- 국내주식/파생의 경우 예탁원 또는 한국거래소에서 ISIN 코드를 관리해줌&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- 해외주식의 경우 예탁원에서 ISIN 코드를 관리해줌&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- 해외파생의 경우 별도로 ISIN 코드를 관리해 주는 기관이 없음&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;. 해외주식에서 거래소 심볼을 키로 사용하여 주문을 내는 경우, 다른 거래소에서 동일 종목이 상장될 경우 문제가 발생할 소지가 있지만 해외파생의 경우 내부적으로 시스템코드를 관리하여 중목 이슈를 방지한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;. 해외파생상품시장에서 사실상 국제표준코드 역할을 하고 있는 Bloomberg Ticker, 로이터코드(RIC)도 내부적으로 관리해서 사용하는 것을 권고 한다. 해당 코드들은 해외주식과 같이 중복의 이슈가 발생할 가능성이 없다.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;가격(Price)&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;1.&amp;nbsp;Price(44)&amp;nbsp;:&amp;nbsp;주문가격,&amp;nbsp;지정가주문(40=2)의&amp;nbsp;경우&amp;nbsp;이곳에&amp;nbsp;가격을&amp;nbsp;넣는다. &lt;br /&gt;2.&amp;nbsp;LastPx(31)&amp;nbsp;:&amp;nbsp;체결가격 &lt;br /&gt;3.&amp;nbsp;AvgPx(6)&amp;nbsp;:&amp;nbsp;(체결)평균단가?,&amp;nbsp;SUM(LastPx*LastQty)/CumQty &lt;br /&gt;4.&amp;nbsp;BidPx(132)&amp;nbsp;:&amp;nbsp;매수호가 &lt;br /&gt;5.&amp;nbsp;OfferPx(133)&amp;nbsp;:&amp;nbsp;매도호가 &lt;br /&gt;6. StopPx(99) : Stop주문 stop 가격&lt;br /&gt;7.&amp;nbsp;StrikePrice(202)&amp;nbsp;:&amp;nbsp;옵션에&amp;nbsp;대한&amp;nbsp;행사가격 &lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;수량(Quantity)&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;1.&amp;nbsp;OrderQty(38)&amp;nbsp;:&amp;nbsp;주문수량&amp;nbsp;=&amp;gt;&amp;nbsp;체결시에&amp;nbsp;주문수량은&amp;nbsp;그대로&amp;nbsp;내려옴 &lt;br /&gt;2.&amp;nbsp;LastQty(32)&amp;nbsp;:&amp;nbsp;체결수량 &lt;br /&gt;3.&amp;nbsp;CumQty(14)&amp;nbsp;:&amp;nbsp;누적체결수량 &lt;br /&gt;4.&amp;nbsp;LeavesQty(151)&amp;nbsp;:&amp;nbsp;미체결잔량 &lt;br /&gt;※ 주문수량(OrderQty) = 누적체결수량(CumQty) + 미체결잔량(LeavesQty) &lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;주문유형&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;1.&amp;nbsp;OrdType(40) &lt;br /&gt;1&amp;nbsp;-&amp;nbsp;Market(시장가) &lt;br /&gt;2&amp;nbsp;-&amp;nbsp;Limit(지정가) &lt;br /&gt;3&amp;nbsp;-&amp;nbsp;Stop(손절) &lt;br /&gt;4&amp;nbsp;-&amp;nbsp;StopLimit(지정가손절) &lt;br /&gt;5&amp;nbsp;-&amp;nbsp;MarketOnClose &lt;br /&gt;6&amp;nbsp;-&amp;nbsp;WithOrWithout &lt;br /&gt;7&amp;nbsp;-&amp;nbsp;LimitOrBetter &lt;br /&gt;8&amp;nbsp;-&amp;nbsp;LimitWithOrWithout&amp;nbsp;...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;TimeInForce(59)&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;0&amp;nbsp;-&amp;nbsp;Day &lt;br /&gt;1&amp;nbsp;-&amp;nbsp;GoodTillCancel &lt;br /&gt;2&amp;nbsp;-&amp;nbsp;AtTheOpening &lt;br /&gt;3&amp;nbsp;-&amp;nbsp;ImmediateOrCancel(IOC) &lt;br /&gt;4&amp;nbsp;-&amp;nbsp;FillOrKill &lt;br /&gt;5&amp;nbsp;-&amp;nbsp;GoodTillCrossing &lt;br /&gt;6&amp;nbsp;-&amp;nbsp;GoodTillDate &lt;br /&gt;7&amp;nbsp;-&amp;nbsp;AtTheClose &lt;br /&gt;-&amp;nbsp;GTD주문의&amp;nbsp;경우&amp;nbsp;보통&amp;nbsp;432(ExpireDate)&amp;nbsp;또는&amp;nbsp;126(ExpireTime)&amp;nbsp;사용 &lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;주문번호&amp;nbsp;및&amp;nbsp;트레이딩&amp;nbsp;ID&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;1.&amp;nbsp;ClOrdID(11)&amp;nbsp;:&amp;nbsp;주문번호 &lt;br /&gt;2.&amp;nbsp;OrigClOrdID(41)&amp;nbsp;:&amp;nbsp;원주문번호 &lt;br /&gt;3.&amp;nbsp;OrderID(37) &lt;br /&gt;-&amp;nbsp;FCM에서&amp;nbsp;거래소로&amp;nbsp;주문낼&amp;nbsp;때&amp;nbsp;사용하는&amp;nbsp;주문번호 &lt;br /&gt;-&amp;nbsp;FCM에서&amp;nbsp;체결데이터&amp;nbsp;보내줄&amp;nbsp;때&amp;nbsp;이&amp;nbsp;주문번호를&amp;nbsp;보내줌 &lt;br /&gt;4.&amp;nbsp;SecondaryOrderID(198) &lt;br /&gt;5. ExecID(17) : 체결번호로 체결메시지에 있는 유일한 값 (FCM과 체결내역 대사할 때 사용) &lt;br /&gt;6. ClientID(109) : 주문시 Client에서 보냄, 주문확인/주문체결내역 정보에는 안 쓰임, FIX4.3부터 사라짐 &lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;날짜&amp;nbsp;및&amp;nbsp;시간&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;1. SendingTime(52) : FIX&amp;nbsp;엔진에서&amp;nbsp;생성되는&amp;nbsp;전송시간,&amp;nbsp;UTC&amp;nbsp;시간&amp;nbsp;사용 &lt;br /&gt;2. TransactTime(60) : 업무에서 보내주는 거래시각으로 UTC 시간 사용 &lt;br /&gt;3.&amp;nbsp;OrigSendingTime(122) &lt;br /&gt;4. OrigTime(42) : Time&amp;nbsp;of&amp;nbsp;message&amp;nbsp;origination,&amp;nbsp;일반&amp;nbsp;메시지들의&amp;nbsp;발생시각이므로&amp;nbsp;주문관련&amp;nbsp;메시지에서는&amp;nbsp;미사용??? &lt;br /&gt;5.&amp;nbsp;TradeDate(75) &lt;br /&gt;-&amp;nbsp;Indicates&amp;nbsp;date&amp;nbsp;of&amp;nbsp;trade&amp;nbsp;referenced&amp;nbsp;in&amp;nbsp;this&amp;nbsp;message&amp;nbsp;in&amp;nbsp;YYYYMMDD&amp;nbsp;format.&amp;nbsp;Absence&amp;nbsp;of&amp;nbsp;this&amp;nbsp;field&amp;nbsp;indicates &lt;br /&gt;current&amp;nbsp;day&amp;nbsp;(expressed&amp;nbsp;in&amp;nbsp;local&amp;nbsp;time&amp;nbsp;at&amp;nbsp;place&amp;nbsp;of&amp;nbsp;trade). &lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;HandlInst(21)&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;-&amp;nbsp;FCM에서&amp;nbsp;개입을&amp;nbsp;할지여부를&amp;nbsp;결정하는&amp;nbsp;것으로&amp;nbsp;일반적으로&amp;nbsp;1로&amp;nbsp;설정 &lt;br /&gt;-&amp;nbsp;DMA&amp;nbsp;orders(low-touch)&amp;nbsp;are&amp;nbsp;sent&amp;nbsp;directly&amp;nbsp;to&amp;nbsp;the&amp;nbsp;exchange/MTF/ECN&amp;nbsp;without&amp;nbsp;any&amp;nbsp;intervention.&amp;nbsp;(21=1) &lt;br /&gt;-&amp;nbsp;CARE&amp;nbsp;orders(high-touch)&amp;nbsp;are&amp;nbsp;sent&amp;nbsp;to&amp;nbsp;an&amp;nbsp;OMS&amp;nbsp;to&amp;nbsp;be&amp;nbsp;worked&amp;nbsp;by&amp;nbsp;the&amp;nbsp;broker.(21=3) &lt;br /&gt;-&amp;nbsp;Used&amp;nbsp;In &lt;br /&gt;&amp;nbsp; . Order Cancel/Replace Request&amp;nbsp;&amp;nbsp;정정주문 &lt;br /&gt;&amp;nbsp; . Order - List&amp;nbsp;&amp;nbsp;신규주문(다건) &lt;br /&gt;&amp;nbsp; . Order - Single&amp;nbsp;&amp;nbsp;신규주문(단건) &lt;br /&gt;-&amp;nbsp;취소주문에는&amp;nbsp;21&amp;nbsp;태그가&amp;nbsp;없다. &lt;br /&gt;-&amp;nbsp;태그&amp;nbsp;값 &lt;br /&gt;&amp;nbsp; 1=Automated execution order, private, no Broker intervention &lt;br /&gt;&amp;nbsp; 2=Automated execution order, public, Broker intervention OK &lt;br /&gt;&amp;nbsp; 3=Manual order, best execution &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;설명(상세기술)&lt;/span&gt; &lt;/b&gt;&lt;br /&gt;1.&amp;nbsp;Text(58) &lt;br /&gt;-&amp;nbsp;CME의&amp;nbsp;경우&amp;nbsp;Business&amp;nbsp;Reject인&amp;nbsp;경우&amp;nbsp;35=3&amp;nbsp;메시지를&amp;nbsp;통해&amp;nbsp;거부처리하고,&amp;nbsp;58태그에&amp;nbsp;상세&amp;nbsp;내용&amp;nbsp;기입 &lt;br /&gt;&amp;nbsp; 예 : 58(Text)=Business Reject: Required Field Missing priceistoolarge: &lt;br /&gt;2.&amp;nbsp;OrdRejReason(108) &lt;br /&gt;3.&amp;nbsp;CxlRejReason(102) &lt;br /&gt;&amp;nbsp; - 취소거부(Cancel Rejection) 사유를 나타내기 위한 코드값, 35=8과 함께 쓰임 &lt;br /&gt;&amp;nbsp; (0=Too late to cancel, 1=Unknown order, 2=Broker / Exchange Option ...)&lt;br /&gt;4. CxlRejResponseTo(434)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; - 취소거부에 대한 요청유형을 구분하기 위한 코드값 (1=Order Cancel Request, 2=Order Cancel/Replace Request)&lt;br /&gt;5.&amp;nbsp;ExecRestatementReason(378) &lt;br /&gt;&amp;nbsp; - 실행타입 변경을 나타내기 위한 코드값, 내용은 String(58) 태그 사용 &lt;br /&gt;&amp;nbsp; &amp;nbsp; (0=GT Corporate action, 1=GT renewal / restatement (no corporate action), 2=Verbal change, 3=Repricing of order ...)&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;Side(54)&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;-&amp;nbsp;1&amp;nbsp;:&amp;nbsp;Buy &lt;br /&gt;-&amp;nbsp;2&amp;nbsp;:&amp;nbsp;Sell &lt;br /&gt;-&amp;nbsp;3&amp;nbsp;:&amp;nbsp;Buy&amp;nbsp;minus &lt;br /&gt;-&amp;nbsp;4&amp;nbsp;:&amp;nbsp;Sell&amp;nbsp;plus &lt;br /&gt;-&amp;nbsp;5&amp;nbsp;:&amp;nbsp;Sell&amp;nbsp;short &lt;br /&gt;- 6 : Sell short exempt &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;PutOrCall(201)&lt;/span&gt; &lt;/b&gt;&lt;br /&gt;-&amp;nbsp;PutOrCall(201)&amp;nbsp;0:Put,&amp;nbsp;1:Call,&amp;nbsp;SecurityType(167)과&amp;nbsp;함께&amp;nbsp;쓰임 &lt;br /&gt;-&amp;nbsp;FIX&amp;nbsp;4.3부터는&amp;nbsp;사라짐 &lt;br /&gt;-&amp;nbsp;FIX&amp;nbsp;4.3부터&amp;nbsp;CFICode(461)을&amp;nbsp;가지고&amp;nbsp;구분 &lt;br /&gt;.&amp;nbsp;CFI&amp;nbsp;Code가&amp;nbsp;F로&amp;nbsp;시작하는&amp;nbsp;경우&amp;nbsp;선물 &lt;br /&gt;.&amp;nbsp;CFI&amp;nbsp;Code가&amp;nbsp;OP로&amp;nbsp;시작하는&amp;nbsp;경우&amp;nbsp;풋옵션,&amp;nbsp;OC로&amp;nbsp;시작하는&amp;nbsp;경우&amp;nbsp;콜옵션&lt;/p&gt;</description>
      <category>FIX</category>
      <author>FIX &amp;amp; FEP</author>
      <guid isPermaLink="true">https://fixfep.tistory.com/9</guid>
      <comments>https://fixfep.tistory.com/9#entry9comment</comments>
      <pubDate>Tue, 10 Dec 2019 15:20:32 +0900</pubDate>
    </item>
    <item>
      <title>FIX 주문/접수/체결 시나리오</title>
      <link>https://fixfep.tistory.com/8</link>
      <description>&lt;p&gt;일반적인 주문은 다음과 같은 시나리오가 가정해 볼 수 있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 주문 시나리오&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(1)&amp;nbsp;신규주문(35=D),&amp;nbsp;주문접수(35=8,39=0),&amp;nbsp;부분체결(35=8,39=1)&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(2)&amp;nbsp;신규주문(35=D),&amp;nbsp;주문접수(35=8,39=0),&amp;nbsp;체결완료(35=8,39=2)&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(3)&amp;nbsp;취소주문(35=F),&amp;nbsp;취소접수(35=8,39=6),&amp;nbsp;취소확인(35=8,39=4)&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(4)&amp;nbsp;정정주문(35=G),&amp;nbsp;정정접수(35=8,39=E),&amp;nbsp;정정확인(35=8,39=5),&amp;nbsp;정정체결(35=8,&amp;nbsp;39=1&amp;nbsp;or&amp;nbsp;2)&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;MsgType(Tag.35)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;8 = ExecutionReport (주문접수/확인/체결) &lt;br /&gt;9 = OrderCancelReject (취소주문 거부) &lt;br /&gt;D&amp;nbsp;=&amp;nbsp;NewOrderSingle&amp;nbsp;(신규주문) &lt;br /&gt;F&amp;nbsp;=&amp;nbsp;OrderCancelRequest&amp;nbsp;(취소주문) &lt;br /&gt;G&amp;nbsp;=&amp;nbsp;OrderCancelReplaceRequest&amp;nbsp;(정정주문)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;MsgType (Tag.150)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;OrderStatus (Tag.39)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;0&amp;nbsp;=&amp;nbsp;New&amp;nbsp; &lt;br /&gt;3&amp;nbsp;=&amp;nbsp;Done&amp;nbsp;for&amp;nbsp;Day&amp;nbsp; &lt;br /&gt;4&amp;nbsp;=&amp;nbsp;Canceled&amp;nbsp; &lt;br /&gt;5&amp;nbsp;=&amp;nbsp;Replaced&amp;nbsp; &lt;br /&gt;6&amp;nbsp;=&amp;nbsp;Pending&amp;nbsp;Cancel,&amp;nbsp;ie&amp;nbsp;result&amp;nbsp;of&amp;nbsp;order&amp;nbsp;cancel&amp;nbsp;Request&amp;nbsp; &lt;br /&gt;7&amp;nbsp;=&amp;nbsp;Stopped&amp;nbsp; &lt;br /&gt;8&amp;nbsp;=&amp;nbsp;Rejected&amp;nbsp; &lt;br /&gt;9&amp;nbsp;=&amp;nbsp;Suspended&amp;nbsp; &lt;br /&gt;C&amp;nbsp;=&amp;nbsp;Expired &lt;br /&gt;E&amp;nbsp;=&amp;nbsp;Pending&amp;nbsp;Replace&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;0&amp;nbsp;=&amp;nbsp;New&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;1&amp;nbsp;=&amp;nbsp;Partially&amp;nbsp;Filled&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;2&amp;nbsp;=&amp;nbsp;Filled&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;3&amp;nbsp;=&amp;nbsp;Done&amp;nbsp;for&amp;nbsp;Day&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;4&amp;nbsp;=&amp;nbsp;Canceled&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;5&amp;nbsp;=&amp;nbsp;Replaced&amp;nbsp;(Deprecated&amp;nbsp;FIX&amp;nbsp;4.3)&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;6 = Pending Cancel, ie result of order cancel&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Request&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;7&amp;nbsp;=&amp;nbsp;Stopped&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;8&amp;nbsp;=&amp;nbsp;Rejected&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;9&amp;nbsp;=&amp;nbsp;Suspended&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;E = Pending Replace&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;-&amp;nbsp;정정주문확인에서&amp;nbsp;가격은&amp;nbsp;정정주문가격이&amp;nbsp;아니라&amp;nbsp;원주문가격이&amp;nbsp;내려옴(Barclays) &lt;br /&gt;- 주문시 Omni 계좌번호 외에 개별 계좌번호도 전송해주는데 FCM별로 필드가 상이함 &lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 거부 시나리오&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;위에서는 정상적인 경우의 시나리오라고 볼 수 있다. 하지만 각 주문에 대해 거부가 발생할 경우가 있으므로 그에 대한 시나리오를 살펴본다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;(1) 신규주문(35=D), 주문접수(35=8,39=2), 주문거부(35=8,39=9) &lt;br /&gt;(2)&amp;nbsp;취소주문(35=F),&amp;nbsp;취소확인(35=8,39=6),&amp;nbsp;취소거부(35=9) &lt;br /&gt;(3)&amp;nbsp;정정주문(35=G),&amp;nbsp;정정접수(35=8,39=E),&amp;nbsp;정정거부(35=9) &lt;br /&gt;(4)&amp;nbsp;신규/정정/취소주문,&amp;nbsp;비즈니스거부(35=j)&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;(5) 신규/정정/취소주문, 거부(35=3)&lt;/span&gt;&lt;/p&gt;</description>
      <category>FIX</category>
      <author>FIX &amp;amp; FEP</author>
      <guid isPermaLink="true">https://fixfep.tistory.com/8</guid>
      <comments>https://fixfep.tistory.com/8#entry8comment</comments>
      <pubDate>Tue, 10 Dec 2019 15:06:40 +0900</pubDate>
    </item>
    <item>
      <title>FIX 세션 메시지 - 테스트 및 거부</title>
      <link>https://fixfep.tistory.com/7</link>
      <description>&lt;p&gt;로그인과 리커버리 메시지 외에 테스트요청(35=1), 세션거부(35=3) 등의 메시지가 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;테스트 메시지&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;먼저 테스트요청 메시지를 살펴보겠다. 앞서 로그인 시나리오에서 세션이 비정상일때 송신한 적이 있다. 테스트 요청은 일반 Heartbeat와 유사하지만 MsgType(Tag.35)를 1(TestRequest)로 요청하고 0(Heartbeat)로 응답받는다. 한가지 다른 점은 테스트 요청시에 112 태그에 원하는 메시지를 넣어서 보낸다. 그러면 테스트 요청을 받은 곳에서는 112로 수신된 메시지를 112 태그에 실어서 Heartbeat(35=0)으로 응답한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt; &amp;lt;테스트 요청 (TestRequest(35=1))&amp;gt;&lt;/b&gt;&lt;br /&gt;[out]8=FIX.4.4^A9=104^A&lt;span style=&quot;color: #ee2323;&quot;&gt;35=1&lt;/span&gt;^A34=2294^A52=20111207-04:15:21.533^A49=ACOMPID^A56=BCOMPID^A&lt;span style=&quot;color: #ee2323;&quot;&gt;112=This&amp;nbsp;is &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;Test&amp;nbsp;Request&amp;nbsp;Message&lt;/span&gt;^A10=175^A &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;lt;테스트 응답 (Heartbeat(35=0))&amp;gt;&lt;/b&gt;&lt;br /&gt;[in]8=FIX.4.4^A9=99^A&lt;span style=&quot;color: #ee2323;&quot;&gt;35=0&lt;/span&gt;^A49=BCOMPID^A56=ACOMPID^A34=727^A52=20111207-04:15:22^A&lt;span style=&quot;color: #ee2323;&quot;&gt;112=This&amp;nbsp;is&amp;nbsp;Test &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;Request&amp;nbsp;Message&lt;/span&gt;^A10=146^A&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;거부 메시지&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;세션 메시지 중에 또 하나 중요한 메시지는 세션거부(35=3)이다. 최초 세션 생성시에 잘못된 정보로 로그인 시도를 할 경우에 로그인 거부를 위해서도 쓰이지만, 비즈니스 메시지에 잘못된 태그를 사용해서도 발생할 수 있다. 비즈니스 메시지의 경우 세션 거부될 경우에는 비즈니스적으로 해야할 일이 있을 수 있다. 예를들어 주문을 낼 경우 해당 주문시 발생한 증거금을 해지해 주는게 하나의 예일 것이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;비즈니스에서 거부를 처리하기 위해서는 RefSeqNum(Tag.45)가 중요한 역할을 한다. 이것을 통해 어떤 메시지에 대한 거부인지 확인을 할 수 있기 때문이다. 세션거부 메시지 수신시 주문내역에서 해당하는 MsgSeqNum를 조회하여 주문내역을 확인할 수 있다. (주문내역을 확인할 수 있는 기능은 보통 FIX 엔진 기능에 포함되어 있다.)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;주문/체결 송수신 매핑 프로세스를 관리하는 경우에는 거부메시지 수신시 45 태그에 있는 시퀀스 번호를 토대로 주문내역을 확인하여 주문번호 등을 설정해 줄 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다음은 정정취소주문(35=G)에 대한 거부(35=3) 예제이다. 텍스트 필드(Tag.58)에 사유를 보내주다. 45=15440이 수신되었으므로 MsgSeqNum이 15440인 메시지에 대한 거부임을 알 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;lt;거부 메시지 수신&amp;gt; &lt;br /&gt;[08/01 08:10:31.481990] SESSIO&amp;gt;&amp;gt; &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;b&gt;[S]&lt;/b&gt;-&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;[8=FIX.4.2^A9=269^A&lt;span style=&quot;color: #ee2323;&quot;&gt;35=G&lt;/span&gt;^A49=ACOMPID^A56=BCOMPID^A&lt;span style=&quot;color: #ee2323;&quot;&gt;34=15440&lt;/span&gt;^A50=220250368421^A142=KR^A57=G^A52=20180731-23:10:31.4&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;81^A369=21070^A1=725DAE03^A11=O20180801194220^A21=1^A38=1^A40=2^A44=1.1729000^A59=0^A41=O2018080119431^A54=1^A55 &lt;br /&gt;=M6E^A60=20180731-23:10:31.478^A167=FUT^A200=201809^A1028=Y^A107=M6EU8^A204=0^A9702=1^A9768=Y^A10=114^A]&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;[08/01 08:10:31.650341] SESSIO&amp;gt;&amp;gt; &lt;b&gt;[R]&lt;/b&gt;-&lt;/p&gt;
&lt;p&gt;[8=FIX.4.2^A9=181^A&lt;span style=&quot;color: #ee2323;&quot;&gt;35=3&lt;/span&gt;^A34=21071^A369=15440^A52=20180731-23:10:31.565^A49=BCOMPID^A50=G^A56=ACOMPID^A57=2202503 &lt;br /&gt;68421^A143=KR^A&lt;span style=&quot;color: #ee2323;&quot;&gt;45=15440&lt;/span&gt;^A58=OrderID&amp;nbsp;(37)&amp;nbsp;must&amp;nbsp;be&amp;nbsp;present&amp;nbsp;on&amp;nbsp;a&amp;nbsp;Cancel&amp;nbsp;or&amp;nbsp;Cancel&amp;nbsp;Replace &lt;br /&gt;Request^A1028=Y^A10=036^A]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>FIX</category>
      <author>FIX &amp;amp; FEP</author>
      <guid isPermaLink="true">https://fixfep.tistory.com/7</guid>
      <comments>https://fixfep.tistory.com/7#entry7comment</comments>
      <pubDate>Tue, 10 Dec 2019 14:41:31 +0900</pubDate>
    </item>
    <item>
      <title>FIX 세션 메시지 - 로그인</title>
      <link>https://fixfep.tistory.com/6</link>
      <description>&lt;p&gt;FIX가 세션 정보를 바탕으로 구성을 완료했으면, 실제 메시지가 어떻게 흘러가는지 확인해 보자.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1. 재전송(Recovery)이 없는 경우 로그인&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 98.021%; height: 173px;&quot; border=&quot;1&quot; data-ke-style=&quot;style15&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 413px; text-align: center;&quot;&gt;&lt;b&gt;클라이언트 (예: ACOMPID)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 412px; text-align: center;&quot;&gt;&lt;b&gt;서버 (예: BCOMPID)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 413px;&quot;&gt;로그인 요청(35=A)&lt;/td&gt;
&lt;td style=&quot;width: 412px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 413px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 412px;&quot;&gt;로그인 응답(35=A)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 413px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Heartbeat 전송(35=0)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 412px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 413px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 412px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Heartbeat 응답(35=0)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;시퀀스(Sequence)가 초기화 된 이후의 최초 로그인은 양쪽에서 MsgSeqNum(Tag.34)이 1번부터 시작하므로 재전송이 발생하지 않는다. 초기화 시점이 서로 틀린 경우에는 재전송이 발생할 수 있겠지만, 정상적인 상황을 가정하고 로그인 절차를 살펴보면 다음과 같다.&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;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Case #1&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;로그인 요청&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;8=FIX.4.2^A9=70&lt;span style=&quot;color: #333333;&quot;&gt;^A35=A&lt;span style=&quot;color: #333333;&quot;&gt;^A49=ACOMPID&lt;span style=&quot;color: #333333;&quot;&gt;^A56=BCOMPID&lt;span style=&quot;color: #333333;&quot;&gt;^A&lt;span style=&quot;color: #ee2323;&quot;&gt;128=ABC&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;^A&lt;span style=&quot;color: #8a3db6;&quot;&gt;34=1&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;^A52=20101109-22:00:09&lt;span style=&quot;color: #333333;&quot;&gt;^A108=30&lt;span style=&quot;color: #333333;&quot;&gt;^A98=0&lt;span style=&quot;color: #333333;&quot;&gt;^A10=007&lt;span style=&quot;color: #333333;&quot;&gt;^A&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&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;&lt;span style=&quot;color: #333333;&quot;&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;&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;lt;로그인 응답&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/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&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;&lt;span style=&quot;color: #333333;&quot;&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;&lt;span style=&quot;color: #333333;&quot;&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;8=FIX.4.2^A9=70&lt;span style=&quot;color: #333333;&quot;&gt;^A35=A&lt;span style=&quot;color: #333333;&quot;&gt;^A&lt;span style=&quot;color: #8a3db6;&quot;&gt;34=1&lt;/span&gt;^A49=ACOMPID&lt;span style=&quot;color: #333333;&quot;&gt;^A56=BCOMPID&lt;span style=&quot;color: #333333;&quot;&gt;^A&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;52=20101109-22:00:09&lt;span style=&quot;color: #333333;&quot;&gt;^A108=30&lt;span style=&quot;color: #333333;&quot;&gt;^A98=0&lt;span style=&quot;color: #333333;&quot;&gt;^A10=222&lt;span style=&quot;color: #333333;&quot;&gt;^A&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #5733b1;&quot;&gt;기관에 따라 로그인시에 Tag.128(DeliverToCompID) 등 특정 태그에 지정된 값을 요청하는 경우가 있다. 해당 기관에서&amp;nbsp; 제공해준 값을 설정하면 된다. 보통 Heartbeat 주기는 30초(108=30) 또는 60초로 로그인 요청을 했다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Case #2&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;&amp;lt;로그인 요청 - Sequence 초기화&amp;gt;&lt;/b&gt; &lt;br /&gt;[06:57:07][out|8=FIX.4.4^A9=85^A35=A^A49=ACOMPID^A56=BCOMPID^A34=1^A52=20111218-21:57:06.999^A98=0^A108=60^A&lt;span style=&quot;color: #ee2323;&quot;&gt;141=Y&lt;/span&gt;^A&lt;span style=&quot;color: #ee2323;&quot;&gt;789=1&lt;/span&gt;^A10=074^A] &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;b&gt;&amp;lt;로그인 응답 - Sequence 초기화&amp;gt;&lt;/b&gt;&lt;br /&gt;[06:57:08][in|8=FIX.4.4^A9=75^A35=A^A49=BCOMPID^A56=ACOMPID^A&lt;span style=&quot;color: #ee2323;&quot;&gt;34=1&lt;/span&gt;^A52=20111218-21:57:08^A108=60^A98=0^A&lt;span style=&quot;color: #ee2323;&quot;&gt;141=Y&lt;/span&gt;^A10=091^A]&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;로그인시에 141=Y을 이용해서 강제로 Sequence 초기화 요청을 하였다. CME 거래소 처럼 기관에 따라 141=Y을 허용하지 않는 경우도 있다.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 0%; height: 70px;&quot; border=&quot;1&quot; data-ke-style=&quot;style11&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;&lt;b&gt;태그/값&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;&lt;b&gt;태그명&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot; colspan=&quot;2&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;8=FIX.4.4&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;BeginString&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot; colspan=&quot;2&quot;&gt;FIX 버전 4.4 사용을 의미&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;9=85&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;BodyLength&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot; colspan=&quot;2&quot;&gt;FIX 전문 길이를 의미(Tag8,9,10 필드를 제외한 길이)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;35=A&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;MsgType&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot; colspan=&quot;2&quot;&gt;로그온&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;49=ACOMPID&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;SenderCompID&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot; colspan=&quot;2&quot;&gt;송신 CompID&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;56=BCOMPID&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;TargetCompID&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot; colspan=&quot;2&quot;&gt;수신 CompID&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;34=1&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;MsgSeqNum&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot; colspan=&quot;2&quot;&gt;시퀀스 번호(최초 로그인시에는 1로 시작함)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;52=&lt;span style=&quot;color: #333333;&quot;&gt;20111218-21:57:06.999&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;SendingTime&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot; colspan=&quot;2&quot;&gt;전송시간(FIX 엔진에서 자동으로 시간 지정, UTC시간)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;98=0&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;EncryptedMethod&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot; colspan=&quot;2&quot;&gt;전문을 암호화하지 않겠다는 의미&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;108=60&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;HeartBtInt&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot; colspan=&quot;2&quot;&gt;Heartbeat 주기를 지정(단위: 초)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;141=Y&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;ResetSeqNumFlag&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot; colspan=&quot;2&quot;&gt;강제로 시퀀스를 초기화 할지 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;789=1&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;NextExpectedMsgSeqNum&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot; colspan=&quot;2&quot;&gt;기대하는 FIX 시퀀스 번호를 보냄&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;10=074&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;CheckSum&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot; colspan=&quot;2&quot;&gt;FIX 메시지 정합성을 위한 체크섬&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2. 재전송(Recovery)이 발생하는 경우 로그인&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 99.7671%; height: 191px;&quot; border=&quot;1&quot; data-ke-style=&quot;style15&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;&lt;b&gt;클라이언트 (예: ACOMPID)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;&lt;b&gt;서버 (예: BCOMPID)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;로그인 요청(35=A)&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;로그인 응답(35=A)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;재전송 요청(35=2)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&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;재전송 응답(35=4)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;재전송 응답(35=4)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;재전송 요청(35=2)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size14&quot;&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;[19:22:38][&lt;b&gt;in&lt;/b&gt;|8=FIX.4.4^A9=60^A35=0^A49=BCOMPID^A56=ACOMPID^A&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;34=5102&lt;/b&gt;&lt;/span&gt;^A52=20111222-10:22:38^A10=134^A|X|X]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;정상적으로 Heartbeat이 수신되었다. 마지막으로 MsgSeqNum(Tag.34)가 &lt;span style=&quot;color: #ee2323;&quot;&gt;5102&lt;/span&gt;임을 알 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;[19:22:56][&lt;b&gt;out&lt;/b&gt;|8=FIX.4.4^A9=64^A35=0^A49=ACOMPID^A56=BCOMPID^A34=5069^A52=20111222-10:22:56.940^A10=097^A]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;정상적으로 Heartbeat를 송신하였다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;[19:23:51][&lt;b&gt;out&lt;/b&gt;|8=FIX.4.4^A9=90^A&lt;span style=&quot;color: #ee2323;&quot;&gt;35=1&lt;/span&gt;^A49=ACOMPID^A56=BCOMPID^A34=5070^A52=20111222-10:23:51.285^A112=20111222-10:23:51.285^A10=078^A]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;Heartbeat이 발생하지 않아 TestRequst(35=1)을 보내서 상태를 확인한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;[19:24:51][&lt;b&gt;out&lt;/b&gt;|8=FIX.4.4^A9=64^A35=0^A49=ACOMPID^A56=BCOMPID^A34=5071^A52=20111222-10:24:51.454^A10=087^A]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;Heartbeat 송신 주기가 되어 발생된 Heartbeat이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;1. 로그인 요청 - 장애에 의한 재로그인&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;[19:25:03][&lt;b&gt;out&lt;/b&gt;|8=FIX.4.4^A9=85^A&lt;span style=&quot;color: #ee2323;&quot;&gt;35=A&lt;/span&gt;^A49=ACOMPID^A56=BCOMPID^A34=5072^A52=20111222-10:25:03.581^A98=0^A108=60^A&lt;span style=&quot;color: #ee2323;&quot;&gt;789=5103&lt;/span&gt;^A10=054^A]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;TestRequest 요청에 대한 응답이 없어서 세션이 끊긴 것으로 판단한다. 세션이 끊겼으므로 로그인 요청(35=A)을 한다. NextExpectedMsgSeqNum(Tag.789)가 5103이라는 것은 위에서 마지막으로 수신받은 메시지의 MsgSeqNum이 5102이기 때문이다. 그래서 수신받을 MsgSeqNum을 789=5103로 지정한 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;2. 로그인 응답 - 장애에 의한 재로그인&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;[19:25:13][&lt;b&gt;in&lt;/b&gt;|8=FIX.4.4^A9=72^A&lt;span style=&quot;color: #ee2323;&quot;&gt;35=A&lt;/span&gt;^A49=BCOMPID^A56=ACOMPID^A&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;34=5105&lt;/b&gt;&lt;/span&gt;^A52=20111222-10:25:13^A108=60^A98=0^A10=181^A|X|X]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;MsgSeqNum(Tag.32) &lt;/span&gt;5103이 수신되어야 하는데 상대기관에서 MsgSeqNum(Tag.34)를 5105를 보냈다. 5103~5105까지 미수신 메시지가 존재한다는 것을 알 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;3. 재전송 요청&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;[19:25:13][&lt;b&gt;out&lt;/b&gt;|8=FIX.4.4^A9=76^A&lt;span style=&quot;color: #ee2323;&quot;&gt;35=2&lt;/span&gt;^A49=ACOMPID^A56=BCOMPID^A34=5073^A52=20111222-10:25:13.552^A&lt;span style=&quot;color: #ee2323;&quot;&gt;7=5103&lt;/span&gt;^A&lt;span style=&quot;color: #ee2323;&quot;&gt;16=&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;0&lt;/span&gt;^A10=111^A]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;미수신 메시지를 받기 위해서 &lt;span style=&quot;color: #8a3db6;&quot;&gt;BeginSeqNo를 &lt;/span&gt;7=5103으로 하고 EndSeqNo를 16=0 으로 요청한다. 16=0은 현재의 Sequence 번호를 EndSeqNo로 사용하라는 의미이다. 16=5105로 보내도 되지만 통상 16=0으로 보내게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;4. 재전송 응답 - Gap Fill mode&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;[19:25:13][&lt;b&gt;in&lt;/b&gt;|8=FIX.4.4^A9=79^A&lt;span style=&quot;color: #ee2323;&quot;&gt;35=4&lt;/span&gt;^A49=BCOMPID^A56=ACOMPID^A&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;34=5103&lt;/b&gt;&lt;/span&gt;^A52=20111222-10:25:13^A&lt;span style=&quot;color: #ee2323;&quot;&gt;43=Y&lt;/span&gt;^A&lt;span style=&quot;color: #ee2323;&quot;&gt;123=Y&lt;/span&gt;^A&lt;span style=&quot;color: #ee2323;&quot;&gt;36=&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;5107&lt;/span&gt;^A10=048^A|X|O]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;5103부터 재전송 요청이 들어온 상태이므로 상대 기관에서는 5103부터 전송을 시작한다. 하지만 상대기관 입장에서는 이 메시지를 이미 보낸 것으로 판단하면 PossDupFlag(Tag.43)을 Y로 설정해서 보내게 된다. 이는 중복이 될 가능성이 있다는 것을 미리 알려주기 위함이다. 리커버리를 위해 송신하는 메시지로 GapFillFlag(Tag.123)을 Y로 설정해서 보내게 된다. NewSeqNo(Tag.36)을 5107로 보냈다는 것은 5104부터 5106까지는 세션메시지라 스킵하고 5107부터 보내겠다는 의미이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;[19:26:13][&lt;b&gt;out&lt;/b&gt;|8=FIX.4.4^A9=64^A35=0^A49=ACOMPID^A56=BCOMPID^A34=5074^A52=20111222-10:26:13.794^A10=097^A]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;세션이 정상화 되었고 Heartbeat를 송신한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;[19:26:13][&lt;b&gt;in&lt;/b&gt;|8=FIX.4.4^A9=60^A35=0^A49=BCOMPID^A56=ACOMPID^A&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;34=5107&lt;/span&gt;&lt;/b&gt;^A52=20111222-10:26:13^A10=136^A|X|X]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #8a3db6;&quot;&gt;SequenceReset을 통해 최종 데이터는 5107부터 수신되는 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>FIX</category>
      <author>FIX &amp;amp; FEP</author>
      <guid isPermaLink="true">https://fixfep.tistory.com/6</guid>
      <comments>https://fixfep.tistory.com/6#entry6comment</comments>
      <pubDate>Tue, 10 Dec 2019 13:48:27 +0900</pubDate>
    </item>
    <item>
      <title>FIX 글로벌 네트웍 구성</title>
      <link>https://fixfep.tistory.com/5</link>
      <description>&lt;p&gt;해외 브로커 또는 거래소와 FIX 세션을 연결하기 위해서는 먼저 물리적 회선을 구성해야 한다. 글로벌 회선사업자로는 BT Radianz와 TNS가 있고, Fix Hub 사업자는 블룸버그 및 톰슨오텍스 등이 있다. 글로벌 사업자까지의 연결은 SKT, LGU+, KT 등 로컬 회선사업자를 통해 연결한다. 특별히 주문이 않은 경우를 제외하고는 보통&amp;nbsp;주문회선 용량은&amp;nbsp;1M 또는 그 이하로 많이 사용한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1. 회선사업자 이용 - BT Radianz, TNS 등&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;물리적 회선이 구성되어 있으면 해당 회선사업자에게 출발지와 목적지 아이피를 보내서 회선사업자 회선 연결을 요청한다. 회선사업자는 각 IP는 자체 라우팅 경로에 등록하고, 각 IP들을 NAT IP로 변경한다. 회선사업자에 의해 제공된 NAT IP를 바탕으로 상호 방화벽을 허용해 줄 수 있도록 등록해준다. 필요시 라우팅 설정도 확인한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;회선사업자에 의해 출발지 및 목적지 IP가 모두 NAT에 의해서 바뀌기 때문에 실제 목적지에 연결하기 위해서는 브로커의 물리적 서버IP가 아닌 회선사업자에 의해 NAT된 목적지IP가 필요하다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;(출발지 서버IP) -&amp;gt; (NAT된 출발지IP) -&amp;gt; (NAT된 목적지IP) -&amp;gt; (목적지 서버IP)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;즉, 출발지에서는 NAT된 목적지IP로 갈 수 있도록 Outbound 방화벽을 허용한다. 목적지에서는 NAT된 출발지IP를 허용하기 위해 Inbound 방화벽을 설정한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;보통 비용은 인바운드 역할(Sell Side)을 하는 브로커에서 비용을 지불하기 때문에 회선사업자가 해당 브로커에서 인보이스를 발송한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2. FIX Hub 사업자 이용 - 블룸버그, 톰슨오텍스(로이터) 등&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Buy Side / Sell Side 모두 블룸버그/톰슨오텍스 Fix 허브 서버에 클라이언트로써 접속한다. 해당 허브사업자에서 제공해 주는 서버IP를 사용하면 된다. 블룸버그의 경우 TLS 암호화 통신을 사용하기 때문에 stunnel 등으로 가상화 터널 구성이 필요하다. stunnel 구성에 대한 정보는 다음에서 확인해 볼 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://studioexitt.github.io/os/os-stunnel/&quot;&gt;https://studioexitt.github.io/os/os-stunnel/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1575875738438&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;How to manage stunnel process without super daemon in linux&quot; data-og-description=&quot;start/stop shell script to run stunnelShell script for managing stunnel (stunnel.sh)&quot; data-og-host=&quot;studioexitt.github.io&quot; data-og-source-url=&quot;https://studioexitt.github.io/os/os-stunnel/&quot; data-og-url=&quot;https://studioexitt.github.io/os/os-stunnel/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://studioexitt.github.io/os/os-stunnel/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://studioexitt.github.io/os/os-stunnel/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: none;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;How to manage stunnel process without super daemon in linux&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;start/stop shell script to run stunnelShell script for managing stunnel (stunnel.sh)&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;studioexitt.github.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>FIX</category>
      <author>FIX &amp;amp; FEP</author>
      <guid isPermaLink="true">https://fixfep.tistory.com/5</guid>
      <comments>https://fixfep.tistory.com/5#entry5comment</comments>
      <pubDate>Mon, 9 Dec 2019 16:33:19 +0900</pubDate>
    </item>
  </channel>
</rss>