Scala と Microservices でつくる 証券会社とスタートアップ / FOLIO in JJUG CCC 2018 Fall

Scala と Microservices でつくる 証券会社とスタートアップ / FOLIO in JJUG CCC 2018 Fall

A951d6c14b585791bf573afbee1e9be5?s=128

Takuya "Mura-Mi" Murakami

December 13, 2018
Tweet

Transcript

  1. 4DBMBה.JDSPTFSWJDFTדאֻ׷ 鏾ⵙ⠓爡הأة٦ز،حف 2018/12/15 JJUG CCC 2018 Fall #jjug_ccc #ccc_c7 ଜ্୓໵

    (ΉΒΈΜ)
  2.  募♳䬪⛲  -FBEPG#BDLFOE&OHJOFFSTJO'0-*0  䎃剢חآّ؎ٝ  ֿ׸תד ˖ 4JNQMFY

    _  ˖ $ZCFS"HFOU"E5FDI4UVEJP _ XIPBNJ
  3. None
  4. ➙傈ծֶ鑧ׅ׷ֿה

  5. None
  6. أة٦ز،حفד֮׶זָ׵ 鏾ⵙ⠓爡ד׮֮׷ '0-*0׾ 4DBMBהو؎ؙٗ؟٦ؽأָ וֲ佄ִגְ׷ַ

  7. '0-*0חֶֽ׷4DBMB

  8. ˖ و؎ؙٗ؟٦ؽأ،٦ؗذؙثٍד圓䧭׃גְ׷կ ˖ ך؟٦ؽأךֲ׍ָ4DBMBד剅ַ׸גְ׷կ ˖ غحؙؒٝسؒٝآص،כせ '0-*0ךغحؙؒٝسءأذي ˞αʔϏε਺͸(JU-BCͷϨϙδτϦ਺ɻ਺ࣈ͸೥݄ॳ࣌఺

  9.  +BWB+7.ؒ؝ءأذيך㸜䗰䠬 ˖ ($ 橆㞮⣛㶷ך㼰זׁ ٓ؎ـٓٔך⯍㹋 FUD ˖ ꆃ輐禸䞔㜠كٝت٦װꆃ輐暴剣ךفٗز؝ٕח㼎䘔׃׋4%,װٓ ؎ـٓٔך⯍㹋

     +BWB 4DBMB $MPKVSF ֮׋׶דך䪮遭鼅䫛 ˖ 䪮遭鼅㹀׾׃׋䔲儗כ؟٦غ٦؟؎س,PUMJOךظؐعؐ׮㼰זַ׏ ׋ 4DBMBָ鼅ל׸׋✲䞔
  10. ˖ ꆃ輐הְֲ醱꧟זسً؎ٝ ̔邌植⸂ ˖ 荜ㄏ涸ז꟦麩ְ׾⸬桦涸ח鼘ֽ׋ְ ̔㘗ءأذيָ׮׋׵ׅ㸜Ⰻׁ ˖ أة٦ز،حف暴剣ךأؾ٦س䠬٥㼭㔐׶ך葺ׁ ̔꫼涸㘗➰ֽ鎉铂ד֮׷ֿהח״׷չ䚈ָל㔐׸պ '0-*0ך铬겗חؿ؍حزׅ׷4DBMB

  11.  鸐䌢ךDMBTT㹀纏ח⸇ִ䎗אַך堣腉ָ鷄⸇ׁ׸׋ؙ ٓأկ⟃♴ך״ֲז暴䗙ָ֮׷կ ˖ UP4USJOH IBTI$PEF FRVBMTכ荈⹛ד㹋鄲ׁ׸׷ ˖ ؿ؍٦ٕسכ♶㢌 זךדծDBTFDMBTT荈⡤׮㛇劤涸ח♶㢌

     ˖ ػة٦ٝوحثؚٝ ➙㔐כ铡僇׃תׇ׿ דⵃ欽דֹ׷ ˖ ,PUMJOךEBUBDMBTT +BWBך-PNCPL،ظذ٦ءّ ٝⰋ鿇鯹ׇ♶㢌ؙٓأָ؎ً٦آ涸ח鵚ְַկ 4DBMB㛇燉濼陎DBTFDMBTT
  12. DBTFDMBTTדך7BMVF0CKFDU㹀纏 ˞࣮ࡍͷϓϩμΫγϣϯίʔυͰ͸͋Γ·ͤΜ

  13. 㘗ד縧ֹ꟦麩ְ׾꣇ּ

  14. %#أؗ٦وח㼎䘔׃׋ٌرٕ♳דכ㘗ד农〾⻉׾爙ׅ ˞࣮ࡍͷϓϩμΫγϣϯίʔυͦͷ··Ͱ͸͋Γ·ͤΜ

  15. 农〾⻉Ⳣ椚׾぀׷㘗ؙٓأ׾欽䠐ׅ׷ ˞࣮ࡍͷϓϩμΫγϣϯίʔυͦͷ··Ͱ͸͋Γ·ͤΜ

  16. ⚥縧鎸岀דQSJNJUJWFז侧㶵׏שֻ䪔ֲ ˞࣮ࡍͷϓϩμΫγϣϯίʔυͦͷ··Ͱ͸͋Γ·ͤΜ

  17. ⚥縧鎸岀

  18. ⚥縧鎸岀דQSJNJUJWFז侧㶵׏שֻ䪔ֲ ˞࣮ࡍͷϓϩμΫγϣϯίʔυͦͷ··Ͱ͸͋Γ·ͤΜ

  19. ⚥縧鎸岀

  20. 䠐㄂ך麩ֲ侧㶵ָ幉ׂ׵זְ״ֲחׅ׷ ˞࣮ࡍͷϓϩμΫγϣϯίʔυͦͷ··Ͱ͸͋Γ·ͤΜ ˞1OM1SPpUBOE-PTT ଛӹ

  21. 怴皾穠卓ך䠐㄂׾邌ׅ ˞࣮ࡍͷϓϩμΫγϣϯίʔυͦͷ··Ͱ͸͋Γ·ͤΜ ˞1O-1SPpUBOE-PTT ଛӹ

  22. ˖ ⡦״׶㘗ך䛷䜋׾「ֽ׵׸׷  String DoubleװBigDecimalךתת䪔ֲהծ怴皾〳 やװծ怴皾ך穠卓ך䠐㄂ך邌植ָ⳿勻זְ  㹑鎉涸ז鎸鶢ח״׷꟦麩ְך䫇姺 ˖ 邌植ך䌴ָ嫰鯰涸䎢ְ

     DBTFDMBTTח״׷瘝⣣ⴻ㹀ך嚂ׁװظ؎ؤך㼰זׁ 4DBMBָ׮׋׵ׅسً؎ٝך鎸鶢⸂
  23. ػح؛٦آ圓鸡כ걼籕ח鋅湫ׅ

  24. ˖ ؝ٝػ؎ٕכ儗꟦ַַָ׷ֽ׸ו׮ծ⥂鏾דֹ ׷眔㔲ָ䎢ְ ˖ *%&ך⸂׾⢪׏גػح؛٦آ圓䧭װㄏせ倯ꆙך 㣐ղ涸ז㢌刿׾遤ֲֿה׮嫰鯰涸㸜䗰 *%&ך⸂׾⦵׶׋أؾ٦س䠬ה㛙暕ׁךغٓٝأ

  25. '0-*0ה.JDSPTFSWJDFT

  26. ˖ 鏾ⵙ噟⹡ءأذيך䬐ֲ眔㔲כהחַֻ䌴䎢ְկ  Ⰻג׾濼׷ֿהךꨇ僒䏝כ噰׭ג넝ְ  ؒٔ،׀הח噟⹡鏣鎘噟歲濼陎䚍腉銲⟝זוך䚍呓ָ麩ֲ ˖ 㢩鿇ءأذي٥؟٦ؽأח׮㣐ֹֻ⣛㶷ׅ׷  䋐屣ꂁ⥋ծꋒ遤䮶鴥ח״׷Ⰵꆃծ《䒷䨽䱸竲˘

     ז׷ץֻ毙穠さח׃׋ְկ ˖ ꥺ㹱ך䕦갟眔㔲ך僇然⻉הꣲ㹀  אךꥺ㹱דⰋגךֶ㹏圫ח鶳䞨׾ֶַֽ׃זְ  ♧㹀⟃♳ךꥺ㹱ָ饯ֹ׸לծ䕦갟곁㹏➂侧׾幐ִג遤佟堣ꟼח㜠 デ׾ׅ׷䗳銲ָ֮׷ ꆃ輐堣ꟼךءأذيח実׭׵׸׷䚍呓
  27. 䋐屣鸞㜠 䲿⣘⟰噟 8FC؟٦ؽأ չؿؓٔؔպ ٌغ؎ٕ،فٔ չؿؓٔؔպ ޱ࠲։ઃ ސ٬৘ใ ϚΠϖʔδ޲͚"1* ςʔϚ৘ใ؅ཧ

    ஫จड஫ ஫จ؅ཧࣥߦ ˞͔ͳΓ؆ུԽ͍ͯ͠·͢ ࢒ߴ؅ཧ ࢒ߴཤྺ؅ཧ Ⰵ⳿ꆃ؟٦ؽأ ⹞㹀禸ءأذي Ձ֨഑৴ ചങ৹ࠪ 䫎项䨌殛 ؕأةو٦؟ه٦ز ؝ٝفٓ؎،ٝأ 《䒷䨽ـٗ٦ؕ٦ ೖग़ۚ צఆ؅ཧ ꆃ輐堣ꟼ׾و؎ؙٗ؟٦ؽأה䯝ִ׷ 〡䏟Ꟛ鏣 㻢叨䬐䔲
  28. ˖ Ꟛ涪ث٦ي׾ⴓֽגسً؎ٝ濼陎׾帾׭װֻׅ׃׋׶ծ暴䚍ח䘔 ׄ׋䪮遭鼅㹀װ،٦ؗذؙثٍ׾〳腉חׅ׷կ ˖ ٔٔ٦أ؟؎ؙٕװ2"ךװ׶倯׾ⴓֽ׷կ
 稆傍ֻٔٔ٦أדֹ׷׮ךכ⳿ׅկׄ׏ֻ׶2"ׅ׷׮ךכׅ׷կ ˖ 㢩鿇ءأذيח㼎ׅ׷臰侁꣇姺㾴׾؟٦ؽأהׅ׷կ ˖ ꥺ㹱ך㽷䨽⻉կ֮׷堣腉ךꥺ㹱ָ饯ֹג׮Ⰻגךֶ㹏圫ח䕦갟׾

    「ׇֽׁזְկ
 FY〡䏟Ꟛ鏣㻢叨חꥺ㹱ָ֮׏ג׮傀㶷ךֶ㹏圫כ㡰顠ָ⳿勻זֻגכְֽזְ و؎ؙٗ؟٦ؽأ⻉ח״׷ًٔحز
  29.  و؎ؙٗ؟٦ؽأך⚥חכ噟⹡鏣鎘װ噟⹡濼陎ָꬊ䌢ח醱꧟ז ׮ךָ֮׷կ  سً؎ٌٝرؚٔٝ׾鸐ׄ׋噟⹡椚鍑ה濼陎Ⱏ剣ח《׶穈׿ד ְ׷կ  ٌرٕ〳鋔⻉ך麓玎ד钠陎ך麩ְװ倜׃ְ孡➰ֹ׾֮ע׶⳿ׅ  濼陎Ⱏ剣ך׋׭ךٌرؚٔٝ穠卓הفٗتؙءّٝ؝٦سךꟼ

    ⤘׾וֲًٝذشٝأׅ׷ךַָ➙ך铬겗կ سً؎ٌٝرؚٔٝ
  30. None
  31. None
  32. None
  33. 'JOBHMF5XJUUFSח״׷31$ؿٖ٦يٙ٦ؙ 'JOBUSB'JOBHMFך♳ח⡲׵׸׋4DBMB؟٦ ؽأؿٖ٦يٙ٦ؙ  《䖤דֹ׷ًزؙٔأָ鞢㺡  ⴓ侔زٖ٦ءؚٝ橆㞮׾㺁僒ח圓眠דֹ׷  ٔزٓ؎װ#BDL1SFTTVSFⵖ䖴׮״׃זח װ׏גֻ׸׷

     5ISJGUח״׷*%-盖椚הך鋵ㄤ䚍ָ葺ְ 'JOBHMF'JOBUSB
  34. exception ResourceNotFound { 1: string message } typedef i64 UserId

    struct User { /** * ϢʔβID */ 1: required UserId id /** * Ϣʔβ໊ */ 2: required string name /** * ϢʔβͷϝʔϧΞυϨε */ 3: optional string email } service AccountService { /** * Ϣʔβݕࡧ */ User findUser ( 1: required UserId userId ) throws (1: ResourceNotFound resourceNotFound) } ˞࣮ࡍʹαʔϏεʹ࢖ΘΕ͍ͯΔίʔυͱ͸ҟͳΓ·͢
  35. 3&45"1* 3&45"1* ٌغ؎ٕ،فٔ չؿؓٔؔպ 8FC؟٦ؽأ չؿؓٔؔպ 5ISJGU31$ 5ISJGU31$ 31$1SPUPDPMTBNPOH'SPOU#''#BDLFOE #BDLFOEGPS

    'SPOUFOE
  36. 圫ղזًزؙٔأָ知⽃ח䩛חⰅ׷

  37. 圫ղזًزؙٔأָ知⽃ח䩛חⰅ׷ ͋ΔϚΠΫϩαʔϏεͷ "1*͝ͱͷ-BUFODZͷ QFSDFOUJMF

  38. 圫ղזًزؙٔأָ知⽃ח䩛חⰅ׷ ͋ΔϚΠΫϩαʔϏεͷ "1*͝ͱͷݺͼग़͠ճ਺

  39. ⴓ侔زٖ٦ءؚٝ

  40. ⴓ侔زٖ٦ءؚٝ ϚΠΫϩαʔϏεͷ "1*ݺͼग़͕͠ ॎʹฒͿ

  41. ⴓ侔زٖ٦ءؚٝ ԣ࣠͸ "1*͝ͱͷ ॴཁ࣌ؒ

  42. ⴓ侔زٖ٦ءؚٝ ΍͚ʹ௕͘૸ͬͯΔ!

  43. ⴓ侔زٖ٦ءؚٝ ࡉ͔͍͚Ͳେྔʹ 42-ଧͬͯΔ͚Ͳ େৎ෉͔ͳ"

  44. ⰻ醡خ٦ٕ纇 _儗꟦ך鏩ׅꣲ׶稱➜_

  45.  爡ⰻ橆㞮ꣲ㹀דUISJGU醡"1*׾⟣䠐ך䒷侧ד㹋遤׃ծٖأ هٝأ׾+40/MJLFז䕎䒭ד「ֽ《׸׷رغحؚ欽$-*  +4醡 UISJGUDMJ

  46. $ thrift-cli # list available microservices thrift-cli$ ls - account

    - portfolio - financial-data - (and so on…) # choose microservice to use thrift-cli$ portfolio> use account # list available methods thrift-cli$ account> methods - findUser - findUserByExternalAuthenticationId - findExternalAuthentications - (and so on…) # run method thrift-cli$ account> run findUser 1
  47.  䎃植㖈ծ㹀劍آّـװرفٗ؎آّـכ+FOLJOTד 盖椚٥㹋遤׃גְ׷կ  醱侧橆㞮דآّـך鏣㹀ⰻ㺁׾♧顐ׇׁ׷׋׭חծ$POH BTB$PEF׾㹋植ׇׁ׷׋׭ך%4-׾ⵃ欽׃גְ׷կ  (SPPWZד剅ֻךדծ稢ְַ蔓װⰟ鸐⻉׮ⶴה䖤䠐կ  ⿫罋IUUQTNBSDFTIFSDPNKFOLJOTBTDPEFDSFBUJOH

    KFOLJOTKPCTXJUIUFYUOPUDMJDLT +FOLJOT+PC%4-
  48.  $POTVM ؟٦ؽأر؍أؕغٔ ח㉏ְさ׻ׇגぐو؎ؙ ٗ؟٦ؽأךغ٦آّٝװ*1،سٖأזו׾侄ִגֻ׸ ׷4MBDLCPU  $POTVM荈⡤ָ(Pד剅ַ׸גְגծ"1*$MJFOU׮(Pד䲿 ⣘ׁ׸גְ׷ךד(P醡 GPMJDPO@CPU

  49. None
  50. IUUQTBEWFOUBSPSHDBMFOEBST ➙䎃׮"EWFOU$BMFOEBSװ׏גתׅ

  51. $PODMVTJPO

  52. ˖ '0-*0כꆃ輐堣ꟼח実׭׵׸׷㛙暕ׁהأة٦ ز،حفךأؾ٦س䠬װ堣佴ׁ׾䖤׷׋׭ח 4DBMB׾崞欽׃גְתׅկ ˖ ꆃ輐堣ꟼךءأذي׾و؎ؙٗ؟٦ؽأ،٦ؗذ ؙثٍד㹋鄲ׅ׷ֿהדծ実׭׵׸׷堣腉ך䲿⣘ ח黝׃׋穈籼׾⡲׹ֲה׃גְתׅկ תה׭

  53. 4DBMBדغحؙؒٝسءأذيꟚ涪׾ׅ׷⟗꟦׾⹫꧊׃גְתׅ

  54.  醱꧟זسً؎ٝ׾《׶䪔ֲاؿزؐؑ،׾ծ
 噟⹡ءأذي׾⢪ֲِ٦ؠ٦הה׮ח⡲׶♳־׋ ְ➂  ֿ׸תדך穗꿀׾崞ַ׃אא4DBMBװو؎ؙٗ ؟٦ؽأꟚ涪ח䮋䨌׃ג׫׋ְ➂  و؎ؙٗ؟٦ؽأד֮׶זָ׵♧顐䚍װءأذي ך㸜㹀䚍׾מ׋ׅ׵鷄実׃׋ְ倯

    孡חז׏׋ծ׉ֿך،شة
  55. 窫额䱰欽崞⹛⚥דׅ

  56. فٗآؙؑزوط٦آٍ٦⹫꧊׮װ׏גתׅ

  57. 8FCؿٗٝزؒٝآص،ָغح ؙؒٝسؒٝآص،ח鯄魦׃׋⢽ ׮֮׶תׅ 莆㄂ָ֮׸ל'0-*05ءٍخ ػ٦ؕ٦׾滠גְ׷ًٝغ٦ח孡 鯪ח鑧׃ַֽגֻ׌ְׁ 㼰׃ד׮孡חז׏׋׵

  58. None