👀

sweeep Boxで使用している技術スタック

2022/02/13に公開

はじめに

はじめましてsweeep CTOの平下です。今年からsweeepではテックブログを始めました(sweeep各メンバーのテック系ブログを紐付けるテックブログHub)。
先日請求書のオンライン受け取りと電子保管などの新サービスsweeep Boxを立ち上げましたので、まずはそちらの技術について簡単にご紹介させていただこうと思います。
https://lp.box.sweeep.ai/

フロントエンド

現sweeepと同じくVue.jsで開発をしています。今回はTypeScriptを使用し、フレームワークはNuxt、アーキテクチャはClean Architectureを採用しています。また、CSSフレームワークはTailwindを使用しています。

BFF

フロントエンドとバックエンドの間にはBFF(Backend For Frontend)を導入し、フロントエンド/モバイルアプリとバックエンドの間の仲介をしています。こちらはGo言語で開発し、アーキテクチャはCleanArchitectureを採用しています。また、フロントエンド/モバイルアプリとBFFの間はGraphQLで通信を行っています。

バックエンド

バックエンドはGoで開発しています。現sweeepの技術負債を解消するべく、アーキテクチャはCleanArchitecture/Microservicesを採用しています。また、BFFとバックエンドの間はgRPCで通信を行っています。

CoreAI機能

sweeep BoxのCoreAI機能は引続きPythonを使用し、フレームワークはFastAPI、アーキテクチャはModularMonolithを採用しています。

モバイルアプリ

モバイルアプリはFlutterを使用し、こちらもCleanArchitectureを採用しています。

インフラ

インフラはGCPを使用しています。それぞれ用途に合わせてGAE/CloudRun/GKEを使い分けています。DBは基本的にCloudSQLを使用しています。

スキーマ駆動開発

先にも述べましたが、プロトコルはフロントエンド/モバイルアプリとBFFの間はGraphQL、BFFとバックエンドの間はgRPCを採用しています。sweeep Boxではスキーマ駆動開発で、定義ファイルからクライアントとサーバーのプログラムを自動生成したものを使用し、クライアントとサーバー間で齟齬が生じないようにしています。また、定義ファイルを元にMockを作成することで、サーバーの開発が終わっていなくてもクライアントがMockへアクセスし通信部分の開発や動作確認できるようにしています。

まとめ

細かいものまで含めるとまだたくさんあるのですが、sweeep Boxの主な技術をご紹介させてきました。現在のチームの技術スタックに対し、sweeep Boxのサービス開発に最適と思われるものを選択したつもりですが、今後より最適な技術やアーキテクチャが登場した場合は検討し採用していきたいと思っています。

GitHubで編集を提案

Discussion