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

保険クラウド Inspire の裏側 / Fin-JAWS 2021_01_25

toshipon
January 25, 2021

保険クラウド Inspire の裏側 / Fin-JAWS 2021_01_25

https://fin-jaws.connpass.com/event/201118/ にてお話した発表資料です

toshipon

January 25, 2021
Tweet

Other Decks in Technology

Transcript

  1. Copyright © FINATEXT. All rights Reserved. 1
 今日お話する内容 ✅ Inspire

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

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

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

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

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

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

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

    ◦ 保険クラウドInspireの紹介 ◦ 母子保険はぐの紹介 • 保険クラウド Inspire の裏側 ◦ メンバー構成 ◦ 技術スタック・インフラ構成と背景 ◦ 直近の取り組み • 今後の取り組みについて
  9. Copyright © FINATEXT. All rights Reserved. 11
 メンバー構成 2021/01 現在

    保険チーム ( フルタイム ) • バックエンド: 2名〜 ( インフラ兼任 ) • フロント: 2名〜 ( 2021/01 に1名join ) サポートメンバー • Platform team: 1名 ( インフラの足回り、セキュリティまわり ) • 業務委託: 1-3名 ( 週1-3稼働 ) 参考: Inspire API の開発状況
  10. 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 ◦ 連携システムが存在したり、商品性によってデータストアを保持
  11. Copyright © FINATEXT. All rights Reserved. 14
 技術スタック・インフラ構成と背景 フロントエンドの技術スタック •

    Amplify • Vue.js を Hosting ◦ TypeScript ◦ Pug + Sass ◦ MPA ( Multi Page Application ) ◦ Composition-api ◦ Sentry でエラートラッキング Vue.js の細かな設計については ぼくのかんがえたさいきょうのVueあーきてくちゃ を参照ください
  12. 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
  13. Copyright © FINATEXT. All rights Reserved. 16
 技術スタック・インフラ構成と背景 Inspire の設計思想とか

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

    BFFサーバーを実験場として活用する • 個社に依存する業務や定義を吸収する中継サーバー ◦ 例) 契約の異動・更改の定義は保険会社によって違う • 自社(母子保険はぐ)のBFFサーバー では試験的な実装を許容する • 機能性によっては Inspire API 本体に取り込むようなサイクルを回す ◦ 例) 顧客通知系機能, 履歴管理系機能
  15. Copyright © FINATEXT. All rights Reserved. 18
 直近の取り組みについて フロントのテンプレート化 •

    フロントのコンポーネントは保険商品固有の実装をもたない ◦ 見積もり、契約申込み、保険金請求 ◦ マイページ ( 顧客の契約情報管理 ) • API から受け取る商品・聴取項目のJSONメタデータからフォームを生成 • シンプルな保険商品であれば3日で申込みフォームが作れる ◦ 必要なものは Inspire 上で商品登録 ( 特約・保障・聴取項目 ) ◦ 料金テーブルの登録 ◦ LPの作成だけ
  16. 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 コマンド経由で実施
  17. 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管理
  18. Copyright © FINATEXT. All rights Reserved. 22
 Agenda • サービス紹介

    ◦ 保険クラウドInspireの紹介 ◦ 母子保険はぐの紹介 • 保険クラウド Inspire の裏側 ◦ メンバー構成 ◦ 技術スタック・インフラ構成と背景 ◦ 直近の取り組み • 今後の取り組みについて
  19. 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 でもよさそう
  20. Copyright © FINATEXT. All rights Reserved. 24
 さいごに • 質問・ご意見歓迎です

    • 個別のご質問があれば @toshipon 宛にご連絡ください • 資料のURLもTwitterで共有いたします • Finatext では一緒に働く仲間を募集中です • https://hd.finatext.com/recruit/