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
データの整合性を保ちたいだけなんだ
shoheimitani
8
3.2k
モダンUIでフルサーバーレスなAIエージェントをAmplifyとCDKでサクッとデプロイしよう
minorun365
4
220
GitHub Issue Templates + Coding Agentで簡単みんなでIaC/Easy IaC for Everyone with GitHub Issue Templates + Coding Agent
aeonpeople
1
260
30万人の同時アクセスに耐えたい!新サービスの盤石なリリースを支える負荷試験 / SRE Kaigi 2026
genda
4
1.3k
Exadata Fleet Update
oracle4engineer
PRO
0
1.1k
CDK対応したAWS DevOps Agentを試そう_20260201
masakiokuda
1
380
AI駆動開発を事業のコアに置く
tasukuonizawa
1
340
FinTech SREのAWSサービス活用/Leveraging AWS Services in FinTech SRE
maaaato
0
130
学生・新卒・ジュニアから目指すSRE
hiroyaonoe
2
730
22nd ACRi Webinar - NTT Kawahara-san's slide
nao_sumikawa
0
100
Tebiki Engineering Team Deck
tebiki
0
24k
SREのプラクティスを用いた3領域同時 マネジメントへの挑戦 〜SRE・情シス・セキュリティを統合した チーム運営術〜
coconala_engineer
2
740
Featured
See All Featured
HDC tutorial
michielstock
1
390
Building Applications with DynamoDB
mza
96
6.9k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
Six Lessons from altMBA
skipperchong
29
4.2k
The agentic SEO stack - context over prompts
schlessera
0
640
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
79
Bash Introduction
62gerente
615
210k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
1
100
YesSQL, Process and Tooling at Scale
rocio
174
15k
Raft: Consensus for Rubyists
vanstee
141
7.3k
Statistics for Hackers
jakevdp
799
230k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
62
50k
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௨৴ΛϓϩάϥϜͰॻ͘͜ͱʹͪΐͬͱͨ͠ίπ͕͍Δɻ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ