保険SaaSの技術スタック
保険SaaS の Inspire の開発で使用している技術スタックについて紹介いたします
はじめに
こんにちは、Finatext で保険事業にてプロダクト開発をしている @toshipon です。
今回は、保険商品の販売や保険業務をオンライン上で円滑に行うためのSaaS「Inspire」を開発する上で利用している技術スタックを紹介したいと思います。内容は以下のとおりです。
- 使用言語、ライブラリ、主なクラウド基盤リソースや外部サービス
- 利用している技術の選定背景
※なお、証券インフラストラクチャ「BaaS (Brokerage as a Service)」で利用している技術スタックについては、別記事にて紹介しております。
開発言語/フレームワーク
フロントエンドとバックエンドの開発で採用している主な開発言語とフレームワークについて紹介します。
TypeScript + Vue.js
保険事業におけるフロントエンドはすべて Vue.js を採用してSPAで開発しています。詳しい背景などはこちらの記事にて紹介していますが、学習コストの低さや開発スピードの維持しやすさが、プロジェクトの規模感にマッチしている点が選定理由になります。現在 Vue 2 ベースのプロジェクトから Vue 3 に移行している状況で、Vue 2 よりも TypeScript の型定義の恩恵が受けやすくなり、堅牢性も改善されていっている状況です。
Go言語 + Echo
Finatext では、 Kotlinや Ruby on Rails を採用しているプロジェクトも一部ありますが、殆どのバックエンドのサービスは Go言語で書かれています。金融ドメインのサービスで要求される堅牢さを備えつつもシンプルで軽量なため開発がしやすいのと、ドメイン駆動設計との相性の良さが、選定の理由になります。
開発環境・CI/CD
開発環境やCI/CD環境の中で利用している主なツールについて紹介します。
Postman
以前の記事で APIの自動テストについて書きましたが、Postman というツールを用いて、APIの自動テストのシナリオを作成してテストを実施し品質を担保しています。GUI上で直感的に操作ができるのでPostman のおかげでAPIテストの管理がかなり楽になっています。
Github Actions
Github Actions では、単体テストや Postman を用いた Integration Test、Linter やビルドテストの用途に使用しています。また SonarCloud のタスクを実行して「コード品質検査」をしています。
AWS Codepipeline
バックエンドの Go アプリケーションは Codepipeline 上で Docker Image のビルド、ECRへの Push、CodeDeploy による ECS へのデプロイをおこなっています。パイプラインは CDK のコードで管理されており、コードで柔軟にパイプラインをカスタマイズできるような構成をとっています。
( 例えば DB を有する API サービスはデプロイフローの中で DB Migration のステップを定義するなど )
クラウド基盤
クラウド基盤は、AWSの利用が主になります。主要なAWSリソースと管理方法について紹介します。
AWS Amplify
前述のとおりフロントエンドは Vue.js のSPAで開発しており、 CI/CD環境の構築やCDN配信やDNSの設定管理までワンストップで運用可能なので、Amplify を採用しています。インフラのリソースは基本的にはすべて Terraform で管理していますが、運用のしやすさを考慮して Amplify のみ独立してフロントエンド開発者が直接運用しています。
Amazon ECS + Fargate
バックエンドの API サーバーや、 Scheduled Task (定期的に実行されるバッチ処理) はすべて ECS 上で Fargate を使って運用しています。コストを抑えるために Capacity Provider の設定を用いて Fargate Spot も組み合わせて運用しています。
Terraform
AWS 上のインフラのリソースと後述する Datadog の監視項目の設定はすべて Terraform でコード管理しています。Finatextでは、サービスに関わるインフラの構成管理は各PJのメンバーに委ねられていますが、Atlantis という Terraform の Plan や Apply を Github Pull Request 上で制御できるツールを用いて、レビューから適用まで楽に運用ができるようになっています。
その他の利用サービス
Datadog
Datadog に関してはこちらの記事でも少し紹介していますが、AWSのリソースの監視や、Opsgenie というインシデント対応用のツールと連携して On-call 対応を実現しています。リソース監視は AWS CloudWatch でも十分可能だと思いますが、Datadog の監視項目の閾値の柔軟性や、Browser Testing 機能を用いたブラウザで操作したシナリオベースの外形監視や、外部サービスとの連携のしやすさが選定の理由になります。
Sentry
エラーの監視ツールとして Sentry を Finatext 全体で利用していますが、保険事業では主にブラウザで発生したエラーの検知と解析を目的に利用しています。エラー発生時のブラウザの状況や、ユーザーの操作ステップまで詳しく収集できるため、エラー再現にも役立てる点が重宝しています。
おわりに
以上、かなり簡単な紹介になってしまいましたが、「Inspire」開発チームがどのような開発言語やツールを利用しているか、イメージいただけたかなと思います。
私たちは、金融ドメインという硬いイメージに囚われることなく、効率よく品質の高いプロダクトを素早く開発するために、AWSのマネージドサービスや外部のSaaSなど、最新の技術やサービスを積極的に取り入れていきたいと思っております。
既存の金融システムをモダンな技術で刷新することに興味がある方、まずはカジュアルにお話ししませんか?以下サイトにて、保険事業の概要、開発メンバーのインタビューやテックブログ記事、採用ポジションなどをまとめていますので、ぜひご覧ください!ご連絡をお待ちしています。
Meetyでもお気軽にお声がけください!