2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GCP(Google Cloud Platform)を使いサーバーレスでWEBサービスを作ってみた。

Last updated at Posted at 2022-01-01

サービス概要

プロニチ(プログラミング新聞社)

定期的にバッチを走らせはてな、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構成図

定期的なバッチ実行

  1. Cloud SchedulerからCloud Runを毎時実行
  2. 各種APIを実行
  3. 実行結果をBigQueryに保存
  4. 実行結果をHTML・画像出力しCloud Storageに保存

プロニチ処理 (1).png

WEBサイト閲覧

  1. pronichi.comにアクセス
  2. サイト内画像はCloud Storage参照
  3. サイト内記事はCloud Runが起動、基本はキャッシュを利用
  4. キャッシュが存在しない場合はBigQueryから参照、キャッシュを作成

プロニチ処理.png

まとめ

まとめたんですがAWSに移行予定
データが増えてきてBigQueryの参照に費用が発生しはじめたため。
AWS App RunnerとAmazon Aurora Serverlessを使った構成にするつもり
移行後にまた記事にしたいと思います。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?