サービス概要
プロニチ(プログラミング新聞社)
定期的にバッチを走らせはてな、Qiita、Twitter、connpassからAPIを通してデータを取得
取得したデータをまとめてWEBサイト・画像にて公開した。
こだわりとしてはCloud Run+BigQueryを利用したサーバーレス構成なところ。完全従量課金にしたので初期のアクセスが少ない場合はほぼ無料でサイトを公開することができる。
データベースにBigQueryを使った理由は更新系はバッチ系以外ない、キャッシュすればデータベース参照する必要がない。従量課金で初期費用がかからずSQL構文が使える点、Pandasで加工したデータを簡単に追加できる点などなど
システム構成
Python3系
パッケージ
(こう見るといろいろ使ってた?
google-cloud-bigquery==2.6.2
google-cloud-logging==2.2.0
google-cloud-storage==1.36.0
Flask==1.1.2
Flask-Caching==1.9.0
Jinja2==2.11.2
tweepy==3.10.0
numpy==1.18.4
pyarrow==2.0.0
pandas==1.2.0
python-dotenv==0.15.0
pdfkit==0.6.1
imgkit==1.0.2
wkhtmltopdf==0.2
requests==2.25.1
feedparser==6.0.2
Japanera==0.1.1
Pillow==8.1.0
GCP構成図
定期的なバッチ実行
- Cloud SchedulerからCloud Runを毎時実行
- 各種APIを実行
- 実行結果をBigQueryに保存
- 実行結果をHTML・画像出力しCloud Storageに保存
WEBサイト閲覧
- pronichi.comにアクセス
- サイト内画像はCloud Storage参照
- サイト内記事はCloud Runが起動、基本はキャッシュを利用
- キャッシュが存在しない場合はBigQueryから参照、キャッシュを作成
まとめ
まとめたんですがAWSに移行予定
データが増えてきてBigQueryの参照に費用が発生しはじめたため。
AWS App RunnerとAmazon Aurora Serverlessを使った構成にするつもり
移行後にまた記事にしたいと思います。