GCPのGAEとCloudSQLでwebサービスを作ってみた


GAE, Google Cloud SQL, Google Cloud Storageでwebサービスを作ってみた。

作ったサイト

匿名で不満や愚痴、普段言えない本音を匿名で投稿しちゃおう!boooing

【概要】

  • twitterログインが必要です。(殺害予告とか違法な内容をつぶやかれるのを抑止するため)
  • 匿名で不満や愚痴をつぶやけます(ログインするけど、名前は一切表示されません)
  • twitterにも@boooing1のアカウントで代理投稿します。(ここも完全に匿名です。)
  • twitterやサービス内に頂いたコメントは、サービス↔twitter完全連携します。
  • 不満書きたいのにtwitterの文字数制限で伝えきれないのが嫌だったので、サービス内では1000文字まで入力できます。
  • twitterは、某質問系BOXの用に画像を添付します。
  • サービス内では、3枚まで画像をはれます。(それもtwitterに連携します)

【インフラ】

  • Google App Engine
  • Google Cloud Storage
  • Google Cloud SQL

【フロント】

djangoのテンプレートを使ってます。
SPAとか、特別なことは特にないので割愛します。

【サーバサイド】

  • python3
  • django1.11

【苦戦したところ】その1 画像のキャプチャ

まず、webdriverを使って、画像をキャプチャしました。
こんなかんじの記事を参考にしてやってみたんですが

こんな感じで、スクロールバーが表示されてしまいました。

サイズ調整を試みるも、長文がくるとこんなふうに画像が切れちゃいました。

某質問系BOXは、文字数が長くても切れません。

色々と調査したところ、HTML自体をcropできる記事を見つけたのでそちらを参考に修正。

ようやくキレイに画像かすることができました。(しかも文字が見やすくなった)

【苦戦したところ】その2 画像のキャプチャどこでやるの問題

GAEは、デプロイや、運用などがお手軽にできるので、作ってすぐに動かすことができます。
便利!

でも、chromedriverのインストールなど、通常のGCEやEC2のようにサーバに入っての環境構築ができないため、この部分だけGCE契約するのか・・・?っと悩んみました。

【解決策】
Dockerfileを使ってchromedriverを構築する。

GAEは、カスタムしたDockerfileを配置することが可能なので、Dockerfileで、chromedriver関連をインストールするようにしました。
元になるGAE用のイメージはこちら

Dockerfile
...
FROM gcr.io/google-appengine/python

RUN apt install unzip
RUN wget https://chromedriver.storage.googleapis.com/2.31/chromedriver_linux64.zip
RUN unzip chromedriver_linux64.zip -d ~/bin/

...

【苦戦してるところ】全然人が来ない。

まず、GAのキャプチャを見てください。

3/27にリリースして、全然増えません。
しかも、4/4の夜から4/5にかけて、twitterに制裁を受けてました。
(検索やハッシュタグで、引っかからない状態)

【事件】twitterアカウント凍結

4/6に@boooing1アカウントが凍結。。。。

かと思いきや、1時間ほどで何故か解除・・・・

人為的ミスか???

凍結されてしまったので、クローズする気になってたのですが、なんとか生きながらえたので、記事に書いてみましたw

【現在】

まだまだ、改善点は多いと思うのですが、ほそぼそと運用中。
ここでの学びを次に活かすぞー!!