現在 marukuma.com というサイトで
Marukuma Studio という個人サービスを運用しています。
今回、新しくニュース見出しから関連業種や企業を探索するツールを
作ることにしました。
これは投資助言ツールではなく、
ニュース
↓
関連業種
↓
関連企業
という流れで、ニュースの背景にある業界構造を理解するための探索ツールです。
また今回は、AWSのインフラ学習も兼ねて
AIと相談しながらこのサービスを設計・開発していくことにしました。
普段は既存インフラに機能を追加することが多いのですが、
今回は 新しいサービスを追加するときのインフラ設計を
あらためて考えてみることにしました。
新しく作るサービス
今回作るのはニュース見出しから関連業界を探索するツールです。
例えば
TSMC熊本第2工場
というニュースから
- 半導体製造装置
- 半導体材料
- 電力
- 水処理
- クリーンルーム
といった関連業種を抽出し、そこから関連企業を探索できるようにします。
最初に考えた構成
最初は、既存サイトにそのまま追加することを考えました。
marukuma.com/finance
つまり
既存 CloudFront
既存 S3
既存 インフラ
に新しいページを追加する形です。
これは一番シンプルな方法です。
しかし悩んだ
この構成にはいくつかの問題がありました。
- 既存サービスとインフラが混ざる
- デプロイが混ざる
- どこまでが新サービスかわかりにくい
- AWS学習としては物足りない
そこで今回は
サービス単位でインフラを分離する
という構成にしてみることにしました。
新しい構成
今回の構成は次のようになります。
marukuma.com
└ Marukuma Studio
finance.marukuma.com
└ Financeサービス
つまり
サービスごとにインフラを分離する構成です。
AWS構成
FinanceサービスのAWS構成は次のようになります。
Route53
↓
finance.marukuma.com
↓
CloudFront
↓
S3(web)
↓
API Gateway
↓
Lambda
↓
S3 / DynamoDB
役割は次の通りです。
Route53
DNS管理
CloudFront
CDN
S3(web)
フロントエンド配信
API Gateway
API公開
Lambda
ニュース解析処理
S3 / DynamoDB
データ保存
API設計
このサービスでは API も提供できるように設計します。
POST /api/v1/news/analyze
ニュース見出しから関連業種を抽出
POST /api/v1/industries/companies
業種から関連企業を取得
リソース命名
AWSではリソースが増えてくるため
命名ルールを決めておくと管理しやすくなります。
今回のサービスでは次の命名ルールにしました。
marukuma-finance-用途-環境
例
marukuma-finance-web-prod
marukuma-finance-data-prod
marukuma-finance-api-prod
これにより AWS コンソールでも
financeサービスのリソースがまとまります。
この構成のメリット
この構成にすると次のメリットがあります。
- 既存サービスとインフラを分離できる
- デプロイを独立できる
- サービス単位で管理できる
- AWSインフラ学習になる
- 将来の拡張に強い
将来的な拡張
今後は次のような機能も追加できます。
・ニュース履歴
・急上昇テーマ
・海外企業
・業種マップ
まとめ
今回、新しいサービスを作るにあたり
サービス単位でインフラを分離する構成を考えました。
個人開発でも
- サービスを分ける
- インフラを分ける
- 命名ルールを決める
といった設計をしておくと、
後から機能が増えても整理された状態を保てます。
このプロジェクトがどのように成長していくかも、
今後ブログに書いていきたいと思います。