はじめに
前の投稿
https://qiita.com/tsnb/items/90dccfce370190e11012
今回は、ウェブサービスを作るためにざっくり技術選定とフェーズごとの計画をする。
この投稿の情報量はゼロなので読もうとしている人は去った方がいいです!
道のり長すぎてはげそう。
参考にする情報
https://github.com/kamranahmedse/developer-roadmap
https://employment.en-japan.com/engineerhub/entry/2019/06/07/103000
考慮事項
- セキュリティが大事なので、後々は力を入れるがまずは簡単な方法をとる
- 個人開発でリソースがないのでインフラは最小限で始める
- 外部APIを呼んで必要なデータを取ってくる予定だが、まずはダミーデータを自分たちで作って開発を進める
- できるだけ課金しない
- 機械学習できる必要がある
- フロントでプログラムを書いて、バックエンドで処理する機能が必要
フェーズ0
Firebase Cloud Function、Authentication、Hosting、Firestoneなどをまずは使う。
フロントエンドの知識がないのでまずはjavascriptをベタで使ってログインできるようにする。
Firestoreにダミーデータを入れる。
Cloud Function(golang)でテスト用のAPIを実装する。
フロントエンドからAPIを叩いてデータを取得してグラフ表示する。
見栄えは無視。
利用ツール
- Firebase様
- javascript
- golang
フェーズ1
サービス的に大規模なデータに対してデータ処理や分析が必要になる。
フェーズ0でAPI内で実装していた加工などの処理をBQでできるようにしたい。
firestoreからBQにデータを送る。
DataflowでBQのテーブル内のデータ加工を行ってBQにデータを再び格納する。
まずは無料枠で頑張って、無料枠が終わったらAlways freeの範囲で使ってみる。多少の課金は許容する。
利用ツール
- BQ
- Dataflow
フェーズ2
必要な機能とAPIを作っていく。
javascriptで作り込んだものをReact+Typescriptに置き換えていく。
見栄えにもこだわりだす。
利用ツール
- React
- Typescript
フェーズ3
サービス的にプログラムを投稿できる機能が必要なので、GKEなどでプログラム処理用のインスタンスを管理する必要がありそう。
dockerでtensorflowなどが入ったjupyterlabを起動してフロントに渡せれば実装コストが下がりそう。
負荷の高い処理を実行されないように制限とかできるのかな。
利用ツール
- GKE
- Stackdriver 他にもありそうだが一旦無視
フェーズ4
二要素認証を取り入れてセキュリティレベルを高める。
脆弱性診断とペネトレーションテストの導入。
アクセスログ解析、監視・バックアップや非機能要件を検討する。
今後の予定
今後は、フェーズ0を実施する。