エキサイト株式会社でKUROTEN.の開発している森脇です。
今回はKUROTEN.の技術スタックについてご紹介いたします。
KUROTEN.とは
KUROTEN.(クロテン)は経営管理業務のDXを行い、スピード経営を実現するプラットフォームです。必要なデータを一元管理、経営判断が可能な管理会計のあるべき姿を構築し、経営の意思決定をサポートするSaaSのサービスです。
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.はいろんな技術を使って構築されています。
今後も新しい技術をどんどん使い、良いサービス提供したいと思います。