Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MF KESSAIが、技術的挑戦を繰り返しながら サービス価値と開発のIKIOIを上げ続けてる話

shinofara
August 23, 2019
2k

MF KESSAIが、技術的挑戦を繰り返しながら サービス価値と開発のIKIOIを上げ続けてる話

shinofara

August 23, 2019
Tweet

Transcript

  1. MF KESSAI という会社について corp.moneyforward.com マネーフォワード、子会 社「MF KESSAI」を設 立 手間もリスクもゼロ 、企業間後払い決済サー

    ビスを提供開始 中小企業の資金繰りの課題を解決、業務 効率化の一歩先へ お金のプラットフォ ームを提供する株式会社マネーフォワー ド(本社:東京都港区、代表取締役社長 CEO:辻庸介、以下「当社」)は、2017 年3月16日付で当社の1…… MF KESSAI 株式会社 2017 年03 月設立 株式会社マネーフォワード100% 子会社 大手町ビル内Finolab にオフィスを構える 初期は社員4名とインターン2名でスタート corp.mfkessai.co.jp MF KESSAI株式会社を設 立しました | MF KESSAI 株式会社 企業間後払い決済サービス「MF KESSAI」を運営するMF KESSAI株式会社 のコーポレートサイトです。企業情報、 ニュース、採用情報など様々な情報を掲 載しています。… corp.mfkessai.co.jp MF KESSAI株式会社 企業間後払い決済サービス「MF KESSAI」を運営するMF KESSAI株式会社 のコーポレートサイトです。企業情報、 ニュース、採用情報など様々な情報を掲 載しています。… https://corp.mfkessai.co.jp https://corp.mfkessai.co.jp/press/2017/06/mf- kessai 株式会社を設立しました/ https://corp.moneyforward.com/news/release/serv ice/20170620- mf- kessai/
  2. 登壇者(私)について 篠原 祐貴(@shinofara ) 1987 年1 月(32 歳) 現在の役割 CTO

    SRE Gopher (最近減りました) 入社時期 マネーフォワードに2016 年12 月 MF KESSAI は2017 年1 月頃から参加 よく使うエディタ Emacs( エディタではない) Goland Visual Studio Code lapras.com 篠原 祐貴さんのLAPRAS ページ LAPRASは、すぐれた機械学習技術とクロ ーリング技術を使い、インターネット上 でオープンになっている情報を集め、 「プロフィール」を自動生成します。… https://lapras.com/public/K6CCUJS
  3. 技術系の登壇履歴 マネーフォワードの子会社MF KESSAIが選択したアーキテクチャ Speaker Deck GoとGCPとkubernetesを使った MF KESSAIの歴史 Speaker Deck

    酔いどれGCPUG 2018/03/02 / PubSubとGAE/FEでサクッと大量にPDF生成出来るようにしたお話 Speaker Deck https://speakerdeck.com/shinofara/manehuowadofalsezi- hui- she- mf- kessaigaxuan- ze- sitaakitekutiya https://speakerdeck.com/shinofara/gotogcptokuberneteswoshi- tuta- mf- kessaifalseli- shi https://speakerdeck.com/shinofara/fedesakututoda- liang- nipdfsheng- cheng- chu- lai- ruyounisitaohua
  4. History 2017 年 03 月 MF KESSAI 株式会社創業 05 月

    Go で開発した社内サービスリリース 11 月 導入企業向けWEB &API V1 リリース、また社内サービスのドメインロジックをgRPC で独立させてリリース 2018 PubSub とGAE で大量にPDF 生成する為のPDF サービスリリース 消込サービス稼働開始 Nuxt,js で開発した社内管理ツールが複数誕生 データ解析・分析や、機械学習を用いた審査モデル構築に特化したチーム誕生 2019 08/23 Money Forward Developer's Stories XX/XX API V2 リリース
  5. MF KESSAI が0から考え選択した技術 tech.mfkessai.co.jp 新会社「MF KESSAI」は どのような技術・インフ ラ・体制で開発している のか |

    MF KESSAI TECH BLOG 企業間後払い決済サービス「MF KESSAI」を運営するMF KESSAI株式会社 の技術ブログです。… マネーフォワードの子会社MF KESSAIが選択したアーキテクチャ Speaker Deck Go Docker Kubernetes (k8s ) Google Cloud Platform (GCP ) それは結果的にマネーフォワードと全く異なるアーキテクチャ https://speakerdeck.com/shinofara/manehuowadofalsezi- hui- she- mf- kessaigaxuan- ze- sitaakitekutiya https://tech.mfkessai.co.jp/2017/07/1/
  6. アプリケーションの種類 4 4 4 6 6 6 8 8 8

    0 0 0 2 2 2 2 2 2 0 0 0 4 4 4 6 6 6 1 1 1 6 6 6 24 24 24 0 0 0 6 6 6 12 12 12 0 0 0 2 2 2 1 1 1 1 1 1 2 2 2 3 3 3 Go Container Nuxt Container Python Container Other Container Cloud Functions GAE/Fe(Go Container) Firebase Hosting 2017 2018 2019 0 10 20 30 数字で見るMF KESSAI の開発 ものづくりメンバーの割合 Backend Backend Backend: 46.2 % : 46.2 % : 46.2 % Frontend Frontend Frontend: 7.7 % : 7.7 % : 7.7 % SRE SRE SRE: 15.4 % : 15.4 % : 15.4 % Designeer Designeer Designeer: 15.4 % : 15.4 % : 15.4 % Data Engineer Data Engineer Data Engineer: 7.7 % : 7.7 % : 7.7 % Data Scientist Data Scientist Data Scientist: 7.7 % : 7.7 % : 7.7 %
  7. Dev(Sec)Ops に関わる技術で見るMF KESSAI の歴史 2017 年 Sentry (Error Tracking )

    CircleCI (CI / CD ) Github (git ) Jenkins on GKE (CI / CD ) Stackdriver(Monitoring/Logging) Datadog (Monitoring ) 2018 Cloud Builder (CD ) Spinnaker (CD ) Stackdriver Profiler 2019 Opencensus Trace / Metrics Vaddy Github Actions(CI / CD)
  8. gRPC 導入とService Discovery Admin(Go ) Cloud SQL Service Ingress Google

    Kubernetes Cluster 創業時は社内ツールという事もあり、とてもシンプルな構成 ※ この頃はGKE はとても無駄な使い方ですね
  9. gRPC 導入とService Discovery Service Ingress 2017 年後半にWEB/API リリース時の構成 Service Ingress

    WEB(Go) Cloud SQL Service gRPC(Go) REST API(Go) Service Ingress Admin(Go)
  10. gRPC 導入とService Discovery k8s Service Ingress gRPC(Go) Pod をデプロイする度に、クライアントでLost Connection

    発生 k8s Service Ingress WEB(Go) Cloud SQL Service gRPC(Go) REST API(Go) k8s Service Ingress Admin(Go) デプロイ!! Connection Lost
  11. Go のhtml/template でHTML レンダリングして出力 Typescript でVue.js のクライアントサイド実装 ※ この辺りを詳しく知りたい方はブログを見てみてください フロント部分は何で何していたのか

    tech.mfkessai.co.jp MF KESSAIの現在のフロ ントエンド環境について | MF KESSAI TECH BLOG 企業間後払い決済サービス「MF KESSAI」を運営するMF KESSAI株式会社 の技術ブログです。… https://tech.mfkessai.co.jp/2018/10 /frontend/
  12. 現在では2 つのNuxt サービスが稼働しています。 Nuxt.js Nuxt.js GraphQL(Go) HTTP gRPC Cloud SQL

    Cloud SQL gRPC WEB gRPC(Go) Service A Service B tech.mfkessai.co.jp Go + gqlgenを使った GraphQLアプリケーショ ンサーバーの実装 | MF KESSAI TECH BLOG 企業間後払い決済サービス「MF KESSAI」を運営するMF KESSAI株式会社 の技術ブログです。… ※GraphQL に関してはこちらのブログを参照 https://tech.mfkessai.co.jp/2018/08 /go- gqlgen- graphql/
  13. 課題に対して選択した施策たち tech.mfkessai.co.jp ChromeでPDF作り始め て十数か月の日々が流れ た | MF KESSAI TECH BLOG

    企業間後払い決済サービス「MF KESSAI」を運営するMF KESSAI株式会社 の技術ブログです。… 酔いどれGCPUG 2018/03/02 / PubSubとGAE/FEでサクッと大量にPDF生成出来るようにしたお話 Speaker Deck Chrome Headless を使う PubSub + GAE/Fe で並列化 https://tech.mfkessai.co.jp/2018/08/chrome/ https://speakerdeck.com/shinofara/fedesakututoda- liang- nipdfsheng- cheng- chu- lai- ruyounisitaohua
  14. 結果どうだったか Pros 並列数が増え続けても時間内で発行完了し続けられる状態に 軽いPDF も重いPDF も関係無く発行可能 処理途中に再実行により解決可能な問題が発生した場合は自動でリトライ実 行され解決 Chrome を使うことで請求書デザインの選択肢が広がった

    Cons 使われない夜中もFlexInstance のコストが掛かる デプロイが徐々に重くなり今では15min デプロイタイムアウトに苦しむ日々もあった スケール速度の問題 Chrome の起動周りに多少のコストが掛かる Cons はあるがPros の恩恵は大きい。がDX はよろしくないといった状況でした。 後半のスライドで更に解決編があります。
  15. 様々なクラウドサービスを利用することで 秘密情報管理・配布が辛い Kubernetes はkubernetes secret Cloud Functions / GAE はDeploy

    時に一緒にデプロイ Run は、KMS で暗号化したファイルを起動時に取得して複合 全ての管理はCloud Repository で、デプロイ時に良しなにしている
  16. Hashicorp Vault を利用する事にした理由 サービス毎にServiceAccount を作成して、SA Key を使って認証が可能 ServiceAccount 毎には取得可能な秘密情報だけRead 権限を付ける

    KMS を使って暗号化される CLI やUI から秘密情報の追加や更新が可能 GCP 上で動かすために必要な情報は公式ドキュメントに存在している cloud.google.com シークレット管理のため に Compute Engine で Vault を使用する | ソリ ューション | Google Cloud https://cloud.google.com/solutions/using- vault- for- secret- management? hl=ja
  17. 様々なクラウドサービスを利用することで 秘密情報管理・配布が辛い GAE Vault(Run) Pod GCS KMS Functions Service AccountのJWT

    Tokenを使って クライアント認証を行う Cloud Run でHashicorp Vault を動かして秘密情報管理サービスとして立ち上げてみた
  18. 結果どうだったか Pros アプリケーション起動時にしかリクエストが来ない事もあり、実行回数少な め=Run の運用コストは低い Dockerfile とアプリケーションだけあればあとはgcloud コマンドでデプロイ できるシンプルさ Cons

    Run のスピンアップに多少コストがかかる 起動時にVault を利用可能状態にする処理(Auto Unseal )が失敗する条件があることにより、事故につながる Vault が起動しないと他のアプリケーションの起動時に取得する秘密情報取得 に失敗してしまう。 そこで改めて、Kubernetes で運用する事に決意した
  19. 様々なクラウドサービスを利用することで 秘密情報管理・配布が辛い GAE Vault(Pod) Pod GCS KMS Functions Service AccountのJWT

    Tokenを使って クライアント認証を行う 基本的な構成は変わらずCloud Run からKubernetes に移行 Ingress / Service
  20. tech.mfkessai.co.jp Cloud Native時代のMF KESSAIが選択した秘密情 報管理と配布について | MF KESSAI TECH BLOG

    企業間後払い決済サービス「MF KESSAI」を運営するMF KESSAI株式会社 の技術ブログです。… 書ききれないので、ブログに公開しました。 結果どうだったか https://tech.mfkessai.co.jp/2019/08/next_secret_management/
  21. Observability とはなにか www.infoq.com 可観測性とマイクロサー ビス Zach Jory氏は、スケールアップが可能で 管理の容易なクラウドネイティブアプリ ケーションの構築を可能にする上で、マ イクロサービスとサービスメッシュ実装

    の可観測性がいかに必要であるかを論じ た記事を書いた。氏の主張は、我々が過 去数ヶ月にわたって公開した多数の記事 や、その中で取り上げてきたインタビュ ーの内容にも通じるものがある。… 可観測性とは、データの顕在化と情報へのアクセスの容易化です。通信がフェールした時、期待通りに実 行されなかった時、あるいは期待しない場面で発生した時、これが重要になります。サービス相互の稼働 時のインタラクションは監視し、管理し、コントロールする必要があるのですが、そのためにはまず、可 観測性と、マイクロサービスアーキテクチャの振る舞いを理解できることが必要なのです。
  22. tech.mfkessai.co.jp OpenCensus meetup vol.1参加レポート | MF KESSAI TECH BLOG 企業間後払い決済サービス「MF

    KESSAI」を運営するMF KESSAI株式会社 の技術ブログです。… どのように向き合ったか OpenCensus Meetup に参加 アプリケーションにOpenCensus を導入 Trace(Stackdriver / Jaeger) Stats(Stackdriver / Datadog) Stackdriver Profiler を導入 https://tech.mfkessai.co.jp/2019/04/ opencensus- meetup- report/
  23. 変わりゆく開発文化 tech.mfkessai.co.jp みんなで寄ってたかって タスクを潰している話 | MF KESSAI TECH BLOG 企業間後払い決済サービス「MF

    KESSAI」を運営するMF KESSAI株式会社 の技術ブログです。… tech.mfkessai.co.jp デザインスプリントを短 縮してやってみた | MF KESSAI TECH BLOG 企業間後払い決済サービス「MF KESSAI」を運営するMF KESSAI株式会社 の技術ブログです。… tech.mfkessai.co.jp MF KESSAIの開発文化 | MF KESSAI TECH BLOG 企業間後払い決済サービス「MF KESSAI」を運営するMF KESSAI株式会社 の技術ブログです。… https://tech.mfkessai.co.jp/2018/04/1/ https://tech.mfkessai.co.jp/2018/10/flow/ https://tech.mfkessai.co.jp/2018/06/design- sprint/
  24. IKIOI とはどんな指標か tech.mfkessai.co.jp DevOpsパフォーマンス 改善開発合宿 | MF KESSAI TECH BLOG

    企業間後払い決済サービス「MF KESSAI」を運営するMF KESSAI株式会社 の技術ブログです。… https://tech.mfkessai.co.jp/2019/06/ikioi/
  25. 8 8 8 9 9 9 13 13 13 16

    16 16 16 16 16 10 10 10 17 17 17 16 16 16 16 16 16 14 14 14 18 18 18 20 20 20 16 16 16 24 24 24 7 7 7 33 33 33 38 38 38 41 41 41 36 36 36 17 17 17 33 33 33 23 23 23 32 32 32 21 21 21 30 30 30 35 35 35 28 28 28 22 22 22 26 26 26 4.2 4.2 4.24.7 4.7 4.76.7 6.7 6.7 11.4 11.4 11.4 8 8 8 5.6 5.6 5.6 8.9 8.9 8.9 14.4 14.4 14.4 11.9 11.9 11.9 7.7 7.7 7.77.8 7.8 7.8 10.4 10.4 10.4 6.7 6.7 6.7 10.3 10.3 10.3 4.7 4.7 4.7 13.3 13.3 13.3 16.2 16.2 16.2 17.2 17.2 17.2 18.9 18.9 18.9 13.4 13.4 13.4 16.5 16.5 16.5 7.9 7.9 7.9 12.2 12.2 12.2 8.9 8.9 8.9 12.7 12.7 12.7 15.6 15.6 15.6 10.2 10.2 10.2 8 8 8 20 20 20 Deploy IKIOI 2019/01… 2019/02/01 2019/02/15 2019/03/01 2019/03/15 2019/03/29 2019/04/12 2019/05/03 2019/05/17 2019/05/31 2019/06/14 2019/06/28 2019/07/12 2019/07/26 2019/08/09 0 20 40 60 ここ数ヶ月のIKIOI Deploy / week / Power 例) 2019/01 週のIKIOI は 8 / 1 / 2 = 4 7 月の本番Deploy 数は114 回
  26. 毎週誰かが何かを良くしてる「よくする週」 というものがありました 今は3ヶ月に1回誰かがIKIOI をただひたすらに良くする「IKIOI 人」を 実施 SRE チームで基盤の作り直しなど CI /

    CD 高速化 CircleCI の処理高速化・並列数増加 Cloud Builder でのイメージビルド高速化 Spinnaker でデプロイまでの時間を短縮( 人が介入しないフローに) 開発合宿 https://tech.mfkessai.co.jp/2019/06/ikioi/ tech.mfkessai.co.jp DevOpsパフォーマンス 改善開発合宿 | MF KESSAI TECH BLOG 企業間後払い決済サービス「MF KESSAI」を運営するMF KESSAI株式会社 の技術ブログです。… IKIOI 向上に向けての取り組み https://tech.mfkessai.co.jp/2019/06/ikioi/
  27. ハンドブック github.com mfkessai/handbook handbook. Contribute to mfkessai/handbook development by creating

    an account on GitHub.… MF KESSAI という会社はB2B という事もあり、 個人ではなかなかイメージすることが難しいと思っています。 なのでGithub にhandbook を公開する事で誰でも会社、事業、チーム、アーキテクチャ、 採用に関しての考え方を閲覧することができるようにしています。 https://github.com/mfkessai/handbook/blob/master/guide/b ackend- interview.md
  28. 採用ガイド github.com mfkessai/handbook handbook. Contribute to mfkessai/handbook development by creating

    an account on GitHub.… https://github.com/mfkessai/handbook/blob/master/guide/b ackend- interview.md
  29. herp.careers ソフトウェアエンジニア (Backend) - MF KESSAI株式会社 MF KESSAI株式会社では現在ソフトウェ アエンジニア(Backend)を募集してい ます。…

    herp.careers ソフトウェアエンジニア (Frontend) - MF KESSAI株式会社 MF KESSAI株式会社では現在ソフトウェ アエンジニア(Frontend)を募集してい ます。… herp.careers ソフトウェアエンジニア (Site Reliability) - MF KESSAI株式会社 MF KESSAI株式会社では現在ソフトウェ アエンジニア(Site Reliability)を募集し ています。… www.wantedly.com あらゆる経験をして新規 事業をゼロから創るサー ビスデザイナー募集! by 株式会社マネーフォ ワード マネーフォワードの法人・個人事業主向 けサービスは“企業のお金のプラットフォ ーム”をテーマに掲げ、 企業の【お金の流 れの計算・把握・管理...… おまちしております
  30. オリジナルのThe Go gopher(Gopher くん) は、Renée French によってデザインされ、CC BY 3.0 ライセンスが適用されています。

    https://github.com/egonelbre/gophers 内のGopher はCC 0 ライセンスで利用可能 1. 2. スライド内の各ライセンス周り