Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
FIXエンジン作ってみた
Search
Yuji Tanioka
July 01, 2020
Technology
1
1.8k
FIXエンジン作ってみた
Smartplusで運用開発するBaaSの1機能であるGo製のFIXエンジンについて。
FIXプロトコル、FIXエンジンの概要。BaaSにおけるFIXエンジンの運用。FIXエンジンの利用について。
Yuji Tanioka
July 01, 2020
Tweet
Share
Other Decks in Technology
See All in Technology
CDKで始めるTypeScript開発のススメ
tsukuboshi
1
530
20260208_第66回 コンピュータビジョン勉強会
keiichiito1978
0
190
生成AIを活用した音声文字起こしシステムの2つの構築パターンについて
miu_crescent
PRO
3
220
量子クラウドサービスの裏側 〜Deep Dive into OQTOPUS〜
oqtopus
0
140
モダンUIでフルサーバーレスなAIエージェントをAmplifyとCDKでサクッとデプロイしよう
minorun365
4
220
顧客の言葉を、そのまま信じない勇気
yamatai1212
1
360
今日から始めるAmazon Bedrock AgentCore
har1101
4
420
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
93k
Greatest Disaster Hits in Web Performance
guaca
0
280
Bedrock PolicyでAmazon Bedrock Guardrails利用を強制してみた
yuu551
0
260
Why Organizations Fail: ノーベル経済学賞「国家はなぜ衰退するのか」から考えるアジャイル組織論
kawaguti
PRO
1
180
Claude_CodeでSEOを最適化する_AI_Ops_Community_Vol.2__マーケティングx_AIはここまで進化した.pdf
riku_423
2
610
Featured
See All Featured
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.2k
Accessibility Awareness
sabderemane
0
56
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
110
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
58
50k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
52
Marketing to machines
jonoalderson
1
4.6k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
420
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
220
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
290
A designer walks into a library…
pauljervisheath
210
24k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
240
Transcript
FIXΤϯδϯ࡞ͬͯΈͨɻ Finatext × ΤϒϦʔ ʙελʔτΞοϓ࠷લઢͷGo ͷࣄྫʙ 2020/6/26 Smartplus ୩Ԭ
ࣗݾհ • ୩Ԭɹ༞ࢤʢͨʹ͓͔ɹΏ͏͡ʣ • 11ؒɺۜߦγεςϜ։ൃʹؔΘ͍͕ͬͯͨɺGoΛΓͨͯ͘Finatextά ϧʔϓͷSmartplusʹɻ • ݱࡏɺ ূ݊ϓϥοτϑΥʔϜ BaaSͷ։ൃӡ༻ʹܞΘ͍ͬͯΔ
• GoͰɺओʹޱ࠲։ઃؔ࿈ͷΤϯϋϯεͱ͔࣮ࢪதɻͬͱgo modΛཧղ ͖ͯͨ͠ͱ͜Ζɻ • झຯɺຊΛങ͏͜ͱɻʢੵΈຊɻʣ
͡Ίʹ • Fixnatextάϧʔϓͷূ݊ձࣾͰ͋ΔSmartplusͰɺূ݊ϓϥοτ ϑΥʔϜͰ͋ΔBaaSʢBroker as a Serviceʣͷӡ༻։ൃΛߦͳ͍ͬͯ Δɻ • BaaS΄΅ͯ͢Go
Ͱ։ൃɻ • Go Ͱ։ൃͨ͠BaaSͷػೳʹFIXΤϯδϯ͕͋Δɻ
FIXΤϯδϯͱ • FIXɺFinancial Information eXchangeͷུɻ • FIXϓϩτίϧʹ४ڌͨ͠ϝοηʔδసૹΛߦ͏ιϑτΣΞɻ
FIXϓϩτίϧͱ • ۚ༥ใͷΓͱΓΛిࢠԽ͢Δ͜ͱΛతʹ։ൃ͞Εͨϓϩτί ϧɻ • FIXϓϩτίϧͷ༷ɺෳͷۚ༥ػؔͷؔऀͰߏ͞Εͨஂ ମɺFIX Protocol LimitedʢFPLʣ͕ॴ༗ɾཧ͍ͯ͠Δɻ •
1992ɺถࠃגࣜചങΛରͱͨ͠ిࢠऔҾͷඪ४ԽΛతʹɺι ϩϞϯϒϥβʔζࣾɺϑΟσϦςΟࣾʹΑͬͯఆٛ͞Εͨɻ
• ࢿՈ͔ΒͷגࣜͷจΛBaaSͰड͚ɺFIXΤϯδϯʹͯ౦ژূ݊औ ҾॴͱిࢠऔҾʢגࣜͷൃɺఆͷड৴ʣ͍ͯ͠Δɻ BaaSͰͷFIXΤϯδϯͷར༻ גࣜൃ #BB4 '*9 Τ ϯ δ
ϯ औ࣍ઌ '*9 Τ ϯ δ ϯ ౦ژऔҾূ݊ॴ גࣜൃ גࣜൃ ఆͨ͠ ఆͨ͠ ఆͨ͠ FIXϓϩτίϧ
FIXϓϩτίϧɹ • BaaSͰɺFIXΤϯδϯؒΛTCPͰ௨৴͢Δɻ • BaaSͰɺFIXϓϩτίϧͷόʔδϣϯ4.2Λར༻͍ͯ͠Δ • LogonΛ࠷ॳʹૹ৴͢ΔଆͷFIXΤϯδϯΛΠχγΤʔλɺड৴͢Δ ଆΛΞΫηϓλͱΑͿɻ • ϝοηʔδຖʹ௨൪͕͋Γɺϝοηʔδͷ࠶ૹ͕Մೳ
• FIXΤϯδϯಉ࢜ͷࢮ׆ࢹ͕Մೳ
FIXϓϩτίϧɹʙిจϑΥʔϚοτʙ • tagܗࣜͷిจϑΥʔϚοτ • tagʹͦΕͧΕҙຯ͕͋Δɻtag8:Fixόʔδϣϯ etc • ”tag൪߸”=”value” ͷܗࣜ •
۠Γɺ0x01 • ʢαϯϓϧʣLogonϝοηʔδɻ۠Γ”|”Ͱදࣔɻ 8=FIX.4.2|9=69|35=A|34=1|49=SENDER|52=20200608-22:36:08.683|56=RECVER|98=1|108=30|10=040|
FIXϓϩτίϧɹʙཧܥిจϑϩʔʙ ΞΫηϓλ ΠχγΤʔλ Logon Logout Logout Logon ۀܥిจ ۀܥిจ ۀܥిจ
HeartBeat TestRequest HeartBeat ೝূ0,ͷ߹ -PHPOΛૹ৴ 5FTU3FRVFTUΛड৴͢ Δͱ)FBSU#FBUΛૹ৴ ҰఆִؒͰ)FBSU#FBU Λૹ৴ ૬खଆ͔ΒҰఆ࣌ؒ ʹ)FBSU#FBU͕དྷͳ͍ ߹ʹ5FTU3FRVFTU Λૹ৴
FIXϓϩτίϧɹʙۀܥిจϑϩʔʙ ΞΫηϓλ ΠχγΤʔλ ड గਖ਼ड గਖ਼จ ఆ ৽نจ ฑ גΛ
ԁͰCVZจ ࢢʹͯฑ͕ ԁͰגఆ ฑ גΛ ԁͰCVZจʹగਖ਼ గਖ਼ྃ
FIXϓϩτίϧɹʙ࠶ૹͷΈʙ ΞΫηϓλ ΠχγΤʔλ Logon(seqno=1) Logon(seqno=1) ۀܥిจ(seqno=2) ۀܥిจ(seqno=3) ۀܥిจ(seqno=4) ۀܥిจ(seqno=5) Resend
Request(seqno=2, BeginSeqno=4) ۀܥిจ(seqno=4, 43=Y) ۀܥిจ(seqno=5, 43=Y) TFROP͕དྷͣɺ TFROP͕͖ͨͰ࠶ ૹґཔ TFROPͱͲ͔ͣ ࠶ૹґཔ͕͖ͨͷͰॏ ෳϑϥά Ληοτ ͯ͠࠶ૹ ·ͱΊͯ࠶ૹґཔɺ࠶ૹεΩοϓɺ௨൪ϦηοτཁٻͳͲ͋Γɻ
BaaSͰͷγεςϜߏ %# จड '*9XSJUFS 0SEFSOPUJpFS '*9QSPYZ %# .2 BaaS ᶃड
ᶄDBཧ ᶅFIXۀܥిจ࡞ ᶆFIXΤϯδϯ ᶇૹड৴ిจཧ ᶈड৴ۀܥిจॲཧ ᶉরձ ᶊཤྺࢀর ࢢ FIXϓϩτίϧ
BaaSͰͷFIXΤϯδϯͷӡߦ • ฏ 7:30ࠒɹ FIXΤϯδϯΛىಈ͠ɺΞΫηϓλʹLogonΛૹ৴ • ฏ 8:00ࠒɹ ࢢൃ։࢝ •
ฏ 9:00ɹɹ ࢢऔҾ։࢝ʢఆΛड৴࢝͠ΊΔʣ • ฏ11:30ɹɹલऴྃʢఆड৴͠ͳ͘ͳΔʣ • ฏ12:30ɹɹޙ։࢝ʢఆͷड৴࠶։ʣ • ฏ15:00ɹɹࢢͰͷऔҾऴྃ • ฏ15:15ࠒɹdone for day ిจΛड৴ • ฏ16:00ࠒɹLogout͠FIXΤϯδϯΛఀࢭ
ͦͷଞ • GoͰTCPૹड৴Λهड़͍ͯ͠Δɻ • ૹड৴ΛgoroutineͱchannelͰฒߦॲཧɻ • ిจ࠶ૹͷͨΊͷిจอ࣋ʹDatabaseΛར༻͍ͯ͠Δɻ • ϐʔΫ࣌ؒɺฏ8:00ʙ8:05Ͱઍ݅΄Ͳͷ৽نจΛૹ৴͍ͯ͠ Δɻ
ͬͯΈͯ • ҎલFIXϓϩτίϧͱࣅͨϓϩτίϧΛར༻͍ͯͨ͠ͷͰɺۙײ ͕͋ͬͨ • ϚΠΫϩαʔϏεͰͷτϥϯβΫγϣϯཧͷ͠͞ • Մ༻ੑɺࠓޙΑΓΑ͍͖͍ͯͨ͘͠ͱ͜Ζɻ • TCP௨৴ΛϓϩάϥϜͰॻ͘͜ͱʹͪΐͬͱͨ͠ίπ͕͍Δɻ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ