個人開発で バックテストを比較できるサービスを作りました!
https://www.backtest-ranking.com/
高速に米国株のバックテストの結果を表示、比較できるところが売りのサービスです👍
サービス概要
比較ページ
・銘柄を指定して戦略ごとのバックテストのランキングが見れます。
詳細ページ
・バックテストの詳細が見れます。
バックエンド
フロントエンド
インフラ
バックエンドのインフラははaws cdkで作成した以下の画像の構成です。
フロントエンドはnetlifyです。
工夫したポイント
バックテストのランキングを表示するまでのスピードの工夫に一番力を入れました。
バックテストは定期的にバッチ処理をした上でバッチ処理したデータはディレクトリ内に直接保存しアクセスに応じてそのデータを返すようにしています。
この構成にすることでサーバーへの負荷を抑えた上でバックテストの結果を高速にクライアントサイドに返せます。
開発効率の工夫
Vscode とCi(継続的インテグレーション)にlinter, formeter、unit testを組み込むことで効率的に運用してます。
運用の工夫
バッチ処理はGitHub actionで定期的にバッチを行ってます。
バッチ処理完了後にdocker image を作成しecr にデプロイする処理もGitHub actions でおこなってます。
バックエンド設計の工夫
バックエンドはCQRSパターンを使ってバッチ処理とバッチで作成されたバックテストのクエリー処理の動線を分けてます。
その上でdddを利用しCQRSのコマンドとクエリーで共通のオブジェクトはドメイン層にまとめてしまって、レポジトリ層やサービス層ではコマンドとクエリーで動線をわけてます。
フロント設計の工夫
コンポーネントが疎結合になるようにコロケーション、contextを活用してます。
インフラ設計の工夫
Cdkとtypescriptを活用することでtypescriptの型推論の恩恵を受けながら運用できるようんしてます。
コストの工夫
バッチは全てgithub actionで行いバッチ処理したデータはdbを使わずディレクトリ内に直接保存することでコストを最低限にしてます。
まとめ
初めてのwebサービス個人開発でしたがなんとか形になってよかったです笑
ここからは顧客の意見を取り入れながら使ってもらえるサービスに成長させていきたいのでサービスページのヘッダー右上のfeedbackよりフィードバックを頂けると嬉しいです🙏