Inside Fintech Meetup ~ Finatext × Kyash × FOLIO ~ https://finatext.connpass.com/event/186666/ で発表した資料です。
1複雑なドメインと戦いながらロボアド基盤をリプレースするときにした⼯夫2020/09/02 Inside Fintech Meetup 〜 Finatext × Kyash × FOLIO 〜@matsu_charaCopyright © 2020 FOLIO Co., Ltd. All Rights Reserved.
View Slide
@matsu_chara- FOLIO 3.5年⽬(元はドワンゴ新卒⼊社)- ⼝座残⾼や⼊出⾦周りを扱うチーム(証券基盤部)の雑⽤係- 好きなプログラミング⾔語はScala, Go, Pony- 最近の趣味は英語学習2⾃⼰紹介
⾦融出⾝エンジニアがあまり多くないFOLIOが「⾦融・証券」というドメインの中でどこに気をつけて戦っていたかについて話していきます3今⽇話すこと
4⽬次• ロボアド基盤リプレースの背景• リプレースプロジェクトの課題と⼯夫
時は2018年5
荈⹛麊欽ַ䘏׃ְ֮זחֶתַׇ䫎项ٗن،سغ؎ؠ٦ָ֮זח剑黝ז麊欽فٓٝ䲿周麊欽׃גֻ䫎项؟٦ؽأկظ٦كٕ颣「颣椚锷ك٦أח׃،ٕ؞ٔؤيד麊欽կ䫎项⯓ך⦐ⴽꌀ厑װذ٦و鼅עֿהָ⭙⸘חז➂חֶׅׅر٦ة瘝כ؟ٝفٕד֮ծ㼛勻ך麊欽䧭卓瘝爙㇗⿵כ⥂鏾ׅךדכ֮תׇկꆃ輐㉀ㅷך《䒷חְֶגכծ吳⣣ծ捀剏ծꆃⵃծך➭ך䭷垥ך㢌⹛瘝ח״䴦㣟ָ欰ֶָ֮ׄתׅկ׀㤍秈ךꥷכծ㤍秈箍穠❛➰剅瘝ךⰻ㺁⼧ⴓח׀然钠ְֻׁկ吳䒭⠓爡 '0-*0ꆃ輐㉀ㅷ《䒷噟罏ꟼ匌頿㽷ꞿꆃ㉀痥 〾խ⸇Ⰵ⼿⠓傈劤鏾ⵙ噟⼿⠓ծ♧菙爡㔚岀➂傈劤䫎项곁㉏噟⼿⠓2018年11⽉2⽇ おまかせ投資 リリース
さらに7
ⰼַכׄٙٝ؝؎ٝ䫎项-*/&♳דⰼַ㨣ֿהךדֹ琎甧䫎项דׅկ琎甧겘ָ -*/&QBZ ַ荈⹛ד䒷ֹ衅הׁծٗن،سغ؎ؠ٦ָ⚅歲⚥ך项欵חغٓٝأ״ֻ䫎项׃תׅկ吳䒭⠓爡 '0-*0ꆃ輐㉀ㅷ《䒷噟罏ꟼ匌頿㽷ꞿꆃ㉀痥 〾խ⸇Ⰵ⼿⠓傈劤鏾ⵙ噟⼿⠓ծ♧菙爡㔚岀➂傈劤䫎项곁㉏噟⼿⠓ꆃ輐㉀ㅷך《䒷חְֶגכծ吳⣣ծ捀剏ծꆃⵃծך➭ך䭷垥ך㢌⹛瘝ח״䴦㣟ָ欰ֶָ֮ׄתׅկ׀㤍秈ךꥷכ㤍秈箍穠❛➰剅瘝ךⰻ㺁⼧ⴓח׀然钠ְֻׁկ˟ -*/& أو٦ز䫎项כծ-*/&'JOBODJBM 吳䒭⠓爡ꆃ輐㉀ㅷ⟗➜噟罏ꟼ匌頿㽷ꞿꆃ⟗痥 〾ךꆃ輐ꟼ鸬؟٦ؽأדׅկٙٝ؝؎ٝ䫎项כ吳䒭⠓爡 '0-*0 ך䲿⣘ׅ䫎项♧⟣麊欽؟٦ؽأד֮ծ-*/&'JOBODJBM 吳䒭⠓爡כֶ㹏圫ה吳䒭⠓爡 '0-*0 הך䫎项♧⟣㤍秈箍穠ך㯭➜遤ְתׅկ2019年4⽉25⽇ ワンコイン投資 リリース
ꆃ輐㉀ㅷך《䒷חְֶגכծ吳⣣ծ捀剏ծꆃⵃծך➭ך䭷垥ך㢌⹛瘝ח״䴦㣟ָ欰ֶָ֮ׄתׅկ׀㤍秈ךꥷכծ㤍秈箍穠❛➰剅瘝ךⰻ㺁⼧ⴓח׀然钠ְֻׁկ吳䒭⠓爡 '0-*0ꆃ輐㉀ㅷ《䒷噟罏ꟼ匌頿㽷ꞿꆃ㉀痥 〾խ⸇Ⰵ⼿⠓傈劤鏾ⵙ噟⼿⠓ծ♧菙爡㔚岀➂傈劤䫎项곁㉏噟⼿⠓FOLIO ROBO PROדכծفٗؿؑحءّشٕזꆃ輐堣ꟼךח䲿⣘ׁגְAI 䪮遭AlpacaJapan 䲿⣘ծETF و٦؛حز㼎韋ח⦐➂ぢֽחⴱ鍑犜կ鹌⻉׃ٗن،سغ؎ؠ٦ծך䩛חկو٦؛حز✮庠ت؎شىحؙ麊欽2020年1⽉15⽇ ROBO PRO リリース
各種プラットフォーム・ニーズに応える形で順調に展開10
順調に展開?11
12理想と現実やりたいこと- 顧客価値の向上(新機能追加・より分かりやすい顧客表⽰)- 運⽤改善(CSがよりスムーズに問い合わせに答えられるetc )
13理想と現実やりたいこと- 顧客価値の向上(新機能追加・より分かりやすい顧客表⽰)- 運⽤改善(CSがよりスムーズに問い合わせに答えられるetc )やってること- 考えた機能が実現できない理由の説明(無理くり実現できないかの検討)- 改善出来ていない運⽤の埋め合わせ(CS問い合わせ個別調査, 運⽤でカバー系)
⾦融機関としての⽔準を満たすための対応のために時間を取られていて前に進むための活動が出来てない…14
15もろもろの議論(略)の後リプレースを決断本当にリプレースが適切なのかといった議論もたくさんしましたが、時間が⾜りないのでここでは割愛
16⽬次• ロボアド基盤リプレースの背景• リプレースプロジェクトの課題と⼯夫
17リプレースするとは⾔っても...
18運⽤指図ロボアド基盤外部ブローカー注⽂管理顧客- 購⼊余⼒チェック - ⼝座(残⾼)管理- 終値・為替レート取得- 運⽤報酬料計算・徴収- 譲渡益税計算・徴収- 祝⽇・⽉末処理- などなどなど- 発注数量算出- アロケーション執⾏管理- 外部ブローカーとの通信- FIXでのやりとりetcここをリプレース全体像
ざっくり⾒積もると開発終了だけで1年?といった ボリューム感関⼼が多く、全体の流れも⾒通しにくい - バッチ数85個程度- 機能多数- 注⽂管理- 残⾼管理- 終値・為替レート取得- 運⽤報酬料計算・徴収- 譲渡益税計算・徴収- 祝⽇・⽉末処理、サマータイムでの切り替え-- ⼝座システムの特性上、 ステートフルで要素同⼠が相互に関連しやすい 19課題1. 巨⼤で知識も必要なドメイン・要件
新しく⼊社した開発メンバーも多く、何が分からないのか分からない 状態に。当時のメンバーの気持ち- 「どうしてこのバッチが必要なのか分からない」- 「全体としてどういう業務があって、このバッチがどれに該当するのかが謎」- 「業界標準の知識なのか、FOLIO独⾃の知識なのか分からない」20課題2. 知識が豊富とは限らないメンバー
21課題整理巨⼤で知識も必要なドメイン・要件知識がない状態ではスピードが出ない。スピードが出ないといつまで経っても終わらない。知識が豊富とは限らないメンバー何が分からないのか分からない状態では理解が積み上がらない最初の⼀歩が遅れ、スピードの低下につながるし開発後の運⽤フェーズにも不安が…
22という状況の中で⾊々頑張ったところ
23結果巨⼤で知識も必要なドメイン・要件3チーム並列開発で9ヶ⽉で本番稼働まで完了!並列開発による⼿戻りもほぼ無しでスピード感を持って開発できた知識が豊富とは限らないメンバー⾃分の担当範囲外の処理も⼤まかには把握。特定のメンバーがいなくても運⽤できる⾃信のあるチームに
⾦融出⾝エンジニアがあまり多くないFOLIOが「⾦融・証券」という複雑なドメインの中でイベントストーミングを使うことで⽣産性を保って開発を⾏った話をしていきます24改訂版: 今⽇話すこと
フォーマットは過去の案件を踏襲しながら改善したものを利⽤- データ・パイプラインの流れの可視化- 稼働⽇判定など⽇付処理に関するもの- ⼤まかな処理の流れ・依存先・etc認識齟齬を防ぐための情報は早期に揃っていた25設計書について
設計書が充実しているだけでは新規参⼊メンバーが実⼒を発揮できない- 欲しい情報を探せない。- 課題と情報をリンクできない。- ⾒えてない他の要素が無いか不安になる26設計書があればOK?
「ドキュメントはナレッジじゃない。 ドキュメントを読んだ⼈がナレッジ。」by 社内有識者27ドメイン知識・ノウハウをチームに宿らせる
設計書 = 情報をチームのナレッジに転換する取り組みが⾜りていなかった28ドメイン知識・ノウハウをチームに宿らせる
イベントストーミングとは基本となる”イベント”を並べながら流れを確認し疑問を挙げていくことでシステムへの理解を深めていくワークショップ型の活動。29イベントストーミングの実施
30FOLIOミートアップ Scramble#3 明⽇からはじめられるEventStorming より引⽤
イベントストーミング⾃体は⾊々な使い⽅ができる- システムの要求に対して皆で同じ理解をする- 設計に整合性があるか、皆でチェックする- etc今回のプロジェクトでは「設計書にある情報を⾃分たちの知識に落とし込んで共通の理解を作る」ことに主眼を置いて利⽤31我々のイベントストーミングの利⽤⽅法
様々な粒度のイベントストーミングをチームが継続的に学習する機会(週⼀回 程度)を作った例(分配⾦再投資)- 分配⾦が⽀払われるタイミングで顧客が 解約⼿続き中だったら再投資処理はどうなる?- マイページの履歴はどのタイミングで表⽰開始?- そもそも分配⾦って何???32イベントストーミングの実施
33再掲: 結果巨⼤で知識も必要なドメイン・要件3チーム並列開発で9ヶ⽉で本番稼働まで完了!並列開発による⼿戻りもほぼ無しでスピード感を持って開発できた知識が豊富とは限らないメンバー⾃分の担当範囲外の処理も⼤まかには把握。特定のメンバーがいなくても運⽤できる⾃信のあるチームに
新型コロナウィルス感染防⽌のため2⽉からリモートワーク開始知識移転を重視していたのでベロシティ低下せず ナレッジの積み上げを継続的にやれていた効果を実感できた。34余談:リモートワークでも⽣産性が低下せず
リプレースプロジェクトは終わったけど、今後もやりたいことは⼭積みなので35
開発⼿法を常に改善しながら複雑なドメイン・システムと⼀緒に戦いたい⼈36
˞։ൃݴޠ4DBMBͰ͕͢ɺೖ͔ͬͯΒ֮͑ͨਓͨ͘͞Μډ·͢ʂ͓ؾܰʹ࠾༻ϖʔδ͔ΒΧδϡΞϧ໘ஊͷ͓ਃ͠ࠐΈΛʂIUUQTDPSQGPMJPTFDDPNUIFTQFDJBMPOF
THANK YOU
付録39
イベントストーミングの⽬的・実践⽅法についてはFOLIOミートアップ Scramble#3明⽇からはじめられるEventStorming本当にはじめられたイベントストーミング ―実践してみて⾒えたことで紹介しています!40⼿前味噌ですが…