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