KUROTEN.の技術スタック

エキサイト株式会社でKUROTEN.の開発している森脇です。

今回はKUROTEN.の技術スタックについてご紹介いたします。

KUROTEN.とは

KUROTEN.(クロテン)は経営管理業務のDXを行い、スピード経営を実現するプラットフォームです。必要なデータを一元管理、経営判断が可能な管理会計のあるべき姿を構築し、経営の意思決定をサポートするSaaSのサービスです。

lp.kuroten.jp

KUROTEN.開発の歴史

KUROTEN.は 2020年3月くらいから開発を開始し2021年6月にβ版のリリースをいたしました、その間いろいろ仕様も変わりシステム構成も変わり、なかなかチャレンジングな開発を行ってきました。

ようやくリリースし構成も決まってきたので、ご紹介したいと思います。

サーバーサイドの技術スタック

項目 ソリューション
言語 Go
フレームワーク Iris
ORマッパー gorp
テストフレームワーク testing
データベース Aurora
ドキュメント生成 swaggo
アーキテクチャ クリーンアーキテクチャ

Go

エキサイトではあまり使っていませんでしたが、サービスの特性上、静的型付け言語がよかったので選定しています、 エンジニア的にも業務で使ってみたかったところも大きいです。

Iris

サーバーサイドは紆余曲折あって、最終的にIrisを選定して使っています。

最初はLambdaで動かしていました。エンドポイントは100を超え、メンテナンス性が悪くパフォーマンスもよくなかったので、ECSで動かすことにしました。
ECSで動かすならフレームワークが必要ということで、選んだのがIrisでした、echoやginも候補でしたが、最速ということもありIrisを選んでいます。

ORマッパー

複雑なSQLを書いているため、ORマッパーの恩恵はあまり受けていません。 select文を書いた時に名前でバインドしたかったので、gorpを選んでいます、今はgormでもできるので、そっちが一般的ですね

swaggo

ドキュメントの生成と、postmanに食わせるswagger.jsonを吐き出してくれるとても便利なやつです。
導入前はpostman用のjsonを手動で書き、apiの追加・変更があるたびに修正しないと行けなかったのですごく大変でした

クリーンアーキテクチャ

当初はLambdaで作っていたこともあり、あまりアーキテクチャを意識した作りになっていませんでした。
Irisに移行した時にmvcにしましたが、機能が増えていくことで複雑化し、メンテナンス性や循環参照の問題も出てきたため、クリーンアーキテクチャの導入を行いました、コードもみやすく役割がはっきりと分かれているので、レビューもしやすくなりました、現在はまだ移行中です

フロントエンドの技術スタック

項目 ソリューション
言語 javascript
フレームワーク nuxtjs
デザインフレームワーク vuetify
テストフレームワーク jest

javascript

typescriptにすればよかったんですが、javascriptで書いてます。vue3に上げるタイミングでtypescriptに移行しようと思っています。

jest

当初はavaで行っていましたが、今はjestに変更しています、カバレッジも100を目指して日々テストコードを書いています。

バッチの技術スタック

項目 ソリューション
言語 python
ORマッパー sqlalchemy
テスト pytest

python

特にフレームワークも使わずに好きに書いています、Lambdaで動かすので、関数を呼ぶシンプルなコードになっています

インフラ

主にAWSを使っています、使っているサービスは一般的なものを中心です。

AWS 説明
ECS frontとapiが動いています
RDS Aurora MySQL
S3 一時的なデータ保存場所で使用しています
AppSync 非同期通信を行うために使用しています
Lambda 主にバッチを動かしています
StepFunction LambdaをStep毎に実行するために使用しています
QuickSight サービス分析で使用しています
WAF セキュリティ関連
Codepipline 検証環境や本番へのデプロイで使用しています。
CodeBuild
CodeDeploy
CloudWatch 監視
terraform インフラコードは全てterraformで書いています
cloudformation Lambda関連はsamを使っているので、cloudformationも使っているます

その他

項目 ソリューション
認証 Auth0
spreadjs

最後に

KUROTEN.はいろんな技術を使って構築されています。
今後も新しい技術をどんどん使い、良いサービス提供したいと思います。