Slide 1

Slide 1 text

保険クラウド Inspire の裏側 2020/01/25 Fin-JAWS 第18回 ~ Insurance world ~ Finatext Holdings Ltd. @toshipon

Slide 2

Slide 2 text

Copyright © FINATEXT. All rights Reserved. 1
 今日お話する内容 ✅ Inspire と取り扱う保険商品がどんな技術スタック、  インフラ構成で運用されているか ✅ 保険クラウド Inspire の開発チームでの取り組みの話 会社全体で取り組んでいる、 AWS リソースをセキュアに扱う等のプラットフォーム寄りの話は今回しません ‍♂

Slide 3

Slide 3 text

Copyright © FINATEXT. All rights Reserved. 2
 自己紹介 Takahashi Toshiaki @toshipon ( 2020/08〜 Finatext ) ● 最近はサーバーサイド(Go)・インフラ寄り ● AWS歴は 3年半ぐらい ○ ( フロントエンド採用だったのに ..) 仮想通貨取引所でSRE業から始まる ○ terraform + ECS, EKS 構築をよくやります ● フロントエンド( React.js, Vue.js ) もやります ● 鎌倉在住、子育てしながらリモートで働いてます ● 趣味はコーヒー ☕

Slide 4

Slide 4 text

Copyright © FINATEXT. All rights Reserved. 3
 会社紹介 Finatext Holdings Ltd. ● 『金融を「サービス」として再発明する』 ● 証券ビジネスプラットフォーム「BaaS (Brokerage as a Service)」 ○ ずーっと手数料無料のコミュニティ型株取引アプリ「STREAM」 ○ 日本株だけのポートフォリオで資産運用「Wealth Wing」 ● 保険プラットフォーム「Inspire (Insurance as a Service)」 ○ 産前から産後まで、妊婦さんの困りごとにきめ細かく寄り添うミニ保険「母子保 険はぐ」

Slide 5

Slide 5 text

Copyright © FINATEXT. All rights Reserved. 4
 Agenda ● サービス紹介 ○ 保険クラウドInspireの紹介 ○ 母子保険はぐの紹介 ● 保険クラウド Inspire の裏側 ○ メンバー構成 ○ 技術スタック・インフラ構成と背景 ○ 直近の取り組み ● 今後の取り組みについて

Slide 6

Slide 6 text

Copyright © FINATEXT. All rights Reserved. 5
 Agenda ● サービス紹介 ○ 保険クラウドInspireの紹介 ○ 母子保険はぐの紹介 ● 保険クラウド Inspire の裏側 ○ メンバー構成 ○ 技術スタック・インフラ構成と背景 ○ 直近の取り組み ● 今後の取り組みについて

Slide 7

Slide 7 text

Copyright © FINATEXT. All rights Reserved. 6
 サービス紹介 ● 保険クラウド 「Inspire」 ○ リード構築、契約申込受付、契約保全、保険金請求受付といった顧 客接点だけでなく、 ○ 保険会社や代理店側の業務オペレーションもオンライン上でスマー トに完結することができるクラウドサービス ○ 少額短期保険、損害保険、生命保険など様々な保険に対応 ○ 低初期費用+従量課金型でスモールスタートで保険事業を開始でき る ○ 組み込み型金融サービスの実現 ■ 自社で保険事業を持たずとも簡単にサービスに保険商品を組み込める

Slide 8

Slide 8 text

Copyright © FINATEXT. All rights Reserved. 7
 サービス紹介

Slide 9

Slide 9 text

Copyright © FINATEXT. All rights Reserved. 8
 サービス紹介 契約情報詳細 聴取項目の編集画面 Inspire 管理画面

Slide 10

Slide 10 text

Copyright © FINATEXT. All rights Reserved. 9
 サービス紹介 ● 母子保険はぐ ○ 子会社 ( スマートプラスSSI ) が提供する妊婦さんのための保険 ○ 「産後うつ」など、出産・産後の不安にまつわる保障 ○ 特徴 ■ スマホで申込み・保険金請求が完結 ■ 妊娠中・出産後で保障が切り替わる ■ とにかくシンプルなユーザー体験で保険申込みが可能

Slide 11

Slide 11 text

Copyright © FINATEXT. All rights Reserved. 10
 Agenda ● サービス紹介 ○ 保険クラウドInspireの紹介 ○ 母子保険はぐの紹介 ● 保険クラウド Inspire の裏側 ○ メンバー構成 ○ 技術スタック・インフラ構成と背景 ○ 直近の取り組み ● 今後の取り組みについて

Slide 12

Slide 12 text

Copyright © FINATEXT. All rights Reserved. 11
 メンバー構成 2021/01 現在 保険チーム ( フルタイム ) ● バックエンド: 2名〜 ( インフラ兼任 ) ● フロント: 2名〜 ( 2021/01 に1名join ) サポートメンバー ● Platform team: 1名 ( インフラの足回り、セキュリティまわり ) ● 業務委託: 1-3名 ( 週1-3稼働 ) 参考: Inspire API の開発状況

Slide 13

Slide 13 text

Copyright © FINATEXT. All rights Reserved. 12
 技術スタック・インフラ構成と背景

Slide 14

Slide 14 text

Copyright © FINATEXT. All rights Reserved. 13
 技術スタック・インフラ構成と背景 バックエンドの技術スタック Inspire ○ Go + echo ○ ECS Fargate + Aurora MySQL で構成 ○ batch 処理は ECS Scheduled Task で運用 BFF サーバー ○ Inspire API を叩いてフロントのUXに沿ったAPI生やした中継サーバー ○ Go + echo ○ ECS Fargate ○ 連携システムが存在したり、商品性によってデータストアを保持

Slide 15

Slide 15 text

Copyright © FINATEXT. All rights Reserved. 14
 技術スタック・インフラ構成と背景 フロントエンドの技術スタック ● Amplify ● Vue.js を Hosting ○ TypeScript ○ Pug + Sass ○ MPA ( Multi Page Application ) ○ Composition-api ○ Sentry でエラートラッキング Vue.js の細かな設計については ぼくのかんがえたさいきょうのVueあーきてくちゃ を参照ください

Slide 16

Slide 16 text

Copyright © FINATEXT. All rights Reserved. 15
 技術スタック・インフラ構成と背景 CI/CD ● 全社で共通のリリースパイプラインを構築 ● CodePipeline + CodeBuild で ECS自動デプロイ ● GitOps ( code push ) で CI/CD をキック Infrastructure as Code ● AWSリソースはすべて Terraform で管理 監視・モニタリング ● Datadog, opsgenie を活用 ● Datadog の設定も Terraform で管理 詳しくは過去の発表スライド・ブログを参照ください ● 金融スタートアップにおける セキュアなAWSの運用 - SpeakerDeck ● 金融スタートアップにおけるコンテナ・ ECSの活用事例 - SpeakerDeck ● 次世代デジタル保険を支える監視・通知の技術 | Finatext | Medium

Slide 17

Slide 17 text

Copyright © FINATEXT. All rights Reserved. 16
 技術スタック・インフラ構成と背景 Inspire の設計思想とか モジュラモノリスが基本 ● コードベースはひとつだけど、コンポーネント間の依存関係をもたない ● 各ドメイン(ユーザー・契約・請求・支払い)は実務に応じて潜在的に依存が”ありそう”なので ● ただし明らかに分離可能で独立したドメインはサービスとして切り出す ● 例) 管理画面はオペレーター・ロール管理機能をもったサービスとして分離 APIの設計 ● 契約に至る手順をすべてAPIでオープンにしている ● 「申し込み」や「解約」といったビジネスロジックは API 側で状態や制御を厳格に管理 ● 告知や聴取項目の入力等の申込みに至るフローは保険商品によって異なるため ● ドメイン駆動設計を採用して、値オブジェクト、ドメインサービスによって保険業務の複雑さを吸収 ● テストは Unit tests + Postman (Newman) で E2E によるテスト, シナリオベースのテストで品質担保 ● API 仕様はすべて Swagger で管理 ( すごい量 )

Slide 18

Slide 18 text

Copyright © FINATEXT. All rights Reserved. 17
 技術スタック・インフラ構成と背景 Inspire の設計思想とか BFFサーバーを実験場として活用する ● 個社に依存する業務や定義を吸収する中継サーバー ○ 例) 契約の異動・更改の定義は保険会社によって違う ● 自社(母子保険はぐ)のBFFサーバー では試験的な実装を許容する ● 機能性によっては Inspire API 本体に取り込むようなサイクルを回す ○ 例) 顧客通知系機能, 履歴管理系機能

Slide 19

Slide 19 text

Copyright © FINATEXT. All rights Reserved. 18
 直近の取り組みについて フロントのテンプレート化 ● フロントのコンポーネントは保険商品固有の実装をもたない ○ 見積もり、契約申込み、保険金請求 ○ マイページ ( 顧客の契約情報管理 ) ● API から受け取る商品・聴取項目のJSONメタデータからフォームを生成 ● シンプルな保険商品であれば3日で申込みフォームが作れる ○ 必要なものは Inspire 上で商品登録 ( 特約・保障・聴取項目 ) ○ 料金テーブルの登録 ○ LPの作成だけ

Slide 20

Slide 20 text

Copyright © FINATEXT. All rights Reserved. 19
 直近の取り組みについて 環境変数をアプリケーションコードと一緒に git 管理する ● 課題: 環境変数を Terraform 管理下で ECS task-definition + SSM を使って運用 ○ デプロイサイクルがアプリケーションコードと同期的にではないので手間 ○ 環境変数を更新後 ECS task を手で更新していた ● 環境変数を mozilla/sops を使って暗号化して ● アプリケーションコードと同じ github repository で管理する ● 暗号化には AWS KMS を利用 ● デプロイのタイミングで Codebuild で復号してS3 にバージョン管理してアップロード ● ECS Fargate で envionmentFiles に S3 Object path を指定 ● 環境変数の編集は sops コマンド経由で実施

Slide 21

Slide 21 text

Copyright © FINATEXT. All rights Reserved. 20
 直近の取り組みについて swagger-merger で巨大な Swagger ファイルを管理 ● 課題: Inspire API の Swagger YAML ファイルだけで 7000行ぐらいあってメンテが大 変だった ○ ファイルを分割して $ref Syntax を使ってファイル参照できるようにしたい ○ ただし API 仕様を確認する時は1つのファイルで閲覧したい ● swagger-ui と swagger-merger を docker-compose で走らせながら編集する ○ まず Swagger ファイルの paths, schema, parametersの定義をファイル分割 ○ swagger-ui でyamlファイルを編集しながら、プレビューを確認 ○ swagger-merger で yaml ファイルの編集をwatch して統合したファイルを編集の 都度生成する ○ 編集後、個別のyaml ファイルと統合されたyamlファイルをgithub管理

Slide 22

Slide 22 text

Copyright © FINATEXT. All rights Reserved. 21
 直近の取り組みについて 参考: swagger-merger を docker-compose で走らせる

Slide 23

Slide 23 text

Copyright © FINATEXT. All rights Reserved. 22
 Agenda ● サービス紹介 ○ 保険クラウドInspireの紹介 ○ 母子保険はぐの紹介 ● 保険クラウド Inspire の裏側 ○ メンバー構成 ○ 技術スタック・インフラ構成と背景 ○ 直近の取り組み ● 今後の取り組みについて

Slide 24

Slide 24 text

Copyright © FINATEXT. All rights Reserved. 23
 今後の取り組みについて 短期間・低コストで柔軟なシステム導入をめざして ● 管理画面の Aurora MySQL を Serverless化したい ○ 管理画面用のDBで扱っているデータはほぼユーザー、ロール情報のみ ○ 利用時間帯が限られるので無駄が多い ○ Aurora Serverless で必要な時間帯のみ稼働させたい ○ Aurora Serverless v2 (preview) が 2020/12 発表された ■ Multi A-Z サポート ■ Read Replica サポート ■ まだ us-east-1 リージョンのみ ○ あるいは扱うデータの性質上、DynamoDB でもよさそう

Slide 25

Slide 25 text

Copyright © FINATEXT. All rights Reserved. 24
 さいごに ● 質問・ご意見歓迎です ● 個別のご質問があれば @toshipon 宛にご連絡ください ● 資料のURLもTwitterで共有いたします ● Finatext では一緒に働く仲間を募集中です ● https://hd.finatext.com/recruit/

Slide 26

Slide 26 text

Copyright © FINATEXT. All rights Reserved. 25